RSIはどのように計算される?(相対力指数)
計算する前にRSIを定義する
相対力指数(RSI: Relative Strength Index)は、直近の価格上昇の相対的な強さと、直近の価格下落の相対的な弱さを測るモメンタムオシレーターです。基本となる考え方はシンプルです。選んだ時間枠の中で、「価格がどれだけ上がったか」と「どれだけ下がったか」を比べます。RSIは、その比較を0〜100の範囲に収まる数値へと変換します。
RSIはそれ自体が予測ではありません。価格変化の履歴を、上限・下限のある指標値へと変換したものです。この変換は、選ぶ計算ルール(特に参照期間の長さ、そして上昇と下落をどう平滑化するか)に依存します。
RSIの計算:数式と必要なデータ
RSIを計算するには、時間順に並んだ価格系列が必要です。多くのRSI実装では、1期間につき1つの価格(一般的には終値)を使い、1期間前からの変化を計算します。
ステップ1:参照期間(N)を選ぶ
ウィンドウ長N(たとえば一般的な選択として14)を決めます。RSIの計算では、平均上昇と平均下落を行う際にこのNが参照されます。
ステップ2:1期間の変化を計算する
各期間tについて、価格変化を計算します:
- Change(t) = Price(t) − Price(t−1)
Change(t)から、2つの非負の成分に分けます:
- Gain(t) = max(Change(t), 0)
- Loss(t) = max(−Change(t), 0)
つまり、上向きの変化だけがGainに寄与し、下向きの変化だけがLossに寄与します。
ステップ3:平均上昇と平均下落
RSIには、参照期間の平均上昇と平均下落が必要です。RSIにはさまざまな「種類」がありますが、広く使われているアプローチでは、毎回の単純平均ではなく平滑化を用います。
よくある平滑化手法は次のとおりです:
- AverageGain = N期間におけるGain(t)の平滑化された平均
- AverageLoss = N期間におけるLoss(t)の平滑化された平均
平滑化の詳細が重要なのは、次のようにするとRSIが変わるからです:
- 単純移動平均(毎期間、最初から計算し直す)と、
- Wilder型の平滑化(再帰的で、直前の平滑化値を使う)。
ツール間で一貫した結果が欲しい場合は、計算機やデータセットが想定している「平滑化ルール」をそのまま使ってください。
ステップ4:平均からRS、そしてRSIへ
相対力の比率を計算します:
- RS = AverageGain / AverageLoss
次にRSIへ変換します:
- RSI = 100 − (100 / (1 + RS))
明示しておくべき2つの特別なケースがあります:
- AverageLossが0(平均化ウィンドウ内に直近の下落がない)なら、RSは非常に大きくなります。実務上、RSIは100に近づきます。
- AverageGainが0(直近の上昇がない)なら、RSは0になります。実務上、RSIは0になります。
RSIは数学的に「どう動く」のか
RSIは、同じ基礎となる価格系列から得られる2つの平均量を比較します:
- 直近の期間において、(平滑化された平均の意味で)下落よりも上昇が多い場合、AverageGainはAverageLossより相対的に大きくなり、RSが大きくなってRSIも高くなります。
- 直近の期間において、下落が上昇より多い場合、AverageLossが支配的になり、RSは小さくなってRSIは下がります。
上限・下限のある出力(おおむね0〜100)は、AverageGain/AverageLossの比率を、上向きと下向きの動きのバランスの変化を強調しやすいスケールへと変換したものです。
重要なのは、RSIは「変化」をどう定義するか(価格入力とサンプリング頻度)に敏感だという点です。分ごとの終値系列と日次の終値系列では、「計算式」が同じでも、異なるRSIカーブが生成され得ます。
再現できる証拠または例
以下に、小さく自己完結した例のセットアップを示します。特定のプラットフォームに一致させることが目的ではなく、必要な入力と途中の値を示すことが目的です。
前提:
- 終値同士の変化を使う。
- N = 5を選ぶ。
- 参照実装と整合する平滑化手法を使う。
期間0から5までの価格(合計6つの価格)を用意します。tが1から5の各値について:
- Change(t) = Price(t) − Price(t−1) を計算する。
- Changeから、Gain(t)とLoss(t)を max(Change, 0) と max(−Change, 0) として計算する。
- 選んだ平均化手法を使って、直近N期間でAverageGainとAverageLossを計算する。
- RS = AverageGain / AverageLoss を計算する。
- RSI = 100 − (100 / (1 + RS)) を計算する。
独立して結果を再現するには、同じNと平滑化ルールで同じ計算を行ってください。比較しているツールのRSIとあなたのRSIが異なる場合、その不一致の原因はほぼ確実に次のいずれかです:
- Nの値(参照期間の長さ)
- 価格系列の入力(終値か、別のソースか)
- Nデータが利用可能になる前の初期期間の扱い
- 平滑化手法(単純か、再帰的か)
- AverageLossまたはAverageGainが0のときのエッジケース処理
考慮すべき制限と失敗パターン
RSIには明確な数式がありますが、前提条件が安定していない場合、誤解を招く解釈につながることがあります。
制限1:RSIは選んだNと平滑化に依存する
Nを変えると、平均に影響する「直近の履歴のどの部分か」が変わります。平均化/平滑化手法を変えると、古い上昇と新しい上昇、古い下落と新しい下落の重み付けが変わります。その結果、同じ価格から計算した2つのRSI系列でも違いが生じ得ます。
制限2:データの品質と系列定義が重要
価格系列に不連続(たとえば、非取引期間によるギャップ)がある場合、または途中でデータソースを切り替えた場合、計算される上昇と下落が変わります。RSIは期間間の差分に駆動されるため、入力のわずかな変更でもRSIが変わり得ます。
制限3:エッジケースが直感を歪めることがある
AverageLossが極端に小さいと、RSは非常に大きくなり、RSIが上限側へ押し上げられます。これは上向きの動きが継続しているときに起こり得ますが、ウィンドウ内の損失データがほぼゼロになっているときにも起こり得ます。同様に、横ばいが継続すると、実装の詳細によっては上昇と下落の両方がほぼゼロになり得るため、解釈が直感的でなくなることがあります。
制限4:RSIは予測精度を保証しない
RSIは過去の変化から導かれます。RSIの動きと将来の結果の間の歴史的な関係は、将来の挙動について何も保証しません。コスト、執行タイミング、そして市場構造の変化はすべて、「将来の結果」が、指標が過去に示唆していたものと比べてどう見えるかに影響し得ます。
検証と次に確認すべきこと
RSI計算を独立して検証するには、解釈よりも再現性に注目してください:
- 計算で使っている正確な価格入力を確認する(1期間あたりどの価格か)。
- N(参照期間)を確認する。
- AverageGainとAverageLossを計算するために使われた平均化/平滑化手法を確認する。
- フルのウィンドウが存在する前に、最初のRSI値がどう扱われるかを確認する。
- 実装が、AverageLossが0またはAverageGainが0のケースをどう扱うかを確認する。
DOCUMENT END