時系列モメンタム(TSMOM)とは?トレンドフォロー戦略をPythonで検証
「上がっている資産は、しばらく上がり続けやすい」——これは多くの実証研究で確認されてきた、相場の数少ない頑健な性質のひとつです。これを戦略に落とし込んだのが モメンタム投資 で、なかでもシンプルで実装しやすいのが 時系列モメンタム(Time-Series Momentum, TSMOM) です。
この記事では、TSMOMの考え方と、過去リターンの符号でポジションを切り替える基本実装を、Pythonコード付きで解説します。
⚠️ 本記事は教育目的の情報共有です。投資は自己責任で行ってください。
目次
- モメンタムとは
- 時系列モメンタム(TSMOM)の考え方
- Pythonでの基本実装
- クロスセクショナル・モメンタムとの違い
- TSMOMの強みと弱点
- まとめ
1. モメンタムとは
モメンタム(momentum=勢い)とは、「過去のリターンが将来のリターンを部分的に予測する」という現象です。
- 過去6〜12か月で上昇した資産は、その後も上昇しやすい
- 逆に下落した資産は、その後も下落しやすい
物理の慣性に似ているので「勢い」と呼ばれます。バリュー(割安株投資)と並ぶ、最も研究されてきたアノマリーのひとつです。
2. 時系列モメンタム(TSMOM)の考え方
TSMOMは「その資産自身の過去リターンの符号」だけを見ます。
- 過去N か月のリターンが プラス → 買い(ロング)
- 過去N か月のリターンが マイナス → 退避(現金 or ショート)
他の資産と比べる必要がなく、1銘柄でも完結するのが特徴です。ルックバック期間 N は 6〜12か月 がよく使われます。
過去12か月リターン > 0 → ロング(保有)
過去12か月リターン ≤ 0 → 現金(退避)
たったこれだけ。シンプルですが、下落トレンドで自動的に現金退避するため、暴落局面の傷が浅くなりやすいのが効きどころです。
3. Pythonでの基本実装
月次データでTSMOMを組んでみます。
import yfinance as yf
import numpy as np
# 月次終値を取得(SPYで例示)
px = yf.download("SPY", period="20y", interval="1mo", progress=False)["Close"].dropna()
LOOKBACK = 12 # 過去12か月
# 過去12か月リターン
past_return = px.pct_change(LOOKBACK)
# シグナル: 過去12か月がプラスなら1(ロング)、そうでなければ0(現金)
signal = (past_return > 0).astype(int)
# ★重要: シグナルは「今月末」に確定 → 翌月から建玉。
# shift(1) を忘れると未来の情報で取引する先読みバイアスになる
position = signal.shift(1).fillna(0)
# 月次リターン
monthly_return = px.pct_change()
# 戦略リターン = ポジション × その月のリターン
strategy_return = position * monthly_return
# 累積(複利)
cumulative = (1 + strategy_return).cumprod()
buyhold = (1 + monthly_return).cumprod()
print(f"TSMOM 最終: {(cumulative.iloc[-1]-1)*100:+.1f}%")
print(f"バイ&ホールド 最終: {(buyhold.iloc[-1]-1)*100:+.1f}%")
ポイントは shift(1)。「今月末のリターンを見て今月頭から持っていた」ことにすると現実には不可能な取引になり、成績が過大評価されます。詳しくはバックテスト入門記事を参照。
4. クロスセクショナル・モメンタムとの違い
モメンタムには大きく2種類あります。混同しやすいので整理します。
| 時系列モメンタム(TSMOM) | クロスセクショナル・モメンタム | |
|---|---|---|
| 比較対象 | 自分の過去と比べる | 他の銘柄と比べる |
| 判断 | 過去リターンがプラスか | 上位X%に入っているか |
| 必要銘柄数 | 1つでもOK | 多数(ランキングが必要) |
| 退避 | 下落時に現金化しやすい | 常にフル投資になりがち |
TSMOMは「市場全体が下げているとき現金に逃げられる」点が大きな違いです。一方クロスセクショナルは「相対的に強い銘柄を買う」ので、全体が下げても上位銘柄を持ち続ける傾向があります。
5. TSMOMの強みと弱点
強み
- 実装が単純(過去リターンの符号だけ)
- 下落トレンドで自動退避 → 最大ドローダウンを抑えやすい
- 1銘柄・少数銘柄でも機能する
弱点
- レンジ相場(横ばい)に弱い:上下にダマシが多く、売買を繰り返して負ける
- 転換点で遅れる:底や天井をピンポイントでは捉えられない
- 売買回数が増えると取引コストが効いてくる
弱点を補うため、実運用では「複数資産への分散」「レジームフィルタとの併用」などが組み合わされます。
6. まとめ
- モメンタム = 「上がっているものは上がり続けやすい」という頑健な性質
- TSMOM は自分の過去リターンの符号だけでロング/退避を切り替える
- 下落時に現金退避できるので、ドローダウンを抑えやすい
- レンジ相場には弱い。分散やフィルタで補う
- 必ず
shift(1)で先読みを排除し、ウォークフォワード検証で真の期待値を測る
シンプルですが、トレンドフォローの本質が詰まった戦略です。まずは1銘柄で動かして、挙動を体感してみてください。
戦略の評価指標はこちら → シャープレシオと最大ドローダウンとは?
質問や感想は X (@QuantNobu) までどうぞ。
⚠️ 免責:本記事は教育目的の情報共有であり、投資助言ではありません。実際の投資判断はご自身の責任で行ってください。