ATRとトレンド指標はどのように計算されるのか
直接の答え
ATR(Average True Range)と、ATRに方向性を組み合わせた「トレンド指標」は、通常、同じ基本入力から計算されます。それはOHLCのローソク足データです。ATRは、現在の高値/安値と前の終値から導かれるtrue rangeの値を使います。その後、トレンド要素は、選択した方向性の方法(たとえば移動平均、バンドロジック、ブレイクアウトルール)によって計算されます。正確な数式とパラメータを選べば、任意の過去データセットで結果を再現できます。
メカニズム:定義と必要データ
1) ATRが測るもの
ATRは、見ている期間(ルックバックウィンドウ)で価格がどれくらい動くかを推定するボラティリティ指標です。ATRは方向性を直接は測りません。動きの大きさ(マグニチュード)を測ります。
必要な入力データ(各ローソク足ごとに):
- 高値(H)
- 安値(L)
- 終値(C)
- 前の終値(C_prev)=直前のローソク足の終値
前提: 一貫したローソク足系列(同じ時間足、同じセッションの扱い、そして「前のローソク足」の同じ定義)を使っていること。時間足を変えると、入力が変わるためATRも変わります。
2) True Range(TR)式
最初のローソク足以降の各ローソク足について、**True Range(TR)**を次の最大値として計算します:
- H − L
- |H − C_prev|
- |L − C_prev|
概念的には:
- TR = max(H − L, |H − C_prev|, |L − C_prev|)
このロジックは、前の終値に対して「ギャップ」が生じる可能性のある動きを捉えるためです(始値が前の終値と大きく異なるときに起こりやすい)。市場データにギャップがなくても、この式はローソク足の構築による不連続性を考慮します。
3) ATRの計算(ローリング平均)
ATRは通常、N期間(ルックバックウィンドウ)にわたるTRのローリング平均です:
- ATR_N(t) = 時刻tで終わる直近N本のローソク足におけるTRの平均
多くのプラットフォームでは、この平均を単純な算術平均ではなく、平滑化(たとえばワイルダーの平滑化)で実装します。再現性のために重要なのは、同じ平均化手法と同じNを使うことです。
単純移動平均(SMA)版(概念):
- ATR_N(t) = (TR(t) + TR(t−1) + … + TR(t−N+1)) / N
平滑化(ワイルダー風)版(概念):
- 最初に、最初のN個のTR値の平均に等しい初期ATRを設定します。
- その後、直前のATRと最新のTRを使って、ATRを反復的に更新します。
プロバイダが「ATR」と言っていても、その数値を一致させるには、平滑化の厳密な定義と初期値の扱いが必要です。
4) この文脈で「トレンド指標」が通常意味するもの
「ATRとトレンド指標」は、次のようなワークフローを指すことが一般的です:
- ATRがボラティリティのスケール(どれくらい大きく動きやすいか)を提供する。
- トレンド手法が方向性や構造(価格が上昇トレンドのように振る舞っているのか、下降トレンドのように振る舞っているのか)を提供する。
- 2つを組み合わせる際に、ATRを使ってバンド、オフセット、またはしきい値のサイズを決める。
「トレンド指標」は単一の普遍的な数式ではないため、計算は「どのトレンド規則を意味しているか」に依存します。よくあるパターンは次のとおりです:
- 移動平均トレンド: トレンドは移動平均から推定され、しばしばその傾き、または価格に対する相対位置を使います。
- バンドベースのトレンド: 価格が、ベースラインに±(ATRスケールのオフセット)から導かれるバンドを横切るときに、トレンド状態が切り替わり得ます。
- ブレイクアウト/構造ロジック: 価格がローリングの水準を上回る/下回るときにトレンド状態が更新されます(その水準はATRで調整されている場合があります)。
5) 例:計算テンプレート(安定した仕組みと選択肢を分ける)
特定のブランドの数式に固定せず、ATR駆動のトレンドオーバーレイを計算するには、この再現可能なテンプレートを使います:
- 時間足とローソク足ソース(OHLC系列)を選ぶ。
- ATRウィンドウNを選ぶ。
- 履歴が十分にある各ローソク足tについて、TR(t)を計算し、その後ATR_N(t)を計算する。
- トレンドのベースラインを選ぶ(次のいずれか:移動平均、ローリング高値/安値、または別の規則)。
- トレンド規則に対してATRをどう使うかを選ぶ:
- オフセットバンド:ベースライン ± (k × ATR_N)
- しきい値:ATRで調整されたブレイクアウト水準
- サイズ:状態変数のステップ幅
- トレンド状態の変化を定義する(たとえば、価格がバンドを横切るとき、またはベースライン条件が反転するとき)。
前提: 選んだ方法には、明示的な「状態」ルール(トレンドをどうラベル付けするか)と、明示的な組み合わせルール(ATRがバンド/しきい値にどう影響するか)が含まれていること。
証拠または例:自分のデータで再現する方法
ライブデータやプラットフォーム固有の詳細は想定しないため、ここでは一般的で、確認できるワークフローを示します。
手順1:各ローソク足のTRを計算する
少なくとも1つ前のローソク足がある地点を選びます。ローソク足tについて:
- H(t) − L(t) を計算する
- |H(t) − C(t−1)| を計算する
- |L(t) − C(t−1)| を計算する
- 最大値をTR(t)とする
連続するローソク足について繰り返します。
手順2:N期間でATRを計算する
Nと平均化手法を選びます:
- SMAスタイルのATRなら、直近N個のTR値を平均する。
- ワイルダーで平滑化されたATRなら、その反復的な更新と初期ATRの定義に従う必要がある。
手順3:トレンド規則を適用する
1つの明示的なトレンド定義を選び、常に同じ方法でテストします:
- 移動平均アプローチを使うなら、ベースライン(たとえば移動平均)を計算し、ベースラインの傾き、または価格がその上/下にあるかどうかから方向性を導きます。
- ATRバンドを使うなら、ベースライン ± (k × ATR) により上限/下限バンドを計算し、状態遷移ルールを定義します(たとえば「終値が上限バンドより上のときトレンドは上向き」というのは一つの可能なルールです。あなたが選んだ厳密なルールに合わせる必要があります)。
手順4:途中値を確認して検証する
独立して検証するには、少なくとも次を比較します:
- TR(t) の値
- ATRが定義される最初の地点におけるATR_N(t)
- 知っているローソク足でのトレンド状態の変化
参照実装とこれらのいずれかが異なる場合、最も可能性が高い原因は次のとおりです:
- ローソク足データの前処理が異なる
- ATRの平滑化が異なる(SMA vs ワイルダー風)
- 最初のATR値の扱いが異なる
- トレンド規則のパラメータが異なる(ベースラインの種類、期間長、kの乗数)
限界とリスク(重大な失敗パターン)
1) ATRのウィンドウと平滑化の選択は、値を大きく変え得る
ATRはNと、平均の計算方法に依存します。同じ「ATR」という名称でも、平滑化や初期値の慣習が異なるため、結果が変わることがあります。
2) トレンドのラベリングは一意に定義されない
「トレンド指標」は、さまざまな計算のカテゴリです。次を指定しない場合:
- ベースラインの方法、
- (ある場合)バンド/オフセットのロジック、そして
- 状態変化のルール、 出力は一意に検証できません。
3) データセット開始時の例外ケース
N個のtrue range値が揃う前は、ATRは未定義、または初期化ルールに基づいて計算されます。
DOCUMENT END