第一讲python金融应用概述_第1页
第一讲python金融应用概述_第2页
第一讲python金融应用概述_第3页
第一讲python金融应用概述_第4页
第一讲python金融应用概述_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北风网项目实战培训Python与金融应用概述大数据时代的Python金融应用什么是PythonPython是一种高级、多目的的编程语言,在很多领域和技术层面都有广泛的应用。Pythonisaninterpreted,object-oriented,high-levelprogramminglanguagewithdynamicsemantics.Itshigh-levelbuiltindatastructures,combinedwithdynamictypinganddynamicbinding,makeitveryattractiveforRapidApplicationDevelopment,aswellasforuseasascriptingorgluelanguagetoconnectexistingcomponentstogether.Python’ssimple,easytolearnsyntaxemphasizesreadabilityandthereforereducesthecostofprogrammaintenance.Pythonsupportsmodulesandpackages,whichencouragesprogrammodularityandcodereuse.ThePythoninterpreterandtheextensivestandardlibraryareavailableinsourceorbinaryformwithoutchargeforallmajorplatforms,andcanbefreelydistributed.Python语言的主要特征开源Python和大多数的支撑库和工具都是开源的,通常可以非常灵活的使用而且有开放的协议。解释性也可以使用Cpython完成将解释性语言转化为实施可执行的Python二进制代码的应用多框架Python语言支持不同的编程与实现框架,例如面向对象、和必要的函数型或过程化编程。多目的Python可以用于快速的、交互式的代码开发以及建构大型应用系统,它也可以用于底层系统操作以及高级分析的任务。Python的简单历史虽然Python可能对于某些人来说还是新事物,但是其实它已经发展了很长时间。事实上,对Python的开发自1980年代就已经开始,创始人是荷兰的GuidovanRossum。需要注意的是,这一点也通常使刚刚接触Python语言的人感到迷惑,就是目前有两种可行的Python版本,都在开发,而且自2008年以来被平行使用。目前,两个版本之间并没有100%的兼容,而且对Python3.0来说也不是所有的库都可以使用。因此本课程主要使用的是2.7版本,虽然大多数的例子代码在3.0中也是可以运行的。Python生态系统本课程中展示的例子都是使用Ipython这种流行的Python交互式开发环境(IDE)。虽然它开始的时候只是一个升级的外壳,但是今天的IDE中已经有很多可选的东西(例如支持调试)。Ipython通常被称为Python生态系统的killerapplication,在很多方面对标准的交互环境进行了改进。例如,提供了命令行历史命令的功能,允许较为容易的观测对象等。在这个系统中,获得帮助也是非常容易的。Ipython提供了多种版本:包括一个壳版本,一个基于QT图形用户界面的版本以及一个基于浏览器的版本(NOTEBOOK)。Python的用户群体Python不仅会吸引专业的软件开发人员,而且可以为业务开发者,领域专家和科学计算开发者所使用。专业的软件开发者:Python支持所有的编程框架,有大量的开发工具,专业的软件开发者可以使用这些工具来构建自定义的框架和类,与基础的Python库和科学计算库一起,实现生态系统的最大化应用。科学开发者和领域专家:这些用户会大量的使用某些库和框架的框架,来创建自己的应用程序并且随着时间进行提升和优化,使得整个生态系统满足他们的具体需求。这类用户通常会致力于较长时间的交互操作,快速的形成新代码的原型,并且对研究以及领域数据集进行探讨和可视化。比较随意的编程人员使用Python来处理他们认为有优势的具体问题。例如可以将一些matplotlib的具体代码进行复制,稍加修改来满足特定的业务需要。另外,还有编程的初学者也会使用Python作为教学语言,这是因为它的基础语法是比较容易学习和理解的,解释对非编程人员来说也是这样,而且Python还支持几乎所有的编程模式。科学计算库科学计算库是Python语言的重要组成部分,其包括:NumPy:提供了多维数组对象保存同质或异质的数据,它还提供了处理这个数组对象的优化函数/方法。SciPy:包含一系列子库和函数来完成科学和金融领域的重要标准功能,比如三维曲线插值以及数值积分。Matplotlib:这是Python最为流行的绘图和可视化库,提供了2D和3D的绘图功能。PyTables:是流行的HDF5数据存储库,这个库可以完成基于有层次的数据库和文件格式的优化的,以磁盘为基础的IO操作。Pandas:pandas基于NumPy来创建,提供了管理和分析时间序列以及表格数据的丰富的类;它与matplotlib库紧密结合提供了绘图功能,和PyTables类结合提供了数据读取功能。讨论一些量化金融中的例子,显示使用Python以及其附属的金融分析库处理起来是多么方便。这些例子是描述性的,对于一些Python语言以及实际应用中的细节问题并不做过多介绍。本讲包括以下几个例子:隐含波动率:不同到期期限期权的隐含波动率求解并作图,这是很多期权交易者以及风险管理者面对的一项日常任务。MonteCarlo模拟:通过MonteCarlo模拟来得到一组随时间变化的股票指数,将选择的结果作图,并计算欧式期权的价值。MonteCarlo模拟方法是数值期权定价以及value-at-risk风险管理以及信用价值调整的基础。技术分析:通过对历史时间序列的分析,完成对一项基于趋势信号的交易策略的回测,专业投资者以及激进的业余投资者通常都会进行这类型的投资分析。Python在金融中应用的典型示例隐含波动率给定类似于Black-Scholes-Merton(1973)的期权定价公式,隐含波动率是指:在其他条件不变的情况下,通过将这个隐含波动率数值代入到公式中,可以得到不同的执行价格和期限的期权的市场报价。本例中,波动率不是代入到模型或公式中的一个输入参数,而是给定这个公式而得到的一个(数值)优化过程的结果。这里我们考虑的例子是关于一项新的期权,即基于VSTOXX波动率指数的波动率期权。Eurex是提供基于VSTOXX和各种期货合同的衍生品交易市场,于2013年6月建立了一个综合化的Python为基础的关于这个指数以及基于此指数的衍生品合同的教程,称为”VSTOXXAdvancedServices”。隐含波动率

隐含波动率

隐含波动率隐含波动率从表中可以看出,交易的看涨期权中有非常实值的(指数的水平比期权执行价格高出很多),也有非常虚值的(即指数的水平比期权执行价格低很多)。因此,我们希望将分析限制在某种给定的(远期)moneyness水平上,给定分别期限的期货价值。假设我们允许期货水平上下50%的波动。首先,我们定义新的一列来存储结果,并引入我们需要的函数。现在我们计算看涨期权的隐含波动率。隐含波动率接着,我们将所选择的期权的隐含波动率用图形表示出来,我们首先取隐含波动率大于0的子集(也就是我们进行了隐含波动率计算的子集)。为了数据的可视化,我们对于数据集的所有到期日进行迭代,并且将隐含波动率做成线状图或者单点图。因为所有的到期日显示为多个时间,我们需要使用一点技巧来获得没有重复的,排序的日期列表。在Python中,set操作可以去掉重复项目,但是获得的是没有排序的期限集合。因此,我们还要对set进行排序。接着我们对所有的日期进行迭代并作图。在这里可以看到一个明显的波动率微笑图形。而且对于长期的期权来说更为明显。隐含波动率我们来看pandas另外一个强大的功能:对于按照逻辑索引的数据,DataFrame对象options_data都有一个整数的索引。但是这个索引是没有含义的,2014年3月31日交易的期权报价通过期限和执行价格来唯一描述,也就是说每个到期日的每个执行价格水平都对应着唯一的一个看涨期权。Groupby方法可以得到一个更为有意义的索引,我们可以分别按照MATURITY和STRIKE进行索引。在这个例子中,我们只保留PRICE和IMP_VOL的列。这样的操作会返回一个DataFrameGroupBy对象,为了获得这个数据,我们需要对这个对象进行加总操作。MonteCarlo模拟MonteCarlo模拟是金融和一般计算科学的一种非常重要的算法。其重要性来源于它在期权定价和风险管理问题上非常有力的事实。与其他数值算法相比较,MonteCarlo方法可以很容易的处理高维的问题,应对复杂性和计算的需求,而这些需求常常是线性增长的。MonteCarlo模拟方法的不足是其通常需要加大的内存,即使是针对比较简单的问题。因此,有效的运行MonteCarlo方法是必要的。这里的例子给出了Python中处理这个问题的不同策略,统统了不同的欧式期权Monte-Carlo模拟定价的处理方法。三种方法如下:纯Python的解决方案:这个例子依赖于Python基本库,即那些标准Python安装时获得的库,并且使用内在的Python能力来完成MonteCarlo计算。向量化的NumPy:这个实现使用NumPy的能力来进行更为紧凑和快速的处理。完全向量化的NumPy:最后的例子将一个不同的数学实现以及NumPy向量化的能力联系起来来获得相同算法的更为紧凑的版本。MonteCarlo模拟MonteCarlo模拟MonteCarlo模拟MonteCarlo模拟MonteCarlo模拟技术分析基于历史价格信息的技术分析对于金融从业者和其他相关方而言是一项典型的工作。Infinance,technicalanalysisisasecurityanalysismethodologyforforecastingthedirectionofpricesthroughthestudyofpastmarketdata,primarilypriceandvolume.在下面的介绍中,我们关注的是为了回测的目的而研究过去的市场数据,而不是特别的关注来预测未来的价格波动。我们研究的目标是基准指数S&P500,这通常被看作是美国股票整体市场变化的一项好的代理指标。这是因为指数包含大量的股票范围而且代表了市值的大部分。它还拥有大量具有流动性的期货和期权市场。我们将从网络资源中读入历史指数信息,并完成一项基于趋势信号的交易系统的回测。首先我们需要读入数据,使用的是pandas库。具体来说,我们使用pandas.io.data中的DataReader函数来获得金融时间序列数据。同时,这段代码还会随Timestamp对象生成一个时间指数。通过作图来简要的看一下数据。技术分析基于历史价格信息的技术分析对于金融从业者和其他相关方而言是一项典型的工作。Infinance,technicalanalysisisasecurityanalysismethodologyforforecastingthedirectionofpricesthroughthestudyofpastmarketdata,primarilypriceandvolume.在下面的介绍中,我们关注的是为了回测的目的而研究过去的市场数据,而不是特别的关注来预测未来的价格波动。我们研究的目标是基准指数S&P500,这通常被看作是美国股票整体市场变化的一项好的代理指标。这是因为指数包含大量的股票范围而且代表了市值的大部分。它还拥有大量具有流动性的期货和期权市场。我们将从网络资源中读入历史指数信息,并完成一项基于趋势信号的交易系统的回测。首先我们需要读入数据,使用的是pandas库。具体来说,我们使用pandas.io.data中的DataReader函数来获得金融时间序列数据。同时,这段代码还会随Timestamp对象生成一个时间指数。通过作图来简要的看一下数据。技术分析这里我们要实现的趋势策略是基于两个月(或42天)以及一年(即252天)的趋势(即,对应时期的指数水平的移动平均)。pandas会较为有效的生成对应的时间序列并且可以将趋势序列与原始序列表达在同一副图中。我们首先在pandasDataFrame对象中加入新的两列,分别代表趋势。这样数据会有所减少。接着对新的带有趋势数据的数据图进行绘制。技术分析下面我们来设计一种规则来生成交易信号。这个规则如下:购买信号:42d的趋势第一次超过252d的趋势50个点。等待信号:42d的趋势保持在252d趋势的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论