第一讲-Python金融应用概述

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

隐含波动率
隐含波动率
隐含波动率
隐含波动率
从表中可以看出,交易的看涨期权中有非常 实值的(指数的水平比期权执行价格高出很 多),也有非常虚值的(即指数的水平比期 权执行价格低很多)。因此,我们希望将分 析限制在某种给定的(远期)moneyness水平 上,给定分别期限的期货价值。假设我们允 许期货水平上下50%的波动。
Python语言的主要特征
开源
◦ Python和大多数的支撑库和工具都是开源的,通常可以 非常灵活的使用而且有开放的协议。
解释性
◦ 也可以使用Cpython完成将解释性语言转化为实施可执 行的Python二进制代码的应用
多框架
◦ Python语言支持不同的编程与实现框架,例如面向对象、 和必要的函数型或过程化编程。
Monte Carlo模拟是金融和一般计算科学的一种非常重要的算法。其 重要性来源于它在期权定价和风险管理问题上非常有力的事实。与 其他数值算法相比较,Monte Carlo方法可以很容易的处理高维的问 题,应对复杂性和计算的需求,而这些需求常常是线性增长的。
Monte Carlo模拟方法的不足是其通常需要加大的内存,即使是针对 比较简单的问题。因此,有效的运行Monte Carlo方法是必要的。这 里的例子给出了Python中处理这个问题的不同策略,统统了不同的 欧式期权Monte-Carlo模拟定价的处理方法。三种方法如下: ◦ 纯Python的解决方案:这个例子依赖于Python基本库,即那些标 准Python安装时获得的库,并且使用内在的Python能力来完成 Monte Carlo计算。 ◦ 向量化的NumPy:这个实现使用NumPy的能力来进行更为紧凑和 快速的处理。 ◦ 完全向量化的NumPy:最后的例子将一个不同的数学实现以及 NumPy向量化的能力联系起来来获得相同算法的更为紧凑的版本。
• 这里我们考虑的例子是关于一项新的期权,即基于 VSTOXX波动率指数的波动率期权。Eurex是提供基 于VSTOXX和各种期货合同的衍生品交易市场,于 2013年6月建立了一个综合化的Python为基础的关于 这个指数以及基于此指数的衍生品合同的教程,称 为”VSTOXX Advanced Services”。
需要注意的是,这一点也通常使刚刚接触 Python语言的人感到迷惑,就是目前有两种 可行的Python版本,都在开发,而且自2008 年以来被平行使用。目前,两个版本之间并 没有100%的兼容,而且对Python 3.0来说也不 是所有的库都可以使用。因此本课程主要使 用的是2.7版本,虽然大多数的例子代码在3.0 中也是可以运行的。
Python生态系统
本课程中展示的例子都是使用Ipython这种流行的Python 交互式开发环境(IDE)。虽然它开始的时候只是一个 升级的外壳,但是今天的IDE中已经有很多可选的东西 (例如支持调试)。
Ipython通常被称为Python生态系统的killer application, 在很多方面对标准的交互环境进行了改进。例如,提供 了命令行历史命令的功能,允许较为容易的观测对象等。 在这个系统中,获得帮助也是非常容易的。
◦ 另外,还有编程的初学者也会使用Python作为教学语言,这是因 为它的基础语法是比较容易学习和理解的,解释对非编程人员来 说也是这样,而且Python还支持几乎所有的编程模式。
科学计算库
科学计算库是Python语言的重要组成部分,其包 括:
◦ NumPy: 提供了多维数组对象保存同质或异质的数据, 它还提供了处理这个数组对象的优化函数/方法。
Monte Carlo模拟
Monte Carlo模拟
Monte Carlo模拟
Monte Carlo模拟
Monte Carlo模拟
技术分析
基于历史价格信息的技术分析对于金融从业者和其他相关 方而言是一项典型的工作。In finance, technical analysis is a security analysis methodology for forecasting the direction of prices through the study of past market data, primarily price and volume.
技术分析
基于历史价格信息的技术分析对于金融从业者和其他相关 方而言是一项典型的工作。In finance, technical analysis is a security analysis methodology for forecasting the direction of prices through the study of past market data, primarily price and volume.
Groupby方法可以得到一个更为有意义的索引,我们可 以分别按照MATURITY和STRIKE进行索引。在这个例 子中,我们只保留PRICE和IMP_VOL的列。这样的操 作会返回一个DataFrameGroupBy对象,为了获得这个
数据,我们需要对这个对象进行加总操作。
Monte Carlo模拟
多目的
◦ Python可以用于快速的、交互式的代码开发以及建构大 型应用系统,它也可以用于底层系统操作以及高级分析 的任务。
Python的简单历史
虽然Python可能对于某些人来说还是新事物, 但是其实它已经发展了很长时间。事实上, 对Python的开发自1980年代就已经开始,创 始人是荷兰的Guido van Rossum。
首先,我们定义新的一列来存储结果,并引 入我们需要的函数。
现在我们计算看涨期权的隐含波动率。
隐含波动率
接着,我们将所选择的期权的隐含波动率用图形 表示出来,我们首先取隐含波动率大于0的子集 (也就是我们进行了隐含波动率计算的子集)。
为了数据的可视化,我们对于数据集的所有到期 日进行迭代,并且将隐含波动率做成线状图或者 单点图。因为所有的到期日显示为多个时间,我 们需要使用一点技巧来获得没有重复的,排序的 日期列表。在Python中,set操作可以去掉重复项 目,但是获得的是没有排序的期限集合。因此, 我们还要对set进行排序。
我们将从网络资源中读入历史指数信息,并完成一项基于 趋势信号的交易系统的回测。首先我们需要读入数据,使 用的是pandas库。具体来说,我们使用pandas.io.data中的 DataReader函数来获得金融时间序列数据。同时,这段代 码还会随Timestamp对象生成一个时间指数。
通过作图来简要的看一下数据。
大数据时代的Python金融应用
Python与金融应用概述
什么是Python
Python是一种高级、多目的的编程语言,在很多领域和技 术层面都有广泛的应用。
Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. Its high-level built in data structures, combined with dynamic typing and dynamic binding, make it very attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect existing components together. Python’s simple, easy to learn syntax emphasizes readability and therefore reduces the cost of program maintenance. Python supports modules and packages, which encourages program modularity and code reuse. The Python interpreter and the extensive standard library are available in source or binary form without charge for all major platforms, and can be freely distributed.
隐含波动率:不同到期期限期权的隐含波动率求解并作图,这 是很多期权交易者以及风险管理者面对的一项日常任务。
Monte Carlo模拟:通过Monte Carlo模拟来得到一组随时间变 化的股票指数,将选择的结果作图,并计算欧式期权的价值。 Monte Carlo模拟方法是数值期权定价以及value-at-risk风险 管理以及信用价值调整的基础。
技术分析:通过对历史时间序列的分析,完成对一项基于趋势 信号的交易策略的回测,专业投资者以及激进的业余投资者 通常都会进行这类型的投资分析。
隐含波动率
• 给定类似于Black-Scholes-Merton (1973)的期权定价 公式,隐含波动率是指:在其他条件不变的情况下, 通过将这个隐含波动率数值代入到公式中,可以得 到不同的执行价格和期限的期权的市场报价。本例 中,波动率不是代入到模型或公式中的一个输入参 数,而是给定这个公式而得到的一个(数值)优化 过程的结果。
在下面的介绍中,我们关注的是为了回测的目的而研究过 去的市场数据,而不是特别的关注来预测未来的价格波动。 我们研究的目标是基准指数S&P500,这通常被看作是美 国股票整体市场变化的一项好的代理指标。这是因为指数 包含大量的股票范围而且代表了市值的大部分。它还拥有 大量具有流动性的期货和期权市场。
◦ 科学开发者和领域专家:这些用户会大量的使用某些库和框架的 框架,来创建自己的应用程序并且随着时间进行提升和优化,使 得整个生态系统满足他们的具体需求。这类用户通常会致力于较 长时间的交互操作,快速的形成新代码的原型,并且对研究以及 领域数据集进行探讨和可视化。
◦ 比较随意的编程人员使用Python来处理他们认为有优势的具体问 题。例如可以将一些matplotlib的具体代码进行复制,稍加修改来 满足特定的业务需要。
接着我们对所有的日期进行迭代并作图。在这里 可以看到一个明显的波动率微笑图形。而且对于 长期的期权来说更为明显。
Fra Baidu bibliotek 隐含波动率
我们来看pandas另外一个强大的功能:对于按照逻辑索 引的数据,DataFrame对象options_data都有一个整数的 索引。但是这个索引是没有含义的,2014年3月31日交 易的期权报价通过期限和执行价格来唯一描述,也就 是说每个到期日的每个执行价格水平都对应着唯一的 一个看涨期权。
Ipython提供了多种版本:包括一个壳版本,一个基于 QT图形用户界面的版本以及一个基于浏览器的版本 (NOTEBOOK)。
Python的用户群体
Python不仅会吸引专业的软件开发人员,而且可以为业务 开发者,领域专家和科学计算开发者所使用。
◦ 专业的软件开发者:Python支持所有的编程框架,有大量的开发 工具,专业的软件开发者可以使用这些工具来构建自定义的框架 和类,与基础的Python库和科学计算库一起,实现生态系统的最 大化应用。
◦ SciPy:包含一系列子库和函数来完成科学和金融领域的 重要标准功能,比如三维曲线插值以及数值积分。
◦ Matplotlib:这是Python最为流行的绘图和可视化库,提 供了2D和3D的绘图功能。
◦ PyTables:是流行的HDF5数据存储库,这个库可以完成 基于有层次的数据库和文件格式的优化的,以磁盘为基 础的IO操作。
◦ Pandas:pandas基于NumPy来创建,提供了管理和分析 时间序列以及表格数据的丰富的类;它与matplotlib库紧 密结合提供了绘图功能,和PyTables类结合提供了数据 读取功能。
Python在金融中应用的典型示例
讨论一些量化金融中的例子,显示使用Python以及其附属的金融 分析库处理起来是多么方便。这些例子是描述性的,对于一些 Python语言以及实际应用中的细节问题并不做过多介绍。本讲包 括以下几个例子:
相关文档
最新文档