前 言
近来,Python无疑是金融业的重要策略性技术平台之一。当我于2013年开始编写本书第1版时,仍然在许多演讲中不懈地介绍Python在金融方面相比其他语言及平台的竞争优势。到2018年年底,这已经不再是个问题:全世界的金融机构现在都尽最大努力利用Python及其强大的数据分析、可视化和机器学习程序库生态系统。在金融领域之外,Python还常常成为编程入门课程(例如计算机科学课程项目)选择的语言。
除了容易理解的语法和多重范型方法之外,形成这一局面的主要原因之一是,Python已经成为人工智能(AI)、机器学习(ML)和深度学习(DL)领域的“头等公民”。这些领域的许多流行的软件包和程序库都直接用Python(如ML所用的scikit-learn)编写,或者用Python包装器(例如DL所用的TensorFlow)。
金融本身正在进入一个新时代,这一发展有两个主要的推动力。首先是基本上所有金融数据都可以编程访问——一般来说,这种访问是实时的,也是催生“数据驱动金融”的原因。几十年前,大部分交易或者投资决策是由交易员和投资组合管理人推动的,这些人阅读报纸,或者通过私下交谈进行学习。此后出现了一些终端,可通过计算机和电子通信,将金融数据实时传递到交易员和投资组合管理人的桌面上。今天,即使是一分钟产生的海量金融数据,个人(或者团队)都无法应付。只有处理速度和计算能力与日俱增的机器,才能应对金融数据的容量和速度。这意味着,全球大部分股票交易量是由算法和计算机驱动的,而不是交易员。
第二个主要推动力是在金融中越来越重要的人工智能。越来越多的金融机构试图利用ML和DL算法改善运营,以及它们的交易及投资表现。2018年初,第一本关于“金融机器学习”的专著出版,强调了这种趋势。毫无疑问,还会有更多的图书涌现。这导致了可以称为“人工智能优先金融学”的现象,用可参数化的ML及DL算法代替传统的金融理论。传统的金融理论可能非常优雅,但在数据驱动、人工智能优先的金融学实践中不再有太大的用处了。
面对这一金融时代的挑战,Python是合适的编程语言和生态系统。本书涵盖有监督学习和无监督学习的基本ML算法(以及深度神经网络),但焦点是Python的数据处理和分析能力。想要全面叙述AI当前和未来在金融中的重要性,需要一整本书的篇幅。不过,大部分AI、ML和DL需要大量的数据,因此无论如何应该首先掌握数据驱动金融学。
本书第2版更多的是一次升级,而非更新。例如,这一版增加了关于算法交易的一整个部分(第4部分)。这一主题最近在金融业变得相当重要,在散户中也很受欢迎。本版还增加了一个入门部分(第2部分),介绍Python基本编程和数据分析,这些知识将为本书的后续几个部分奠定基础。另一方面,第1版的某些章节完全删除了。例如,关于Web技术和对应库(如Flask)的部分删除,因为现在已经有专门介绍这些知识的图书。
在第2版中,我力图涵盖更多金融相关主题,聚焦于对金融数据科学、算法交易和计算金融学特别有用的Python技术。和第1版中一样,我采用的是实用方法,实现和图示先于理论细节,通常将重点放在整体上,而不是某些类、方法或者晦涩难懂的函数参数化选项。
描述完第2版的基本方法之后,我还必须强调,这本书既不是介绍Python编程,也不是介绍一般金融知识的图书。在这两个方面,都有大量出色的知识来源。本书定位于这两个激动人心的领域相互交叉的方面,并假定读者有一定的编程(不一定是Python)和金融背景。这些读者将学习把Python及其生态系统应用于金融领域的方法。
Jupyter Notebook和本书配套代码可以通过Quants平台访问和执行。读者可以在Python Quants官网免费注册。
我的公司(Python Quants)和本人还提供了许多帮助读者掌握Python金融数据科学、人工智能、算法交易和计算金融学的资源。你可以从访问如下站点开始:
- 我们公司的网站Python Quants;
- 我的个人网站The AI QUANT;
- 我们的Python书籍网站(在Python Quants官网中);
- 我们的在线培训网站(在Python Quants官网中);
- 我们的认证计划网站(在Python Quants官网中)。
在我们前几年所提供的服务中,最令我自豪的是“Python算法交易认证计划”(Certificate Program in Python for Algorithmic Trading)。它提供了超过150小时的实时和录制教程,超过1200页的文档,5000行以上的Python代码以及50多个Jupyter Notebook。这一课程每年开设多次,每一次我们都进行更新和改进。这些在线课程是同类中的首创。通过与萨尔州应用技术大学的合作,成功完成该课程者将获得正式的大学文凭。
除此之外,我最近还启动了新的“The AI Machine”项目和公司,以实现自动化算法交易策略部署的标准化。我们希望通过这一项目,以系统化、可伸缩的方式实施多年来在这个领域传授的方法,以便利用算法交易领域的许多机遇。近来,此类项目即便对于像我们这样规模较小的团队来说也是可能的,这应该归功于Python以及数据驱动和人工智能优先金融学。
我以如下的话作为第1版前言的结束:
对于Python确立金融行业中重要技术地位这一事实,我确实感到很兴奋。我敢肯定,它在未来将会起到更重要的作用,例如在衍生品和风险分析或者高性能计算领域中。我希望本书能够帮助专业人士、研究人员和学生在面对这一迷人领域中的挑战时,最大限度地利用Python。
当我在2014年写下上述文字时,还无法预测Python在金融学中将会变得多么重要。2018年,我因为自己的期许和希望已经被大大超越而感到快乐。也许,本书的第1版对此起到了小小的作用。无论如何,读者都应该感谢不懈努力的开源开发者们,如果没有他们,就不可能书写Python的成功故事。
本书约定
这个元素表示提示或者建议。
这个元素表示一般注解。
这个元素表示警告或者注意事项。
代码示例的使用
补充材料(特别是Jupyter Notebook和Python脚本/模块)可以从Python Quants下载。
本书的目的是帮助读者完成工作。一般而言,你可以在你的程序和文档中使用本书中的代码,而且也没有必要取得我们的许可。但是,如果你要复制的是核心代码,则需要和我们打个招呼。例如,你可以在无须获取我们许可的情况下,在程序中使用本书中的多个代码块。但是,销售或分发O’Reilly图书中的代码则需要取得我们的许可。通过引用本书中的示例代码来回答问题时,不需要事先获得我们的许可。但是,如果你的产品文档中融合了本书中的大量示例代码,则需要取得我们的许可。
在引用本书中的代码示例时,如果能列出本书英文原书的属性信息是最好不过(但不是必需的)。属性信息通常包括书名、作者、出版社和ISBN。例如:“Python for Finance, 2nd Edition, by Yves Hilpisch (O’Reilly). Copyright 2019 Yves Hilpisch, 978-1-492-02433-0.”
在使用书中的代码时,如果不确定是否属于正常使用,或是否超出了我们的许可,请通过permissions@oreilly.com与我们联系。
O’Reilly Safari
Safari(原Safari Books Online)是供企业、政府、教育工作者和个人使用的会员制培训与参考平台。
会员有权访问来自250个出版商(包括O’Reilly Media、Harvard Business Review、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Adobe、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett和Course Technology)、数以千计的图书、培训视频、学习路径、交互教程和推荐书目。
更多信息请访问O’Reilly官网。
联系方式
如果你想就本书发表评论或有任何疑问,敬请联系出版社:
美国:
O’Reilly Media. Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
我们还为本书建立了一个网页(官方网站),其中包含了勘误表、示例和其他额外的信息。
关于本书的技术性问题或建议,请发邮件到:bookquestions@ oreilly.com。
欢迎登录我们的网站,查看更多我们的图书、课程、会议和最新动态等信息。
致谢
我要感谢所有为本书的实现提供帮助的人,特别是O’Reilly的团队,他们在许多方面改进了我的手稿。感谢审稿人休·布朗(Hugh Brown)和杰克·万托布拉斯(Jake VanderPlas),本书从他们有价值的反馈和许多建议中获益匪浅。余下的任何错误责任当然在我。
迈克尔·施韦德(Michael Schwed)曾与我紧密协作十多年的时间,值得我特别感谢。多年以来,我已经从他的工作、支持和Python技巧中得到多方面的好处。
我还要感谢Refinitiv公司(前Thomson Reuters)的詹森·拉姆晶达尼(Jason Ramchandani)和豪尔赫·桑托斯(Jorge Santos),他们不仅持续支持我的工作,还为开放源码社区做出了贡献。
和第1版一样,本版也从我数年来参加的数十次“Python金融”讨论以及数百小时的“Python金融”培训中得到很大的益处。在许多情况下,来自参与者的反馈有助于改进我的培训材料,这些材料往往最终成为本书中的某个章节。
本书第1版的写作花费了大约一年的时间。总体上,编写和升级第2版也花了大约一年,这比我的预期要长一些,主要的原因是为了这个话题我经常忙于旅行和商务演讲。
写作需要许多独处的时间,无法与家人共度。因此,我要感谢桑德拉、莉丽、亨利、阿道夫、佩特拉和海因茨的理解和支持——不仅仅是在编写本书的时候。
和第1版一样,我将本书的第2版献给我可爱、坚强且富于同情心的妻子桑德拉。多年以来,她赋予家庭新的意义。感谢你。
Yves
德国萨尔州,2018年11月