Skip to content

xxvw/multipair-forex-scope-smc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FX MultiStyle Scope SMC

LightGBM + Walk-Forward検証によるマルチスタイル・マルチペアFX自動売買システム。 3段階パイプライン(ベースモデル → バックテスト → メタモデル)でシグナル品質を段階的にフィルタリング。

Architecture

┌─────────────────────────────────────────────────────┐
│                   Pipeline                          │
│                                                     │
│  Stage 1: Walk-Forward学習                          │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐             │
│  │  Scalp   │  │Daytrading│ │  Swing  │  × 4 pairs  │
│  │ (M1-M5) │  │(M5-H1)  │  │(H1-D1) │             │
│  └────┬─────┘  └────┬─────┘  └────┬────┘             │
│       └──────────────┼────────────┘                  │
│                      ▼                               │
│  Stage 2: バックテスト + トレードコンテキスト収集     │
│                      ▼                               │
│  Stage 3: メタモデル(トレード品質フィルター)        │
└──────────────────────┬──────────────────────────────┘
                       ▼
            ┌──────────────────┐
            │  MetaStrategy    │
            │  ATRベース動的    │
            │  スタイル選択     │
            └────────┬─────────┘
                     ▼
        ┌────────────────────────┐
        │  MT5 EA (Socket通信)   │
        │  or Rust Backtest      │
        └────────────────────────┘

Backtest Results

Baseline (CM適用前) — 2026-03-09

初期残高 $1,000 / データ: Dukascopy M1 直近2年間 / 4ペア × 3スタイル

Walk-Forward Validation (IS vs OOS)

区間 Trades Win Rate Sharpe Profit Factor Max DD Return
IS (In-Sample) 2,418 50.83% 4.59 1.60 7.95% +386.6%
OOS (Out-of-Sample) 1,091 40.05% 0.49 1.05 39.35% +14.9%

IS Sharpe 4.59 は過学習の兆候。IS/OOS Sharpe比 = 9.4x。

OOS ペア別内訳

Pair Trades Win Rate P&L PF Sharpe Max DD
EURUSD 282 39.0% +$101.27 1.14 1.00 16.4%
GBPUSD 360 34.7% -$161.92 0.87 -1.18 28.6%
USDJPY 216 48.1% +$266.09 1.51 2.91 10.3%
AUDUSD 233 42.1% -$56.56 0.86 -1.17 12.4%

Full Backtest (全期間, $10,000ベース)

Pair Trades Win Rate P&L PF Sharpe Max DD
EURUSD 887 47.2% +$849 1.38 2.44 2.4%
GBPUSD 1,221 48.2% +$1,056 1.30 2.28 2.9%
USDJPY 1,198 52.8% +$2,353 1.74 4.06 2.7%
AUDUSD 914 65.2% +$1,441 2.34 5.66 0.9%
Portfolio 4,220 52.99% +$5,700 1.57 4.53 3.17%

CM適用後 — 検証中

過学習対策(CM1-CM5)適用後のバリデーションを実行中。目標値:

指標 Baseline 目標
IS Sharpe 4.59 2-3
OOS Sharpe 0.49 1.0-2.0
IS/OOS Sharpe比 9.4x < 2x
OOS Win Rate 40.05% 48-52%
OOS Profit Factor 1.05 > 1.1

Trading Conditions

Entry Conditions

  • LightGBMが方向予測(buy / sell / no signal)
  • 信頼度 >= min_confidence 閾値(scalp: 0.40, day: 0.42, swing: 0.45)
  • スプレッド <= max_spread_pips(ペア別設定)
  • ポジション数 < max_positions
  • 日次損失 < max_daily_loss_pct (2%)
  • 日次取引数 < max_daily_trades (50)

Exit Conditions

  • SL: ATR(14)ベースの動的ストップロス(スタイル別倍率)
  • TP: ATR(14)ベースのテイクプロフィット(スタイル別倍率)
  • 時間切れ: max_hold_minutes 超過で強制決済

Risk Parameters

Parameter Value
Initial Balance $1,000
Max Positions 5 (scalp: 8)
Max Same Direction 3
Max Daily Loss 2.0%
Max Daily Trades 50
Max Spread 2.0-2.5 pips (ペア別)
Max Drawdown 10.0%
Lot Size 0.01 (micro lot)
Leverage 100:1

Supported Pairs

Pair pip_size Max Spread Notes
EURUSD 0.0001 2.0 pips 最も流動性が高い
GBPUSD 0.0001 2.5 pips EURUSD相関 ~0.85
USDJPY 0.01 2.0 pips 東京セッションで活発
AUDUSD 0.0001 2.5 pips コモディティ連動

Trading Styles

Style Timeframes Hold Time SL (ATR倍) TP (ATR倍) Horizon min_confidence
Scalp M1, M5 ~30min 1.0x 1.5x 5min 0.40
Daytrading M5-H1 ~4hr 1.5x 2.0x 15min 0.42
Swing H1-D1 ~4days 2.5x 4.0x 120min 0.45

Overfitting Countermeasures (2026-03-09 implemented)

IS/OOS gap縮小のために以下の対策を実装済み:

# 対策 内容
CM1 WFエンバーゴ train/val間にlabel_horizon分のギャップ挿入(ラベル漏洩防止)
CM2 フォールド増加 365/90/90日 → 180/60/60日(2→5-6フォールド)
CM3 正則化強化 max_depth 4→3, reg_alpha 5x, reg_lambda 5x, subsample 0.8→0.7
CM4 フォールド別特徴量選択 各フォールドのtrain期間のみで選択(60→30特徴量)
CM5 スプレッド反映 エントリー価格にbid/askスプレッド適用

Quick Start

# 依存関係インストール
pip install -r requirements.txt

# Rustエンジンビルド (optional, 高速バックテスト用)
cd rust_engine && maturin develop --release && cd ..

# フルパイプライン実行
python -m python.run_pipeline --step pipeline \
  --pairs EURUSD GBPUSD USDJPY AUDUSD \
  --balance 1000

個別ステップ

# データ取得 (Dukascopy)
python -m python.run_pipeline --step fetch --pairs EURUSD GBPUSD

# 特徴量エンジニアリング
python -m python.run_pipeline --step features --pairs EURUSD GBPUSD

# モデル学習 (Walk-Forward)
python -m python.run_pipeline --step train --pairs EURUSD GBPUSD

# バックテスト + HTMLレポート
python -m python.run_pipeline --step backtest --pairs EURUSD GBPUSD --balance 1000

# Walk-Forward検証 (IS vs OOS比較)
python -m python.run_pipeline --step validate --pairs EURUSD GBPUSD --balance 1000

Project Structure

config/
├── base.yaml              # デフォルト設定
├── portfolio.yaml          # ポートフォリオリスク設定
├── styles/                 # スタイル別設定 (scalp/daytrading/swing)
└── pairs/                  # ペア別設定 (eurusd/gbpusd/usdjpy/audusd)

python/
├── run_pipeline.py         # CLI エントリーポイント
├── pipeline/               # 3段階パイプライン
│   ├── stage1_trainer.py   # WF学習 + OOS予測収集
│   ├── stage2_collector.py # バックテスト + コンテキスト収集
│   └── stage3_trainer.py   # メタモデル学習
├── models/                 # LightGBM モデル
│   ├── entry_model.py      # エントリー方向予測 (multiclass / binary_pair)
│   ├── sl_model.py         # SL距離予測
│   ├── meta_model.py       # トレード品質フィルター
│   ├── regime_classifier.py # レジーム分類 (trending/ranging)
│   └── trainer.py          # Walk-Forward学習パイプライン
├── features/               # 特徴量エンジニアリング
│   ├── base_features.py    # テクニカル指標 (RSI, MACD, BB, ATR...)
│   ├── market_structure.py # SMC構造 (BOS, CHoCH)
│   ├── order_blocks.py     # オーダーブロック検出
│   ├── fvg.py              # Fair Value Gap
│   ├── liquidity.py        # 流動性レベル
│   └── feature_selector.py # importance-based選択 + 相関除去
├── backtest/               # バックテストエンジン
│   ├── pair_engine.py      # シングルペア Python エンジン
│   └── multi_pair_engine.py # マルチペア統合
├── strategy/               # シグナル生成
│   └── meta_strategy.py    # ATRベース動的スタイル選択
├── risk/                   # リスク管理
│   ├── position_sizer.py   # ポジションサイジング
│   └── portfolio_risk.py   # ポートフォリオレベル制約
├── server/                 # MT5ライブ接続
│   └── multi_pair_server.py # Socket サーバー
└── analysis/               # 分析・診断
    ├── validation.py       # IS/OOS検証 + VERDICT判定
    └── diagnostics.py      # モデル診断レポート

mql5/Experts/
└── FxMultiStyle.mq5        # MT5 Expert Advisor (Socket通信)

rust_engine/                # 高速バックテストエンジン (PyO3)
└── src/lib.rs              # MultiPairEngine (k-way merge)

Config Hierarchy

設定は以下の優先順位でマージ:

base.yaml  ←  styles/{style}.yaml  ←  pairs/{pair}.yaml
(defaults)     (style overrides)       (pair overrides)

Key Parameters

# Walk-Forward
walk_forward:
  train_days: 180        # 学習期間
  val_days: 60           # 検証期間
  step_days: 60          # ステップ幅
  embargo_minutes: null  # null=auto, 0=無効

# Entry Model (LightGBM)
entry_model:
  max_depth: 3
  n_estimators: 100
  min_child_samples: 100
  reg_alpha: 0.5
  reg_lambda: 5.0
  subsample: 0.7

# Risk
risk:
  initial_balance: 1000.0
  max_positions: 5
  max_daily_loss_pct: 2.0

Tech Stack

  • ML: LightGBM (multiclass / binary pair)
  • Data: Pandas, Polars, PyArrow
  • Backtest: Python (prototyping) + Rust/PyO3 (production)
  • Live: MQL5 EA ↔ Python Socket Server
  • Viz: Plotly (HTML reports)

License

MIT

About

ML Bot for Forex robot

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors