本书系统阐述Python在金融领域的应用,不仅涵盖核心的金融理论及相关数学概念,还详细讲解如何应用Python求解经典的资产定价模型、解决金融中的线性和非线性问题、开发数值程序和利率模型,以及如何根据有限差分法定价来描绘含有期权的隐含波动率曲线等。
本书还介绍了Hadoop在大数据分析中的应用以及Python和Excel的融通,包括使用Python执行MapReduce操作,用NoSQL存储数据,在Python中构建一个组件对象模型服务器和客户端界面与Excel融通,以及在Excel中即时计算期权价格。
此外,通过学习本书,你将了解如何连接到代理API,检索市场数据,生成交易信号并向交易所发送订单,以及平均回报和趋势跟踪等交易策略的实施。另外,本书还将介绍风险管理、头寸跟踪和回测技术,以帮助你管理交易策略的实施效果。
Python已广泛应用于银行业、投资管理、保险业、房地产行业等金融领域,用于开发金融模型、管理风险和自动完成交易。许多大型金融机构依赖Python来搭建职位管理、资产定价、风险管理和交易系统等基础设施。
本书将介绍核心的金融理论,并给出它们的数学概念,以帮助读者更好地理解它们在实际中的应用价值。你将了解如何应用Python求解经典的资产定价模型,解决金融中的线性和非线性问题,开发数值程序和利率模型,以及如何根据有限差分法定价来描绘含有期权的隐含波动率曲线等。
随着高级计算技术的出现,我们必须要考虑如何存储和处理大量数据。而Hadoop是目前处理大数据的流行工具。因此本书将介绍Hadoop的工作原理及其与Python的集成,以获得金融数据的分析方法;以及如何利用Python实现NoSQL在存储非结构化数据中的应用。
目前许多公司开始向客户提供API,以使用他们定制的交易软件进行交易。通过学习本书,你将了解如何连接到代理API,检索市场数据,生成交易信号并向交易所发送指令,以及平均回报和趋势跟踪等交易策略的实施。另外,本书还将介绍风险管理、头寸跟踪和回溯测试技术,以帮助你管理交易策略的实施效果。
金融行业中,使用Microsoft Excel处理债券交易和后台业务是一种普遍现象。本书将介绍如何在Python中创建数字定价组件对象模型(COM)服务器,使你的电子表格能够即时计算和更新模型值。
本书的主要内容
第1章探讨了Python在金融领域的适用性,引入IPython作为可视化数据和执行科学计算的有效工具。
第2章介绍了使用Python求解线性方程组的方法,执行整数规划,以及将矩阵应用于投资组合分析的线性优化。
第3章讨论了使用Python构建金融非线性模型以及术根方法。
第4章探讨了如何使用三叉树模型、二叉树网格和有限差分法等进行期权估值。
第5章讨论了收益率曲线的引导过程,涵盖一些利用Python实现的衍生品利率的短期定价模型。
第6章讨论了波动率指数,对欧洲斯托克50指数波动率数据进行分析,并使用子指数的期权价格复制主要指数。
第7章介绍了Hadoop在大数据分析中的应用,如何使用Python执行MapReduce操作,以及如何使用NoSQL存储数据。
第8章探讨了逐步开发均值回归算法交易和趋势跟踪算法交易策略,以及交易系统风险管理等。
第9章讨论如何设计并实现一个事件驱动的回溯测试系统,帮助你把握模拟交易策略的性能。
第10章介绍了如何在Python中构建一个组件对象模型服务器和客户端界面与Excel融通,以及如何在Excel中即时计算期权价格。
学习本书的软硬件支持
学习本书需要安装如下软件:
操作系统:
● 能使用Python 27或更高版本的操作系统
● 第10章需要Windows XP或更高版本的操作系统
● 第7章需要有至少4GB RAM的64位主机操作系统
本书将使用以下Python包的Python、SciPy、pandas、IPython和Matplotlib模块:
● Continuum Analytics的Anaconda 21或更高版本:https://storecontinuumio/cshop/anaconda/
● Enthought的Canopy 15或更高版本:https://storeenthoughtcom/downloads/
其他必需的Python模块:
● Statsmodels,见http://statsmodelssourceforgenet/
● PuLP(第2章),见https://githubcom/coinor/pulp
● lxml(第6章),见http://lxmlde/
● PyMongo 27(第7章),见https://pypipythonorg/pypi/pymongo/
● IbPy(第8章),见https://githubcom/blampe/IbPy
● oandapy(第8章),见https://githubcom/oanda/oandapy
● pythonrequests(第8章),见https://pypipythonorg/pypi/requests/
● PyWin32(第10章),见http://sourceforgenet/projects/pywin32/files/
可选Python模块:
● 使用pip 60自动安装Python包,见https://pypipythonorg/pypi/pip
需要的软件:
● Mozilla Firefox,见https://wwwmozillaorg/enUS/firefox/new/
● MongoDB 26(第7章),见http://wwwmongodb.org/downloads
● VirtualBox 43(第7章),见https://wwwvirtualboxorg/wiki/Downloads
● Cloudera QuickStart VM with CDH (Cloudera Distribution Including Apache Hadoop)(第7章),见http://wwwclouderacom/content/cloudera/en/downloads/quickstart_vmshtml
● Interactive Brokers (IB) Trader Workstation (TWS)(第8章),见https://wwwinteractivebrokerscom/en/ indexphp?f=1537
● 使用Oracle Java 7运行IB TWS和OANDA fxTrade平台(第8章)
● Microsoft Office Excel 2010或更高版本,并使用宏(第10章)
本书的读者对象
本书面向开发金融应用程序的学生和程序员,提供金融服务的顾问,金融分析师以及想要利用Python在数据可视化、交互式分析和科学计算方面的优势进行财务分析的人员。对此,你需要掌握一定的Python基础知识和金融概念,在学习每一章的技术内容之前,本书会为初学者介绍相关的背景资料。
计算机/数据分析
Python最初用于科学计算,它的灵活性和稳定性使其广泛应用于数学计算和软件开发,后来迅速在金融领域取得一席之地。
本书将介绍股票、期权、利率衍生品等金融工具定价方法,如何根据市场指数进行大数据分析,以及如何使用NoSQL存储tick数据,从而解决建模、交易策略优化和风险管理等金融领域的复杂问题。
通过阅读本书,你将学到:
使用IPython Notebook实现交互计算。
求解金融模型的线性方程,进行最小二乘回归分析。
使用求根法和求解器求得非线性模型的最优解。
使用不同类型的数值程序为期权定价。
利率及衍生工具的建模分析。
使用NoSQL进行大数据管理,借助Hadoop进行分析。
用Python构建高频算法交易平台。
构造事件驱动的回溯测试模型,衡量策略执行效果。
[新加坡] 马伟明(James Ma Weiming) 著:
James Ma Weiming 毕业于伊利诺理工大学斯图尔特商学院,获得金融学硕士学位。他编写了大量高频、低延时的开放源代码程序和工具。
在获得新加坡南洋理工大学计算机工程学士学位和南洋理工学院信息技术专业毕业证书后,James开始在新加坡工作。他从事过外汇和固定收益产品交易,还为一家基金销售平台开发移动应用程序。
前言
第1章Python在金融中的应用
11Python适合我吗
111免费+开源
112高级、强大、灵活的编程语言
113丰富的标准库
12面向对象编程与函数式编程
121面向对象式方法
122函数式方法
123我该使用哪种方法
13我该使用哪个版本的Python
14IPython简介
141安装IPython
142使用pip
143IPython Notebook
144Notebook单元格
145IPython Notebook简单的练习
146Notebook与金融
15总结
第2章金融中的线性问题
21资本资产定价模型与证券市场线
22套利定价模型
23因子模型的多元线性回归
24线性最优化
241安装PuLP
242一个简单的线性优化问题
243线性规划的结果
244整数规划
25使用矩阵解线性方程组
26LU分解
27Cholesky分解
28QR分解
29总结
第3章非线性与金融
31非线性建模
32非线性模型举例
321隐含波动率模型
322马尔可夫机制转换模型
323门限自回归模型
324平滑转换模型
33非线性模型求根算法概述
34增量法
35二分法
36牛顿迭代法
37割线法
38求根法的结合使用
39利用SciPy求解
391SciPy求根标量函数
392通用非线性求解器
310总结
第4章利用数值方法为衍生品定价
41什么是期权
42二叉树期权定价模型
421欧式期权定价
422编写StockOption类
423编写BinomialEuropeanOption类
424利用BinomialTreeOption类给美式期权定价
425CoxRossRubinstein模型
426LeisenReimer模型
43希腊值
44三叉树期权定价模型
45期权定价中的Lattice方法
451二叉树网格
452编写BinomialCRROption类
453三叉树网格
46有限差分法
461显式方法
462隐式方法
463CrankNicolson方法
464奇异障碍期权定价
465美式期权定价的有限差分
47隐含波动率模型
48总结
第5章利率及其衍生工具
51固定收益证券
52收益率曲线
53无息债券
54自助法构建收益率曲线
55远期利率
56计算到期收益率
57计算债券定价
58久期
59凸度
510短期利率模型
5101Vasicek模型
5102CoxIngersollRoss模型
5103Rendleman and Bartter模型
5104Brennan and Schwartz模型
511债券期权
5111可赎回债券
5112可回售债券
5113可转换债券
5114优先股
512可赎回债券定价
5121Vasicek模型定价无息债券
5122提前行权定价
5123有限差分策略迭代法
5124可赎回债券定价的其他影响因素
513总结
第6章利用Python分析欧洲斯托克 50指数波动率
61波动率指数衍生品
611STOXX与欧洲期货交易所
612EURO STOXX 50指数
613VSTOXX
614VIX
62获取EUROX STOXX 50指数和VSTOXX数据
63数据合并
64SX5E与V2TX的财务分析
65SX5E与V2TX的相关性
66计算VSTOXX子指数
661获取OESX数据
662计算VSTOXX子指数的公式
663VSTOXX子指数值的实现
664分析结果
67计算VSTOXX主指数
68总结
第7章大数据分析
71什么是大数据
72Hadoop
721HDFS
722YARN
723MapReduce
73大数据工具对我来说实用吗
74获取Apache Hadoop
741从Cloudera获取QuickStart VM
742获取VirtualBox
743在VirtualBox上运行Cloudera VM
75Hadoop中的字计数程序
751下载示例数据
752map程序
753reduce程序
754测试脚本
755在Hadoop上运行MapReduce
756使用Hue浏览HDFS
76Hadoop的金融实践
761从Yahoo! Finance获取IBM股票价格
762修改map程序
763使用IBM股票价格测试map程序
764运行MapReduce计算日内价格变化
765分析MapReduce结果
77NoSQL简介
771获取MongoDB
772创建数据目录并运行MongoDB
773获取PyMongo
774运行测试连接
775获取数据库
776获取集合
777插入文档
778获取单个文档
779删除文档
7710批量插入文档
7711统计集合文档
7712查找文档
7713文档排序
7714结论
78总结
第8章算法交易
81什么是算法交易
82带有公共API的交易平台列表
83有没有最好的编程语言
84系统功能
85通过Interactive Brokers和IbPy进行算法交易
851获取Interactive Brokers的Trader WorkStation
852获取IbPy——IB API包装器
853指令路由机制
86构建均值回归算法交易系统
861设置主程序
862处理事件
863实现均值回归算法
864跟踪头寸
87使用OANDA API进行外汇交易
871什么是REST
872设置OANDA账户
873OANDA API使用方法
874获取oandapy——OAND AREST API包装器
875获取并解析汇率数据
876发送指令
88构建趋势跟踪外汇交易平台
881设置主程序
882处理事件
883实现趋势跟踪算法
884跟踪头寸
89风险价值模型
810总结
第9章回溯测试
91回溯测试概述
911回溯测试的缺陷
912事件驱动回溯测试系统
92设计并实施回溯测试系统
921TickData类
922MarketData类
923MarketDataSource类
924Order类
925Position类
926Strategy类
927MeanReverting Strategy类
928Backtester类
929运行回溯测试系统
9210改进回溯测试系统
93回溯测试模型的10个注意事项
931模型的资源限制
932模型评价标准
933估计回溯测试参数的质量
934应对模型风险
935样本数据回测
936解决回溯测试的常见缺陷
937常识错误
938理解模型环境
939数据准确性
9310数据挖掘
94回溯测试中的算法选择
941k均值聚类算法
942KNN机器学习算法
943分类回归树分析
9442k析因设计
945遗传算法
95总结
第10章Python与Excel的融通
101COM概述
102Excel与金融
103构建COM服务器
1031先决条件
1032获取pythoncom模块
1033构建BlackScholes模型COM服务器
1034注册和注销COM服务器
1035构建CoxRossRubinstein模型COM服务器
1036构建三叉网格模型COM服务器
104在Excel中构建COM客户端
1041设置VBA代码
1042设置单元格
105COM的其他功能
106总结