金融バブルの検定

EViewsでは金融バブルの検出を行うPWY, PSY法に対応したバブル検定を提供します. このページではバブル検出の基本的な理論とEViewsでの操作を解説します.


バブル検定とは?

  1. EViewsは, バブルの検出にPhillipset al. (2011)のPWY法およびPhillips et al. (2015)のPSY法による検定を提供しています. これらの検定は, ADF単位根検定の応用で, 次の資産価格モデルに基づいています.
    \begin{eqnarray} \Delta y_{t} = \mu + + \delta y_{t-1} + \sum_{i=1}^p \phi_{i} \Delta y_{t-i} + \epsilon_{t} \\ \epsilon_{t} \sim N(0, \sigma^{2}) \end{eqnarray}
    ここで$ y_{t} $は資産価格、$ \Delta $は差分の演算子、$ p $はラグの次数です。
    このモデルでは, 資産価格のバブルの存在を検定することは, 価格の爆発的変化を検定することと同等です. つまり, 対立仮設$ \delta \ge 1 $と対立仮説$ \delta = 1 $を比較することで、標準的なADF検定の片側$ p $値を得ます。
    バブルは一般に短命であるため, $ \delta \ge 1 $の検定では, 標本全体ではなく, 短期間に観測されたデータのみを使用します.
  2. このフレームワークに基づいて, EViewsは次の3つの異なるバブル検出方法をサポートします.
    • 最もシンプルな方法は, ローリングADF (rolling ADF: RADF)検定です. このフレームワークでは, データサンプルの開始時に短い観測ウィンドウに対して最初のADF検定が計算され, 検定統計量が記録されます. 次に, この手順では, ウィンドウを1つの観測値だけロールし(開始日と終了日の両方が1ずつ増加します), ADF検定が計算されて記録されます. このプロセスは, データサンプルの終わりに達するまで続行されます. 一連のADF統計量の最大値が, RADF検定統計量です.
      ローリング回帰については、開発元ブログ記事もご覧ください.
      データ
    • PWY法は, ウィンドウをロールするのではなく拡張するアプローチを提案しています. 最初の小さなウィンドウを推定した後, 各反復計算でサンプルの終了日を1つずつ増やし, ADFを計算します. これらの拡張統計量の最大値は, 最大ADF(supremum ADF: SADF)検定統計量と呼ばれます.
      データ
    • PSY法は, ウィンドウのローリングと拡張の両方を行うことで, 検定をさらに一般化することを提案しています. 手順は, まず小さな開始ウィンドウのADFを推定し, 次にその初期ウィンドウを与えられた拡張ウィンドウSADFを計算することから始めます. 次に, 開始日と終了日を1つずつ増やしてウィンドウをローリングし, 新しいウィンドウを与えられたSADFを計算します. このプロセスは, ローリングウィンドウの最後のSADFを計算するまで繰り返されます. 各ローリングウィンドウを与えられたSADF統計量の最大値は, 一般化最大ADF (generalized supremum ADF: GSADF)統計と呼ばれます.
      GSADF統計量では, サンプルサイズが大きい場合に非常に多くのADF統計量を推定する必要があり, 結果を生成するのにかなりの時間がかかる場合があります.

    RADF, SADF, およびGSADF検定統計量の漸近分布は不明であり, EViewsでは臨界値をブートストラップシミュレーションによって取得します.
  3. シリーズオブジェクトを開き, View > Time-series Diagnostics > Bubble test...と操作すると検定ダイアログが表示できます.
    データ

    • Test typeでは, RADF, SADF, GSADFの中から検定方法を選択します. Window length欄でローリング回帰のウィンドウ長を設定します. SADF, GSADFではInitial window length欄で設定を行います.
    • Include test equationでは, 上記の回帰式に定数項とトレンド項を追加するかを定義します.
    • Lag lengthでは上記の回帰式の第3項, 自己相関を考慮する階差ラグの次数を定義します. Automatic selectionでは3つの情報量基準で最適なラグを自動選択させます. User-specifiedでは手動で決定します.
    • Critical valueでは検定の臨界値を設定します, デフォルトでは95%です.
    • Bootstrap optionsではp値を計算する際のシミュレーション回数と, 乱数生成のシード値を設定できます.

実行例

  • バブル検定をEViewsで実行し, 検定結果を考察

  1. Phillips, Shi, Yu (2015)のウェブページで公開されているデータを下記からダウンロードし, シリーズSPRATIOについて調査します.

    SPRATIOシリーズオブジェクトを開き, View > Graph > OKと操作し, 折れ線グラフで表すと, 急激な上昇がいくつかあることがわかります. コマンドでグラフを表示するには次を実行します.
    spratio.line
    データ
  2. View/Time-series Diagnostics/Bubble Tests...と選択します. Test typeをExpanding (SADF)に設定し, Initial window lengthを36, User-specifiedのラグを0に設定します. OKをクリックして検定を実行します.
    データ
    コマンドラインで検定を使用するには、次のようにシリーズオブジェクトのメソッドbubbletestを使用します。
    test=で検定タイプを, window=で初期ウィンドウの期間を, lag=でラグの次数を設定します.
    spratio.bubbletest(test=sadf, window=36, lag=0)
  3. 検定はブートストラップ法で$p$値を算出するため, 標本サイズと反復回数の設定により多少の時間がかかります. 計算終了後EViewsは, 概要表とADF検定統計量のグラフを含むスプールオブジェクトを表示します.
    データ
  4. 要約表には, 2000年8月の最大値に関連付けられた検定統計量3.4619, 関連付けられた$ p$ 値0.0007なので、バブル検が発生していないという帰無仮説は棄却されます.
    データ
    グラフは, SADF統計量を構築するために使用される拡張ADF統計量の時系列変化を示します.
    青い線が検定タイプにおけるADF検定統計量, オレンジの線が95%信頼区間の境界値です.
    データ
    グラフから2000年8月以外にもバブルが発生している箇所が複数確認できます.
page_top_icon