Advertisement

Python金融数据分析 1.2

阅读量:
1.4.5 lPython Notebook 简单的练习

文件

插入

文件

复制代码
 Text Examples

    
 ---
    
 This is anexample of an *italic* text.
    
 This is an example of a **bold*** text.
    
 This is an example of a list item:
    
 -Item #1
    
 Item #2
    
 Item #3
    
 #heading 1
    
 ##heading 2
    
 ###heading 3
    
 ####heading 4
    
 #####heading 5
    
 ######heading 6

6)单击工具栏中的 Markdown 选项设置。
7)单击Cell-Run A运行代码后,在此过程中该命令将执行所有Python指令,并根据要求对当前单元格进行格式化处理。当前单元格成功运行完成后, Notebook将切换至下一个单元格继续等待输入操作。如果当前单元已无可用空间, Notebook会自动创建一个新的空单元格以供继续使用。
输出结果如下图所示:

2.保存 notebook
从菜单栏File选项中选择Save和Checkpoint功能,默认状态下会将当前打开的notebook文件以.ipynb格式保存下来。
3.单元格中的数学运算
在执行完上述操作后,在编辑界面的代码区域输入以下内容:在代码单元格中依次输入数字"3+5"并完成计算操作,在右侧定义一个变量名为"answer"并将其赋值为上述运算的结果。
随后,请您从菜单栏中选择Insert→Insert Cell Below选项,在当前光标位置插入一个新的空白代码单元格。
请在新插入的空闲区域里键入以下语句:通过执行上述运算得出答案,并将最终结果存储到变量名为"answer"的空间中。
最后,请您点击该新生成的空白代码块并执行其中的命令内容,在输出框中即可看到完整计算过程及其最终数值结果。

print answer
点击 Cell→Run Al,答案将显示在当前单元格下方。

第4步:生成图表

复制代码
 import numpy asnp

    
 import math
    
 import matplotlib.pyplot as plt
    
 x =np.linspace(0,2*math.pi)
    
 plt.plot(x,np.sin(x),label=r'$\sin(x)$')
    
 plt.plot(x,np.cos(x),ro',label=r's\cos(x)$')
    
 plt.title(rTwo plots in a graph')
    
 plt.legend()

在前三个语句中包含了必要的导入语句。随后的一条语句定义了变量x为x轴上从0到7之间的实数值。接下来绘制了变量x对应的正弦曲线。随后用虚线绘制了余弦曲线。最后两行分别生成了图表标题和图例说明。

插入方程
在Markdown中使用LaTeX编写数学公式是一项高效的技术。
在Python环境中使用IPython Notebook时,在需要显示公式的地方两边加上$$符号即可嵌入LaTeX代码以显示数学公式。
本例将演示如何在Markdown中呈现标准正态分布的概率密度函数的具体形式:
通过公式(\frac{1}{\sigma\sqrt{2\pi}} e^{ -\frac{(x-\mu)^2}{2\sigma^2} })来表示概率密度函数的具体形式,在这里我们假设\mu=0\sigma^2=1

点击工具栏 Markdown 选项并运行,将当前单元格转换至其方程结果:

除了通过MathJax进行渲染之外,在IPython中展示模块中的数学函数也能生成与之等价的方程式。

上述代码将显示相同方程,如下截图所示:

请注意这个单元格作为一个正常的代码单元运行,在此区域生成的方程会立即显示在该区域下方。同样地,在某些情况下也会嵌入内联文本的方程,请看下文示例:使用$符号引导一个LaTeX数学表达式。

6.显示图像
若显示诸如JPEG和PNG等格式的图像,需使用IPython中display模块的Image 类。运行如下代码显示示例图像:
from IPython.display import ImageImage (url='http://python.org/images/python-logo.gif')
运行单元格会显示以下结果:

插入外部视频于 Notebook 中

8.采用HTML技术
Notebook工具能够呈现HTML内容。在数据表格展示方面具有广泛的应用。以下代码段生成一个包含标题栏并排列成两列三行的表格结构:

HTML的功能将使HTML标签作为它的输人字符串参数。最终输出如下:

pandas模块中的DataFrame对象用于以HTML表格的形式展示信息,在notebook环境中能够将DataFrame对象以HTML表格的形式展示出来。
举例而言,在本例中我们通过panas. io.data.web.DataReader函数将从雅虎财经获取的股票市场数据被存储于pandas模块中的DataFrame对象中。
具体来说,在本例中我们使用的是以苹果公司(AAPL)股票为第一个参数、以雅虎(yahoo)为第二个参数、并分别指定开始和结束日期(第三个和第四个参数)的方式调用了panas. io.data.web.DataReader函数。

复制代码
 import pandas.io.data as web

    
 import datetime
    
 start =datetime.datetime(2014,1,1)
    
 end =datetime.datetime(2014,12,31)
    
 df = web.DataReader("AAP",'yahoo',start,end)
    
 df .head()

该DataFrame实例包含的市场数据的前五行在notebook中呈现为HTML表格形式。

1.4.6 Notebook与金融

目前来看,在数据可视化领域中,IPython Notebook 已被众多行业从业者认可为主要的金融模型开发编辑软件。该软件不仅能够按照发生顺序组织代码块,并且还能够通过图表和表格的形式呈现关键财务数据。此外还可以通过图表和表格的形式呈现关键财务数据。如需深入学习其丰富功能,请访问 https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks 一睹其强大功能。

1.5总结

本章讨论了Python 在某些金融领域的适用性,软件应用方面的优势,函数式和面向对象式编程,以及如何实现应用程序简洁化。至于编程范式选择,尚没有统一答案。
我们还探讨了 Python的交互式计算图形界面--IPython,展示了其在科学计算和多媒体显示方面的实用性。通过在IPythonNotebook进行简单的练习,掌握了如何创建新的 Notebook 文档,插人包含 Markdown 语言的文本,进行简单计算绘制函数图,显示数学方程,插人图像与视频,渲染 HTML,利用pandas 将市场数据呈现为 HTML表。这些练习有助于数据可视化并将多媒体信息提供给使用者。Python与 Julia、R、MATLAB 和Java 等强大的编程语言一样可用于计量金融学,它可以更有效地传递你的核心思想,一旦掌握这些核心概念,就可用于开发金融程序的任何语言。
下一章,我们将探讨金融线性模型和投资组合管理使用的技术。

第2章 金融中的线性问题

当前,在现代科学和技术发展中,非线性动力学发挥着关键作用。然而,在金融领域中由于其简洁性和易于建模的特点,
线性模型得以广泛应用,
特别是在证券定价、投资组合优化等方面取得了显著成效,
并成功获得全局最优解。
为了实现有效的预测,
回归分析在统计领域得到了广泛应用,
用于估计变量之间的关系。
其中,
Python提供了丰富的数学工具包,
能够作为科学脚本语言来解决这类问题。
例如,
SciPy和NumPy库集成了多种线性回归函数,
为数据专家提供了强大的技术支持。
在传统投资组合管理中,
资产配置方法通常基于线性模型进行。
每个投资者根据自身需求具有独特的投资风格。
我们可以将投资组合配置问题转化为包含等式与不等式的线性方程组形式,
即Ax=B(其中A为已知系数矩阵,B为观测向量,x为目标向量)。
通过这一矩阵形式求解方程组即可得到最优资产分配方案x。
利用直接法或间接法等线性代数方法可快速求解该方程组以获得最优投资比例x。
本章将深入探讨以下主题:
资本资产定价模型、有效边界与资本市场线;
利用回归方程求解证券市场线;
套利定价模型与多元线性回归;
在投资组合分配中应用的线性优化技术;
利用PuLP进行优化建模;
关于优化结果的讨论;
整数规划及其应用;
二元条件下的整数规划问题处理;
以及基于矩阵方法求解的策略研究。

口利用Jacobi迭代和Gauss-Seidel迭代间接求解线性方程组

2.1资本资产定价模型与证券市场线

在金融学领域,诸多研究文献普遍采用资本资产定价模型(CAPM)作为核心分析框架。本节将深入剖析该模型的核心理论要素。根据CAPM理论,在市场均衡状态下:证券i的预期回报率与其系统性风险之间存在线性关系。具体而言,在其他条件不变的情况下:证券i的预期回报率等于无风险利率加上β系数乘以市场风险溢价。其中:β系数反映的是证券i相对于市场组合的风险状况;市场风险溢价则等于市场投资组合预期收益与无风险利率之间的差额差异。通过图形化展示(如图所示),资本资产定价模型的核心逻辑更加清晰可见。

B代表一种无法分散掉的风险(market risk),它衡量了股票回报率对市场变动的敏感度。例如,在B值为零的情况下(β=0),无论市场发生何种变化都不会对该股票产生超额收益的影响;它只能以无风险利率进行增长。当B值等于1时(β=1),该股票的价格波动与整个市场的涨跌完全一致。B系数是通过计算股票收益率与市场收益率之间的协方差,并将其与市场收益率方差进行比较而得出的数值。
资本资产定价模型(CAPM)用于分析投资组合中各只股票收益与其风险之间的关系。将这些分析结果汇总起来,则能够确定具有最低投资组合风险的投资组合权重分配方案。对于希望获得特定预期收益的投资者而言,在使用CAPM模型后能够得出其能承受的风险最小化且收益目标可实现的最佳投资组合配置方式。所有可能达到最佳效率的投资组合集合则构成了所谓的有效前沿(efficient frontier)。

在有效边界上有一个切点(tangent point),这个切点代表了可以获得最高回报率和最低风险的最佳投资组合(optimal investment portfolio),被称为市场投资组合(market portfolio)。市场投资组合与无风险利率点之间的连线被称为资本市场线(capital market line, CML)。亦即为具有最高夏普比率的所有最优投资组合。夏普比率(Sharpe ratio)是一个衡量风险调整后收益的标准指标,在计算时通过将投资组合的超额收益除以其标准差来实现。通常情况下,在金融市场中大多数投资者更倾向于持有位于资本市场线上的资产组合,请参考下图:

资本资产定价模型的主要研究焦点在于探讨证券市场线(security market line, SML)。该模型通过SML这一概念来反映资产对于贝塔系数(beta coefficient)的期望收益。一个具有贝塔值为1的证券,其回报率与市场回报率保持一致。在风险水平相当的情况下,投资者通常愿意获得更高的预期收益。当某一特定风险水平下的证券价格高于SML时,则被视为低估;反之,则被认定为高估。

为了计算某证券的贝塔系数β值(β),我们使用以下回归模型:r = \alpha + \beta R_m + \varepsilon。该模型旨在通过分析该股票的收益率r与同期市场回报率R_m之间的关系来估计其系统性风险因子β值(β)。

采用 SciPy 库中的 stats 模块

全部评论 (0)

还没有任何评论哟~