Использование моделей ARMA-GARCH для моделирования валютных цен

10

Я приспособил модель 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 

Я был бы очень признателен за любые советы о том, как улучшить моё моделирование и симуляцию, или за понимание ошибок, которые я мог сделать. Похоже, что остаток модели не используется в качестве шума в моей попытке моделирования, хотя я не уверен, как включить его.

Джефф
источник
1
Привет, Джефф! Вы также должны предоставить свои данные (или хотя бы репрезентативную выборку) потенциальным помощникам. Кроме того, ваш пример кода не включает используемые вами пакеты (где находятся функции ugarchspec()и ugarchsim()). Убедитесь, что ваш код воспроизводим всякий раз, когда вы задаете вопрос здесь, и он «поможет людям помочь вам».
SavedByJESUS
Спасибо за ваш совет, @SavedByJESUS. Я обновил свой пост, добавив в него библиотеку R, и уточнил формат моих данных.
Джефф
Основная причина, по которой ваши смоделированные данные отличаются от исходной серии, заключается в том, что подобранная модель ARMA (1, 1, 1) GARCH (1, 1) не является подходящей моделью для ваших данных. Сначала вы должны улучшить свою модель, затем последующее моделирование будет похоже на ваши исходные данные.
SavedByJESUS

Ответы:

1

Я работаю с прогнозированием данных форекс и доверяю мне всякий раз, когда вы используете статистические методы прогнозирования, будь то ARMA, ARIMA, GARCH, ARCH и т. Д. Они всегда имеют тенденцию ухудшаться, когда вы пытаетесь предсказать значительно вперед во времени. Они могут или не могут работать в течение следующих одного или двух периодов, но определенно не более того. Потому что у данных, с которыми вы имеете дело, нет автокорреляции, нет тенденции и нет сезонности.

Мой вопрос к вам, проверяли ли вы ACF и PACF или тесты на тренд, сезонность перед использованием ARMA и GARCH? Без вышеупомянутых свойств в данных статистическое прогнозирование не работает, потому что вы нарушаете основные предположения этих моделей.

Джабер
источник
Спасибо за ваш комментарий @JAbr, но я на самом деле не прогнозирую. Скорее, мое приложение строго моделирует альтернативный путь цены с теми же статистическими характеристиками, что и наблюдаемые данные.
Джефф
Хорошо, но в других отделениях вы на самом деле прогнозируете, используя модель garch, не так ли, ваше моделирование использует garch, а garch производит наблюдение путем прогнозирования.
11
Безусловно, но вы сказали, что прогнозы моделей временных рядов ухудшаются по мере того, как горизонт расширяется дальше в будущее. Я предполагаю, что модель недостаточно отражает динамику ряда даже при моделировании (или прогнозировании) на горизонтах одного периода.
Джефф
я сказал: «Они могут работать в течение следующих одного или двух периодов», мой плохой, я должен был сказать, может или нет.
11
0

Я предлагаю убедиться, что выбранная вами модель подходит для данных.

  • Убедитесь, что нет циклических или сезонных компонентов.
  • Выполните расширенный тест Дики-Фуллера, чтобы проверить наличие корневого модуля. Если присутствует корень единицы, продолжайте различие в данных, пока расширенный тест Дики-Фуллера не покажет наличие единичных корней. В качестве альтернативы соблюдайте коэффициенты автокорреляции, они должны упасть после некоторого n временных лагов для стационарности.
  • Может быть, вы используете модель с неправильным заказом? Найдите правильные заказы, используя AIC и BIC.
A-ар
источник
Tdistribution.model="std"
Вы правы. Я отредактирую свой ответ.
А-ар
Я не беспокоюсь о переоснащении - фактически, для моего предполагаемого применения я хочу переоснастить модель. Я проверял на стационарность, но не на сезонность. Независимо от этих проблем модель GARCH не работает должным образом. Похоже, что смоделированная серия полностью гомоскедастична.
Джефф