FXキャリートレード(円クロス)のバックテスト
FX Carry Trade (JPY Crosses)
円クロスでFXキャリートレードをバックテストした。1,200通りの中央値 Sharpe は +0.64。p-value は 0.12。Max DD は -32.9%。期間は 2020-08-18〜2026-05-22。最良 Sharpe +1.36 は代表値ではない。
判定は marginal。どこかのパラメータでは p-value が 0.10 を下回るが、中央値自体は promising の基準(Sharpe > 0.5 かつ p-value < 0.05)に届いていない。主因は no_edge。レジーム・取引回数・コストには分類されず、中央値が採用ラインに届いていない。
何を検証したか
FXキャリーは、金利の高い通貨を買い、低い通貨を売る取引です。このレコードは円が絡むクロスに限っています。中央値の Sharpe が 0.5 を超えても、中央値の p-value が 0.05 を下回らなければ promising にはしません。金利差は急に消えるので、Max DD と一緒に読んでください。
成績の中央値
仮説
原文は英語。
FX carry trade: borrow low-yield JPY, invest in higher-yield currencies. Tests carry, Bollinger, MA crossover, and combined strategies on JPY pairs. Includes BOJ intervention risk filter (USD/JPY threshold → force FLAT).
採用しなかった理由
Across 1200 grid combinations, median Sharpe=0.63, best=1.36. Primary failure mode: no_edge.
検証ファクト (4)
検証ラン (30)
| run | params | sharpe | UP | FLAT | DOWN |
|---|---|---|---|---|---|
leverage=1, strategy=carry, pairs=USD, cost_bps=1 r-fx-carry-jpy-crosses-0000 | pairs: "USD" cost_bps: 1 leverage: 1 | +1.11 | +3.36 | — | -2.06 |
leverage=1, strategy=carry, pairs=USD, cost_bps=3 r-fx-carry-jpy-crosses-0001 | pairs: "USD" cost_bps: 3 leverage: 1 | +1.11 | +3.36 | — | -2.06 |
leverage=1, strategy=carry, pairs=USD, cost_bps=5 r-fx-carry-jpy-crosses-0002 | pairs: "USD" cost_bps: 5 leverage: 1 | +1.11 | +3.36 | — | -2.06 |
leverage=1, strategy=carry, pairs=USD, intervention_threshold=150, cost_bps=1 r-fx-carry-jpy-crosses-0003 | pairs: "USD" cost_bps: 1 leverage: 1 | +1.26 | +3.44 | — | -1.51 |
leverage=1, strategy=carry, pairs=USD, intervention_threshold=160, cost_bps=1 r-fx-carry-jpy-crosses-0012 | pairs: "USD" cost_bps: 1 leverage: 1 | +1.18 | +3.44 | — | -1.98 |
leverage=1, strategy=carry, pairs=USD+GBP, cost_bps=1 r-fx-carry-jpy-crosses-0045 | pairs: "USD+GBP" cost_bps: 1 leverage: 1 | +1.24 | +3.29 | — | -1.72 |
leverage=1, strategy=bollinger, pairs=USD, cost_bps=1 r-fx-carry-jpy-crosses-0060 | pairs: "USD" cost_bps: 1 leverage: 1 | -0.19 | -0.19 | — | -0.18 |
leverage=1, strategy=bollinger, pairs=USD, intervention_threshold=150, cost_bps=5 r-fx-carry-jpy-crosses-0065 | pairs: "USD" cost_bps: 5 leverage: 1 | -0.45 | -0.67 | — | -0.16 |
leverage=1, strategy=ma_cross, pairs=USD, cost_bps=1 r-fx-carry-jpy-crosses-0120 | pairs: "USD" cost_bps: 1 leverage: 1 | +0.71 | +1.55 | — | -0.53 |
leverage=1, strategy=ma_cross, pairs=USD, intervention_threshold=150, cost_bps=5 r-fx-carry-jpy-crosses-0125 | pairs: "USD" cost_bps: 5 leverage: 1 | +0.64 | +1.41 | — | -0.39 |
leverage=1, strategy=combined, pairs=USD, intervention_threshold=150, cost_bps=3 r-fx-carry-jpy-crosses-0184 | pairs: "USD" cost_bps: 3 leverage: 1 | +0.56 | +2.95 | — | -0.89 |
leverage=2, strategy=carry, pairs=USD, intervention_threshold=150, cost_bps=1 r-fx-carry-jpy-crosses-0243 | pairs: "USD" cost_bps: 1 leverage: 2 | +1.26 | +3.44 | — | -1.51 |
leverage=2, strategy=bollinger, pairs=USD, cost_bps=5 r-fx-carry-jpy-crosses-0302 | pairs: "USD" cost_bps: 5 leverage: 2 | -0.23 | -0.24 | — | -0.22 |
leverage=2, strategy=ma_cross, pairs=USD, cost_bps=3 r-fx-carry-jpy-crosses-0361 | pairs: "USD" cost_bps: 3 leverage: 2 | +0.68 | +1.53 | — | -0.56 |
leverage=2, strategy=combined, pairs=USD, cost_bps=1 r-fx-carry-jpy-crosses-0420 | pairs: "USD" cost_bps: 1 leverage: 2 | +0.62 | +3.34 | — | -1.21 |
leverage=2, strategy=combined, pairs=USD+GBP, intervention_threshold=160, cost_bps=5 r-fx-carry-jpy-crosses-0479 | pairs: "USD+GBP" cost_bps: 5 leverage: 2 | +1.10 | +3.77 | — | -0.87 |
leverage=3, strategy=carry, pairs=USD+GBP, intervention_threshold=150, cost_bps=1 r-fx-carry-jpy-crosses-0528 | pairs: "USD+GBP" cost_bps: 1 leverage: 3 | +1.36 | +3.36 | — | -1.43 |
leverage=3, strategy=carry, pairs=USD+GBP, intervention_threshold=160, cost_bps=5 r-fx-carry-jpy-crosses-0539 | pairs: "USD+GBP" cost_bps: 5 leverage: 3 | +1.29 | +3.34 | — | -1.68 |
leverage=3, strategy=bollinger, pairs=USD, intervention_threshold=150, cost_bps=5 r-fx-carry-jpy-crosses-0545 | pairs: "USD" cost_bps: 5 leverage: 3 | -0.45 | -0.67 | — | -0.16 |
leverage=3, strategy=bollinger, pairs=USD+GBP, intervention_threshold=160, cost_bps=5 r-fx-carry-jpy-crosses-0599 | pairs: "USD+GBP" cost_bps: 5 leverage: 3 | +0.32 | +0.39 | — | +0.23 |
leverage=3, strategy=ma_cross, pairs=USD+GBP, intervention_threshold=160, cost_bps=3 r-fx-carry-jpy-crosses-0658 | pairs: "USD+GBP" cost_bps: 3 leverage: 3 | +0.40 | +1.07 | — | -0.71 |
leverage=3, strategy=combined, pairs=USD+GBP, intervention_threshold=160, cost_bps=1 r-fx-carry-jpy-crosses-0717 | pairs: "USD+GBP" cost_bps: 1 leverage: 3 | +1.14 | +3.81 | — | -0.85 |
leverage=5, strategy=carry, pairs=USD+GBP, intervention_threshold=158, cost_bps=5 r-fx-carry-jpy-crosses-0776 | pairs: "USD+GBP" cost_bps: 5 leverage: 5 | +1.34 | +3.37 | — | -1.60 |
leverage=5, strategy=bollinger, pairs=USD+GBP, intervention_threshold=158, cost_bps=3 r-fx-carry-jpy-crosses-0835 | pairs: "USD+GBP" cost_bps: 3 leverage: 5 | +0.27 | +0.35 | — | +0.15 |
leverage=5, strategy=ma_cross, pairs=USD+GBP, intervention_threshold=158, cost_bps=1 r-fx-carry-jpy-crosses-0894 | pairs: "USD+GBP" cost_bps: 1 leverage: 5 | +0.50 | +1.15 | — | -0.56 |
leverage=5, strategy=combined, pairs=USD+GBP, intervention_threshold=155, cost_bps=5 r-fx-carry-jpy-crosses-0953 | pairs: "USD+GBP" cost_bps: 5 leverage: 5 | +1.10 | +3.67 | — | -0.77 |
leverage=10, strategy=carry, pairs=USD, cost_bps=1 r-fx-carry-jpy-crosses-0960 | pairs: "USD" cost_bps: 1 leverage: 10 | +1.11 | +3.36 | — | -2.06 |
leverage=10, strategy=carry, pairs=USD+GBP, intervention_threshold=155, cost_bps=5 r-fx-carry-jpy-crosses-1013 | pairs: "USD+GBP" cost_bps: 5 leverage: 10 | +1.34 | +3.38 | — | -1.52 |
leverage=10, strategy=bollinger, pairs=USD+GBP, intervention_threshold=155, cost_bps=3 r-fx-carry-jpy-crosses-1072 | pairs: "USD+GBP" cost_bps: 3 leverage: 10 | +0.33 | +0.38 | — | +0.26 |
leverage=10, strategy=ma_cross, pairs=USD+GBP, intervention_threshold=155, cost_bps=1 r-fx-carry-jpy-crosses-1131 | pairs: "USD+GBP" cost_bps: 1 leverage: 10 | +0.49 | +1.14 | — | -0.55 |