ADXトレンドはどのように計算されるのか
直接の答え
「ADXトレンド」は単一の固定されたブランド用の計算式ではありません。多くの人が指しているのは、平均方向性指数(ADX)と、その方向性の動き(DI)成分からの構築方法です。一般的な形では、計算は価格変化から始まり、方向性の動きの値(+DMと−DM)を導き出し、それらをトゥルーレンジ(TR)で正規化し、結果を平滑化してから、平滑化された方向性指標をADX値(トレンドの強さ)へ変換します。
メカニズムと定義(計算の構成要素)
以下は、標準的で自己完結したADX型のワークフローです。目的は、OHLCの価格データからトレンドの強さを表す数値を計算することです。この計算には、価格の時系列が必要です(少なくとも:HighとLow。Closeは変化の計算とTRのバリアントを作るために使われます)。
1) 入力と記法
時刻tでインデックスされたバー/ローソク足があり、少なくとも以下があるとします:
- High[t]
- Low[t]
- Close[t]
見ている期間の長さn(しばしば「period」と呼ばれます)を選びます。この選択は、平滑化の強さと感度に影響します。
2) 方向性の動き:+DMと−DM
各ステップt(前のバーt−1の後から)について、高値と安値の変化から方向性の動きを計算します:
- UpMove = High[t] − High[t−1]
- DownMove = Low[t−1] − Low[t]
一般的なルールセットでは次のように割り当てます:
- +DM = UpMove(ただしUpMove > DownMove かつ UpMove > 0 の場合)、それ以外は0
- −DM = DownMove(ただしDownMove > UpMove かつ DownMove > 0 の場合)、それ以外は0
解釈:そのバーでは優勢な方向だけが「勝ち」、その方向とは逆の動きは捨てられます。
3) トゥルーレンジ:TR
トゥルーレンジは、クローズ間のギャップも考慮して、価格がどれだけ動いたかを測ります。一般的な定義は次のとおりです:
- TR = max( High[t] − Low[t], abs(High[t] − Close[t−1]), abs(Low[t] − Close[t−1]) )
解釈:TRは、方向性の動きの正規化の分母(基準)になります。
4) 成分を平滑化する
方向性の動きとTRは通常、比率に変換する前にn本のバーで平滑化されます。広く使われているアプローチの1つがWilder型の平滑化で、再帰的に次のように定義されます:
- SmoothedX[t] = SmoothedX[t−1] − (SmoothedX[t−1] / n) + X[t]
ここでX[t]は、平滑化している系列に応じて +DM[t]、−DM[t]、またはTR[t]のいずれかです。
重要な詳細:最初の計算ウィンドウにおけるSmoothedXの初期値を定義する必要があります(多くの場合、最初のn個の観測値の合計など、プラットフォームの正確な実装に依存します)。
5) 方向性指標(+DIと−DI)へ変換
平滑化の後、次を計算します:
- +DI[t] = 100 × (Smoothed(+DM)[t] / Smoothed(TR)[t])
- −DI[t] = 100 × (Smoothed(−DM)[t] / Smoothed(TR)[t])
方向性指標は、動きを比較可能で正規化された「方向性の強さ」に変換します。
6) DXを作り、さらにADXへ
方向性指数(DX)を計算します:
- DX[t] = 100 × abs(+DI[t] − −DI[t]) / (+DI[t] + −DI[t])
そして、別の平滑化ステップをn本のバーに対して行ってADXを計算します:
- ADX[t] = 選択した期間nにおけるDXの平滑化された平均
多くの実装では、最初のADXは最初に利用可能なDX値の平均で、その後はWilder型の平滑化、または同等の平滑化方法が続きます。
「ADXトレンド」が測っているものの要約
得られたADXの数値は、方向ではなく「トレンドの強さ」を表すことを意図しています。方向性指標(+DIと−DI)は別に存在し、方向を示します。ADXは、その方向性の優勢がどれほど強いかを要約します。
証拠または例(確認可能なミニ・ワークフロー)
計算は正確なルールと初期条件に依存するため、小さくて一貫したデータセットで方法を検証できると便利です。
この例の前提(再現できるように):
- 上で説明した標準の +DM/−DM ルールを使う。
- High、Low、Close[t−1] を使った標準のTR定義を使う。
- 期間n = 14 を使う。
- Wilder型の平滑化を使う。
独立して検証するための実用的な方法:
- UpMove、DownMove、+DM、−DM、TR の列を持つスプレッドシートを作成する。
- 最初の平滑化ウィンドウについて、選んだ方法で定義される初期の Smoothed(+DM)、Smoothed(−DM)、Smoothed(TR) を計算する(一般的には最初のn個の値の合計)。
- Wilderの平滑化を1バーずつ前に適用する。
- 平滑化された値から +DI と −DI を計算する。
- +DI と −DI の差と和から DX を計算する。
- DXを平滑化してADXを得る。
スプレッドシートの出力が、丸めの差の範囲内でツールのADXラインと一致するなら、同じ前提ルールと初期化を使っていると確信できます。
任意のクロスチェック:高値が上がり安値が下がる(またはその逆)バーで、+DMと−DMが妥当に振る舞っているか確認します。片側が一貫して優勢なら、方向性指標はそれを反映するはずです。
限界、リスク、失敗パターン
1) 実装の違い
ADXのような指標は、次の理由で異なることがあります:
- 平滑化された初期値の与え方。
- TRの厳密な定義(いくつかのプラットフォームはギャップやデータの癖をわずかに異なる扱いをする)。
- 平滑化がWilder型か、別の平均方法を使っているか。
- プラットフォームがそのバリアントを「ADXトレンド」とラベル付けしているか。
小さな違いでも、目に見える乖離につながり得ます。
2) 期間nへの感度
より長いnは通常、より強く平滑化し、動きの遅いADXになります。短いnは短期のボラティリティに素早く反応し、読みが不安定になる可能性があります。これは「より良い/より悪い」という問題ではなく、その数値が何を表すかが変わるだけです。
3) ゼロ割れ、またはゼロに近い分母
DXは分母に (+DI + −DI) を使います。両方の方向性指標がほぼゼロ(たとえば非常にフラット、または低ボラティリティのデータ)だと、DXは不安定になったり、ソフトウェアがゼロをどう扱うかによって未定義になったりすることがあります。適切な取り扱いには明示的なルールが必要です。
4) データ品質と欠けたバー
OHLCデータに欠けた間隔、古い値、またはローソク足の構築の不整合がある場合、+DM、−DM、TRは(t−1の隣接関係という)前提が誤って計算される可能性があります。これは誤解を招くADX値につながります。
5) 市場の挙動は一定ではない
数学が正しくても、ADXの統計的な意味はレジーム(相場環境)に依存します。過去の計算が将来の類似を保証するわけではありません。ADXは、次に何が起きるかの確実性ではなく、観測された価格変動の変換です。
検証、または次の質問
見かけた「ADXトレンド」計算を独立して検証するには:
- どのADXバリアントが使われているかを確認する(期間n、平滑化方法、TRの定義、初期のシーディング)。
- 生のOHLCデータから少なくともいくつかの点を再計算する。
- 中間系列(+DM、−DM、TR、平滑化された値、+DI/−DI)が、あなたのツールの出力と一致するか確認する。
よければ、どのプラットフォーム、またはどの計算式の慣習を使っているか教えてください(たとえば、正確な期間と、平滑化がWilder型かどうか)。そうすれば、現在のデータや提供元の挙動について何も仮定せずに、上記の計算手順をその慣習に正確に対応づけられます。
DOCUMENT END