FXテクニカル分析におけるSMA(単純移動平均)の高度な考慮点
定義と「高度な」視点
SMAはSimple Moving Average(単純移動平均)の略です。これは、選択した入力系列(最も一般的には価格)の直近* N *個の観測値の算術平均を取って計算される線です。ここで「単純」とは、見ている期間(ルックバックウィンドウ)内の各観測値に同じ重みが付くことを意味します。
高度な考慮点とは、SMAが数学的に複雑だということではありません。むしろ、SMAの解釈は、何を入力として与えるか、どのように時間をサンプリングするか、そしてSMAを価格や他のインジケーターと比較するときにどのような前提を置くかに依存する、という点です。言い換えると、SMAの仕組み(メカニクス)は安定していますが、実務上の結果は実装の細部と市場の文脈に敏感です。
SMAは次のように書けます:
- 時刻tにおけるSMA = (x[t] + x[t−1] + … + x[t−(N−1)]) / N ここでxは入力系列(例:終値)です。出力は最も早い時点では、少なくともN個の観測値が揃うまで未定義です。
実際にSMAはどう動くか:入力、ウィンドウ、依存関係
1) 入力系列は定義の一部
よくある誤りは、「価格のSMA」は一意だと考えることです。実際には、SMAは選択した系列に依存します:
- 終値ベースのSMAは、各バーの終値を使います。
- 典型価格やその他の合成値は、異なる入力を平均します。
- 一部のプラットフォームでは、バーの作り方が少し異なるデータフィードから値を計算することがあります。
高度なポイント: 他者にSMAを説明するときは、必ず入力系列(例:終値)と、バーを作るために使った時間足(タイムフレーム)を明示してください。
2) ウィンドウ長(N)が平滑化と反応性を変える
ルックバックの長さNは、主要な設計パラメータです。小さいNほど直近の変化に素早く反応し、大きいNほどより滑らかになりますが反応性が遅れます。これにより重要なトレードオフが生まれます:
- 小さいNでは、SMAはノイズにより密接に追随できます。
- 大きいNでは、SMAは転換点の後れを生みやすくなります。
これはパフォーマンス保証ではなく、新しい観測値に対する線の感度が、平均化ウィンドウによって決定論的に変わるという効果です。
3) 時間の整合(アラインメント)と「バーのタイミング」
SMAの値は、典型的な実装ではバーのクローズ時に計算されます(直近N個のクローズ済み観測値が必要だからです)。SMAを、例えば価格が一時的にローソク足の途中でラインを横切るといった、インターバーで起きるシグナルや出来事と比較すると、誤解を招く解釈になり得ます。
高度な考慮点: 比較が次のどちらで行われているかを明確にしてください:
- バークローズ値のみ、または
- インターバー(別のデータストリームが必要で、「クロス」の意味が変わります)。
4) 計算方法と数値の詳細
基本の式は単純ですが、実装のされ方によっては影響が出ることがあります:
- ローリングサムの更新は、毎回のウィンドウを作り直して再計算するより計算コストを下げられます。
- 丸めや精度設定によって、表示される小数が変わります。
これらの違いは、プラットフォーム間で厳密な値を比較したり、独立に再現したりすると、通常は見えてきます。
5) 欠損データ、ギャップ、変則的なバー
基となるデータセットに欠けたローソク足、壊れたタイムスタンプ、または不規則なギャップがある場合、有効なN個の観測値の集合が、あなたの期待と一致しない可能性があります。SMAの式が変わらなくても、入力ウィンドウの構成が異なり得ます。
重大な失敗パターン: 欠けたバーを含むデータセットで計算されたSMAは、連続した系列で計算されたSMAと比べてシフトすることがあります。
予測なしで検証できる例と「エビデンス」
議論を自己完結的に保つため、値が正確に分かっている仮想の終値系列を考えてみましょう。
N = 3 とし、直近の終値が次のとします:
- x[t] = 1.2000
- x[t−1] = 1.1980
- x[t−2] = 1.1960
すると:
- SMA[t] = (1.2000 + 1.1980 + 1.1960) / 3
- SMA[t] = 1.1980
これは定義を直接検証します。「高度な」部分は、チェックを拡張することです:
- 更新されたウィンドウを使って次の時刻t+1のSMAを再計算し、シフトを確認します。
- 別のN(例:N=5)でも繰り返し、遅れと平滑化の増加を観察します。
- N個の観測値が利用可能なときだけSMAを計算していることを確認します。
タイムフレーム、または入力系列(終値と別の系列)を変えると、平均化の式が同じでもSMAの線が変わることを検証できます。
制限とリスク:SMAが保証できないこと
1) 過去の平均化は将来の挙動を確立しない
SMAは、過去の観測値に対する平均化フィルターです。過去のトレンドを説明し、表示される線のボラティリティを下げることはできても、過去の統計的な関係が将来の結果を保証するわけではありません。これは、SMAがある期間「うまく機能している」ように見える場合でも同様です。
2) レジーム変化と構造的ブレイク
市場は、価格ダイナミクスに影響する形で変化し得ます:ボラティリティは上がったり下がったりし、トレンドの持続性も変わります。SMAの反応性はNによって決まるため、あるレジームに合う線が、別のレジームでは遅すぎる(またはノイズが多すぎる)可能性があります。
この制限を実務的に考える方法はこうです:SMAは「レジーム」を検出しません。直近のN個の観測値を反映するだけです。
3) コスト、執行タイミング、解釈上のギャップ
誰かがSMAを意思決定プロセスの一部として使っていたとしても(ここではトレードのセットアップは議論しません)、現実の評価では、執行タイミング、取引コスト、そしてバーのクローズ計算と実際に行動する時点の違いを考慮する必要があります。これらの要因は、単純化された理想的なバックテストで観察できる関係を崩してしまうことがあります。
4) 例外ケース:フラットなウィンドウと境界での挙動
SMAは境界付近で意外な動きをすることがあります:
- チャートの開始時点では、N本のバーが揃うまでSMAは存在しません。
- 価格が一定、またはほぼ一定なら、SMAはフラットになります。小さなデータ差でもわずかな曲がりが生じ得ます。
- ギャップがあるデータセットでは、有効な平均化ウィンドウが異なり得ます。
5) プラットフォーム固有の実装差
異なるソフトウェアはバーを異なる方法で構築することがあります(特にカスタムフィードの場合)。これにより入力系列が変わります。ツール間でSMAの値を独立に検証しようとすると、次のような要因による不一致が見えるかもしれません:
- 異なるローソク足構築ルール、
- 欠損データの扱いの違い、
- 異なる丸め。
インジケーターの数式自体は同じままでも、再現性を得るには実装の細部を一致させる必要があります。
検証と、次に独立して探るべき質問
SMAを正確に説明し、自分で事実を検証するには、次のチェックに集中してください:
- SMAの正確な式を書き下し、Nを特定する。
- 入力系列(例:終値)と、各バーを定義するタイムフレームを明示する。
- 知っている値から、いくつかのSMAポイントを手計算で再計算して理解を確認する。
- 境界での挙動を確認する:N本のバーが存在してから比較を開始していることを確実にする。
- プラットフォーム間で結果を比較する場合、データフィード、丸め、ローソク足構築に関する差分を記録する。
DOCUMENT END