ARMA-GARCHモデルを使用した外国為替価格のシミュレーション


10

ARIMA(1,1,1)-GARCH(1,1)モデルを、数年にわたって1分間隔でサンプリングされたAUD / USD為替レートログ価格の時系列に適合させ、2つ以上のモデルを推定する100万のデータポイント。データセットはこちらから入手できます。明確にするために、これはログ価格の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 

モデリングとシミュレーションを改善する方法に関するガイダンス、または私が作成した可能性のあるエラーへの洞察に大いに感謝します。シミュレーションの試行では、モデルの残差がノイズ項として使用されていないように見えますが、それを組み込む方法はわかりません。


1
こんにちはジェフ!また、潜在的なヘルパーにデータ(または少なくとも代表的なサンプル)を提供する必要があります。また、サンプルコードには、使用したパッケージ(ugarchspec()およびugarchsim()関数が存在する場所)は含まれていません。ここで質問するときはいつでもコードが再現可能であることを確認してください。コードは「人々があなたを助けるのを助けます」。
SavedByJESUS

@SavedByJESUS、アドバイスありがとうございます。投稿を更新して、使用したRライブラリを含め、データの形式を明確にしました。
ジェフ

シミュレーションデータが元のシリーズと異なる主な理由は、近似モデルARMA(1、1、1)GARCH(1、1)がデータに適切なモデルではないためです。最初にモデルを改善することから始め、その後のシミュレーションは元のデータと同様になります。
SavedByJESUS

回答:


1

私は外国為替データ予測を使用しており、ARMA、ARIMA、GARCH、ARCHなどの統計予測方法を使用するときはいつでも信頼してくれます。時間を先に予測しようとすると、常に悪化する傾向があります。彼らは、次の1〜2期間は機能する場合と機能しない場合がありますが、間違いなくそれ以上ではありません。処理しているデータには自己相関、傾向、季節性がないためです。

ARMAとGARCHを使用する前に、ACFPACFまたはトレンド、季節性のテストを確認しましたか?データに上記のプロパティがないと、これらのモデルの基本的な仮定に違反しているため、統計的予測は機能しません。


コメント@JAbrに感謝しますが、実際には予測していません。むしろ、私のアプリケーションは、観測されたデータと同じ統計的特性を持つ代替価格パスの厳密なシミュレーションです。
ジェフ

わかりましたが、他の病棟では実際にガーチモデルを使用して予測しています。シミュレーションではガーチを使用しており、ガーチは予測によって観測を生成します。
JAbr 2019

もちろんですが、時系列モデルの予測は、地平線がさらに未来に広がるにつれて悪化すると言っていました。単一期間の範囲でシミュレーション(または予測)した場合でも、モデルが系列のダイナミクスを十分にキャプチャしないことをお勧めします。
ジェフ

「次の1〜2期間は機能するかもしれません」と言ったのは残念です。
JAbr 2019

0

私の提案は、選択したモデルがデータに適切であることを確認することです。

  • 周期的または季節的な要素がないことを確認してください。
  • Augmented Dickey Fuller Testを実行して、ユニットルートの存在をテストします。単位根が存在する場合は、拡張ディッキーフラーテストで単位根が存在しないことが示されるまで、データの差分を取り続けます。または、自動相関係数を観察します。定常性のためにnタイムラグの後に減少します。
  • たぶん、間違った注文を使用してモデルに適合しすぎたり、適合しなかったりしますか?AICとBICを使用して正しい注文を見つけます。

tdistribution.model="std"

あなたが正しいです。回答を編集します。
A-ar

私は過剰適合について心配していません-実際、私が意図するアプリケーションでは、モデルを過剰適合させたいと思っています。季節性についてではなく、定常性についてテストしました。これらの問題に関係なく、GARCHモデルは正しく機能していないようです。シミュレートされたシリーズは完全にホモシダスティックであるように見えます。
ジェフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.