你好,程序员;再见,交易者!Jupyter即是新的Excel

1,159 阅读8分钟

全文共3246字,预计学习时长8分钟

如果你从事的是商业交易或者在金融机构工作,Excel是必备技能。

你可以用它分析价格及其他tick数据、评估投资组合、计算风险价值、进行事后检等等。你熟练掌握数据透视表、Excel公式、图表甚至是VBA和PowerQuery。这使你可以快速执行一个方案。

但是在你意识到之前,电子表就会扩张成为几十个结构复杂的表格和混乱无序的VBA代码时,读懂和维护这些表格将变得极其困难。并且如果按下F9刷新的话,等待的时间甚至足够喝完一杯茶(如果这期间电脑还没崩溃的话)!

上面的陈述听起来是不是很熟悉?你恐怕正在疯狂点头。

尽管电子表格十分有用,但要用来分析数据的话,它并不能提供寻求的所有答案。让我们看看Excel如此流行的原因及其不足之处,以及最重要的使用Jupyter Notebook这一强大的分析工具来代替Excel的原因。

我们的目的是,让Excel做Excel擅长的事,把分析和自动化交给Python和Jupyter Notebook。

Excel的优势

Excel有几大优势。最值得一提的就是带有内建函数的反应计算模型,它使得Excel简单而又强大。电子表就像一块空白的幕布。一个“业余程序员”可以使用Excel的专用语言(也就是公式和VBA)在电子表中编写代码。

银行利用各式各样的信息技术系统来执行关键业务流程。然而有越来越多的影子IT以电子表格的形式出现,它们补充了核心信息系统的功能,并充当新的商业计划的默认工具。企业系统不够灵活,无法适应动态金融环境下产品从雏形到进入市场的时间,而Excel解决了这一问题!

尽管Excel非常便利,但它就是最合适的方法吗?

Excel在企业中扮演的角色应该被重新定义。

图片来源:unsplash.com/@mbaumi

Excel的劣势

在涉及大量数据的、高级的、响应式的分析过程中,电子表格并非合适的工具。

下面是某些Excel重度用户面临的问题:

· 级联错误:Excel臭名昭著的问题之一是错误可能会沿着列传播,最终波及整个电子表,就像一个雪球引起一场雪灾。可怕的是,有些错误发现时已经无法补救。有不少这样造成重大损失的案例。

· 可扩展性:Excel表格中的行列数量有限。处理规模呈指数级增长的数据集时,电子表将很快用尽存储空间或占用大部分的中央处理器。这种情况的出现将极大提升数据污染的风险。

· 功能:在复杂的工作表中,改变一个数字可能影响数以百计的重复计算。Excel需要花费时间来重新计算每一个结果。当影响达到一定量级,不仅电子表本身的运行会变得缓慢,其他所有需要占用存储空间的应用都会受到影响。

· 测试:电子表的正确性几乎不可测试,也难以证明后续更改没有造成其他影响。

· 可追踪性/排除故障:即使微小的变化也可能严重篡改复杂的公式。这样微小的改变极难找到和修复。

· 包含一切:数据和算式都存储在Excel文件内并在本地计算机上运行。这意味着合作受到限制,版本控制像噩梦一般困难。并且数据将在最后一次更新后保持不变,而不是随着情况变化实时更新。

传统软件早已在几十年前解决了上述所有问题。

最后一点,也是很重要的一点:

· 操作风险:所有的电子表最初都是小型的,易于维护的算式。但是有些电子表会变成永久的,企业级别的方案。它们被用于大量的业务流程,但由于无法看到数据的全貌,很难保证许多金融、运算和监管过程的完备性。

图片来源Courtesy: Pixabay

你好,程序员;再见,交易者

传统来说,银行把定量交易团队分为定量分析交易者和定量分析开发者。前者提出想法,后者把这些想法写成可执行的代码。如果你既是一个交易者又是个专业的程序员,那么这种划分就不再必要。这让你获得了竞争优势:一方面银行希望尽可能减少支出,从而降低了失业风险;另一方面你可以把自己的交易模型投入实践,利用时间优势获取利益。一些单调的任务可以自动处理,这使你获得解放,而且编程实际上非常具有创造性!

这也是为了跟上时代。越来越多的年轻交易者具备在大学中学到的编程知识。所以如果想要保持就业竞争力,你也需要参与其中。

如何用Python和Jupyter Notebooks进行数据处理

对于意识到Excel局限性的交易者和金融专家来说,如何解决这一问题?答案就是:学习使用Python和Jupyter Notebook。

Python

Python学起来很容易,并且功能丰富,因此在金融领域中得到越来越广泛的应用。如今它和Excel一样,是许多定量分析过程的必备工具。它没有C++(或者Java)那样复杂,这意味着python的学习曲线没有那么陡峭,而且完成任务所需的代码量减少到1/5甚至1/10。

Python的日渐流行明显地体现在大量的库中。这些库可以支持交易者所需要的几乎一切功能。

· 数据的读取、写入、清洗、删改和交叉分析。

· 数学序列、统计序列和时间序列。

· 金融分析:交易和定量金融、市场数据分析、股票/衍生市场分析、彭博数据访问、执行引擎、事后检验、风险分析等等。

· 机器学习渠道(比如预测市场价格)。

· 绘图以及一目了然的/交互性的可视化。

· SQL支持。

· 发送邮件。

· 网页数据抓取(比如从网上获得市场价格)。

· 任务的自动化/日程安排。

· 整合Excel(如果你真的很喜欢使用Excel)。

精准的函数库的总结(不重复的):https://financetrain.com/best-python-librariespackages-finance-financial-data-scientists

Jupyter

沿用上述思路,Jupyter Notebook是一个基于网络的编程环境。它能够管理各种文件。这些文件包含代码、图表、小插件、丰富的叙述文本(包括链接、等式等)以及图片。更具体来说,可以:

· 借助自动句法高亮、缩进以及tab自动补全/检查等功能,在浏览器中编辑代码。

· 使用附加在代码上的计算结果,通过浏览器运行代码。

它为计算提供了总括式的、自含式的记录。这样Jupyter就可以代替Excel成为一个实时数据分析平台。

Courtesy: Python for Finance Tutorial

Excel VS Jupyter

所以你可能会想:

我还应该使用Excel吗?当然!电子表依然是处理下列情况时的最佳选择:

· 不那么注重正确性和准确性

· 数据规模不太大(对可扩展性没有要求)

· 不需要实时更新

· 把Excel作为草稿本,快速整合原型

· 不需要长期维护

你需要这样一个工具——它能够支持快速开发,保证正确性和可扩展性,与此同时拥有和Excel一样的反应模型。而这就是Jupyter Notebook提供的功能。

不需要抛弃Excel,但是Jupyter Notebook是更好的数据分析工具!

Python/Jupyter最重要的十个优点:

✔强大的数据操作能力——Python/Jupyter是数据科学家的工具箱!

✔先进的可视化能力——再也没有无聊的表格!

✔更好的用户体验

✔大规模数据集处理——再也不会崩溃!

✔运行管理——利用多线程处理

✔测试驱动开发——注重质量!

✔可开源——“有专门的库来处理这个问题!”

✔可追踪错误

✔更简单的自动化

✔自我文档化——不要低估这一功能的价值!

如何开始

进入这一领域的新人可能会被吓倒。但是编程并不是学习语言的句法,而是学会使用正确的语言和工具——也就是Python和Jupyter——来解决问题。

这里有两个非常好的新手资源:

· Think Python: Free eBook Download

传送门:http://greenteapress.com/thinkpython2/html/index.html

· Jupyter Notebook for beginners: Online Tutorial

传送门:https://www.dataquest.io/blog/jupyter-notebook-tutorial

留言 点赞 关注

我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”


(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)