《金融计算:基于Python》 课件 第7章-Python期权定价_第1页
《金融计算:基于Python》 课件 第7章-Python期权定价_第2页
《金融计算:基于Python》 课件 第7章-Python期权定价_第3页
《金融计算:基于Python》 课件 第7章-Python期权定价_第4页
《金融计算:基于Python》 课件 第7章-Python期权定价_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

金融计算:基于Python

第7章 Python期权定价【教学目的与要求】通过本章学习,结合习近平新时代中国特色社会主义经济思想,讲授Python的Black-Scholes期权定价模型、期权定价的蒙特卡罗模拟、二项式期权定价模型的计算。【重点和难点】Python的Black-Scholes期权定价模型、期权定价的蒙特卡罗模拟、二项式期权定价模型的计算。【思政育人目标】将习近平新时代中国特色社会主义经济思想融入到Python的Black-Scholes期权定价模型、期权定价的蒙特卡罗模拟、二项式期权定价模型计算的学习中。【课程学习目标】掌握Python的Black-Scholes期权定价模型、期权定价的蒙特卡罗模拟、二项式期权定价模型计算。金融计算:基于Python2主要内容7.1. Black-Scholes期权定价模型7.2. 期权定价的蒙特卡洛模拟7.3. 二项式期权定价模型金融计算:基于Python37.1.Black-Scholes期权定价模型

金融计算:基于Python4defbscall_option(S0,X,rf,sigma,T):d1=(log(S0/X)+(rf+0.5*sigma**2)*T)/(sigma*sqrt(T))d2=d1-sigma*sqrt(T)C=S0*norm.cdf(d1)-X*exp(-rf*T)*norm.cdf(d2)returnC[例7.1.1]股票当前价格为25元,执行价格为25元,无风险利率8%,股票的波动率30%,期权到期期限6个月,计算对应的欧式看涨期权和看跌期权的价格。[例7.1.2]假设政府在以招标形式转让土地的有偿使用权,有一投资商想要购买一块荒地用于开发城市居民区,那么投资商究竟应该投标多少金额呢?进一步假设投资商估计要在这片荒地上投入10亿元进行基础设施开发,然后按照现有可比性的的相同住宅的现价,估计用2年时间将基础设施建成后,这片土地的价值为15亿元。并且投资测算出当前市场对未来土地价格预期的波动率是0.3,同期无风险利率是5%。7.1.2. 红利对欧式期权价格影响

金融计算:基于Python5defdivbcall_option(S0,X,rf,div,divt,sigma,T):V=sum(div*exp(-rf*divt))d1=(log((S0-V)/X)+(rf+0.5*sigma**2)*T)/(sigma*sqrt(T))d2=d1-sigma*sqrt(T)C=(S0-V)*norm.cdf(d1)-X*exp(-rf*T)*norm.cdf(d2)returnC欧式看跌期权defdivbput_option(S0,X,rf,div,divt,sigma,T):V=sum(div*exp(-rf*divt))d1=(log((S0-V)/X)+(rf+0.5*sigma**2)*T)/(sigma*sqrt(T))d2=d1-sigma*sqrt(T)P=X*exp(-rf*T)*norm.cdf(-d2)-(S0-V)*norm.cdf(-d1)returnP[例7.1.3]考虑到期时间还有6个月的股票欧式看涨期权和看跌期权。标的股票在2个月和5个月后各有一个除息日,每个除息日的红利期望值为0.5元,已知当前股票价格为40元,行权价格是40元,股票年波动率为30%,无风险利率为9%。试求两种期权的价格。7.1.3. 风险对冲分析风险对冲是指通过投资或购买与标的资产收益波动负相关的某种资产或衍生证券,来冲销标的资产潜在损失的一种策略。在进行风险对冲时经常用到的定量参数有:Delta、Gamma、Vega、Theta、Rho。这些参数一般是某些变量变化的比率,反映了一些变量对另外一些变量的相对变化。金融计算:基于Python6Delta对冲defdc_Delta(S0,X,rf,sigma,T):d1=(log(S0/X)+(rf+0.5*sigma**2)*T)/(sigma*sqrt(T))d2=d1-sigma*sqrt(T)Delta=norm.cdf(d1)returnDeltadefdc_Gamma(S0,X,rf,sigma,T):d1=(log(S0/X)+(rf+0.5*sigma**2)*T)/(sigma*sqrt(T))d2=d1-sigma*sqrt(T)nd1=1/(sqrt(2*3.14159265))*exp(-d1**2/2)Gamma=nd1/(S0*sigma*sqrt(T))returnGammaVega=Sn(d_1)√Tdefdc_Vega(S0,X,rf,sigma,T):d1=(log(S0/X)+(rf+0.5*sigma**2)*T)/(sigma*sqrt(T))d2=d1-sigma*sqrt(T)nd1=1/(sqrt(2*3.14159265))*exp(-d1**2/2)Vega=S0*nd1*sqrt(T)returnVegadefdc_Theta(S0,X,rf,sigma,T):d1=(log(S0/X)+(rf+0.5*sigma**2)*T)/(sigma*sqrt(T))d2=d1-sigma*sqrt(T)nd1=1/(sqrt(2*3.14159265))*exp(-d1**2/2)Theta=-S0*nd1*sigma/(2*sqrt(T))-rf*X*exp(-rf*T)*norm.cdf(d2)returnThetadefdc_Rho(S0,X,rf,sigma,T):d1=(log(S0/X)+(rf+0.5*sigma**2)*T)/(sigma*sqrt(T))d2=d1-sigma*sqrt(T)nd1=1/(sqrt(2*3.14159265))*exp(-d1**2/2)Rho=X*T*exp(-rf*T)*norm.cdf(d2)returnRho[例7.1.4]考虑一个不支付红利股票的欧式看涨期权,其标的资产价格是50元,行权价格是50元,无风险年利率是10%,年波动率为30%,权力期间还有6个月,求其相应的对冲参数。金融计算:基于Python77.1.4. 隐含波动率作为Black-Scholes欧式期权定价公式最重要的参数,波动率σ是标的资产本身的波动率。我们更关心的是当时的报价所反映的市场对波动率的估计,这个估计的波动率称为隐含波动率(ImpliedVolatility)。这里的过程实际上是在Black-Scholes欧式期权定价公式中,假设另外4个参数确定,期权价格已知,反解σ。当计算得到看涨期权价格和给定看涨期权价格之间的绝对值小于我们设定的一个临界值,如1分钱,即|c-3.3|<0.01时,就停止计算。金融计算:基于Python8defimpvol(S0,X,T,rf,c):fromscipy.statsimportnormforiinrange(200):sigma=0.005*(1+i)d1=(log(S0/X)+(rf+0.5*sigma**2)*T)/(sigma*sqrt(T))d2=d1-sigma*sqrt(T)diff=c-(S0*norm.cdf(d1)-X*exp(-rf*T)*norm.cdf(d2))ifabs(diff)<=0.01:returni,sigma,diff[例7.1.5]考虑一个不支付红利股票的欧式看涨期权,其标的资产价格是40元,行权价格是40元,无风险年利率是10%,权力期间还有6个月,假设看涨期权价格为3.3元,求隐含波动率。7.2. 期权定价的蒙特卡洛模拟

金融计算:基于Python97.2.2. 对数正态分布的随机变量模拟

金融计算:基于Python10defsim_randvariable(S,rf,sigma,t):R=(rf-0.5*sigma**2)*tSD=sigma*sqrt(t)C=S*exp(R+SD*norm.cdf(1))returnC[例7.2.1]假设标的资产现在价格是10元,无风险利率0.01,年标准差0.3,距离下一时刻的时间为6个月,计算下一时刻标的资产的价格7.2.3. 模拟欧式期权定价

金融计算:基于Python11defqqdj(S0,X,T,rf,sigma,n):z=random.standard_normal(n)ST=S0*exp((rf-0.5*sigma**2)*T+sigma*z*sqrt(T))ht=maximum(ST-X,0)C0=exp(-rf*T)*sum(ht)/nreturnC0[例7.2.2]不支付红利股票的欧式看涨期权,资产价格是100元,无执行价格是100元,风险利率0.1,年标准差0.25,期权有效期1年,模拟欧式看涨期权的价格7.2.4. 蒙特卡罗模拟精度的改进7.2.4.1.对偶变量利用对偶技术可以增加估计稳定性、提高估计精度根据对偶变量法的基本思想,编写python函数的思路为:1) 模拟标的资产的价格路径;2) 计算两个期权损益值,其中一个是按照常规蒙特卡罗法计算的结果,另一个是己变所有正态分布符号计算出来的结果3) 计算期权的价格,即计算上述两期权的平均值并将计算结果进行贴现。金融计算:基于Python12defdoqqdj(S0,X,T,r,sigma,N):z=random.standard_normal(N)#模拟标的变量路径并计算估计值

ST1=S0*exp((r-0.5*sigma*sigma)*T+sigma*z*sqrt(T))hT1=maximum(ST1-X,0)#贴现

C1=exp(-r*T)*sum(hT1)/N#改变随机变量z的符号,模拟标的变量路径并计算估计值

ST2=S0*exp((r-0.5*sigma*sigma)*T+sigma*(-z)*sqrt(T))hT2=maximum(ST2-X,0)#贴现

C2=exp(-r*T)*sum(hT2)/N#计算平均值

C=(C1+C2)/2returnC[例7.2.3]考虑不支付红利股票的欧式看涨期权,它们的标的资产价格是100元,执行价格是100元,无风险利率是10%,年波动率是25%,期权的有效期是1年,用对偶变量法计算其欧式看涨价格。7.2.4.2.控制变量法模拟控制变量法就是将与所估计的未知变量密切相关的另一个已知量的真实值和估计值之间的差异作为控制量,以提高估计精度。在定价实践中,将两种衍生证券用相同的随机抽样样本和时间间隔,实施同样的蒙特卡罗模拟过程,能够得到两个模拟估计值,以第二种衍生证券真实值与估计值之间的差异作为控制变量,最后得到第一种衍生证券的蒙特卡罗估计值。金融计算:基于Python13[例7.2.4]考虑不支付红利股票的欧式看涨期权,它们的标的资产价格是100元,执行价格是100元,无风险利率是10%,年波动率是25%,期权的有效期是1年,用控制变量法计算其欧式看涨价格。7.3.1.2.多期欧式看涨期权定价

金融计算:基于Python147.3.2. 二项式期权解析步骤根据二项式法的基本原理和二项式法的解析式,计算衍生证券价格的步骤: 将衍生证券的有效期分成N步等间隔时间段,每步步长∆t; 计算二项式的参数p,u和d; 构建二叉树; 通过二又树倒推计算期权的价格。金融计算:基于Python157.3.3. 无收益资产欧式期权定价

金融计算:基于Python16defbinary_tree_ecop(S,X,r,sigma,times,steps):R=math.exp(r*(times/steps))u=math.exp(sigma*math.sqrt(times/steps))d=1.0/up_up=(R-d)/(u-d)p_down=1-p_upprices=np.zeros(steps+1)call_values=np.zeros(steps+1)prices[0]=S*d**(steps)foriinrange(1,(steps+1)):prices[i]=u**2*prices[i

温馨提示

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

评论

0/150

提交评论