内容介绍
Python凭借其简单、易读、可扩展性以及拥有巨大而活跃的科学计算社区,在需要数据分析和处理大量数据的金融领域得到了广泛而迅速的应用,并且成为越来越多专业人士shouxuan的编程语言之一。 本书通过12章内容介绍了Python在金融领域的应用,从Python的安装、基础语法,再到一系列简单的编程示例,本书循序渐进地引导读者学习Python。同时,本书还结合Python的各个模块以及金融领域中的期权价格、金融图形绘制、时间序列、期权定价模型、期权定价等内容,深度揭示了Python在金融行业中的应用技巧。 本书适合金融、会计等相关专业的高校师生阅读,也适合金融领域的研究人员和从业人员参考学习。对于有一定计算机编程基础,但想要从事金融行业的读者,本书也是不错的参考用书。
作者介绍
严玉星毕业于麦吉尔大学,获金融学博士学位。他有着丰富的教学经验,教授过各类本科学位和研究生学位的金融课程,如金融建模、期权和期货、投资组合理论、定量财务分析、企业融资和金融数据库等。他曾在8所全球zhiming的大学任教:两所在加拿大,一所在新加坡,5所在美国。 严博士一直活跃于学术研究的前沿,他的研究成果在多个国际学术期刊发表。此外,他还是财务数据方面的专家。在新加坡南洋理工大学任教时,他曾为博士生讲授一门名为“金融数据库入门”的课程。
目录
- 第1章 Python简介及安装 1
- 1.1 Python简介 1
- 1.2 如何安装Python 3
- 1.3 Python的不同版本 3
- 1.4 运行Python的3种方式 4
- 1.4.1 用GUI启动Python 4
- 1.4.2 从Python命令行启动Python 5
- 1.4.3 从DOS窗口启动Python 6
- 1.5 如何退出Python 7
- 1.6 错误提示 7
- 1.7 Python语言是区分大小写的 8
- 1.8 变量的初始化 8
- 1.9 寻找在线帮助 9
- 1.10 查找学习手册和教程 10
- 1.11 如何找出Python的版本 12
- 1.12 小结 12
- 练习题 12
- 第2章 用Python完成普通计算器的功能 14
- 2.1 变量的赋值及显示 15
- 2.2 错误提示 15
- 2.3 不能调用没有赋值的变量 16
- 2.4 选择有意义的变量名 16
- 2.5 使用dir()来查找变量和函数 17
- 2.6 删除或取消变量 17
- 2.7 基本数学运算:加、减、乘、除 18
- 2.8 幂函数、取整和余数函数 19
- 2.9 一个真正的幂函数 20
- 2.10 选择合适的数值精度 21
- 2.11 找出某个内置函数的详细信息 22
- 2.12 列出所有内置函数 22
- 2.13 导入数学模块 23
- 2.14 、e、对数和指数函数 24
- 2.15 import math与from math import*的区别 24
- 2.16 一些常用的函数 25
- 2.16.1 print()函数 25
- 2.16.2 type()函数 26
- 2.16.3 下划线_ 26
- 2.16.4 结合两个字符串 26
- 2.16.5 将小写字符变成大写字符的函数:upper() 27
- 2.17 元组数据类型 28
- 2.18 小结 29
- 练习题 30
- 第3章 用Python编写一个金融计算器 32
- 3.1 编写不需要保存的Python函数 33
- 3.2 函数的输入参数及它们的预设值 33
- 3.3 缩进格式在Python编程中至关重要 34
- 3.4 检查自己编写的函数是否存在 35
- 3.5 在Python编辑器里定义函数 35
- 3.6 利用import()在Python编辑器里激活自己编写的函数 36
- 3.7 使用Python编辑器调试程序 37
- 3.8 调用pv_f()函数的两种方法 37
- 3.9 生成自制的模块 38
- 3.10 两种注释方法 39
- 3.10.1 第1种注释方法 39
- 3.10.2 第2种注释方法 39
- 3.11 查找有关pv_f()函数的信息 40
- 3.12 条件函数:if() 41
- 3.13 计算年金 41
- 3.14 利率换算 42
- 3.15 连续复利利率 44
- 3.16 数据类型:列表 45
- 3.17 净现值和净现值法则 45
- 3.18 投资回收期和投资回收期法则 47
- 3.19 内部收益率和内部收益率法则 47
- 3.20 显示在某个目录下的指定文件 49
- 3.21 用Python编写一个专业金融计算器 49
- 3.22 将我们的目录加到Python的路径上 50
- 3.23 小结 52
- 练习题 52
- 第4章 编写Python程序计算看涨期权价格 56
- 4.1 用空壳法编写一个程序 57
- 4.2 用注释法编写一个程序 59
- 4.3 使用和调试他人编写的程序 61
- 4.4 小结 61
- 练习题 61
- 第5章 模块简介 64
- 5.1 什么是模块 64
- 5.2 导入模块 65
- 5.2.1 为导入的模块取个简称 66
- 5.2.2 显示模块里的所有函数 66
- 5.2.3 比较import math和from math import * 67
- 5.2.4 删除已经导入的模块 67
- 5.2.5 导入几个指定的函数 68
- 5.2.6 找出所有的内置模块 69
- 5.2.7 找出所有可用的模块 69
- 5.2.8 找到一个已安装的模块的目录位置 71
- 5.2.9 有关模块的更多信息 72
- 5.2.10 查找某个未安装的模块 72
- 5.3 模块之间的相互依赖性 73
- 5.4 小结 74
- 练习题 75
- 第6章 NumPy和SciPy模块简介 76
- 6.1 安装NumPy和SciPy模块 77
- 6.2 从Anaconda启动Python 77
- 6.2.1 使用NumPy的示例 78
- 6.2.2 使用SciPy的示例 79
- 6.3 显示NumPy和SciPy包含的所有函数 82
- 6.4 关于某个函数的详细信息 83
- 6.5 理解列表数据类型 83
- 6.6 使用全一矩阵、全零矩阵和单位矩阵 84
- 6.7 执行数组操作 84
- 6.8 数组的加、减、乘、除 85
- 6.8.1 进行加减运算 85
- 6.8.2 执行矩阵乘法运算 85
- 6.8.3 执行逐项相乘的乘法运算 86
- 6.9 x.sum()函数 87
- 6.10 遍历数组的循环语句 87
- 6.11 使用与模块相关的帮助 87
- 6.12 SciPy的一系列子函数包 88
- 6.13 累积标准正态分布 89
- 6.14 与数组相关的逻辑关系 90
- 6.15 SciPy的统计子模块(stats) 90
- 6.16 SciPy模块的插值方法 91
- 6.17 使用SciPy求解线性方程 92
- 6.18 利用种子(seed)生成可重复的随机数 93
- 6.19 在导入的模块里查找函数 94
- 6.20 优化算法简介 95
- 6.21 线性回归和资本资产定价模型(CAPM) 95
- 6.22 从文本文件(.txt)输入数据:loadtxt()和getfromtxt()函数 96
- 6.23 独立安装NumPy模块 97
- 6.24 数据类型简介 97
- 6.25 小结 98
- 练习题 98
- 第7章 用matplotlib模块绘制与金融相关的图形 101
- 7.1 通过ActivePython安装matplotlib模块 102
- 7.2 通过Anaconda安装matplotlib模块 103
- 7.3 matplotlib模块简介 103
- 7.4 了解简单利率和复利利率 106
- 7.5 为图形添加文字 107
- 7.6 杜邦等式的图示 109
- 7.7 净现值图示曲线 110
- 7.7.1 有效地使用颜色 113
- 7.7.2 使用不同形状 114
- 7.8 图形演示分散投资的效果 115
- 7.9 股票的数目和投资组合风险 117
- 7.10 从雅虎财经网站下载历史价格数据 119
- 7.10.1 用直方图显示收益率分布 120
- 7.10.2 比较单只股票的收益和市场收益 122
- 7.11 了解现金的时间价值 124
- 7.12 用烛台图展示IBM的每日收盘价 125
- 7.13 用图形展示价格变化 126
- 7.14 同时展示收盘价和交易量 129
- 7.14.1 在图形上添加数学公式 130
- 7.14.2 在图形上添加简单的图像 131
- 7.14.3 保存图形文件 132
- 7.15 比较个股的表现 132
- 7.16 比较多只股票的收益率与波动率 133
- 7.17 查找学习手册、示例和有关视频 135
- 7.18 独立安装matplotlib模块 136
- 7.19 小结 136
- 练习题 136
- 第8章 时间序列的统计分析 139
- 8.1 安装pandas和statsmodels模块 140
- 8.1.1 在Anaconda命令提示符下启动Python 140
- 8.1.2 使用DOS窗口启动Python 141
- 8.1.3 使用Spyder启动Python 142
- 8.2 Pandas和statsmodels模块简介 143
- 8.2.1 如何使用Pandas模块 143
- 8.2.2 statsmodels模块示例 144
- 8.3 开源数据 145
- 8.4 用Python代码输入数据 147
- 8.4.1 从剪贴板输入数据 147
- 8.4.2 从雅虎财经网站下载历史价格数据 147
- 8.4.3 从txt文件输入数据 148
- 8.4.4 从Excel文件输入数据 149
- 8.4.5 从csv文件输入数据 150
- 8.4.6 从网页下载数据 150
- 8.4.7 从MATLAB数据文件输入数据 152
- 8.5 几个重要的函数 152
- 8.5.1 使用pd.Series()生成一维时间序列 152
- 8.5.2 使用日期变量 153
- 8.5.3 使用DataFrame数据类型 154
- 8.6 计算回报率 156
- 8.6.1 从日回报率计算月回报率 157
- 8.6.2 从日回报率计算年回报率 159
- 8.7 按日期合并数据集 160
- 8.8 构建n只股票的投资组合 161
- 8.9 T-检验和F-检验 162
- 8.9.1 检验方差是否相等 163
- 8.9.2 测试“一月效应” 164
- 8.10 金融研究和实战的应用举例 165
- 8.10.1 基于52周ZUI高价和ZUI低价的交易策略 165
- 8.10.2 用Roll(1984)模型来估算买卖价差 166
- 8.10.3 用Amihud(2002)模型来估算反流动性指标 167
- 8.10.4 Pastor和Stambaugh(2003)流动性指标 168
- 8.10.5 Fama-French三因子模型 171
- 8.10.6 Fama-MacBeth回归模型 173
- 8.10.7 滚动式估算市场风险系数 174
- 8.10.8 在险价值简介 177
- 8.11 构建有效组合边界 178
- 8.11.1 估计方差-协方差矩阵 178
- 8.11.2 优化-ZUI小化 181
- 8.11.3 构建一个ZUI优投资组合 181
- 8.11.4 构建n只股票的有效组合边界 183
- 8.12 插值法简介 186
- 8.13 输出数据到外部文件 187
- 8.13.1 输出数据到一个文本文件 187
- 8.13.2 输出数据到一个二进制文件 188
- 8.13.3 从二进制文件读取数据 188
- 8.14 用Python分析高频数据并计算买卖价差 188
- 8.15 更多关于使用Spyder的信息 194
- 8.16 一个有用的数据集 195
- 8.17 小结 196
- 练习题 197
- 第9章 Black-Scholes-Merton期权定价模型 201
- 9.1 看涨期权和看跌期权的收益和利润/损失函数 202
- 9.2 欧式期权与美式期权 205
- 9.3 现金流、不同类型的期权、权利和责任 206
- 9.4 正态分布、标准正态分布和累积标准正态分布 206
- 9.5 不分红股票的期权定价模型 209
- 9.6 用于期权定价的p4f模块 210
- 9.7 已知分红股票的欧式期权价格 212
- 9.8 多种交易策略 213
- 9.8.1 股票多头和看涨期权空头的组合 214
- 9.8.2 跨式期权组合—具有同样执行价格的看涨期权和看跌期权的组合 215
- 9.8.3 日历套利组合 216
- 9.8.4 蝶式看涨期权组合 218
- 9.9 期权价格和输入参数之间的关系 219
- 9.10 与期权相关的希腊字母 219
- 9.11 期权平价关系及其图形表示 221
- 9.12 二叉树法及其图形表示 223
- 9.12.1 为欧式期权定价的二叉树法 229
- 9.12.2 为美式期权定价的二叉树法 229
- 9.13 套期保值策略 230
- 9.14 小结 231
- 练习题 232
- 第10章 Python的循环语句和隐含波动率的计算 235
- 10.1 隐含波动率的定义 236
- 10.2 for循环简介 237
- 10.2.1 使用for循环计算隐含波动率 237
- 10.2.2 欧式期权的隐含波动率 238
- 10.2.3 看跌期权的隐含波动率 239
- 10.2.4 enumerate()函数简介 240
- 10.3 用for循环计算内部收益率及多个内部收益率 241
- 10.4 while循环简介 243
- 10.4.1 使用键盘命令停止无限循环 244
- 10.4.2 使用while循环计算隐含波动率 244
- 10.4.3 多重嵌套的for循环 246
- 10.5 美式看涨期权的隐含波动率 246
- 10.6 测试一个程序的运行时间 247
- 10.7 二分搜索的原理 248
- 10.8 顺序访问与随机访问 249
- 10.9 通过循环访问数组的元素 250
- 10.9.1 利用for循环赋值 251
- 10.9.2 通过循环访问词典的元素 251
- 10.10 从CBOE网站下载期权数据 252
- 10.11 从雅虎财经网页下载期权数据 254
- 10.11.1 从雅虎财经网页检索不同的到期日期 254
- 10.11.2 从雅虎财经网页下载当前价格 255
- 10.12 看跌期权和看涨期权的比率及其短期趋势 255
- 10.13 小结 258
- 练习题 258
- 第11章 蒙特卡罗模拟和期权定价 261
- 11.1 产生服从标准正态分布的随机数 262
- 11.1.1 产生服从(高斯)正态分布的随机样本 263
- 11.1.2 利用种子(seed)生成相同的随机数 263
- 11.1.3 产生n个服从正态分布的随机数 263
- 11.1.4 正态分布样本的直方图 264
- 11.1.5 对数正态分布的图形表示 265
- 11.1.6 产生服从泊松分布的随机数 266
- 11.1.7 产生服从均匀分布的随机数 266
- 11.2 利用蒙特卡罗模拟计算的近似值 267
- 11.3 从 只股票中随机选择m只 268
- 11.4 可重复和不可重复的随机取样 270
- 11.5 年收益率的分布 271
- 11.6 模拟股价变化 273
- 11.7 图形展示期权到期日的股票价格的分布 275
- 11.8 寻找有效的投资组合和有效边界 276
- 11.8.1 寻找基于两只股票的有效组合及相关系数的影响 276
- 11.8.2 构建n只股票的有效边界 281
- 11.9 算术平均值与几何平均值 283
- 11.10 预测长期回报率 284
- 11.11 用模拟法为看涨期权定价 285
- 11.12 奇异期权简介 286
- 11.12.1 利用蒙特卡罗模拟给均价期权定价 286
- 11.12.2 利用蒙特卡罗模拟给障碍式期权定价 288
- 11.13 障碍式期权的平价关系及其图形演示 289
- 11.14 具有浮动执行价格的回望式期权的定价 293
- 11.15 使用Sobol序列来提高效率 294
- 11.16 小结 294
- 练习题 295
- 第12章 波动率和GARCH模型 296
- 12.1 传统的风险测度-标准方差 297
- 12.2 检验正态分布 297
- 12.3 下偏标准方差 300
- 12.4 检验两个时间段的波动率是否相等 302
- 12.5 利用Breusch和Pagan(1979)方法检验异方差 303
- 12.6 从雅虎财经网页检索期权数据 306
- 12.7 波动率的微笑曲线和斜度 307
- 12.8 波动率集聚效应的图形表示 309
- 12.9 ARCH模型及ARCH(1)随机过程的模拟 310
- 12.10 GARCH(广义ARCH)模型 312
- 12.10.1 模拟GARCH随机过程 312
- 12.10.2 采用改良的garchSim()函数模拟GARCH(p,q)模型 313
- 12.10.3 由Glosten、Jagannanthan和
- Runkle(1993)提出的GJR_
- GARCH模型简介 315
- 12.11 小结 319
- 练习题 319