• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

r语言二元期权barrier option实现案例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Double-no-touch(DNT)选项是二元期权,在到期时支付固定金额的现金。不幸的是,fExoticOptions包目前不包含此选项的公式。我们将展示两种不同的方式来定价包含两种不同定价方法的DNT。在本节中,我们将调用函数dnt1,对于第二种方法,我们将使用dnt2作为函数的名称。

Hui(1996)展示了如何定价单触双屏障二元期权。在他的术语中,“一触”意味着单笔交易足以触发淘汰事件,而“双屏障”二元意味着存在两个障碍,这是二元期权。我们称之为DNT,因为它通常用于外汇市场。这是一个很好的例子,因为许多流行的异国情调选项都在不止一个名称下运行。在豪格(2007a)中,回族公式已经被翻译成广义框架。SrbsT具有相同的含义。K表示支付(美元金额),而L和U表示较低和较高的障碍。

 

hui(1996)的功能实施到R开头有一个很大的问号:我们应该用无限的总和来做什么?我们应该用无穷大代替多少?有趣的是,出于实际目的,像5或10这样的小数字通常可以很好地发挥无限的作用。Hui(1996)指出,大多数时候收敛速度很快。我们对此持怀疑态度,因为它将被用作指数。如果b为负且sigma足够小,则公式中的(S / L)部分可能会成为问题。

首先,我们将尝试使用正常参数,看看收敛速度有多快:

print(dnt1(100,10,120,80,0.1,0.25,0.05,0.03,20,TRUE))
 

以下屏幕截图显示了上述代码的结果:

公式错误图表显示,在第七步之后,其他步骤不会影响结果。这意味着,出于实际目的,可以通过仅计算前七个步骤来快速估计无限和。这看起来确实很快收敛。然而,这可能是纯粹的运气或巧合。

那么将波动率降低到3%呢?我们必须将N设置为50才能看到收敛:

print(dnt1(100,10,120,80,0.03,0.25,0.05,0.03,50,TRUE))
上述命令提供以下输出:

不是那么令人印象 50步仍然没那么糟糕。如何降低波动率甚至更低?1%时,带有这些参数的公式就会爆炸。首先,这看起来很灾难; 然而,当我们使用3%的波动率时,DNT的价格已经是支付的98.75%。Logic表示DNT价格应该是波动率的单调递减函数,因此我们已经知道,如果波动率低于3%,DNT的价格应至少为98.75%。

另一个问题是,如果我们选择极高的U或极低的L,则会出现计算错误。然而,类似于波动性的问题,常识也有帮助; 如果我们将U更高或更低,则DNT的价格应该增加。

还有一个伎俩。由于所有问题都来自a参数,我们可以尝试将b设置为0,这将使得等于0.5。如果我们也将r设置为0,则当波动率下降时,DNT的价格会收敛到100%。

无论如何,每当我们用有限的总和代替无限和时,总是很好的知道什么时候它会工作,什么时候不工作。我们制作了一个新代码,考虑到融合并不总是很快。诀窍在于,只要最后一步发生了重大变化,该函数就会计算下一步。这仍然不适合所有参数,因为无法解决非常低的波动性,除非我们接受隐含波动率低于1%这一事实,这是一个极端的市场情况,在这种情况下,DNT期权不应定价通过这个公式:

 

既然我们有一个很好的公式,就可以绘制一些与DNT相关的图表来更熟悉这个选项。之后,我们将使用具有以下参数的特定AUDUSD DNT选项:L等于0.9200,U等于0.9600,K(支付)等于100万美元,T等于0.25年,波动率等于6%,
r_AUD等于2.75%,r_USD等于0.25%,b等于-2.5%。我们将计算并绘制该DNT的所有可能值,从0.9200 
到0.9600; 每一步都是一个点(0.0001),所以我们将使用2,000步。

以下代码绘制了底层价格的图表:

 
 for(i in 1:2000){ 
   y [i] 
    z [i] 
 } 
matplot(x,cbind(y,z),type =“l”,lwd = 2,lty = 1,
   main =“ “,cex.main = 0.8,xlab =” “)

以下输出是上述代码的结果:

可以清楚地看到,即使波动率的微小变化也会对DNT的价格产生巨大影响。查看此图表是一种直观的方法,可以发现vega必须是负面的。有趣的是,即使只是快速浏览一下这张图表,也可以让我们相信,如果我们越来越接近障碍,vega的绝对价值正在下降。

大多数最终用户认为最大的风险是现场接近触发点。这是因为最终用户真的以二进制方式考虑二元期权。只要DNT活着,他们就会关注积极的结果。但是,对于动态套期保值,当DNT的值已经很小时,DNT的风险并不那么有趣。

同样非常有趣的是,由于T-Bill价格与波动性无关,并且由于DNT + DOT = T-Bill等式成立,因此增加的波动性将使DNT的价格降低完全相同的数量,就像它将增加一样DOT的价格。毫无疑问,DOT的vega应该是DNT的精确镜像。

我们可以使用GetGreeks函数来估计vega,gamma,delta和theta。
对于gamma,我们可以通过以下方式使用GetGreeks函数:

GetGreeks 
    all_args1 
    all_args1 [[arg]] 
    all_args2 [[arg]] 
    (do.call(FUN,all_args1) - 
       do.call(FUN,all_args2))/(2 * epsilon)
} 
Gamma 
    arg1 
    arg2 
    arg3 
    y1 
    y2 
   (y1  -  y2 )/(2 * epsilon)
} 
 
delta 
 (i in 1:200){ delta [i] 
    x [i],1000000,0.96,0.92,0.06,0.5,0.02 ,-0.02)vega [i] 
    x [i],1000000,0.96,0.92,0.06,0.5,0.0025,-0.025)theta [i] 
    x [i],1000000,0.96,0.92,0.06,0.5,0.0025, - 0.025)gamma [i] 
  
} 
windows()plot(x,vega,type =“l”,xlab =“S”,ylab =“”,main =“Vega”) 

以下图表是上述代码的结果:

在看了价值图表之后,DNT的delta也非常接近直觉; 如果我们接近更高的障碍,我们的delta变为负值,如果我们接近较低的障碍,delta变为正值如下:

windows()
plot(x,delta,type =“l”,xlab =“S”,ylab =“”,main =“Delta”)

这实际上是一个非凸的情况; 如果我们想做一个动态的三角洲对冲,我们肯定会赔钱。如果现货价格上涨,DNT的差值会减少,所以我们应该购买一些澳元兑美元作为对冲。但是,如果现货价格下跌,我们应该卖出一些澳元兑美元。想象一下,澳元兑美元在早上上涨20点,然后在下午下跌20点。对于动态套期保值者来说,这意味着在价格上涨后买入一些澳元兑美元,并在价格下跌后卖出相同的金额。

可以通过如下的伽玛来描述增量的变化:

windows()
plot(x,gamma,type =“l”,xlab =“S”,ylab =“”,main =“Gamma”)

负伽玛意味着如果该点上升,我们的delta正在减少,但如果该点下降,我们的delta增加。这听起来不太好。对于这种不方便的非凸状况,有一些补偿,即theta的值是正的。如果没有任何反应,但有一天过去了,DNT将自动获得更多价值。

在这里,我们使用theta作为偏导数的负1倍,因为if(Tt)是剩余时间,我们检查值如何随着t增加一天而变化:

windows()
plot(x,theta,type =“l”,xlab =“S”,ylab =“”,main =“Theta”)

伽马越负,我们的θ越正。这就是时间补偿负伽玛产生的潜在损失的方式。

风险中性定价也暗示负γ应该由正θ进行补偿。这是Black-Scholes框架对于香草期权的主要信息,但对于外来物也是如此。见Taleb(1997)Wilmott(2006)

我们之前已经介绍了Black-Scholes表面; 现在,我们可以详细介绍一下。这个表面也是对θ和delta如何工作的很好的解释。它显示了不同现货价格和成熟时间的期权价格,因此该表面的斜率是一个方向的θ和另一个方向的delta。代码如下:

BS_surf 
 n 
 k 
 m 
 for(i in 1:n){ 
   for(j in 1:k){ 
     l 
      m [i,j] 
      } 
} 
persp3D(z = m,xlab =“underlying”,ylab =“Time”,
 } 
 上面的代码给出了以下输出:

我们可以看到已经怀疑的东西; 当时间过去并且斑点移动到(L,U)间隔的中间时,DNT喜欢。

 

Double-no-touch选项的生命 - 模拟

DNT价格在2014年第二季度的变化情况如何?
我们有开放 - 高 - 低 - 关闭型时间序列,澳元兑美元的频率为5分钟,因此我们知道所有极端价格:

 
 option_price 
 for(i in 1:n){ option_price [i] U = 0.9600,L = 0.9200,sigma = 0.06,T = t [i] /(60 * 24 * 365),      r = 0.0025,b = -0.0250)} a 
 b 
 option_price_transformed =(option_price  -  a)* 0.03 /(b  -  a)+ 0.92 par(mar = c(6,3,3,5 ))matplot(cbind(underlying,option_price_transformed),type = “l”,  




 

以下是上述代码的输出:

DNT的价格在右轴显示为红色(除以1000),实际的AUDUSD价格在左轴显示为灰色。绿线是0.9200和0.9600的障碍。该图表显示,在2014年第二季度,澳元兑美元货币对在(0.9200; 0.9600)区间内交易; 因此,DNT的支出将为100万美元。这个DNT看起来是一项非常好的投资; 然而,现实只是一个先验几乎无限集的轨迹。它可能发生了不同的事情。例如,2014年5月2日,到期还有59天,澳元兑美元汇率为0.9203,距离下方隔离点只有3个点。此时,此DNT的价格仅为5,302美元,如下面的代码所示:

dnt1(0.9203,1000000,0.9600,0.9200,0.06,59 / 365,0.0025,-0.025)
[1] 5302.213

比较此5,302美元至最初的48,564美元期权价格!

在下面的模拟中,我们将展示一些不同的轨迹。所有这些都是从与4月1日黎明时相同的0.9266澳元兑美元现货价格开始,我们将看到其中有多少人保持在(0.9200; 0.9600)区间内。为简单起见,我们将使用与我们用于定价DNT相同的6%波动率来模拟几何布朗运动:

library(matrixStats)
DNT_sim 
 L = 0.92,N = 5){ 
  
    option_price 
 


 


 




   matplot(t,option_price,type =“l”,main =“DNT price”,
       xlab =“”,ylab =“”)} 
set.seed(214)
system.time(DNT_sim())

以下是上述代码的输出:

在这里,唯一幸存的轨迹是红色轨迹; 在所有其他情况下,DNT击中较高或较低的障碍。该生产线set.seed(214)授予,该模拟会看我们运行这个相同的任何时候。五分之一仍然不是那么糟糕; 这表明对于没有动态套期保值的最终用户或赌徒,此选项的近似值为支付的20%(特别是因为利率很低,货币的时间价值并不重要)。

然而,五条轨迹仍然太少,无法得出这样的结论。我们应该检查DNT生存率,以获得更高数量的轨迹。

幸存轨迹的比率可以是该DNT的先验现实生存概率的良好估计; 因此,它的最终用户价值。在迅速增加N之前,我们应该记住这个模拟花了多少时间。对于我的电脑,N = 5需要50.75秒,N = 15需要153.11秒。

以下是N = 15的输出:

现在,15个中有3个幸存下来,因此估计的生存率仍为3/15,相当于20%。看起来这是一个非常好的产品; 价格约为支付的5%,而20%是估计的生存率。出于好奇,运行模拟N等于200.这应该需要大约30分钟。

以下是N = 200的输出:

结果令人震惊; 现在,200个中只有12个存活下来,而这个比例只有6%!因此,为了获得更好的图像,我们应该运行模拟更大的N.

电影Whatever Works by Woody Allen(由Larry David主演)长92分钟; 在模拟时间,即N = 541.对于这个N = 541,只有38个幸存轨迹,导致存活率为7%。

真正预期的生存率是多少?它是20%,6%还是7%?我们此时根本不知道。数学家警告我们,大数定律需要大数,其中大数大于541,因此建议在时间允许的情况下运行此模拟的N大。当然,获得更好的计算机也有助于在同一时间内完成更多的N. 无论如何,从这个角度来看,Hui(1996)相对快速收敛的DNT定价公式得到了一些尊重。

 

 

还有问题吗? 联系我们!

 

▍关注我们

 

大数据部落 -中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务

统计分析和数据挖掘咨询服务:y0.cn/teradat(咨询服务请联系官网客服

QQ:3025393450

 

【服务场景】  

科研项目;   公司项目外包;线上线下一对一培训;数据采集;学术研究;报告撰写;市场调查。

【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询服务

分享最新的大数据资讯,每天学习一点数据分析,让我们一起做有态度的数据人

微信客服号:lico_9e

QQ交流群:186388004 


 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap