LightGBMファクター(9因子)(東証全銘柄)のバックテスト
LightGBM Factor Model (JP All Stocks)
slug: ml-factor-lgbm-9f-jp-all
東証全銘柄(約3,747銘柄)でLightGBMファクター(9因子)をバックテストした。1,536通りの中央値 Sharpe は +2.27。p-value は 0.000001。Max DD は -28.5%。期間は 2022-02-01〜2026-09-24。最良 Sharpe +5.00 は代表値ではない。
判定は promising。中央値の Sharpe が 0.5 を超え、その中央値の p-value が 0.05 未満。ベストランではない。
成績の中央値
Sharpe(中央値)
+2.27
Max DD
-28.5%
勝率
—
Alpha(年率)
—
p-value
0.00
期間: 2022-02-01 → 2026-09-24
1536通りの Sharpe:中央値 2.27最良 5.00 (代表値ではない)最悪 -0.97p25–p75 1.56–3.14
仮説
原文は英語。
A LightGBM model trained on cross-sectional factor features can predict next-period stock returns. Testing the same model on the full Japanese stock universe.
検証ファクト (5)
Best grid Sharpe ratio is 5.00 (p=8.6e-26).
period 2022-02-01–2026-09-24; cost=5bps
cite ↗ /cite/ml-factor-lgbm-9f-jp-all-fact-best-sharpevia r-ml-factor-lgbm-9f-jp-all-0642
Median Sharpe across 1536 grid runs is 2.27.
Full grid of 1536 parameter combinations.
Median Sharpe in DOWN regime is 3.88 across 1536 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
Median Sharpe in FLAT regime is 2.73 across 1536 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
Median Sharpe in UP regime is 0.03 across 1536 runs.
Regime=UP, N225 SMA20/SMA60 classification.
検証ラン (30)
| run | params | sharpe | UP | FLAT | DOWN |
|---|---|---|---|---|---|
num_leaves=7, learning_rate=0.01, n_estimators=50, feature_set=9f-base, walk_forward_window=60, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0000 | num_leaves: 7 feature_set: "9f-base" regime_gate: false | +3.78 | +4.10 | +3.45 | +3.79 |
num_leaves=7, learning_rate=0.01, n_estimators=50, feature_set=9f-base, walk_forward_window=60, regime_gate=True r-ml-factor-lgbm-9f-jp-all-0001 | num_leaves: 7 feature_set: "9f-base" regime_gate: true | +2.30 | -0.66 | +3.45 | +3.79 |
num_leaves=7, learning_rate=0.01, n_estimators=100, feature_set=9f-base, walk_forward_window=60, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0002 | num_leaves: 7 feature_set: "9f-base" regime_gate: false | +3.70 | +3.94 | +3.16 | +4.47 |
num_leaves=7, learning_rate=0.01, n_estimators=500, feature_set=9f-base, walk_forward_window=60, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0006 | num_leaves: 7 feature_set: "9f-base" regime_gate: false | +3.81 | +3.74 | +3.43 | +5.05 |
num_leaves=7, learning_rate=0.1, n_estimators=50, feature_set=9f-base, walk_forward_window=60, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0024 | num_leaves: 7 feature_set: "9f-base" regime_gate: false | +3.25 | +3.35 | +2.97 | +3.72 |
num_leaves=31, learning_rate=0.03, n_estimators=200, feature_set=9f-base, walk_forward_window=60, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0076 | num_leaves: 31 feature_set: "9f-base" regime_gate: false | +2.00 | +1.09 | +2.26 | +3.96 |
num_leaves=31, learning_rate=0.1, n_estimators=500, feature_set=9f-base, walk_forward_window=60, regime_gate=True r-ml-factor-lgbm-9f-jp-all-0095 | num_leaves: 31 feature_set: "9f-base" regime_gate: true | -0.97 | -3.05 | -0.34 | +1.33 |
num_leaves=63, learning_rate=0.01, n_estimators=50, feature_set=9f-base, walk_forward_window=60, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0096 | num_leaves: 63 feature_set: "9f-base" regime_gate: false | +3.18 | +2.88 | +3.15 | +4.07 |
num_leaves=7, learning_rate=0.05, n_estimators=500, feature_set=9f-base, walk_forward_window=120, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0150 | num_leaves: 7 feature_set: "9f-base" regime_gate: false | +2.31 | +2.33 | +1.47 | +4.57 |
num_leaves=31, learning_rate=0.1, n_estimators=500, feature_set=9f-base, walk_forward_window=120, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0222 | num_leaves: 31 feature_set: "9f-base" regime_gate: false | +1.70 | +2.12 | +0.77 | +3.14 |
num_leaves=7, learning_rate=0.01, n_estimators=50, feature_set=9f-base, walk_forward_window=250, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0256 | num_leaves: 7 feature_set: "9f-base" regime_gate: false | +4.29 | +4.93 | +3.71 | +4.07 |
num_leaves=15, learning_rate=0.01, n_estimators=500, feature_set=9f-base, walk_forward_window=250, regime_gate=True r-ml-factor-lgbm-9f-jp-all-0295 | num_leaves: 15 feature_set: "9f-base" regime_gate: true | +2.36 | -0.12 | +2.60 | +6.15 |
num_leaves=63, learning_rate=0.03, n_estimators=500, feature_set=9f-base, walk_forward_window=250, regime_gate=True r-ml-factor-lgbm-9f-jp-all-0367 | num_leaves: 63 feature_set: "9f-base" regime_gate: true | +0.75 | -1.76 | +1.62 | +3.78 |
num_leaves=7, learning_rate=0.01, n_estimators=50, feature_set=15f-swing, walk_forward_window=60, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0384 | num_leaves: 7 feature_set: "15f-swing" regime_gate: false | +3.92 | +4.04 | +3.69 | +4.21 |
num_leaves=15, learning_rate=0.1, n_estimators=50, feature_set=15f-swing, walk_forward_window=60, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0440 | num_leaves: 15 feature_set: "15f-swing" regime_gate: false | +3.33 | +3.31 | +3.31 | +3.42 |
num_leaves=7, learning_rate=0.01, n_estimators=50, feature_set=15f-swing, walk_forward_window=120, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0512 | num_leaves: 7 feature_set: "15f-swing" regime_gate: false | +4.50 | +4.79 | +4.16 | +4.66 |
num_leaves=31, learning_rate=0.03, n_estimators=50, feature_set=15f-swing, walk_forward_window=120, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0584 | num_leaves: 31 feature_set: "15f-swing" regime_gate: false | +3.68 | +3.74 | +3.68 | +3.50 |
num_leaves=7, learning_rate=0.01, n_estimators=100, feature_set=15f-swing, walk_forward_window=250, regime_gate=False r-ml-factor-lgbm-9f-jp-all-0642 | num_leaves: 7 feature_set: "15f-swing" regime_gate: false | +5.00 | +5.28 | +4.52 | +5.52 |
num_leaves=7, learning_rate=0.05, n_estimators=50, feature_set=15f-swing, walk_forward_window=250, regime_gate=True r-ml-factor-lgbm-9f-jp-all-0657 | num_leaves: 7 feature_set: "15f-swing" regime_gate: true | +2.78 | -1.74 | +4.42 | +4.08 |
num_leaves=31, learning_rate=0.1, n_estimators=50, feature_set=15f-swing, walk_forward_window=250, regime_gate=True r-ml-factor-lgbm-9f-jp-all-0729 | num_leaves: 31 feature_set: "15f-swing" regime_gate: true | +1.75 | -1.76 | +3.75 | +2.37 |
num_leaves=15, learning_rate=0.01, n_estimators=50, feature_set=8f-no-volume, walk_forward_window=60, regime_gate=True r-ml-factor-lgbm-9f-jp-all-0801 | num_leaves: 15 feature_set: "8f-no-volume" regime_gate: true | +1.52 | -1.61 | +2.93 | +2.91 |
num_leaves=63, learning_rate=0.03, n_estimators=50, feature_set=8f-no-volume, walk_forward_window=60, regime_gate=True r-ml-factor-lgbm-9f-jp-all-0873 | num_leaves: 63 feature_set: "8f-no-volume" regime_gate: true | +1.43 | -1.19 | +2.33 | +3.39 |
num_leaves=15, learning_rate=0.05, n_estimators=50, feature_set=8f-no-volume, walk_forward_window=120, regime_gate=True r-ml-factor-lgbm-9f-jp-all-0945 | num_leaves: 15 feature_set: "8f-no-volume" regime_gate: true | +1.73 | -0.66 | +2.33 | +4.60 |
num_leaves=63, learning_rate=0.1, n_estimators=50, feature_set=8f-no-volume, walk_forward_window=120, regime_gate=True r-ml-factor-lgbm-9f-jp-all-1017 | num_leaves: 63 feature_set: "8f-no-volume" regime_gate: true | +0.98 | -1.02 | +1.49 | +3.15 |
num_leaves=31, learning_rate=0.01, n_estimators=50, feature_set=8f-no-volume, walk_forward_window=250, regime_gate=True r-ml-factor-lgbm-9f-jp-all-1089 | num_leaves: 31 feature_set: "8f-no-volume" regime_gate: true | +2.65 | -0.35 | +3.55 | +5.18 |
num_leaves=7, learning_rate=0.03, n_estimators=50, feature_set=7f-no-mrs, walk_forward_window=60, regime_gate=True r-ml-factor-lgbm-9f-jp-all-1161 | num_leaves: 7 feature_set: "7f-no-mrs" regime_gate: true | +2.00 | -1.12 | +3.12 | +4.02 |
num_leaves=31, learning_rate=0.05, n_estimators=50, feature_set=7f-no-mrs, walk_forward_window=60, regime_gate=True r-ml-factor-lgbm-9f-jp-all-1233 | num_leaves: 31 feature_set: "7f-no-mrs" regime_gate: true | +1.46 | -1.36 | +2.78 | +2.78 |
num_leaves=7, learning_rate=0.1, n_estimators=50, feature_set=7f-no-mrs, walk_forward_window=120, regime_gate=True r-ml-factor-lgbm-9f-jp-all-1305 | num_leaves: 7 feature_set: "7f-no-mrs" regime_gate: true | +1.91 | -2.33 | +3.06 | +5.23 |
num_leaves=63, learning_rate=0.01, n_estimators=50, feature_set=7f-no-mrs, walk_forward_window=120, regime_gate=True r-ml-factor-lgbm-9f-jp-all-1377 | num_leaves: 63 feature_set: "7f-no-mrs" regime_gate: true | +2.13 | -0.81 | +3.06 | +4.79 |
num_leaves=15, learning_rate=0.03, n_estimators=50, feature_set=7f-no-mrs, walk_forward_window=250, regime_gate=True r-ml-factor-lgbm-9f-jp-all-1449 | num_leaves: 15 feature_set: "7f-no-mrs" regime_gate: true | +2.56 | -2.17 | +4.30 | +4.81 |
対象ユニバース
Tokyo Stock Exchange all listed (Prime/Standard/Growth), ~3747 stocks
関連する戦略
source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-10-01T02:33:38