Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV) 模型

时间:2022-07-28
本文章向大家介绍Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV) 模型,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

原文链接:http://tecdat.cn/?p=16708

波动率是一个重要的概念,在金融和交易中有许多应用。这是期权定价的基础。波动率还使您可以确定资产分配并计算投资组合的风险价值(VaR)。甚至波动率本身也是一种金融工具,例如CBOE的VIX波动率指数。但是,与证券价格或利率不同,波动不能直接观察到。

取而代之的是,它通常被衡量为来自证券或市场指数的收益或收益历史的统计波动。这种类型的度量称为已实现波动率或历史波动率。衡量波动率的另一种方法是通过期权市场,在该市场中,可以使用期权价格通过某些期权定价模型来得出基础证券的波动性。Black-Scholes模型是最受欢迎的模型。这种定义称为 隐含波动性。VIX基于隐含波动率。

存在多种统计方法来衡量收益序列的历史波动率。较高频率的数据可用于计算低频收益的波动率。例如,使用日内收益率来计算每日波动率;使用每日收益来每周波动。人们还可以使用每日OHLC(开盘价,最高价,最低价和收盘价)来计算每日波动率。更多的学术方法包括ARCH(自回归条件异方差),GARCH(广义ARCH),TGARCH(阈值GARCH),EGARCH(指数GARCH)等。我们不会详细讨论每个模型及其优缺点。相反,我们将专注于随机波动率(SV)模型,并将其结果与其他模型进行比较。通常,SV模型很难用回归方法来估计。

EUR / USD汇率

我们将以2003-2018年EUR / USD汇率的每日收盘价为例来计算每日波动率。

ask = readtable('EURUSDdaily.csv');t = ask.Time;cl = ask.close;%% 相关性检验rtn = double((cl - lagmatrix% - remove NaNt = t(2:en  ;n = size(rtn,1);    %数据量figure('position', 

图1. EUR / USD的每日汇率 和每日对数收益率。

图2显示没有证据表明收益率存在序列相关性。最多30个之后的收益的自相关函数(ACF)和偏自相关函数(PACF)无相关性。收益率的Ljung-Box Q检验也未显示明显的自相关。

% 序列相关性检验figure('position',[355  figure('position',[355   ylabel('Return^2');

图2.收益相关性检验。Ljung-Box Q检验(左下方)未显示出明显的自相关。自相关函数(右上)和部分自相关函数(右下)(红色虚线为95%置信区间),表示没有相关性。

但是,我们可以确定具有较大绝对收益的周期的群集。因此,绝对返回值具有明显的序列相关性。这在图3的收益平方分析中得到了证实,其中ACF和PACF均显着,并且Ljung-Box Q检验也强烈表明了序列自相关。这种相关性是由集群的波动性引起的,也就是说,波动率在某些时期(例如,2008年的金融危机)较高,而在其他时期则较低。

图3.收益率平方的相关检验。

GARCH(广义自回归条件异方差)模型

我们首先使用经典GARCH(1,1)模型对收益系列进行建模

可以使用Matlab来估算GARCH(1,1)模型。图4和5中的ACF,PACF和Ljung-Box Q检验未显示出残差中的显着序列相关性,图4左上方的残差项比原始返回序列更像白噪声。然后可以认为GARCH(1,1)模型足以描述收益率的波动性(图6)。

% 序列残差相关性检验figure('position',[355   320   800   400]);plotcorrstat(t,res,30,1:30)%% 绘制波动率figure('position',[355   320   800   200]);plot(t,V  ylabel('GARCH Volatility h_t');

图4. GARCH(1,1)模型残差的相关性检验。

图5.对GARCH(1,1)模型的残差平方的相关性检验。

图6. GARCH(1,1)模型的波动率。

马尔可夫链蒙特卡洛(MCMC)

MCMC由两部分组成。在 蒙特卡洛 部分是如何从一个给定的概率分布得出的随机样本,马尔可夫链 部分的目标是产生一个稳定的随机过程,称为马尔可夫过程。马尔可夫过程具有以下特征:随机过程的下一步骤的状态仅取决于当前步骤的状态。这种依赖性不是确定性的。取而代之的是,由当前概率到下一步的过渡由平稳概率分布来描述。 

MCMC已被广泛用于解决物理和财务问题。

随机波动率(SV)模型

从1990年代初开始就随机波动率建模,自1994年Jacquier,Polson和Rossi的论文首次为随机波动率提供清晰证据以来,该模型就开始应用。根据他们的开创性论文,我们编写了SV模型,

MCMC诊断

根据问题和设置,MCMC在序列接近目标分布之前可能需要进行多次迭代。如图7所示  beta快速达到稳定状态。稳定性之前的这些迭代称为“老化”。我们运行10000次迭代。

图7.参数的迭代。

在MCMC过程中抽取样本意味着连续样本之间可能存在相关性。为了评估序列中有多少相关,我们绘制了每个参数在不同滞后的样本自相关函数(图8)。具有高度相关性的马尔可夫链在参数空间中缓慢移动,并需要更多的迭代和更长的计算时间才能以接近目标分布的概率访问参数空间中的不同区域。因此,给定固定的迭代总数 ,具有高相关性的马尔可夫链的独立样本的总数小于具有低相关性的马尔可夫链的独立样本的总数 。

我们可以通过计算 有效样本量 (ESS)表示单个马尔可夫链的参数。了解ESS后,我们可以估算 MCMC方差,它衡量MCMC接近目标分布的精确度。显然,需要低MCMC方差。

可以为单个参数计算ESS。但是,考虑到参数之间的潜在互相关性(我们将在下面的联合分布图中看到),我们计算了多元ESS,发现在6000个样本中大约有517个。这些小的标准误差表明,我们的单个MCMC序列中的样本很好地代表了参数的目标联合分布。在ESS值较小(通常<100)的情况下,要么必须调整分布的参数以减少自相关,要么必须简单地生成更多样本(以计算时间为代价)。

可以采用用于Metropolis-Hastings算法的更复杂的提议方法来减少序列中的相关性,例如汉密尔顿式MCMC。

图8.老化后参数序列的自相关。红线表示5%的显着性水平。

结果和讨论

去除burin-in后,我们获得了参数样本的集合,这些样本可以从参数的真实高维联合分布中近似随机抽取的样本。然后,我们可以对这些参数进行统计推断。例如,成对参数的联合分布和每个参数的边际分布如图9所示。

使用联合后验分布证明采样是合理的。但是,为不同的先验分布的变量计算出接近形式的后验分布将很麻烦。在这种情况下,Metropolis-Hastings采样方法有优势。

图9.配对参数的联合分布的散点图和参数的边缘分布(对角线面板)的直方图。

从边际分布,我们可以估计参数的均值和标准误

beta

alpha1

alpha2

sigma

均值

0.004

-0.053

0.957

0.044

标准误

0.008

0.008

0.006

0.004

随机波动率及其置信区间是通过在序列变得稳定之后计算采样波动率的平均值,2.5%和97.5%的分位数来获得的。绘制在图10中。

图10. 4000次测试后随机波动率的后验均值。随机波动率的95%的分位数之间用红色表示置信区间。

SV模型的随机波动总体上与GARCH模型非常相似,但参差不齐。这是自然的,因为SV模型中假设了额外的随机项。与其他模型相比,使用随机波动率模型的主要优点是,波动率被建模为随机过程而不是确定性过程。这使我们可以获得序列中每次的波动率的近似分布。当应用于波动率预测时,随机模型可以为预测提供置信度。另一方面,缺点也很明显。计算成本相对较高。


最受欢迎的见解

1.HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率

2.WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较

3.波动率的实现:ARCH模型与HAR-RV模型

4.R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测

5.使用R语言随机波动模型SV处理时间序列中的随机波动率

6.R语言多元COPULA GARCH 模型时间序列预测

7.R语言基于ARMA-GARCH过程的VAR拟合和预测

8.R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

9.R语言对S&P500股票指数进行ARIMA + GARCH交易策略