ARIMA (1,1,1) -GARCH (1,1) 모델을 몇 년에 걸쳐 1 분 간격으로 샘플링 된 AUD / USD 환율 로그 가격의 시계열에 맞추 었습니다. 모델을 추정 할 수있는 수백만 개의 데이터 포인트. 데이터 집합을 사용할 수 있습니다 여기에 . 명료하게하기 위해, 이것은 로그 가격의 1 차 통합으로 인해 로그 리턴에 적합한 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
모델링 및 시뮬레이션을 개선하는 방법에 대한 지침 또는 내가 한 오류에 대한 통찰력에 대해 매우 감사드립니다. 모델 잔차가 시뮬레이션 시도에서 노이즈 항으로 사용되지 않는 것처럼 보이지만 통합 방법은 확실하지 않습니다.
ugarchspec()
및ugarchsim()
기능이 있는 위치)가 포함되어 있지 않습니다 . 여기에 질문 할 때마다 코드를 재현 할 수 있는지 확인하십시오. "사람들이 당신을 도울 수 있도록 도와 줄 것"입니다.