Jupyter是更好的Excel
2019年06月10日 由 sunlei 发表
501252
0
如果你是一名交易员或在金融服务业工作,Excel就是你的面包和黄油;你可以分析价格和数据,评估你的交易组合,计算VaR,执行反向测试等等。您是数据透视表、公式、图表甚至VBA和PowerQuery方面的专家。您可以快速地处理一个解决方案,但是在您知道它之前,您的电子表格会以几十个选项卡、数千行类似意大利面条式的vba的形式展开——因此它的可读性和维护性就被抛到了脑后。当你敢按下F9查看结果时,你可以喝杯茶,然后再等一会儿(如果你的电脑还没有崩溃的话)!
有同感吗?我仿佛看到你在点头。
尽管电子表格对从数据中提供真正的洞察力非常有用,但它并不能提供您所寻求的所有答案。让我们来看看是什么让Excel如此受欢迎,以及它的缺点,为什么您应该开始使用Jupyter Notebooks作为一个替代的强大的分析工具?
Excel天堂
我们都了解,有几个因素使Excel如此有价值,其中最值得注意的是它的简单而功能强大的内置函数的反应式计算模型。电子表格就像一张空白画布,一个“业余程序员”可以使用Excel的专有语言(即公式和VBA)编写代码。
银行部署了广泛的IT系统来运行关键业务流程,但是以电子表格形式出现的影子IT爆炸式增长,补充了这些核心系统,并作为新业务计划的默认工具。由于企业系统无法灵活地适应动态金融环境中所需的快速上市时间,Excel应运而生,填补了这一空白!
虽然可能很方便,但这是正确的方法吗?
需要重新定义Excel在企业中的角色!
Excel地狱
试图使用电子表格对大量数据进行高级、响应性分析,这是在使用错误的工具。
下面是Excel高级用户面临的一些问题:
- 级联错误:Excel臭名昭著的错误是向下传播一个列,然后在整个电子表格中创建一个雪球,变成雪崩的麻烦。令人恐惧的是,其中一些被发现的时候为时已晚。有几个案例已经被公开,在这些案例中,事情出了差错,造成了巨大的成本影响。
- 可伸缩性:Excel对其可容纳的行和列的数量有限制,但随着数据集以指数速度增长,电子表格很快就会耗尽内存或占用大部分CPU。当这种情况发生时,数据损坏的风险就会大大增加。
- 性能:在复杂的工作簿中,更改一个数字可能会影响数百个重复计算,Excel需要时间来完成每个计算。当达到一定的大小时,它不仅会减慢电子表格本身的速度,而且还会影响任何其他需要内存空间的应用程序的性能。
- 测试:几乎不可能测试电子表格的正确性,然后证明随后的更改没有破坏任何其他东西。
- 可跟踪性/调试:通常一个甚至很小的更改都会严重破坏您复杂的公式,使其极难识别和修复。
- 全部包含:数据和计算都包含在Excel文件中,并在本地计算机上运行。这意味着协作受到限制,使得版本控制成为一场噩梦。此外,根据最新的更新,数据是静态的,而不是随着条件的变化而实时更新。
传统软件几十年前就已经解决了所有这些问题。
最后但并非最不重要的是:
- 操作风险:所有电子表格都是从小型/快速修复计算开始的,但有些电子表格会变成永久性的企业级解决方案。它们提供了许多业务流程,但是由于缺乏对整个景观沿袭的可见性,许多财务、运营和监管流程的完整性受到了威胁。
你好,程序员;再见,交易员
传统上,银行将定量交易团队分成定量交易员和定量开发商。前者提出了交易想法,后者将这些想法转换为可执行代码。当你作为一个交易者同时也是一个熟练的编码员时,这种分离就不再需要了,这给了你一个竞争优势:不仅银行希望优化他们的成本,因此你可以在冗余中生存下来,而且你也可以把你自己的交易模型付诸行动,利用这一时间优势为你带来好处。能够自动完成日常任务是一种解放,而编写代码实际上是一种创造性的工作!
这在很大程度上也是一代人的事情,因为更多的初级交易员已经具备了大学的编程技能,所以如果你想保持自己的就业能力,就需要参与进来。
如何使用Python和Jupyter Notebooks
——看我做了什么?
那么,对于那些认为Excel有局限性(如果不是过时的话)的交易员和金融专业人士来说,解决方案是什么呢?
学习Python并使用 Jupyter Notebooks作为容器!
Python
Python学起来相当容易,而且非常通用,因此在金融界有了更多的应用。现在,它和Excel一样,是许多定量角色的先决条件。它比c++(或Java)更精细,这意味着:❶学习曲线并不陡峭,而且完成一项任务所需的代码数量远远小于5 x倍或10倍。
python越来越受欢迎,这在大量的库中很明显,这些库支持作为交易者几乎需要的任何东西:
- 阅读、书写、清洗、篡改、切片/切割数据
- 数学、统计和时间序列
- 财务分析:交易和定量财务,市场数据
分析、股票/衍生品市场分析、彭博数据访问、执行引擎、回溯测试、风险分析等。
- 机器学习渠道(例如预测市场价格)
- 绘图和美观/互动的可视化
- SQL支持
- 发送电子邮件
- 网络抓取(例如在线获取市场价格)
- 任务自动化/调度
- Excel集成(如果您非常喜欢Excel)
Jupyter
同样,Jupyter笔记本是一个基于网络的计算环境,它使您能够编写包括以下内容的文档:实时代码、图形、小部件、丰富的叙述性文本(包括链接、公式等)、图片等。更具体地说,您可以:
- 在浏览器中编辑代码,使用自动语法高亮显示、缩进和制表符完成/反省。
- 从浏览器运行代码,计算结果附加到生成代码的代码上。
它们提供了一个计算的全面、独立的记录,因此可以代替Excel作为实时数据分析平台。
最佳选择
所以你可能会想:
我还要用Excel吗?当然……
在以下用例中,电子表格仍然是您的最佳选择:
- 正确性和准确性不是优先事项
- 数据不太大(不需要可扩展性)
- 不需要实时更新
- 使用Excel作为草稿板,快速将原型放在一起
- 无需长期维护
您需要的是允许快速开发、验证正确性和可扩展性,同时保持与Excel相同的反应模型。这正是Jupyter笔记本所提供的!
[caption id="attachment_41115" align="aligncenter" width="300"]
不,Excel并没有过时,但是Jupyter笔记本是更好的数据分析工具![/caption]
虽然我已经明确地提到了使用Python/Jupyter组合优于Excel的一些优势,或者在“Excel地狱”一节中暗示了它们的反例,但是我在这里收集了它们的前10个:
✔强大的数据处理——毕竟是数据科学家的工具箱!
✔先进的可视化功能,不再是无聊的图表!
✔更好的用户体验
✔反大数据集处理不再崩溃!
✔利用多重处理的性能管理
✔测试驱动开发思考质量!
✔开放源代码可访问性-“它有一个lib!”
✔错误可追溯性
✔简单自动化
✔反自我记录不可低估其价值!
从哪里开始
我意识,刚进入这一领域可能会让人望而生畏,但编程不是为了学习语言的语法,而是为了使用正确的语言和工具来解决问题而绞尽脑汁:在我们的例子中,是Python和Jupyter。
最后的想法
很难想象没有电子表格的企业世界!
银行开始发现Python可以作为Excel的替代品,用于它们的关键工作负载。巴克莱(Barclays)最近刚刚因为努力教会交易员编程而登上新闻头条。我认为你也应该遵循这个模式,你不会失望的!
让Excel做Excel擅长的事情,并将分析和自动化转移到Python和Jupyter笔记本中。
有一个充满动态和交互式分析的快乐世界在等着你!