このニュースレターのテーマは、予測モデル(ARMA、GARCH、回帰など)を、新しいデータ・ポイントが利用可能になり、予測が自動更新されたときに、あなた(または他の誰か)が容易にメンテナンスできるように設定することです。
実証のために、S&P 500 ETF の月次リターンについて GARCH モデルを定義し、パラメー タの値をキャリブレーションし、その後 36 ヶ月間のボラティリティ 予測期間構造を構築した。 その後、新たなデータ・ポイントを挿入し、予測開始日を繰り上げ、予測値を更新するモデルを観察した。
なぜ気にする必要があるのか?
しかし、多くのスプレッドシートは、同僚と共有され、時々修正され、長い間残っています。 自動更新のためにワークシートを準備するのは比較的簡単です。 一度行えば、簡単に新しいデータポイントを追加したり、既存のデータポイントを修正したりすることができ、最小限の労力で計算が更新されるのを確認することができます。
準備はできた!
データ準備
このチュートリアルでは、2010年1月から2019年11月までのS&P 500 ETF (SPY)の月次対数リターンを使用します:
まず、現在のデータセットにプレースホルダーを追加する。 日付を進め(例:2019年12月、2019年1月)、その値として「#N/A」を入力する。
モデリング
このデータセットの時変月次ボラティリティ・ダイナミクスを捉えるために、学生のイノベーションを用いたGARCH(2,2)を選択した。 モデルを定義するには、ワークシートで空のセルを探し、"NumXL" ツールバーの "GARCH" アイコンをクリックすると、GARCH ウィザードがポップアップします。
入力データ」セクションで、月次リターンのセル範囲を選択する。 NumXL 関数は、入力セル範囲の両端にある "#N/A" 値のオブザベーションを破棄しますので、心配しないでください。
モデル仕様セクションでARCHとGARCHを選択し、次数を2に設定する。 イノベーションセクションで "Student t-distribution "をクリックする。 ここで、"OK "ボタンをクリックして、選択を確定する。
GARCH ウィザードはモデル・テーブルを生成し、そのパラメーターの値を有効だが最適でない値に 初期化します。 GARCH パラメータの最適値を見つけるには、モデル・テーブルのヘッダー・セルを選択し、"NumXL" ツールバーの "Calibrate" アイコンをクリックします。 Microsoft Solver がポップアップし、すべての値が設定される。 Solve をクリックする。
マイクロソフトのソルバーはGARCHプロセスの最適解を探索する。
データ探索
先に、NumXL関数は入力セル範囲内の "#N/A "に等しい値のオブザベーションを破棄すると述べた。 データセットがどこで終わるかをどうやって知るのですか?
上の質問に答えるには、まず2つの関数でデータセットのサイズを計算する必要がある: RMNA(.)とCOUNT(.)である。 RMNA(.) は、"#N/A" のデータポイントを捨てて、欠落していないオブザベーションの配列を返し、COUNT(.) は、この配列のサイズを返します。
Excelに組み込まれているINDEX(.)関数と、上記のデータセットのサイズを使えば、データセットの終了日を計算することもできる。
まとめると、119個の値が欠落していないデータセットがあり、最新の観測は2019年11月に行われた。
予測
このチュートリアルでは、今後 36 ヶ月間の月次ボラティリティ予測を作成する必要があります。 これを行うには、モデル・テーブルのヘッダー行を選択し、NumXL ツールバーの「予測」 アイコンをクリックします。
最新のオブザベーション "セクションで、欠損値のあるオブザベーション(すなわち#N/A)を含む "B "列のセル範囲を選択する。
NumXLはGARCHモデル自体によって計算されたサンプル内のボラティリティを使用する。 OK "ボタンをクリックする。
予測ウィザードは、入力データセットの終了後に測定されるステップ(つまり月)で時間単位を表現する予測表を生成します。
時間が経つにつれて、新しいデータポイントを追加すると、最後のオブザベーションの(値が欠落していない)日付が進み、予測表のステップ単位の解釈に影響を与える。 この問題に対処するために、予測表の左側に、対応するカレンダーの日付を指定する列を追加しました。
各ステップに対応する日付を計算するために、以下のようにNxEDATE(.)関数とCONCAT(.)関数を使用する:
データセットの終了日を使用して、NxEDATE(.)はNヶ月後のデータを返します。Nは予測表のステップ数です。
新しいデータが週末や祝日に重なった場合はどうなりますか? データセットが金融時系列なので、日付は平日でなければなりません。そうでない場合は、日付を次に近い営業日に移動します(NxAdjust(.))。
それだけだ! 予測表と月次ボラティリティの期間構造曲線を見てみよう。
GARCHモデルは、過去の水準(すなわち3.8%)と比較して低いボラティリティ環境を示しているが、今後1年間のボラティリティは着実に上昇すると予測している。
データポイントの追加
2019年12月の月次リターンが-0.6%の場合、どうなるかを検証してみよう。
ステップ 1: データセットに新しい値を入力する。
ステップ 2: 観察する
入力データセットのサイズが120に増え、終了日が2019年12月になった。
予測表では、ステップ1に対応する日付が2020年1月になり(2019年12月だった)、ボラティリティの期間構造が異なっている(より滑らかでない)。
ステップ 3: 上級
上の予測表は、先にキャリブレーションしたのと同じGARCHプロセス、特にパラメータの値を使用している。
議論のために、モデルを再キャリブレーションしたいが、ARCH/GARCH次数(すなわち、PとQ)とイノベーション分布(例えば、student t)は同じままであると仮定しましょう。
先ほどと同じように、GARCH モデル表のヘッダー行を見つけて選択し、NumXL ツールバーの "Calibrate" アイコンをクリックする。
ソルバーがポップアップしますが、今回は、前回の実行時のパラメーターの最適値で最適化が開始(つまり初期値)されます。 したがって、迅速な変換が期待できる。
最適化プロセスを開始するには、"Solver "ボタンをクリックします。
完了すると、ソルバーは "Find Solution "ダイアログを表示する。 OKボタンをクリックすると、新しいパラメータの値がモデル・テーブルにコピーされます。
再キャリブレーションが予測に与える影響を調べるには、表(およびプロット)の予測値 を見てください。
結論
このチュートリアルでは、モデルを自動更新するための2つのステップを検討しました:
- 入力データセットの末尾にプレースホルダ・データポイントを追加する、
- プレースホルダ・データポイントを持つデータセットをモデルに選択し、予測する。
時間が経過し、新しい観測が実現すると、その実際の値を(#N/Aの代わりに)データセットに入力し、エクセルは参照するすべてのセル(例えば、予測表)の計算を更新する。
コメント
サインインしてコメントを残してください。