胡曦月、张倩编译

做数据只知道Excel?Jupyter Notebook也要学起来了

Excel是交易员或金融从业者的生计之本,但在数据量较大或需要对数据进行深入挖掘时,Excel似乎就有点不够用了。那么,有什么新的工具可以作为代替呢?本文作者给出的答案是Jupyter Notebooks。

如果你是一名交易员或者从事金融服务行业,那么 Excel 就是你的生计之本。有了它,你可以分析价格和实时数据、评估交易组合、计算 VaR、执行回测等等;有了它,你就是数据透视表、公式、图表甚至 VBA 和 PowerQuery 的专家。

然而,尽管你可以快速处理解决方案,但在你得到结果之前,电子表格已经扩展到数十个标签页、上千行以及数不清的 VBA——这使得它的可读性和可维护性遭到破坏。如果你胆敢用 F9 键刷新结果,那你就可以喝杯茶再多等一会儿了(前提还得是你的电脑在这期间没有崩溃)!

很熟悉的场景吧?你大概已经在频频点头了。

尽管 Excel 十分有用,但是对数据进行深入挖掘时,电子表格并不能提供你想要的所有答案。下面来看看 Excel 为什么这么火,又有哪些不足,最重要的是,为什么应该用 Jupyter Notebook 来替代它成为你的强大数据分析工具。

天堂般的 Excel

使得 Excel 如此有价值的因素有多个,最值得注意的是它简单却强大的基于内置函数的响应式计算模型。电子表格就像是一块空画布,「业余程序员」可以在这上面用 Excel 专用语言(公式或者 VBA)进行编程。

尽管银行为了运行业务关键流程部署了广泛的 IT 系统,但以电子表格形式存在的 Shadow IT 仍呈爆炸式增长,Shadow IT 补充了这些核心系统,并成为新业务计划的默认工具。正是由于企业系统不够灵活,无法适应动态金融环境所提出的快速上市要求,这才有了 Excel 来填补这一缺口。

Excel 可能很方便,但这是否意味着它就是正确的方法呢?

Excel 在企业中的角色需要重新定义了!

地狱般的 Excel 

想用电子表格对大量数据进行高级响应式分析?那可就用错工具了。

下面是 Excel 高级用户所面临的一些问题:

  • 级联错误:Excel 一个臭名昭著的问题是,错误会沿着列传播,然后到整个表格,就好像雪球最终变成雪崩一样。可怕的是,有时错误发现时已为时已晚。

  • 可扩展性:Excel 可处理的行列数是有限制的。随着数据集以指数速度增加,电子表格很快就会耗尽内存或消耗大量 CPU 资源,此时数据损坏的风险就会上升。

  • 性能:在复杂的工作簿中,修改一个数字可能会影响到数百个重复计算,Excel 需要时间来处理每个数字。表格达到一定规模后不仅自身的速度会下降,还会影响到计算机上其它需要内存空间的应用程序的性能。

  • 测试:想要测试一个电子表格的正确性几乎是不可能的,更别提还要证明后续更改不会破坏任何其他内容。

  • 可追溯性/调试:往往一个很小的修改就会显著破坏你的复杂公式,从而使得问题难以识别和修复。

  • 全部包含:数据和计算全部包含在一个 Excel 文件中,并且在本地计算机上运行。这就意味着协作受限、版本控制成为噩梦。此外,数据也只能是基于最近更新的静态数据,而无法随着条件变化而实时更新。

传统软件在数十年前已经解决了以上这些问题。

最后同样重要的一个问题是:

操作风险:所有电子表格最初都是小型/快速修复计算,但有些最终成为了永久性的企业级解决方案。它们提供了大量业务流程,但却缺乏全局谱系的可见性,从而使得许多财务、运营和监管流程的完整性受到威胁。

Hello,程序员;Bye-bye,交易员

传统上,银行将定量交易团队分为定量交易员和定量开发者。前者提出交易想法,后者将这些想法转化为可执行代码。如果你作为交易员的同时也熟悉编程,那就不再需要这种分工,这也为你提供了竞争优势:不仅可以在银行希望优化成本时避免被裁员,还可以将自己的交易模型付诸实践,并利用时间优势获利。解放双手,将枯燥的任务自动化,编程真的很有创造力!

在这个时代,更多的初级交易员都具备 uni 编程技能,因此想要保持职场竞争力就得要参与其中。

如何在 Python 和 Jupyter bi ji ben 上使用 Excel

那么,当交易员和金融专家们发现 Excel 有诸多限制时(不是因为版本过低时),该如何解决呢?

答案是,学习 Python,并且使用 Jupyter 笔记本来做开发环境!

Python

Python 相当易于学习且用途广泛,因此在金融社区中使用渐多,与 Excel 一样,它现在是许多量化工具的先决条件。它没 C++(或 Java)那么复杂,也就意味着:1. 学习曲线没那么陡峭;2. 完成一个任务所需的代码量要少 80%-90%。

Python 的日益普及可以从大量支持交易员所需的各种工具库看出来。

  • 数据的读、写、清洗、传递、分层/分割

  • 数学、统计、时间序列

  • 财务分析:交易和计量金融、市场数据分析、股票/衍生产品市场分析、彭博数据访问、执行引擎、回测、风险分析等等

  • 机器学习工作流(如预测市场价格)

  • 绘图和交互式可视化

  • SQL 支持

  • 发送邮件

  • 网页抓取(如获取在线市场数据)

  • 任务自动化/安排

  • Excel 集成(如果你确实非常喜欢 Excel)

Jupyter

同样地,Jupyter Notebook 是一个基于 Web 的计算环境,能够让你创作包括以下内容的文档:实时代码、图形、小部件、丰富的叙述文本(包括链接、公式等)、图片等。更具体地说,你能够:

  • 在浏览器中编辑代码:自动语义高亮、缩进、tab 命令补全/内省(introspection)

  • 运行浏览器中的代码:在代码后附加其计算结果

它们提供了一种全包式的、独立的运算记录,从而使其代替 Excel 作为实时数据分析平台。

The sweet spot

你可能会想:我还要再用 Excel 吗?当然了。

在下面这些情况下,电子表格依然是你最好的选择:

  • 正确性和精确性并非优先事项

  • 数据量不大(比如不需要可扩展性)

  • 无需实时更新

  • 使用 Excel 作为便签薄快速整合原型

  • 无需长期维护

当你需要快速开发、验证正确性和可扩展性,同时又要保持和 Excel 一样的反应模型时,就是 Jupyter Notebook 大展身手之时。

不,Excel 并未淘汰,但 Jupyter Notebook 是更好的数据分析工具!

尽管我已经明确提到使用 Python/Jupyter 组合相较于 Excel 的一些实质性优点,在「地狱般的 Excel」小节中也隐晦地提到一些,我还是要把前十个优点列表如下:

  • 强大的数据操作 - 毕竟是数据科学家的工具箱!

  • 先进的可视化功能- 不再是枯燥的图标!

  • 更好的用户体验

  • 大数据处理 - 不再崩溃!

  • 性能管理 - 利用多处理器

  • 测试驱动的开发 - 考虑质量!

  • 开源可访问性 - 它有一个库

  • 错误追踪

  • 自动化更加简单

  • 自编文档 - 不要低估它的价值!

从哪开始

我发现新进入这一领域可能令人生畏,但是编程并非学习语法,而是使用正确的语言和工具来解决问题:在本文中也就是 Python 和 Jupyter

这里提供两个非常好的入门资源:

Think Python 免费电子书下载:http://greenteapress.com/thinkpython2/html/index.html

Jupyter Notebook 新手在线工具教程:https://www.dataquest.io/blog/jupyter-notebook-tutorial

重点是:Stay relevant!

结束语:

难以想象没有电子表格的企业界!

银行开始发现 Python 可以在其关键工作负载中作为 Excel 的替代品。最近,Barclays 因其培训交易员编程而成为新闻头条。我想你也应该遵守这个范例,你不会失望的!

让 Excel 去做它擅长的事,用 Python 和 Jupyter Notebook 来完成分析和自动化!

参考链接:https://towardsdatascience.com/jupyter-is-the-new-excel-a7a22f2fc13a

入门Jupyter Notebook电子表格
相关数据
数据分析技术

数据分析是一类统计方法,其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系,并绘制出统计信息图,以更简洁的解释这些数据中包含的主要信息。其他一些用于收集数据,以便弄清哪些是同质的,从而更好地了解数据。 数据分析可以处理大量数据,并确定这些数据最有用的部分。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

学习曲线技术

在机器学习领域,学习曲线通常是表现学习准确率随着训练次数/时长/数据量的增长而变化的曲线

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

Jupyter技术

Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 。

推荐文章
暂无评论
暂无评论~