使用 ARMA-GARCH 模型模拟外汇价格

机器算法验证 时间序列 有马 模拟 加奇 金融
2022-03-01 00:34:41

我已经将 ARIMA(1,1,1)-GARCH(1,1) 模型拟合到 AUD/USD 汇率对数价格的时间序列中,这些时间序列在几年的过程中以一分钟的间隔采样,给了我超过两个用于估计模型的数百万个数据点。数据集可在此处获得。为清楚起见,这是一个适合对数回报的 ARMA-GARCH 模型,因为原木价格的一阶积分。原始的 AUD/USD 时间序列如下所示:

在此处输入图像描述

然后,我尝试根据拟合模型模拟时间序列,得到以下信息:

在此处输入图像描述

我既期待也希望模拟的时间序列与原始序列不同,但我没想到会有如此显着的差异。本质上,我希望模拟系列的行为或大致看起来像原版。

这是我用来估计模型和模拟系列的 R 代码:

library(rugarch)
rows <- nrow(data)
data <- (log(data[2:rows,])-log(data[1:(rows-1),]))
spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE), distribution.model = "std")
fit <- ugarchfit(spec = spec, data = data, solver = "hybrid")
sim <- ugarchsim(fit, n.sim = rows)
prices <- exp(diffinv(fitted(sim)))
plot(seq(1, nrow(prices), 1), prices, type="l")

这是估计输出:

*---------------------------------*
*          GARCH Model Fit        *
*---------------------------------*

Conditional Variance Dynamics   
-----------------------------------
GARCH Model : sGARCH(1,1)
Mean Model  : ARFIMA(1,0,1)
Distribution    : std 

Optimal Parameters
------------------------------------
        Estimate  Std. Error     t value Pr(>|t|)
mu      0.000000    0.000000   -1.755016 0.079257
ar1    -0.009243    0.035624   -0.259456 0.795283
ma1    -0.010114    0.036277   -0.278786 0.780409
omega   0.000000    0.000000    0.011062 0.991174
alpha1  0.050000    0.000045 1099.877416 0.000000
beta1   0.900000    0.000207 4341.655345 0.000000
shape   4.000000    0.003722 1074.724738 0.000000

Robust Standard Errors:
        Estimate  Std. Error   t value Pr(>|t|)
mu      0.000000    0.000002 -0.048475 0.961338
ar1    -0.009243    0.493738 -0.018720 0.985064
ma1    -0.010114    0.498011 -0.020308 0.983798
omega   0.000000    0.000010  0.000004 0.999997
alpha1  0.050000    0.159015  0.314436 0.753190
beta1   0.900000    0.456020  1.973598 0.048427
shape   4.000000    2.460678  1.625568 0.104042

LogLikelihood : 16340000 

我非常感谢有关如何改进我的建模和模拟的任何指导,或者对我可能犯的错误的任何见解。在我的模拟尝试中,模型残差似乎没有被用作噪声项,尽管我不确定如何合并它。

2个回答

我正在从事外汇数据预测,只要您使用 ARMA、ARIMA、GARCH、ARCH 等统计预测方法,请相信我。当您试图提前预测很多时,它们总是趋于恶化。他们可能会或可能不会在接下来的一两个时期工作,但绝对不会超过那个。因为您正在处理的数据没有自相关、没有趋势和季节性。

我的问题是,在使用 ARMA 和 GARCH 之前,您是否检查过ACFPACF或测试趋势、季节性?如果数据中没有上述属性,统计预测将不起作用,因为您违反了这些模型的基本假设。

我的建议是确保您选择的模型适合数据。

  • 确保没有周期性或季节性成分。
  • 执行增强的 Dickey Fuller 测试以测试单位根的存在。如果存在单位根,则继续对数据进行差分,直到 Augmented Dickey Fuller 检验显示不存在单位根。或者观察自动相关系数,它们应该在一些 n 时间滞后后下降以实现平稳性。
  • 也许您使用不正确的订单过度拟合或欠拟合模型?使用 AIC 和 BIC 查找正确的订单。