《Python金融数据分析(原书第2版)》介绍如何利用新的程序语言进行金融建模并实现复杂的数据运算。书中讲授的程序工具与数据均可以通过公开渠道获取,通过建模与研究分析,你会对整个Python生态体系有全局性的认识。大量的实例分析也会加深你对金融风险管控的认知。
封面图
目录
- 前言
- 审校者简介
- 第一部分开始学习Python
- 第1章Python金融分析概述2
- 1.1安装Python3
- 1.1.1准备一个虚拟环境3
- 1.1.2运行Jupyter Notebook4
- 1.1.3关于Python的其他建议5
- 1.2Quandl简介6
- 1.3绘制时间序列图7
- 1.3.1从Quandl检索数据集7
- 1.3.2绘制收盘价与成交量的关系图9
- 1.3.3绘制烛台图12
- 1.4对时间序列数据进行金融分析13
- 1.4.1绘制收益率图13
- 1.4.2绘制累积收益率图14
- 1.4.3绘制直方图15
- 1.4.4绘制波动率图16
- 1.4.5Q-Q图17
- 1.4.6下载多个时间序列数据18
- 1.4.7显示相关矩阵19
- 1.4.8绘制相关性图19
- 1.4.9简单的移动平均线20
- 1.4.10指数移动平均22
- 1.5总结23
- 第二部分金 融 概 念
- 第2章金融中的线性问题26
- 2.1资本资产定价模型与证券市场线27
- 2.2套利定价理论模型30
- 2.3因子模型的多元线性回归30
- 2.4线性最优化32
- 2.4.1安装Pulp32
- 2.4.2一个用线性规划求最大值的实例32
- 2.4.3线性规划的结果34
- 2.4.4整数规划34
- 2.5使用矩阵解线性方程组37
- 2.6LU分解38
- 2.7Cholesky分解40
- 2.8QR分解41
- 2.9使用其他矩阵代数方法求解42
- 2.9.1Jacobi迭代法42
- 2.9.2Gauss-Seidel迭代法44
- 2.10总结45
- 第3章金融中的非线性问题46
- 3.1非线性建模46
- 3.2非线性模型求根算法49
- 3.2.1增量法50
- 3.2.2二分法52
- 3.2.3牛顿迭代法54
- 3.2.4割线法56
- 3.2.5求根法的结合使用57
- 3.3利用SciPy求根58
- 3.3.1求根标量函数58
- 3.3.2通用非线性求解器59
- 3.4总结60
- 第4章期权定价的数值方法61
- 4.1什么是期权61
- 4.2二叉树期权定价模型62
- 4.3欧式期权定价62
- 4.4编写StockOption基类65
- 4.4.1利用二叉树模型给欧式期权定价66
- 4.4.2利用二叉树模型给美式期权定价67
- 4.4.3Cox-Ross-Rubinstein模型69
- 4.4.4Leisen-Reimer模型70
- 4.5希腊值72
- 4.6三叉树期权定价模型75
- 4.7期权定价中的Lattice方法77
- 4.7.1二叉树网格77
- 4.7.2CRR二叉树Lattice方法期权定价模型78
- 4.7.3三叉树网格79
- 4.8期权定价中的有限差分法80
- 4.8.1显式方法82
- 4.8.2编写FiniteDifferences类82
- 4.8.3隐式方法85
- 4.8.4Crank-Nicolson方法88
- 4.8.5奇异障碍期权定价90
- 4.8.6美式期权定价的有限差分方法91
- 4.9隐含波动率模型95
- 4.10总结98
- 第5章利率及其衍生工具的建模99
- 5.1固定收益证券99
- 5.2收益率曲线100
- 5.3无息债券101
- 5.4自助法构建收益率曲线102
- 5.4.1自助法构建收益率曲线的实例102
- 5.4.2编写BootstrapYield-Curve类103
- 5.5远期利率106
- 5.6计算到期收益率107
- 5.7计算债券定价108
- 5.8债券久期109
- 5.9债券凸度109
- 5.10短期利率模型110
- 5.10.1Vasicek模型111
- 5.10.2Cox-Ingersoll-Ross模型112
- 5.10.3Rendleman and Bartter模型113
- 5.10.4Brennan and Schwartz模型115
- 5.11债券期权116
- 5.11.1可赎回债券117
- 5.11.2可回售债券117
- 5.11.3可转换债券117
- 5.11.4优先股117
- 5.12可赎回债券期权定价118
- 5.12.1用Vasicek模型定价无息债券118
- 5.12.2提前行权定价119
- 5.12.3有限差分策略迭代法121
- 5.12.4可赎回债券定价的其他影响因素127
- 5.13总结128
- 第6章时间序列数据的统计分析129
- 6.1道琼斯工业平均指数及其30种成分130
- 6.1.1从Quandl 上下载Dow成分数据集130
- 6.1.2关于Alpha Vantage131
- 6.1.3获取Alpha Vantage API密钥131
- 6.1.4安装Alpha Vantage 的Python包132
- 6.1.5从Alpha Vantage下载DJIA数据集132
- 6.2PCA分析133
- 6.2.1特征向量和特征值的求法133
- 6.2.2用PCA重新构建道琼斯指数135
- 6.3平稳和非平稳时间序列136
- 6.3.1平稳性与非平稳性136
- 6.3.2平稳性检查136
- 6.3.3非平稳过程的类型137
- 6.3.4平稳过程的类型137
- 6.4扩展Dickey-Fuller检验137
- 6.5用趋势分析时间序列138
- 6.6如何使时间序列平稳141
- 6.6.1去趋势141
- 6.6.2差分143
- 6.6.3按季节分解144
- 6.6.4ADF检验的缺陷147
- 6.7预测和预报时间序列147
- 6.7.1自回归积分移动平均法147
- 6.7.2用网格搜索求取模型参数148
- 6.7.3SARIMAX模型的拟合149
- 6.7.4SARIMAX模型的预测和预报151
- 6.8总结153
- 第三部分实 践 操 作
- 第7章对VIX的交互式金融分析156
- 7.1波动率指数衍生品157
- 7.1.1STOXX与欧洲期货交易所157
- 7.1.2EURO STOXX 50指数157
- 7.1.3VSTOXX157
- 7.1.4S&P 500指数158
- 7.1.5SPX期权158
- 7.1.6VIX指数158
- 7.2S&P 500指数和VIX指数的金融分析158
- 7.2.1获取数据158
- 7.2.2执行分析160
- 7.2.3SPX与VIX的相关性164
- 7.3计算VIX指数166
- 7.3.1导入SPX期权数据166
- 7.3.2查找近期期权和远期期权170
- 7.3.3计算所需的分钟数172
- 7.3.4计算远期SPX指数水平174
- 7.3.5寻找所需的远期行权价格175
- 7.3.6确定行权价格限175
- 7.3.7按行权价格将贡献列表176
- 7.3.8计算波动率180
- 7.3.9计算远期期权波动率180
- 7.3.10计算VIX指数181
- 7.3.11计算多个VIX指数181
- 7.3.12比较结果183
- 7.4总结184
- 第8章构建算法交易平台186
- 8.1什么是算法交易186
- 8.1.1具有公共API的交易平台187
- 8.1.2选择一种编程语言188
- 8.1.3系统功能188
- 8.2建立算法交易平台189
- 8.2.1设计代理接口189
- 8.2.2需要的Python库190
- 8.2.3编写事件驱动代理类190
- 8.2.4存储价格事件处理程序191
- 8.2.5存储订单事件处理程序191
- 8.2.6存储仓位事件处理程序191
- 8.2.7声明一个获取价格的抽象函数192
- 8.2.8声明流式价格的抽象函数192
- 8.2.9声明发送订单的抽象函数192
- 8.2.10实现代理类192
- 8.3建立均值回归算法交易系统198
- 8.3.1设计均值回归算法198
- 8.3.2实现均值回归交易类198
- 8.3.3添加事件监听器200
- 8.3.4编写均值回归信号生成器201
- 8.3.5运行交易系统204
- 8.4建立趋势跟踪交易平台205
- 8.4.1趋势跟踪算法的设计205
- 8.4.2编写趋势跟踪交易类206
- 8.4.3编写趋势跟踪信号发生器206
- 8.4.4运行趋势跟踪交易系统207
- 8.5用VaR技术实现风险管理208
- 8.6总结211
- 第9章回溯测试系统的实现213
- 9.1回溯测试概述213
- 9.1.1回溯测试的缺陷214
- 9.1.2事件驱动回溯测试系统214
- 9.2设计并实施回溯测试系统215
- 9.2.1TickData类216
- 9.2.2MarketData类216
- 9.2.3MarketDataSource类216
- 9.2.4Order类218
- 9.2.5Position类218
- 9.2.6Strategy类219
- 9.2.7MeanRevertingStrategy类220
- 9.2.8BacktestEngine类222
- 9.2.9运行回溯测试系统225
- 9.2.10多策略运行回溯测试系统227
- 9.2.11改进回溯测试系统227
- 9.3回溯测试模型的10个注意事项228
- 9.3.1模型的资源限制228
- 9.3.2模型评价标准228
- 9.3.3估计回溯测试参数的质量229
- 9.3.4应对模型风险229
- 9.3.5样本数据回测的性能229
- 9.3.6解决回溯测试的常见缺陷229
- 9.3.7常识错误230
- 9.3.8理解模型环境230
- 9.3.9数据准确性230
- 9.3.10数据挖掘230
- 9.4回溯测试中的算法选择230
- 9.4.1k-均值聚类算法230
- 9.4.2KNN机器学习算法231
- 9.4.3分类回归树分析231
- 9.4.42k析因设计231
- 9.4.5遗传算法231
- 9.5总结232
- 第10章金融中的机器学习233
- 10.1机器学习简介233
- 10.1.1机器学习在金融中的应用234
- 10.1.2监督学习和无监督学习235
- 10.1.3监督机器学习中的分类与回归236
- 10.1.4过拟合和欠拟合模型236
- 10.1.5特征工程236
- 10.1.6机器学习的scikit-learn库237
- 10.2用单资产回归模型预测价格237
- 10.2.1OLS线性回归238
- 10.2.2准备自变量和因变量238
- 10.2.3编写线性回归模型239
- 10.2.4测量预测性能的风险度量240
- 10.2.5岭回归243
- 10.2.6其他回归模型244
- 10.2.7结论245
- 10.3用跨资产动量模型预测收益245
- 10.3.1准备自变量245
- 10.3.2准备因变量246
- 10.3.3多资产线性回归模型247
- 10.3.4决策树的集成248
- 10.4基于分类的机器学习预测趋势250
- 10.4.1准备因变量250
- 10.4.2准备多资产数据集作为输入变量250
- 10.4.3逻辑回归251
- 10.4.4基于分类预测的风险度量252
- 10.4.5支持向量分类器255
- 10.4.6其他类型的分类器256
- 10.5机器学习算法的应用结论257
- 10.6总结257
- 第11章金融中的深度学习259
- 11.1浅谈深度学习259
- 11.1.1什么是深度学习260
- 11.1.2人工神经元260
- 11.1.3激活函数261
- 11.1.4损失函数261
- 11.1.5优化器262
- 11.1.6网络结构262
- 11.1.7TensorFlow和其他深度学习框架263
- 11.1.8什么是张量263
- 11.2基于TensorFlow的深度学习价格预测模型263
- 11.2.1特征化模型263
- 11.2.2需要的库264
- 11.2.3下载数据集264
- 11.2.4缩放和拆分数据267
- 11.2.5基于TensorFlow构建人工神经网络268
- 11.2.6绘制预测值和实际值271
- 11.3基于Keras的信用卡支付违约预测272
- 11.3.1Keras简介273
- 11.3.2安装Keras273
- 11.3.3获取数据集273
- 11.3.4缩放和拆分数据274
- 11.3.5基于Keras的深度神经网络设计275
- 11.3.6度量模型的性能277
- 11.3.7显示Keras历史记录中的事件279
- 11.4总结281