11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

移動平均線の「遅延」はどこまで改善できるか — Rolling SSA(特異スペクトル分析)による検証

11
Posted at

移動平均線の「遅延」はどこまで改善できるか — Rolling SSA(特異スペクトル分析)による検証

結論から言うと、Rolling SSA は論文の数表を実データでそのまま再現しなかった。
ただし、USDJPY 4時間足では SMA(40) より転換点の遅れを大きく減らし、MSD を 56.8%改善した。
万能なゼロラグフィルターではないが、「遅すぎる移動平均」を改善する実務的な候補ではある。

はじめに:なぜ移動平均線は「遅れる」のか

テクニカル分析において、SMA(単純移動平均線)はもっとも基本的なトレンドフィルターとして広く使われている。しかし、SMAには構造的に避けられない根本的な欠陥がある。フェーズラグ(位相遅延) だ。

SMAの理論的な群遅延は $(n-1)/2$ バーである。つまりSMA(40)では約19.5バー分の遅延が生じる。これは単なる「不便さ」ではない。トレンド転換を検知した時点で、すでに新しいトレンドが成熟しており、エントリーのタイミングとしては遅すぎるケースが頻発する。特にV字底やスパイク的な反転局面では、SMAはその構造変化を完全に「丸めて」しまう。論文ではこの現象をPhase Smearing(位相のにじみ) と呼んでいる。

本記事では、Sofien Kaabar氏の論文 "Phase-Preserving Denoising in Financial Time Series" の内容と、USDJPY 4時間足(約25,800本)での独自検証結果をもとに、Rolling SSA(ローリング特異スペクトル分析) がこの遅延問題をどの程度改善できるかを検証する。

何が再現できて、何が再現できなかったか

先に結論を示す。論文は合成データ(トレンド+サイクル+ガウスノイズ)で評価しており、実データとの乖離がある。

再現できた主張:

  • SSAはSMAよりも位相遅延が大幅に小さい(MSD 56.8%改善)。方向性は完全に一致
  • SSAはSMAよりも価格相関・Hindsight相関がわずかに高い
  • SSAの残差自己相関はSMAよりも低い

再現できなかった主張:

  • 論文ではSSAの残差ACF(1)を0.100と報告しているが、実データでは0.903だった。論文の合成データは「トレンド+サイクル+ガウスノイズ」で構成されており、SSAの分解対象として理想的な構造を持っている。実際の金融時系列はそれよりはるかに複雑な依存構造を持つため、どちらのフィルターも残差をホワイトノイズにすることはできなかった

また、論文にはいくつかの未指定パラメータがある(スイング検出の $k$ 値、Whiteness指標の正確な定義、合成データの生成パラメータなど)。このため、論文のTable 1の数値を完全に再現することは難しい。

この検証記事の価値は、原論文の断定的な結論を実データで相対化した点にある。以下、Rolling SSAの仕組みと検証の詳細を順に解説する。

Rolling SSAとは何か

SSA(Singular Spectrum Analysis)の基本構造

SSAは時系列を「トレンド+周期成分+ノイズ」に分解するノンパラメトリックな手法である。フーリエ変換が定常性を前提とするのに対し、SSAはそのような仮定を必要としない。

アルゴリズムは3ステップで構成される。

ステップ1:埋め込み(Embedding)

直近のウィンドウ $W$ 個のデータを、埋め込み次元 $L$(通常 $W/2$)を使ってトラジェクトリ行列 $X$ に変換する。

$$
X =
\begin{bmatrix}
y_{t-W+1} & y_{t-W+2} & \cdots & y_{t-L+1} \\
y_{t-W+2} & y_{t-W+3} & \cdots & y_{t-L+2} \\
\vdots & \vdots & \ddots & \vdots \\
y_{t-K+1} & y_{t-K+2} & \cdots & y_t
\end{bmatrix}
$$

ここで $K = W - L + 1$ である。この行列は、局所的な時系列の位相空間表現に相当する。

ステップ2:特異値分解(SVD)

トラジェクトリ行列 $X$ に対してSVDを実行し、主成分を抽出する。

$$
X = \sum_{i=1}^{L} \sigma_i \mathbf{u}_i \mathbf{v}_i^T
$$

金融データでは、第1特異値 $\sigma_1$ が市場の構造的トレンド(論文では"Market Energy"と表現)を捕捉する。

ステップ3:再構成

上位 $r$ 個の成分(トレンド抽出の場合は $r=1$、つまり最も支配的なパターンだけを使う)のみで行列を再構成し、最新の1点だけを出力する。これにより、将来データを一切使わないcausal(因果的)なフィルターが実現する。

なぜSMAより遅延が小さいのか

SMAはウィンドウ内のすべての観測値を等しく重み付けする。つまり、直近の急激な構造変化も、過去の古いデータと同じ重みで平均化されてしまう。

一方、SSAはSVDによってデータの構造(固有ベクトル)を適応的に学習する。ウィンドウ内のデータに強い方向転換が含まれていれば、第1主成分がそれを反映し、フィルター出力も素早く追従する。等しい重み付けではなく、データ駆動型の重み付けが行われるため、構造変化に対する応答が速い。

直感的に言えば、SMAが「過去40本の平均値」を機械的に計算するのに対し、SSAは「過去40本の中で最も支配的なパターン」を抽出して、それを基に最新値を推定する。

検証:USDJPY 4時間足での実証

論文の主張を鵜呑みにするのではなく、USDJPY240(4時間足)の実データ約25,800本(2010年〜2026年)で独自に検証を行った。パラメータは論文に準拠し、$W=40$、$L=20$、$r=1$ とした。

評価指標:Mean Swing Delay(MSD)

論文が提案する核心的な指標がMSD(平均スイング遅延)である。これは、原系列の局所的なピーク・ボトムに対して、フィルター出力の対応するピーク・ボトムが何バー遅れて出現するかを測定する。

MSD =
\frac{1}{|S_{raw}|}
\sum_{s_i \in S_{raw}}
\min \{ s'_j - s_i \mid s'_j \in S_{filter},\ s'_j \ge s_i \}

MSDが小さいほど、フィルターが転換点を速く検知していることを意味する。MSE(平均二乗誤差)では捉えられない「タイミングの精度」を直接定量化する指標だ。

補足:理論遅延とMSDの違い。 冒頭で述べたSMA(40)の理論的な群遅延は約19.5バーだが、後述する検証ではSMAのMSDは46.4バーとなっている。これは定義が異なるためである。群遅延は線形フィルタの周波数応答から導かれる一様な位相ずれを指し、MSDは実データ上で局所極値(ピーク・ボトム)の出現タイミングのずれを測定する。実際の価格系列ではノイズや非線形な構造変化があるため、MSDは理論群遅延より大きくなるのが一般的である。

SSA vs SMA:直近500本の比較

以下の図は、USDJPY 4時間足の直近約500本(2025年11月〜2026年3月)における、原系列・Rolling SSA・SMAの比較である。

USDJPY240 latest 500 bars

図1:Raw price(青)、Rolling SSA(橙)、SMA(40)(緑)の比較。 SMAは価格の転換に対して明らかに遅れて追従している。特に2026年1月下旬〜2月上旬の急落局面と、その後のV字反転において、SMAはピークもボトムも大きく遅れ、振幅も抑制されている。一方、SSAはピーク・ボトムの位置により素早く反応し、価格の構造変化をより忠実に追跡している。ただし、SSAもノイズを拾いやすく、原系列のスパイク的な動きに対してオーバーシュートしている箇所がある点には注意が必要だ。

主要結果

指標 Rolling SSA SMA(40) 評価
MSD(k=5) 20.1 バー 46.4 バー SSAが56.8%改善
価格相関 0.99963 0.99905 SSAがわずかに優位
Hindsight相関(後から見た理想トレンドにどれだけ近いか) 0.99969 0.99945 SSAがわずかに優位
残差ACF(1)(取り切れなかったパターンの残り具合) 0.903 0.960 SMAよりは低いが、白色雑音には程遠い
TV比(どれくらい値動きの細かさを残しているか) 0.400 0.180 SSAはより多くの価格変動を保持。SMAは振幅を抑制することで滑らかになるが、その代償として構造情報を失っている

最も重要な結果はMSDの差である。SMAが平均46.4バーの遅延を持つのに対し、SSAは20.1バーと半分以下に削減している。4時間足の46バーは約7.7日に相当するので、この差はトレード判断において無視できない。

MSD感度分析(スイング検出パラメータ $k$ による変化)

スイング幅 $k$ SSA MSD SMA MSD 改善率
2 18.5 40.4 54.2%
5 20.1 46.4 56.8%
10 20.2 53.8 62.4%
20 17.5 62.9 72.2%

rolling_ssa_usdjpy_msd_sensitivity.png

図2:スイング検出パラメータ $k$ に対するMSDの感度。 SSA(青)のMSDは $k$ の値によらず18〜21バーの狭い帯域に収まっている。一方、SMA(橙)は $k$ が大きくなるほどMSDが急増し、$k=20$ では63バーに達する。これは、SMAが大きなスイング(=大局的な転換点)ほど検知が遅れることを意味する。SSAにはこの傾向がほぼ見られず、スイングの規模に依存しない安定した応答速度を持っている。

残差の自己相関構造

rolling_ssa_usdjpy_residual_acf.png

図3:残差(原系列 − フィルター出力)の自己相関関数(ACF)。 SSA残差(青)はラグ10付近でゼロを横切り、その後負の領域に入る。これはSSAが中周波成分をある程度抽出できていることを示す。一方、SMA残差(橙)はラグ30でもまだ正の自己相関が残っており、フィルターが取り切れなかった構造(信号漏洩)が大量に残っている。ただし、SSAもラグ1で0.903と高いため、どちらのフィルターも実データの残差をホワイトノイズ化するには至っていない。論文の合成データ上でのSSA残差ACF(1)=0.100との乖離は大きく、これが本検証で「再現できなかった」主要な点である。

期間別安定性

ここではボラティリティやトレンド状態による分類ではなく、単純な期間分割で安定性を確認した。

期間 SSA MSD SMA MSD
2010-2013 20.8 46.2
2014-2017 19.8 49.4
2018-2021 19.4 40.0
2022-2026 20.1 49.5

SSAのMSDは全期間を通じて19〜21バーの狭い範囲に収まっており、少なくともこの期間分割の範囲では安定した性能を示している。

Rolling SSAで何が期待できるか(と、何が期待できないか)

向いている用途

トレンドフォロー戦略の精度向上: SMAクロスオーバーなどの古典的なトレンドフォロー手法において、SMAをSSAに置き換えることで、エントリー/イグジットのタイミングが数バー〜十数バー改善される可能性がある。MSDの56%削減は、スリッページの低減に直結する。

機械学習の前処理(特徴量生成): 論文でも指摘されているように、LSTMやGradient Boosted Treeなどに入力する特徴量として、SMAよりもSSAのほうが適している可能性がある。SMAは位相がずれた「古い」データをモデルに供給してしまうが、SSAは構造変化のタイミングを保存したままノイズを除去するため、モデルが学習すべきパターンがより正確に保持される。

状態推定・トレンド検知の入力: ボラティリティレジームの変化やトレンド転換の検知モデルの入力にSSAを使うことで、検知の遅れを構造的に削減できる。

そのままでは不足な用途

約定改善・収益性保証: MSDの改善はフィルタの応答速度の改善であり、それが直接利益に結びつく保証はない。戦略全体のシミュレーションと検証が別途必要。

完全なホワイトノイズ化: 図3で示した通り、実データではSSAの残差ACF(1)が0.903と高く、残差に大量の構造が残っている。SSAで抽出した「トレンド」以外の部分をランダムノイズとみなすのは妥当ではない。

ゼロラグフィルタの代替: Rolling SSAは遅延を大幅に削減するが、ゼロラグではない。MSD 20バー(4時間足で約3.3日)の遅延は依然として存在する。

実装上の注意点

Rolling SSAには計算コストの問題がある。各バーで埋め込み行列に対してfull SVDを実行するため、素朴な実装では $O(n \cdot W^3)$ に近い計算量が必要になる(埋め込み行列のサイズが $K \times L$ で、$K, L$ ともに $W$ に比例するため)。$W=40$ 程度であればリアルタイム処理は十分可能だが、$W$ を大きくする場合やティックデータに適用する場合は、増分SVDやランダム化SVDなどの近似手法の検討が必要になるだろう。

また、パラメータ選択($W$, $L$, $r$)がフィルター特性に影響するため、対象とする時間軸やアセットクラスに応じたキャリブレーションが求められる。ただし、今回の検証では論文推奨の $L = W/2$, $r = 1$ が実データでも安定した結果を示しており、まずはこの設定から始めるのが合理的と考えている。

まとめ

Rolling SSAは、SMAの根本的な欠陥である位相遅延を大幅に改善するノンパラメトリックなデノイジング手法である。USDJPY 4時間足での検証では、MSDを56.8%削減し、この改善は全期間で安定して観測された。

ただし、SSAが万能というわけではない。実データでは残差のホワイトノイズ化は達成できず、論文の合成データでの結果がそのまま実市場に転移するわけではない。あくまで「SMAよりも位相保存性が高いフィルター」として、トレンドフォロー戦略やML前処理のアップグレードに活用するのが現実的な位置づけだろう。


参考文献

11
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?