Python随机波动率(SV)模型对标普500指数时间序列波动性预测

资产价格具有随时间变化的波动性(逐日收益率的方差)。

由Kaizong Ye,Liao Bao撰写

在某些时期,收益率是高度变化的,而在其他时期则非常平稳。

最近我们被客户要求撰写关于随机波动率的研究报告,包括一些图形和统计输出。

随机波动率模型用一个潜在的波动率变量来模拟这种情况,该变量被建模为随机过程。下面的模型与 No-U-Turn Sampler 论文中描述的模型相似,Hoffman (2011) p21。

这里,r是每日收益率序列,s是潜在的对数波动率过程。


建立模型

首先,我们加载标普500指数的每日收益率。

returns = (pm.get_data("SP500.csv"))
returns\[:5\]

正如你所看到的,波动性似乎随着时间的推移有很大的变化,但集中在某些时间段。在2500-3000个时间点附近,你可以看到2009年的金融风暴。

ax.plot(returns)


视频

随机波动率SV模型原理和Python对标普SP500股票指数时间序列波动性预测

探索见解

去bilibili观看

探索更多视频

指定模型。

GaussianRandomWalk('s', hape=len(returns))
nu = Exponential(  .1)
r = StudentT(  pm.math.exp(-2*s),
                    obs=returns)

拟合模型

对于这个模型,最大后验(_Maximum_ A _Posteriori_,MAP)概率估计具有无限的密度。然而,NUTS给出了正确的后验。

pm.sample(tune=2000
Auto-assigning NUTS sampler...
plot(trace\['s'\]);

R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模

阅读文章


观察一段时间内的收益率,并叠加估计的标准差,我们可以看到该模型是如何拟合一段时间内的波动率的。


随时关注您喜欢的主题


plot(returns)
plot(exp(trace\[s\]);
 np.exp(trace\[s\])

参考文献

  1. Hoffman & Gelman. (2011). The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo.

可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds