我刚刚发现R中的“线框”功能可以绘制3D表面图。 我希望通过针对两个数据序列绘制Black&Scholes看涨期权价格来实现它:到期时间和行使价。因此,到目前为止,这里首先遵循我的脚本:
S=100 #My stock Price
K=90 #Initial Strike Price
T=1 #Initial Time to Maturity (1 year here)
RF=0.03 #Risk free rate
SIGMA=0.2 #Volatility
d1=(log(S/K) + (RF + 0.5*SIGMA^2)*T)/SIGMA*sqrt(T) #initial d(1)
d2=d1-SIGMA*sqrt(T) #initial d(2)
然后,我尝试为我的Surface / 3D图准备一个网格:
K=seq(80,120,1)
T=seq(0,1,0.1)
table=expand.grid(K,T)
最后,我添加了一个新的列变量,用于根据每个单独的组合计算我的看涨期权价格:
table$CALL= S*pnorm(d1) - K*exp(-RF*T)*pnorm(d2)
names(table)= c("K","T","CALL")
最后是表面/ 3D图:
wireframe(CALL ~ K * T, scales = list( arrows = FALSE),aspect = c(1, .6),data=table,
drape=T,shade=T)
因此,它绘制了一个看似可靠的图形(根据我的财务研究),但是...我不知道,它看起来有点“比例尺”图形。因为我是“线框”功能的再见者,所以我不知道我是否正确使用了所有输入数据。我想对已经习惯在3D绘图中绘制B&S公式的人发表意见。我很感兴趣,因为将来我会做同样的事情来绘制希腊文和隐含波动率。
预先感谢