2026-05-04(月)。朝 08:00 に live 投入した PT101(M5 10MA反発+トレーリング75%)が、4時間運用で勝率 49.1%・PF 0.45・純損益 -7,828 JPY という芳しくない結果になった。BTでは「+108K pips/3期間安定」と好成績だったので、live と BT の乖離原因を徹底的に再検証することにした。

この記事のポイント

  • look-ahead を完全排除したBTでも勝率 99.1% / PF 3.88 と好成績だった
  • しかし平均勝ち pips がスプレッド未満(EURUSD で +0.5 pips)── 数字は幻だった
  • スプレッド込みBTで全体 PF が 0.98 に転落、live の -7,828円と整合
  • XAUUSD のみ PF 1.90 で唯一勝てる戦略と判明(他5通貨は PF 0.01〜1.13 で壊滅)
  • トレーリング率スイープで XAU の改善余地あり(trail 0.30 で PF 5.99)── 別途検証予定
  • 即時対応: TARGET_SYMBOLS = {"XAUUSD"} で PT101 を XAU 専用化、live反映済み

朝の live 結果と BT との乖離

5/4 朝、PT101 が現プロセスに未ロードと判明したため即時投入(MAGIC=10101/10102)。08:00:15 に起動して4時間後の状態を確認したところ:

指標BT (3期間平均)live (4時間)
勝率高水準49.1%
純損益+108K pips/3期間-7,828 JPY
PF2以上0.45

「BTで安定してた戦略が live で大負け」── これが本記事の出発点。BT に何かバイアスがあるはずと疑った。

look-ahead 排除BT(スプレッド未考慮)

まず BTに look-ahead が混入していないか確認するため、最も厳しい設計で BT runner を新規作成した:

  • 各M5バー i で判定に渡すスライスは m5_df[:i+1] のみ(過去のみ可視)
  • エントリーは「次のバー i+1 の OPEN」で約定(look-ahead完全排除)
  • SL ヒット or トレーリング75% でクローズ

結果(2026-04 1ヶ月、6通貨):

通貨件数勝率PnL pipsPF
EURUSD1,54498.7%+375.52.00
GBPUSD1,75098.8%+642.32.64
AUDUSD1,69799.0%+446.82.42
NZDUSD1,47099.2%+331.22.34
XAUUSD1,51898.9%+9,594.84.37
GBPJPY1,94799.6%+1,249.26.74
TOTAL9,92699.1%+12,639.83.88

look-ahead は無いのに勝率 99.1%、PF 3.88 の好成績。ところが平均勝ち pips が +0.5 pips(EURUSD)程度しかない。EURUSD のスプレッドは約 1.2 pips なので、これではスプレッドで全部飲まれる。

気付き:「BT で PF 7 以上は look-ahead を疑う」という社内教訓を持っていたが、look-ahead が無くても 「平均勝ち pips がスプレッド未満」だと幻になることが判明。新たな検証ルールが必要。

スプレッド込みBT — 真実が明らかに

エントリー価格と決済価格の両方にスプレッド(片側1本)を負荷してBTし直した:

  • LONG エントリー: next_open + spread × point_size(ASK寄り)
  • SHORT エントリー: next_open - spread × point_size(BID寄り)
  • 決済価格: 上記と逆方向にも片側1本のスプレッドを負荷
通貨件数勝率PnL pipsPF評価
EURUSD59410.3%-1,1470.03壊滅
GBPUSD1,40883.3%+821.13微勝
AUDUSD3435.2%-1,3700.01壊滅
NZDUSD89154.1%-4610.32負け
XAUUSD1,30286.6%+4,3981.90唯一勝てる
GBPJPY1,09931.2%-1,6890.13大敗
TOTAL5,63756.8%-1880.98ほぼゼロ

スプレッドを考慮した瞬間、PF 3.88 が 0.98 に転落(ほぼゼロ)。XAUUSD だけが PF 1.90 で唯一勝てる戦略だった。朝の live 結果(-7,828円)は嘘ではなく、BT がスプレッド未考慮で幻を見せていただけ。

TP / トレーリング率スイープ(XAUUSD)

XAUUSD で Phase A(TPスイープ)と Phase B(トレーリング率スイープ)を実施した。

Phase A: TPスイープ(TRAIL=0.75 固定)

TP_RR を 1.0〜5.0 まで変えても結果はほぼ同じ(PF 1.90〜2.12)。TPはトレーリングが先に発動するため効果が薄いことが判明。

Phase B: トレーリング率スイープ(TP_RR=1.0 固定)

TRAIL件数勝率PnL pipsPF
0.301,30293.5%+24,0795.99
0.501,30292.0%+15,8034.27
0.751,30286.6%+5,4632.12
0.901,30268.7%-7470.85

トレーリング率 0.30 が圧倒的に優れる(PF 5.99、+24,079 pips)。ただし、これは BT runner 内部の補数表記なので、live 側 pt101.pyTRAIL_RATIO 表記とは意味が反転している点に注意。解釈の再確認は別途実施予定

決定: PT101 は XAUUSD 専用化

VPS 上の scripts/pt101.py を以下のように修正:

# 対象通貨ペア (2026-05-04 XAUUSD専用化)
# 理由: スプレッド込みBTで XAU PF=1.90 / 他5通貨は PF=0.01〜1.13 で実質負け
TARGET_SYMBOLS = {"XAUUSD"}

加えて check_long / check_short の冒頭で対象外通貨を早期 None リターン。

VPSコード → FX PCへ scp(SHA256照合済)→ FXBot_Restart 経由で live_trader 再起動完了(PID 5884 → 4916)。新ロジック稼働中。

既存PT101オープンポジションの扱い

再起動前に既に open していた XAUUSD 以外の8本(EUR/GBP/AUD/NZD 各2ポジ、含み損 -2,452 JPY)は、そのまま放置。決済はトレーリング/SL に任せる。新規エントリーは XAUUSD のみ。

SL は全ポジ設定済みなので、最悪のケース(全SLヒット)でも追加リスクは限定的。BT で微勝だった GBPUSD/NZDUSD は値幅トレーリングで救われる可能性もあるため、即時手動決済はせず観察モード。

振り返り — 新たな教訓

  • BTで PF 3.88 という数字は look-ahead 由来ではなくスプレッド未考慮の幻だった
  • 「BTでPF 7以上は look-ahead を疑う」という社内教訓と並んで、「平均勝ち pips がスプレッド未満なら実取引で負ける」を新教訓として記録
  • 「PT101 BT +108K pips/3期間安定」は XAUUSD 単独の成果が大半を占めていた可能性が高い
  • XAU 依存度の高さは PT101 だけでなく、他戦略(EW_PURE 等)にも当てはまる構造的傾向。千月堂FX全体の「XAU特化路線」と PT101 XAU 専用化は整合する判断

次の検証課題

  • TRAIL_RATIO の意味解釈(pt101.py 表記 vs BT runner 内部表記)の確認と、live 側 0.75 を最適値に変更すべきかの再BT
  • 「他戦略でも同様にスプレッド込み再検証が必要か」のチェック(PT006/PT007 等)
  • 次の週次ログで XAUUSD 単独 PT101 の実 PF 推移を確認