金融人工智能:用Python实现AI量化交易
上QQ阅读APP看书,第一时间看更新

前言

对于我们所能想到的每一种投资策略,alpha 收益是否终将消失?更本质的问题是,在无数聪明头脑和智慧机器的帮助下,我们是否将迎来这样的一天:金融市场达到完全有效,从而使我们可以放心地认为所有的资产都被正确定价?

——Robert Shiller,2015 年

人工智能(artificial intelligence,AI)已成为 21 世纪最初十年的一项关键技术,并将继续主导之后的技术发展。随着技术创新、算法突破、大数据崛起以及与日俱增的算力,很多行业正在经历人工智能所带来的剧变。

在媒体大众聚焦于人工智能给自动驾驶汽车和游戏等领域带来突破的同时,在金融行业,人工智能也正异军突起。然而,相较于在网页搜索和社交媒体等领域的应用,人工智能在金融领域的应用可以说还只是锋芒初露。

本书覆盖了金融人工智能的若干重要方面。金融人工智能是一个宽泛的话题,仅一本书很难面面俱到,因此需要有所侧重。本书将在第一部分和第二部分中首先介绍一些基本信息。在第三部分中,我们将从统计学角度探讨金融市场失效的现象,并在此过程中借用人工智能中的神经网络技术。只有存在市场失效,并且可以通过人工智能算法对市场动向进行预测,才有可能进一步采用算法交易从经济失效中获益,本书将在第四部分中讨论相关话题。如果我们可以系统地从市场失效和经济失效中获益,那么这将与金融领域众所周知的基础理论“有效市场假说”(efficient market hypothesis,EMH)相矛盾。成功设计出智能交易机器人一直以来被认为是金融领域的“圣杯”,也许人工智能将引领我们实现这一终极目标。在这种情况下,人工智能将如何影响金融市场?金融奇点来临的可能性有多大?本书的第五部分将针对上述问题展开讨论。作为技术附录的第六部分将结合实际用例为读者展示如何基于 Python 代码从零开始搭建神经网络。

在金融领域应用人工智能所遇到的问题,与在其他领域中所遇到的问题并无大异。在 21 世纪第一个十年中,人工智能领域的一些主要突破可能来自强化学习(reinforcement learning,RL)在游戏中的应用,比如训练人工智能下国际象棋和围棋等棋牌类游戏(Silver 等,2016),以及玩雅达利(Atari)游戏——一种在 20 世纪 80 年代出品的电子游戏(Mnih 等,2013)。在游戏领域应用强化学习的过程让科学家受益匪浅,同样的能力今天被用来解决更多富有挑战的问题,譬如设计和制造自动驾驶汽车,以及改进医疗诊断手段。表 P-1 是人工智能在不同领域的应用情况。

表 P-1:人工智能在不同领域的应用情况

领域

智能体

目标

方法

奖励

障碍

风险

电子游戏

人工智能体(软件)

最大化游戏分数

在虚拟游戏环境中进行强化学习

得分

规划和延迟奖励

自动驾驶

自动驾驶汽车(软件 + 车)

从地点 A 安全地驾驶至地点 B

在虚拟(游戏)环境中进行强化学习,并在现实世界中试驾

对错误进行处罚

从虚拟世界到物理世界的转换

毁坏建筑,伤害人类

金融交易

智能交易机器人(软件)

最优化长期表现

在虚拟交易环境中进行强化学习

经济回报

有效市场和竞争

经济损失

训练人工智能体玩电子游戏的天然优势在于,游戏世界是一个完美的虚拟环境 1,不存在任何真实的风险。相反,训练自动驾驶汽车则不然,将人工智能体从虚拟学习环境迁移到真实驾驶路况的过程中面临着巨大的挑战。我们很难想象将《侠盗飞车》游戏世界中的车辆开到现实世界中来,这将带来车祸甚至伤亡等后果十分严重的风险。

1 参见 Arcade Learning Environment。

对智能交易机器人来说,情况则要好很多,因为可以通过仿真的金融市场,实现完全虚拟的强化学习。操作错乱的智能交易机器人所带来的主要风险在于经济损失,或者从更大的尺度上看,在于智能交易机器人的群体性行为所带来的系统性风险。然而总体来看,对人工智能算法的训练、测试和部署来说,金融领域是一个理想的场景。

随着金融领域的快速发展,甚至一个好奇并且努力上进的学生都可以在笔记本计算机和互联网上成功地将人工智能应用于金融交易场景。这要归功于近年来计算机软件和硬件的发展,还有在线交易商的崛起。在线交易商提供历史金融数据和实时金融数据,并允许通过程序化交易接口(API)执行金融交易。

本书包括如下 6 个部分。

第一部分

  第一部分会讨论人工智能的主要概念和算法,比如监督学习和神经网络(第 1 章)。接下来还会讨论超级人工智能的概念,这意味着人工智能将拥有与人类相当的智能水平,甚至在某些领域会超越人类的智能水平(第 2 章)。并不是每一个研究人员都相信在可预见的未来能够实现超级人工智能。然而,关于超级人工智能的讨论为我们提供了一个有益的框架,可以帮助我们讨论人工智能,尤其是人工智能在金融领域的应用。

第二部分

  第二部分由 4 章组成,会讨论传统的规范性金融理论(第 3 章),以及该领域如何被数据驱动的金融学(第 4 章)和机器学习(第 5 章)所转变。数据驱动的金融学和机器学习促进了无模型、人工智能优先的方法在金融领域的崛起,第 6 章将对此展开讨论。

第三部分

  第三部分通过运用深度学习、神经网络和强化学习等方法,发掘统计学意义上的金融市场失效现象。这一部分会依次介绍密集神经网络(DNN,第 7 章)2、循环神经网络(RNN,第 8 章)和强化学习的相关算法(第 9 章),这些算法依赖密集神经网络模型来表达和逼近人工智能体的最优策略。

2 本书中的 DNN 如无另外说明,均为 dense neural network 的缩写,即密集神经网络,在其他文献中也称为 MLP(multi-layer perceptron,多层感知机)。——译者注

第四部分

  第四部分会讨论如何通过算法交易来利用统计学意义上的市场失效。这一部分的话题包括向量化回测(第 10 章)、基于事件的回测和风险管理(第 11 章),以及人工智能算法交易策略的执行与部署(第 12 章)。

第五部分

  第五部分是关于金融行业中基于人工智能的竞争所带来的潜在后果(第 13 章)。这一部分还会讨论金融奇点的可能性,届时人工智能体将在我们所知的金融领域的每一方面占据主导地位。在该场景的讨论中,我们将侧重于那些产出利润持续高于人类和机构业绩基线的人工智能金融交易机器人(第 14 章)。

第六部分

  附录部分包含交互式神经网络训练的 Python 代码(附录 A),通过 Python 代码从零开始搭建简单的浅层神经网络类库(附录 B),以及一个运用卷积神经网络(CNN)进行金融时间序列预测的实例(附录 C)。

作者题记

人工智能在金融交易中的应用仍然是一个新生领域。虽然在撰写本书时市面上已经有一些关于这个方向的书,但是它们大多没有展示对于经济有效地利用统计学意义上的市场失效现象,人工智能意味着什么。

一些对冲基金宣称已经完全通过机器学习来管理投资者的资产。突出的案例是一家名为 Voleon Group 的对冲基金,截至 2019 年年底,该基金管理着超过 60 亿美元的资产(Lee 和 Karsh,2020)。依赖于机器学习,该基金在 2019 年的业绩为 7%,而同年,标准普尔 500 股票指数上涨了约 30%。

本书基于多年来开发、回测和部署人工智能算法交易策略的实战经验。由于行业自身具有前沿性和保密性,本书所展示的方法和示例主要基于我本人的研究。论述和表达侧重实操,难免有失严谨,很多实例缺少正规的理论证明或者实验验证。金融领域或机器学习领域的专家可能会对本书中的一些应用和案例持有完全不同的意见。譬如说,François Chollet(2017)等机器学习和深度学习领域的专家,对于预测金融市场这件事本身是否可行,持强烈的怀疑态度。某些金融领域的专家,比如 Robert Shiller(2015),怀疑金融奇点这一天是否真的会到来。一些活跃于两个领域交叉方向的专家,比如 Marcos López de Prado(2018)则认为,在金融交易和投资中运用机器学习技术需要行业规模的投入,这意味着浩大的团队及巨量的预算。

本书并非就每个主题所涉及的各种观点给出一个中立、全面的看法。书中所展示的内容主要基于我的个人经验、演示示例和 Python 代码的实践考量。很多示例是为了展示特定观点和结果而有意选择并做出调整的。因此,难免会被认为存在数据探查和过拟合的现象 [ 关于这些主题的讨论,详见 Hilpisch(2020)的第 4 章 ]。

本书的主要目标是使读者能够使用书中的代码示例作为框架,探索运用人工智能进行金融交易这一令人兴奋的领域。为实现此目标,本书始终以许多简化的假设为基础,并且主要采用金融时间序列数据以及基于此类数据的衍生特征。在实际应用中,当然不必局限于金融时间序列数据,也可以使用多种其他数据类型和数据源。本书的特征衍生方法隐式地假设了金融时间序列及衍生特征Ⓐ示出的模式至少在一定程度上会随时间持续存在,并且可以用来预测未来的价格走势。

在此背景下,本书提供的所有示例和代码本质上都是技术性和说明性的,并不代表任何推荐或投资建议。

对于那些想部署本书中介绍的方法和算法交易策略的读者,我的另一本书 Python for Algorithmic Trading: From Idea to Cloud Deployment 提供了更多面向过程的技术细节,它与本书在许多方面是相辅相成的。对于刚开始在金融领域使用 Python 的读者,以及需要温故知新或者参考资料的读者,我的《Python 金融大数据分析》这本书完整地涵盖了在金融领域应用 Python 所涉及的重要主题和基本技能。

本书使用如下排版约定。

黑体字

  表示新术语或重点强调的内容。

等宽字体(constant width

  表示程序片段,以及正文中出现的变量名、函数名、数据库、数据类型、环境变量、语句和关键字等。

等宽粗体(constant width bold

  表示应该由用户输入的命令或其他文本。

等宽斜体(constant width italic

  表示应该由用户输入的值或根据上下文确定的值替换的文本。

 该图标表示提示或建议。

 该图标表示一般注记。

 该图标表示重要信息。

 该图标表示警告或警示。

可以通过图灵社区本书主页下载本书示例代码。

本书旨在帮助你完成工作。一般来说,你可以在自己的程序或文档中使用本书提供的示例代码。除非需要复制大量代码,否则无须联系我们获得许可。比如,使用本书中的几个代码片段编写程序无须获得许可,销售或分发 O'Reilly 图书的示例光盘则需要获得许可;引用本书中的示例代码回答问题无须获得许可,将本书中的大量示例代码放到你的产品文档中则需要获得许可。

我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明通常包括书名、作者、出版社和 ISBN,比如“Artificial Intelligence in Finance by Yves Hilpisch (O'Reilly). Copyright 2021 Yves Hilpisch, 978-1-492-05543-3”。

如果你觉得自己对示例代码的用法超出了上述许可的范围,欢迎你通过 permissions@oreilly.com 与我们联系。

40 多年来,O'Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。

我们拥有独特的由专家和创新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O'Reilly 的在线学习平台让你能够按需访问现场培训课程、深入的学习路径、交互式编程环境,以及 O'Reilly 和 200 多家其他出版商提供的大量文本资源和视频资源。有关的更多信息,请访问 https://www.oreilly.com

如有与本书有关的评价或问题,请联系出版社。

美国:

  O'Reilly Media, Inc.

  1005 Gravenstein Highway North

  Sebastopol, CA 95472

中国:

  北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035)

  奥莱利技术咨询(北京)有限公司

O'Reilly 的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表 3、示例代码以及其他信息。本书的网页是 https://oreil.ly/ai-in-finance

3 也可以通过图灵社区本书主页提交中文版勘误。——编者注

你还可以发送电子邮件至 errata@oreilly.com.cn 评论或询问与本书有关的技术问题。

要了解更多 O'Reilly 图书、培训课程、会议和新闻的信息,请访问以下网站:https://www.oreilly.com

我们在 Facebook 的地址如下:http://facebook.com/oreilly

请关注我们的 Twitter 动态:http://twitter.com/oreillymedia

我们的 YouTube 视频地址如下:http://www.youtube.com/oreillymedia

我要感谢本书的技术审稿人 Margaret Maynard-Reid、Tim Nugent 博士和 Abdullah Karasan 博士,他们帮助我改进了本书的内容。

“Python 计算金融和算法交易”证书项目的代表也为本书的改进提供了帮助。他们的不断反馈使我避免了很多错误,并改进了本书中和在线培训课程中所使用的代码以及 Python 笔记本。

同时也要感谢“Python 量化”和“AI 机器”的团队成员,特别是 Michael Schwed、Ramanathan Ramakrishnamoorthy 和 Prem Jebaseelan 在多方面给予我的支持,他们帮助我解决了在写作本书时遇到的各种技术难题。

还要感谢 O'Reilly Media 的团队成员,尤其是 Michelle Smith、Corbin Collins、Victoria DeRose 和 Danny Elfanbaum。因为有他们,才有了本书,他们在很多方面帮助我完善了本书。

当然,由于本人才疏学浅,难免会由于我个人的原因造成各种错漏。

此外,还要感谢 Refinitiv 的团队,特别是 Jason Ramchandani 提供的财务数据和持续的支持,本书中使用并提供给读者的主要数据文件都是通过各种方式从 Refinitiv 的数据接口获得的。

当然,今天利用人工智能和机器学习的每一个人,都得益于大量前人的成就和贡献。因此,我们应该永远铭记牛顿在 1675 年所写的那句话:“如果说我看得比别人远一些,那是因为我站在了巨人的肩膀上。”从这个意义上说,非常感谢所有为该领域做出贡献的研究人员和开源维护者。

最后,特别要感谢我的家人,他们一直支持我的工作和写作。尤其感谢我的妻子 Sandra,她不懈地照顾家庭中的每一个人,为我们提供了一个充满爱的家庭环境。我把本书献给我可爱的妻子 Sandra 和我优秀的儿子 Henry。