FX相場には、一定の範囲内を往復しやすい局面と、一方向へ進み続けやすい局面があります。
同じ逆張り手法を使ったとしても、レンジ寄りの相場では機能しやすく、強いトレンド相場では損失につながりやすいことがあります。
そこで重要になるのが、
現在の相場は平均回帰を狙いやすい環境なのか
という視点です。
本記事では、Stable Edge Quantシリーズのインジケータとして開発した「ADF オシレーター – Stable Edge Quant」を題材に、ADF検定の考え方と、平均回帰レジームを可視化する方法を解説します。
本インジケータは売買を自動実行するものではありません。
また、本記事は投資助言ではなく、統計的な相場分析を学ぶための教育目的の記事です。
ADF検定とは何か
ADF検定とは、拡張ディッキー-フラー検定のことです。
時系列分析では、価格や経済指標などのデータが「定常的」であるかどうかを確認する場面があります。
定常的な時系列とは、簡単に言えば、時間が経過しても平均や分散などの性質が大きく変わりにくい系列です。
一方で、価格が一方向へ動き続けるような系列は、非定常的である可能性があります。
平均回帰型のトレードを考える場合、
価格が平均付近へ戻りやすい状態なのかそれともトレンド的に動きやすい状態なのか
を区別することが重要です。
ADF検定は、その判断を補助する統計的な方法の一つです。
ADF検定の基本式
まず、単純な考え方として、次のようなモデルを考えます。
Δyₜ = α + βyₜ₋₁ + εₜ
ここで、
Δyₜ:価格変化α:定数項β:平均回帰性に関係する係数εₜ:誤差項
を表します。
ADF検定では、さらに過去の価格変化を加えます。
Δyₜ = α + βyₜ₋₁ + γ₁Δyₜ₋₁ + γ₂Δyₜ₋₂ + ... + εₜ
この追加項によって、短期的な自己相関の影響をある程度考慮できます。
Stable Edge Quant – ADF Oscillatorでは、初期設定としてラグ数を1にしています。
ADF_Lags = 1
つまり、直前の価格変化を1つ加えた形でADF統計量を計算します。
単位根とは何か
ADF検定を理解するうえで重要なのが「単位根」という考え方です。
価格系列に単位根がある場合、過去のショックが長く残りやすく、平均へ戻る性質が弱いと考えられます。
一方で、単位根がないと判断できる場合、系列は比較的定常的で、平均回帰を考えやすくなります。
ADF検定では、一般に、
帰無仮説:単位根がある対立仮説:単位根がない
という形で検定します。
ADFのt統計量が十分に小さい、つまりマイナス方向へ大きくなるほど、単位根があるという仮説に疑問を持つ材料になります。
ADF オシレーターでは何を表示するのか
ADF オシレーター – Stable Edge Quantでは、ADFのt統計量をサブウィンドウにライン表示します。
主役は、次のラインです。
ADF t-stat line
このラインが低下するほど、価格系列は平均回帰的な状態に近いと解釈しやすくなります。
初期設定では、判定基準として次のラインを表示します。
ADF_HardThreshold = -2.20ADF_SoftThreshold = -2.20
ADF t-statが -2.20 以下になった場合、インジケータ上では、
Regime : Mean Reversion
と表示します。
一方で、ADF t-statが基準値を上回る場合は、
Regime : Non-stationary
と表示します。

商品ダウンロードページへ↓↓↓
ADF オシレーター – Stable Edge Quant
空欄
なぜ閾値を表示するのか
ADF検定を厳密に使う場合、モデルの仕様、サンプル数、定数項やトレンド項の有無などによって、参照すべき臨界値が変わります。
また、正式な統計検定では、p値や臨界値を確認する必要があります。
Stable Edge Quant – ADF Oscillator v1.00では、ADF t-statを完全な統計判定として断定的に使うのではなく、
平均回帰レジームを確認するための実務的な目安
として表示しています。
そのため、-2.20 は普遍的な正解ではありません。
あくまで、同シリーズのOU Mean Reversion EAやAUDUSD M30の検証条件と整合させた初期設定です。
Hard ThresholdとSoft Threshold
本インジケータでは、2つの閾値を表示します。
Hard ThresholdSoft Threshold
Hard Thresholdは、平均回帰レジームを比較的強く確認するための基準です。
Soft Thresholdは、将来的に段階的な判定を行うための補助線です。
v1.00では、両方を同じ値に設定しています。
ADF_HardThreshold = -2.20ADF_SoftThreshold = -2.20
そのため、現時点ではシンプルに、
ADF t-statが -2.20 以下かどうか
を確認すれば十分です。
今後、分析を深める場合は、
強い平均回帰レジームやや平均回帰寄り非定常レジーム
のように、段階的な表示へ拡張することも可能です。
log(price)を使う理由
ADF オシレーター – Stable Edge Quantでは、初期設定で価格の対数を使います。
ADF_UseLogPrice = true
価格そのものではなく log(price) を使う理由は、価格変化を相対的な変動として扱いやすくするためです。
FX価格は、絶対値の変化よりも、変化率として考えた方が自然な場面があります。
もちろん、用途によってはraw price、つまり通常価格を使うこともできます。
そのため、本インジケータでは切り替え可能にしています。
OU過程 平均回帰オシレーターとの違い
同シリーズには、OU過程 平均回帰オシレーター – Stable Edge Quantがあります。
このオシレーターは、Zスコアを使って、
現在価格が平均からどれくらい離れているか
を確認するインジケータです。
一方、ADF オシレーターは、
そもそも今の相場は平均回帰を考えやすい環境か
を確認します。
つまり、役割は次のように分かれます。
OU Reversion Oscillator→ タイミング確認ADF Oscillator→ 環境認識
この2つを同時に表示すると、平均回帰型のトレードを考える際に、判断を整理しやすくなります。
デュアル表示の見方
基本的な使い方はシンプルです。
たとえば、AUDUSD M30でADF Oscillatorが平均回帰レジームを示しているとします。
その状態で、OU Reversion OscillatorのZスコアが -2.0 以下になっていれば、平均回帰型の買い戦略を検討する材料になります。
ただし、インジケータが条件を満たしていても、必ず反発するわけではありません。
強いファンダメンタルズ要因がある場合や、重要指標発表直後では、価格が一方向へ進み続ける可能性があります。
計算負荷を抑える工夫
ADF計算は、単純な移動平均やZスコアよりも処理が重くなりやすいです。
理由は、回帰行列を作り、線形方程式を解き、残差分散とt統計量を計算する必要があるためです。
そこで、本インジケータでは、
MaxBarsToCalculate = 1500
という設定を入れています。
これは、過去すべてのバーを毎回計算するのではなく、計算対象の最大本数を制限するためのものです。
動作が重い場合は、1000や500に下げることで、表示負荷を軽減できます。
ADF オシレーターの注意点
ADF オシレーターは、売買シグナルそのものではありません。
ADF t-statが低いからといって、必ず利益が出るわけではありません。
また、ADF検定の結果は、使用する期間、ラグ数、時間足、通貨ペア、価格データによって変わります。
そのため、次の点に注意が必要です。
ADFだけで売買を決めないOUやチャート形状と組み合わせる重要指標前後は慎重に扱う使用環境ごとに検証する
まとめ
ADF オシレーター – Stable Edge Quantは、ADF検定のt統計量をサブウィンドウに表示し、平均回帰レジームを可視化するインジケータです。
主な考え方は、次の3点です。
ADF t-statで定常性を確認する閾値以下なら平均回帰レジームとして扱うOU過程 平均回帰オシレーター - Stable Edge Quantと組み合わせて使う
平均回帰型のトレードでは、価格がどれくらい乖離しているかだけでなく、
今は平均回帰を狙ってよい環境なのか
を確認することが重要です。
ADFオシレーターは、その環境認識を統計的な数値として整理するための補助ツールです。
今後は、p値近似、ラグ自動選択、複数段階のレジーム判定なども研究していく予定です。