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

原文连接:http://tecdat.cn/?p=12030



准备数据

采样函数svsample须要其输入数据y是数值向量,并且没有任何缺失值(NA),若是提供其余任何内容,则会报错。在y包含零的状况下,会发出警告,并在进行辅助混合采样以前,将大小为sd(y)/ 10000的小偏移常数添加到平方收益上。算法

可是,咱们一般建议彻底避免零收益数据,例如经过预先下降零收益。下面是如何使用样本数据集进行说明。网络

图1提供了该数据集中时间序列的可视化。app

R> par(mfrow = c(2, 1), mar = c(1.9, 1.9, 1.9, 0.5), mgp = c(2, 0.6, 0))
R> plot(exrates$date, exrates$USD, type = "l",
+ main = "Price of 1 EUR in USD")
R> plot(exrates$date\[-1\], ret, type = "l", main = "Demeaned log returns")

除了现实世界的数据外,还可使用内置的模拟数据生成器svsim。此函数仅对SV流程的实现,并返回svsim类的对象,该对象具备本身的print,summary和plot方法。函数

下面给出了使用svsim的示例代码,该模拟实例显示在图2中。post

R> par(mfrow = c(2, 1))
R> plot(sim)

运行采样器

函数svsample,它用做C语言中实际采样器的R-wrapper 。此函数的示例用法在下面的代码中提供了默认输出。spa

Calling GIS_C MCMC sampler with 11000 iter. Series length is 3139.
0% \[+++++++++++++++++++++++++++++++++++++++++++++++++++\] 100%
Timing (elapsed): 12.92 seconds.
851 iterations per second.
Converting results to coda objects... Done!
Summarizing posterior draws... Done!

能够看出,该函数调用主MCMC采样器并将其输出转换为与coda兼容的对象。后者的完成主要是出于兼容性的考虑,而且能够直接访问收敛诊断检查。code

svsample的返回值是svdraws类型的对象,该对象是具备八个元素的命名列表,其中包含(1)参数在para中绘制,(2)潜在的对数波动率,(3)初始潜在的对数波动率绘制latent0,(4)y中提供的数据,(5)运行时中的采样运行时,(6)先验中的先验超参数,(7)细化的参数值,以及(8)这些图的汇总统计信息,以及一些常见的转换。orm

评估输出并显示结果对象

按照常规作法,可以使用svdraws对象的print和summary方法。每一个参数都有两个可选参数showpara和showlatent,用于指定应显示的输出。若是showpara为TRUE(默认设置),则会显示参数绘制的值/摘要。若是showlatent为TRUE(默认值),则显示潜在变量绘制的值/摘要。在下面的示例中,仅显示参数绘制的摘要。递归

Summary of 10000 MCMC draws after a burn-in of 1000.
Prior distributions:
mu ~ Normal(mean = -10, sd = 1)
(phi+1)/2 ~ Beta(a0 = 20, b0 = 1.1)
sigma^2 ~ 0.1 * Chisq(df = 1)
Posterior draws of parameters (thinning = 1):
mean sd 5% 50% 95% ESS
mu -10.1366 0.22711 -10.4749 -10.1399 -9.7933 4552
phi 0.9935 0.00282 0.9886 0.9938 0.9977 397
sigma 0.0656 0.01001 0.0509 0.0649 0.0830 143
exp(mu/2) 0.0063 0.00075 0.0053 0.0063 0.0075 4552
sigma^2 0.0044 0.00139 0.0026 0.0042 0.0069 143

(1)volplot:绘制潜在波动率的分位数,以百分比表示,即随时间变化的后验分布的经验分位数。经常使用的可选参数包括n步波动率的预测,x轴上标签的日期以及一些图形参数。下面的代码片断显示了一个典型示例,图3显示了其输出。

(2)paratraceplot:显示θ中包含的参数的轨迹图。图5显示了一个示例。

 (3)paradensplot:显示θ中包含的参数的核密度估计。为了更快地绘制较大的后验样本,应将此参数设置为FALSE。若是参数showprior为TRUE(默认值),则先验分布经过虚线灰色线指示。图6显示了从汇率提取数据集中得到的EUR-USD汇率的示例输出。

svdraws对象的通用绘图方法将上述全部图合并。可使用上述全部参数。请参见图7。

R> plot(res, showobs = FALSE)

 为了提取标准化残差,能够在给定的svdraws对象上使用残差方法。使用可选的参数类型,能够指定摘要统计的类型。当前,类型容许为“平均值”或“中位数”,其中前者对应于默认值。此方法返回svresid类的实向量,其中包含每一个时间点所请求的标准化残差的摘要统计量。还有一种绘图方法,当参数origdata给定时,提供了将标准化残差与原始数据进行比较的选项。请参见下面的代码,对于相应的输出,请参见图8。


最受欢迎的看法

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交易策略

相关文章
相关标签/搜索