matlab实现MCMC的马尔可夫转换MS-ARMA – GARCH模型估计

状态转换模型,尤其是马尔可夫转换(MS)模型,被认为是识别时间序列非线性的不错的方法。

由Kaizong Ye,Coin Ge撰写

估计非线性时间序列的方法是将MS模型与自回归移动平均 – 广义自回归条件异方差(ARMA – GARCH)模型相结合,但给参数估计的计算带来了困难。


我们建立了完整的MS- ARMA – GARCH模型及其贝叶斯估计。

其中,“MS” 代表 “马尔可夫状态转换”(Markov Switching),用于描述时间序列数据在不同状态之间的转换;“ARMA” 即自回归移动平均模型(Autoregressive Moving Average model),用于对时间序列数据进行建模和预测;“GARCH” 即广义自回归条件异方差模型(Generalized Autoregressive Conditional Heteroskedasticity model),主要用于分析金融时间序列数据中的波动聚集性等特征。这个组合模型通常用于更复杂的时间序列数据分析场景。

马尔可夫状态转换可以捕捉数据的不同状态变化,ARMA 模型用于描述时间序列的自相关性和移动平均特性,GARCH 模型则主要用于描述时间序列的波动聚集性。而贝叶斯估计是一种基于贝叶斯定理的统计推断方法,可以利用先验信息和样本数据来估计模型参数。

使用马尔可夫链蒙特卡罗(MCMC)方法,我们开发一种算法来计算我们模型的方案和参数的贝叶斯估计。


可下载资源


本文分析的数据、代码、报告分享至会员群


作者

options  =  optimset('fmincon');
options  =  optimset(options , 'Algorithm ','interior-point');
% options  =  optimset(options , 'Algorithm ','active-set');
options  =  optimset(options, 'Hessian','bfgs');
 fmincon(@(x) msarmagarch(x,data,reg,ORDERS,flag),beq,LB,UB,@(x) MSARMAGARCH(x,k,nbpara),options); 
 
 fmincon(@(x) msarmagarch(x,data,reg,ORDERS,flag),startvaltot,[],[],[],[],[],[],@(x) MSARMAGARCH(x,k,nbpara),options); 
[LLF,likelihoods,~,p,pt,smoothprob,h] = msarmagarch(thetahat,data,reg,ORDERS,flag);
 

图1和图2比较了两种模型的估计后验概率。我们的模型能够更清晰地区分不同的状态。

图1.修正的Hamilton-Susmel模型每周收益的不同状态的后验概率。

图2.对于我们的模型,状态1-3的后验概率。

figure()
subplot(4,1,1);
plot(Domain, Data,'color'
 
ylim([-30,30])


课程

R语言数据分析挖掘必知必会

从数据获取和清理开始,有目的的进行探索性分析与可视化。让数据从生涩的资料,摇身成为有温度的故事。

立即参加

接下来,我们比较两个模型的样本ACF。由于在两个模型中估计ARMA参数大致相同,因此我们仅显示样本ACF的平方残差。

然而,两种算法都在估计中显示出问题,其特征在于MCMC链收敛得非常慢以及在基于EM的算法的情况下对初始参数的强烈依赖性。

我们开发了一种MCMC方法来计算完整MS- ARMA – GARCH模型的参数估计值,用于描述在不同市场中观察到的计量经济时间序列中的现象。


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。

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

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

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

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


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

技术干货

最新洞察

This will close in 0 seconds