怎么用 Excel 做蒙特卡洛模拟?

怎么用 Excel 做蒙特卡洛模拟?

为

的答案做一些补充。

早些时候对股票走势模拟主要通过带有garch(1,1)的蒙特卡洛模拟法,作为学渣一只在此感谢真学霸 无双

在建模过程中提供的无私帮助。在(经过许可)拆解了SG的Ye老板的模型后发现外资投行基本都使用维纳过程(Wiener process)。话说根据风险中性(risk-neutral)原理似乎后者用于股票价格路径模拟更加合适,也更简单一些...

公式:Sn=S0*(1+aΔt+bεSqrt(Δt)),S0是上一步股票价格,Δt为单位步长,a是单步长内的预期收益率,bεSqrt(Δt)则是扰动项,其中b为常数,ε则与

文中提及的正态分布随机数类似,通过excel函数=nomsinv(rand())计算,在这个公式的基础上,我们就可以模拟单路径的股票走势。

第1步:确定要素

计算开始前我们还要确定4个要素,分别是股息率(这个很容易查到)、无风险利率(OIS/Libor/Shibor或者随便什么劳什子,但一般都会在Libor基础上再上浮一定的BP)、到期日和隐含波动率。确定隐含波动率比较麻烦,我建议找拥有6块屏彭博机的投行壕例如

咨询(通常虵们会要求一些回报,比如腹肌或者(.)_(.))。请确认所有利率均为连续复利

第2步:日期

起始日一般是当天,那么可以设置=today()函数,或者随便指定一个日期作为起始日。之后我们要筛选出交易日期内所有的工作日,函数见图。

同时Δt也就出来了,需要注意的是计息天数习惯(360/365)

第3步:计算扰动项bεSqrt(Δt)

首先拉出一列=norminsv(rand())的随机数,用这些随机数去定义随机抽取的标准差的倍数。bεSqrt(Δt)中,b就是隐含波动率。

第4步:模拟股价

在模拟股价开始之前,还有一个项aΔt需要解决,在风险中性的前提下,市场要求的预期收益率至少为无风险利率,但该部分收益应该剔除掉股息(因为它们被支付掉了,剩余收益才反映在股价上)。aΔt=(无风险利率-股息率)*步长。所有要素完整后,就可以求出股价,如果需要计算新的路径,按f9就可以刷新:

最后,无图无逼格

当然,也可能模拟出亏损路径

我们可以模拟500/5000/500000000次最后股价然后取均值μ,μ即可视作对股价的预测。