⾦融科技、算法交易、量化⾦融必读书:Python⾦融⼤
数据分析第2版
银⾏本质上是技术公司。
——胡⼽·班齐格
近来,Python⽆疑是⾦融业的重要策略性技术平台之⼀。到2018年底,这已经不再是个问题:全世界的⾦融机构现在都尽最⼤努⼒利⽤Python及其强⼤的数据分析、可视化和机器学习程序库⽣态系统。在⾦融领域之外,Python还常常成为编程⼊门课程选择的语⾔,例如计算机科学课程项⽬。
除了容易理解的语法和多重范型⽅法之外,形成这⼀局⾯的主要原因之⼀是,Python已经成为⼈⼯智能(AI)、机器学习(ML)和深度学习(DL)领域的“头等公民”。这些领域的许多流⾏的软件包和程序库都直接⽤Python(如ML所⽤的scikit-learn)编写,或者⽤Python包装器(例如DL所⽤的TensorFlow)。
⾦融本⾝正在进⼊⼀个新时代,这⼀发展有两个主要的推动⼒。⾸先是基本上所有⾦融数据都可以编程访问——⼀般来说,这种访问是实时的,也是催⽣“数据驱动⾦融”的原因。⼏⼗年前,⼤部分交易或者投资决策是由交易员和投资组合管理⼈推动的,这些⼈阅读报纸,或者通过私下交谈进⾏学习。此后出
现了⼀些终端,通过计算机和电⼦通信,将⾦融数据实时传递到交易员和投资组合管理⼈的桌⾯上。今天,即使是⼀分钟产⽣的海量⾦融数据,个⼈(或者团队)都⽆法应付。只有处理速度和计算能⼒与⽇俱增的机器,才能应对⾦融数据的容量和速度。这意味着,全球⼤部分股票交易量是由算法和计算机驱动的,⽽不是来⾃于交易员。
第⼆个主要推动⼒是在⾦融中越来越重要的⼈⼯智能。越来越多的⾦融机构试图利⽤ML和DL算法改善运营,以及它们的交易及投资表现。
⾯对这⼀⾦融时代的挑战,Python是合适的编程语⾔和⽣态系统。本书涵盖有监督学习和⽆监督学习的基本ML算法(以及深度神经⽹络),但焦点是Python的数据处理和分析能⼒。想要全⾯叙述AI当前和未来在⾦融中的重要性,需要⼀整本书的篇幅。不过,⼤部分AI、ML和DL需要⼤量的数据,因此⽆论如何应该⾸先掌握数据驱动⾦融学。
《Python⾦融⼤数据分析》第2版更多的是⼀次升级,⽽⾮更新。例如,这⼀版增加了关于算法交易的⼀整个部分(第4部分)。这⼀主题最近在⾦融业变得相当重要,在散户中也很受欢迎。本版还增加了⼀个⼊门部分(第2部分),介绍Python基本编程和数据分析,这些知识将为本书的后续⼏个部分奠定基础。另1⽅⾯,第⼀版的某些章节完全删除了。例如,关于Web技术和对应库(如Flask)的部分删除,因为现在已经有专门介绍这些知识的图书。
在第2版中,我⼒图涵盖更多⾦融相关主题,聚焦于对⾦融数据科学、算法交易和计算⾦融学特别有⽤的Python技术。和第1版中⼀样,我采⽤的是实⽤⽅法,实现和图⽰先于理论细节,通常将重点放在整体上,⽽不是某些类、⽅法或者晦涩难懂的函数参数化选项。
描述完第2版的基本⽅法之后,我还必须强调,这本书既不是介绍Python编程,也不是介绍⼀般⾦融知识的图书。在这两个⽅⾯,都有⼤量出⾊的知识来源。本书定位于这两个激动⼈⼼的领域相互交叉的⽅⾯,并假定读者有⼀定的编程(不⼀定是Python)和⾦融背景。这些读者将学习把Python及其⽣态系统应⽤于⾦融领域的⽅法。
作者简介:
Yves J. Hilpisch博⼠是Python Quants集团的创始⼈和管理合伙⼈,该集团致⼒于应⽤开源技术来解决⾦融数据科学、⼈⼯智能、算法交易和计算⾦融学等问题。他还是AI Machine公司的CEO,这个公司的专业领域是通过专属策略执⾏平台来利⽤⼈⼯智能的威⼒。他还是另外两本图书的作者:
Derivatives Analytics with Python (Wiley, 2015)
Listed Volatility and Variance Derivatives (Wiley, 2017)
Yves在CQF项⽬讲授计算⾦融学课程,在EPAT项⽬讲授算法交易。他还是Python算法交易⼤学认证的⾸个在线培训项⽬的主管。
Yves编写了DX Analytics⾦融分析库,并在伦敦、柏林、巴黎和纽约等地组织了关于Python计量⾦融学相关的聚会、会议和训练营。他曾在美国、欧洲和亚洲的技术会议上担任过主讲⼈。
⽬录
第 1部分 Python与⾦融
第 1章 为什么将Python⽤于⾦融 3
1.1 Python编程语⾔ 3
1.1.1 Python简史 5
1.1.2 Python⽣态系统 6
1.1.3 Python⽤户谱系 7
1.1.4 科学栈 7
1.2 ⾦融中的科技 8
1.2.1 科技投⼊ 9
1.2.2 作为业务引擎的科技 9
1.2.3 作为进⼊门槛的科技和⼈才 10
1.2.4 不断提⾼的速度、频率和数据量 10
1.2.5 实时分析的兴起 11
1.3 ⽤于⾦融的Python 12
1.3.1 ⾦融和Python语法 12
1.3.2 Python的效率和⽣产率 16
1.3.3 从原型化到⽣产 20
1.4 数据驱动和⼈⼯智能优先的⾦融学 21
1.4.1 数据驱动⾦融学 21
1.4.2 ⼈⼯智能优先⾦融学 24
1.5 结语 26
1.6 延伸阅读 27
第 2章 Python基础架构 29
2.1 作为包管理器使⽤的conda 31
2.1.1 安装Miniconda 31
2.1.2 conda基本操作 33
2.2 作为虚拟环境管理器的conda 37
2.3 使⽤Docker容器 41
2.3.1 Docker镜像和容器 41
2.3.2 构建Ubuntu和Python Docker镜像 42
2.4 使⽤云实例 46
2.4.1 RSA公钥和私钥 47
2.4.2 Jupyter Notebook配置⽂件 48
2.4.3 Python和Jupyter Notebook安装脚本 49
2.4.4 协调Droplet设置的脚本 51
2.5 结语 52
2.6 延伸阅读 53
第 2部分 掌握基础知识
第3章 数据类型与结构 57
3.1 基本数据类型 58
3.1.1 整数 58
3.1.2 浮点数 59
3.1.3 布尔值 61
3.1.4 字符串 65
3.1.5 题外话:打印和字符串替换 66 3.1.6 题外话:正则表达式 69
3.2 基本数据结构 71
3.2.1 元组 71
3.2.2 列表 72
3.2.3 题外话:控制结构 74
3.2.4 题外话:函数式编程 75
3.2.5 字典 76
3.2.6 集合 78
3.3 结语 79
3.4 延伸阅读 79
第4章 ⽤NumPy进⾏数值计算 81
4.1 数据数组 82
4.1.1 ⽤Python列表形成数组 82 4.1.2 Python array类 84
4.2 常规NumPy数组 86
4.2.1 基础知识 86
4.2.2 多维数组 89
python大数据就业前景4.2.3 元信息 93
4.2.4 改变组成与⼤⼩ 93
4.2.5 布尔数组 97
4.2.6 速度对⽐ 99
4.3 NumPy结构数组 100
4.4 代码向量化 102
4.4.1 基本向量化 102
4.4.2 内存布局 105
4.5 结语 107
4.6 延伸阅读 108
第5章 pandas数据分析 109
5.1 DataFrame类 110
5.1.1 使⽤DataFrame类的第 ⼀步 110 5.1.2 使⽤DataFrame类的第⼆步 114 5.2 基本分析 118
5.3 基本可视化 122
5.4 Series类 124
5.5 GroupBy操作 126
5.6 复杂选择 128
5.7 联接、连接和合并 131
5.7.1 联接 132
5.7.2 连接 133
5.7.3 合并 135
5.8 性能特征 137
5.9 结语 139
5.10 延伸阅读 140
第6章 ⾯向对象编程 141
6.1 Python对象简介 145
6.1.1 int 145
6.1.2 list 146
6.1.3 ndarray 146
6.1.4 DataFrame 148
6.2 Python类基础知识 149
6.3 Python数据模型 154
6.4 Vector类 158
6.5 结语 159
6.6 延伸阅读 159
第3部分 ⾦融数据科学
第7章 数据可视化 163
7.1 静态2D绘图 164
7.1.1 ⼀维数据集 164
7.1.2 ⼆维数据集 170
7.1.3 其他绘图样式 177
7.2 静态3D绘图 184
7.3 交互式2D绘图 188
7.3.1 基本图表 188
7.3.2 ⾦融图表 192
7.4 结语 196
7.5 延伸阅读 196
第8章 ⾦融时间序列 197
8.1 ⾦融数据 198
8.1.1 数据导⼊ 198
8.1.2 汇总统计 201
8.1.3 随时间推移的变化 203 8.1.4 重新采样 207
8.2 滚动统计 209
8.2.1 概述 209
8.2.2 技术分析⽰例 211
8.3 相关分析 213
8.3.1 数据 213
8.3.2 对数回报率 214
8.3.3 OLS回归 216
8.3.4 相关 217
8.4 ⾼频数据 218
8.5 结语 220
8.6 延伸阅读 220
第9章 输⼊/输出操作 221
9.1 Python基本I/O 222 9.1.1 将对象写⼊磁盘 222 9.1.2 读取和写⼊⽂本⽂件 225 9.1.3 使⽤SQL数据库 229 9.1.4 读写NumPy数组 232 9.2 pandas的I/O 234
9.2.1 使⽤SQL数据库 235 9.2.2 从SQL到pandas 237 9.2.3 使⽤CSV⽂件 239 9.2.4 使⽤Excel⽂件 240
9.3 PyTables的I/O 242 9.3.1 使⽤表 242
9.3.2 使⽤压缩表 250
9.3.3 使⽤数组 252
9.3.4 内存外计算 253
9.4 TsTables的I/O 256 9.4.1 样板数据 257
9.4.2 数据存储 258
9.4.3 数据检索 259
9.5 结语 261
9.6 延伸阅读 262
第 10章 ⾼性能的Python 265 10.1 循环 266
10.1.1 Python 266 10.1.2 NumPy 267 10.1.3 Numba 268 10.1.4 Cython 269
10.2 算法 271
10.2.1 质数 271
10.2.2 斐波那契数 275 10.2.3 π 279
10.3 ⼆叉树 283
10.3.1 Python 283 10.3.2 NumPy 285 10.3.3 Numba 286 10.3.4 Cython 287
10.4 蒙特卡洛模拟 288 10.4.1 Python 289 10.4.2 NumPy 291 10.4.3 Numba 291 10.4.4 Cython 292 10.4.5 多进程 293
10.5 pandas递归算法 294 10.5.1 Python 294 10.5.2 Numba 296 10.5.3 Cython 296
10.6 结语 297
10.7 延伸阅读 298
第 11章 数学⼯具 299
11.1 逼近法 299
11.1.1 回归 301
11.1.2 插值 310
11.2 凸优化 314
11.2.1 全局优化 315 11.2.2 局部优化 317 11.2.3 有约束优化 318
11.3 积分 320
11.3.1 数值积分 321 11.3.2 通过模拟求取积分 322 11.4 符号计算 323
11.4.1 基础知识 323 11.4.2 ⽅程式 325
11.4.3 积分与微分 325 11.4.4 微分 326
11.5 结语 328
11.6 延伸阅读 328
第 12章 推断统计学 331
12.1 随机数 332
12.2 模拟 338
12.2.1 随机变量 338 12.2.2 随机过程 341 12.2.3 ⽅差缩减 356
12.3 估值 359
12.3.1 欧式期权 359 12.3.2 美式期权 364
12.4 风险测度 367
12.4.1 风险价值 367 12.4.2 信⽤价值调整 371

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。