qbuntuqbuntu

LightGBM Factor Model (JP All Stocks)

slug: ml-factor-lgbm-9f-jp-all

LightGBM Factor Model (JP All Stocks) backtest. Median Sharpe across 1,536 parameter sets is +2.27. p-value is 0.000001. Max DD is -28.5%. Period: 2022-02-01 to 2026-09-24. Best Sharpe +5.00 is not the representative figure.

Verdict: promising. Median Sharpe is above 0.5 and the median p-value is under 0.05. Not the best run.

Performance summary

Sharpe (median)
+2.27
Max DD
-28.5%
Win rate
—
Alpha (ann.)
—
p-value
0.00
backtest period: 2022-02-01 → 2026-09-24
Sharpe across 1536 grid runs:median 2.27best 5.00 (not representative)worst -0.97p25–p75 1.56–3.14

Hypothesis

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.

Facts (5)

Best grid Sharpe ratio is 5.00 (p=8.6e-26).
period 2022-02-01–2026-09-24; cost=5bps
sharpe_ratio5
Median Sharpe across 1536 grid runs is 2.27.
Full grid of 1536 parameter combinations.
sharpe_ratio2.27
Median Sharpe in DOWN regime is 3.88 across 1536 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio3.88
Median Sharpe in FLAT regime is 2.73 across 1536 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio2.73
Median Sharpe in UP regime is 0.03 across 1536 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.03

Runs (30)

runparamssharpeUPFLATDOWN
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

Target universe

Tokyo Stock Exchange all listed (Prime/Standard/Growth), ~3747 stocks

Related strategies

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-10-01T02:33:38

Related strategies