qbuntuqbuntu

LightGBM Factor Model (JP Growth Stocks)

slug: ml-factor-lgbm-9f-jp-growth
performance summary
Sharpe (median)
+1.75
Max DD
-32.4%
Win rate
Alpha (ann.)
p-value
0.00
backtest period: 2022-02-012026-06-10
Sharpe across 1536 grid runs:median 1.75best 3.62 (not representative)worst -0.77p25–p75 1.192.43

Hypothesis

A LightGBM model trained on cross-sectional factor features (momentum, volatility, volume, mean-reversion signals) can predict next-period stock returns. Walk-forward validation ensures no lookahead bias. Tests multiple feature sets (9f-base, 15f-swing, 8f-no-volume, 7f-no-mrs) and hyperparameters.

Facts (5)

Best grid Sharpe ratio is 3.62 (p=9.7e-14).
period 2022-02-01–2026-06-10; cost=5bps
sharpe_ratio3.62
Median Sharpe across 1536 grid runs is 1.75.
Full grid of 1536 parameter combinations.
sharpe_ratio1.75
Median Sharpe in DOWN regime is 3.05 across 1536 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio3.05
Median Sharpe in FLAT regime is 2.22 across 1536 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio2.22
Median Sharpe in UP regime is 0.26 across 1536 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.26

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-growth-0000
num_leaves: 7
feature_set: "9f-base"
regime_gate: false
+3.10+3.70+2.90+1.92
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-growth-0001
num_leaves: 7
feature_set: "9f-base"
regime_gate: true
+1.82-1.27+2.90+1.92
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-growth-0002
num_leaves: 7
feature_set: "9f-base"
regime_gate: false
+2.95+2.85+3.05+2.66
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-growth-0006
num_leaves: 7
feature_set: "9f-base"
regime_gate: false
+2.57+2.57+2.57+2.62
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-growth-0024
num_leaves: 7
feature_set: "9f-base"
regime_gate: false
+2.09+2.37+2.19+0.18
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-growth-0076
num_leaves: 31
feature_set: "9f-base"
regime_gate: false
+2.19+3.29+1.69+1.50
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-growth-0096
num_leaves: 63
feature_set: "9f-base"
regime_gate: false
+3.45+3.97+3.37+1.73
num_leaves=63, learning_rate=0.01, n_estimators=100, feature_set=9f-base, walk_forward_window=60, regime_gate=False
r-ml-factor-lgbm-9f-jp-growth-0098
num_leaves: 63
feature_set: "9f-base"
regime_gate: false
+3.62+4.07+3.54+2.28
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-growth-0150
num_leaves: 7
feature_set: "9f-base"
regime_gate: false
+1.75+2.23+1.43+2.19
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-growth-0222
num_leaves: 31
feature_set: "9f-base"
regime_gate: false
+1.18+1.08+1.05+2.49
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-growth-0256
num_leaves: 7
feature_set: "9f-base"
regime_gate: false
+3.01+3.00+2.70+5.66
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-growth-0295
num_leaves: 15
feature_set: "9f-base"
regime_gate: true
+2.04-1.62+3.02+3.99
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-growth-0367
num_leaves: 63
feature_set: "9f-base"
regime_gate: true
+0.98-2.06+1.84+3.12
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-growth-0384
num_leaves: 7
feature_set: "15f-swing"
regime_gate: false
+2.85+3.53+2.48+2.75
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-growth-0440
num_leaves: 15
feature_set: "15f-swing"
regime_gate: false
+2.00+2.75+1.66+1.53
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-growth-0512
num_leaves: 7
feature_set: "15f-swing"
regime_gate: false
+2.98+3.43+2.32+6.03
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-growth-0584
num_leaves: 31
feature_set: "15f-swing"
regime_gate: false
+2.41+2.92+1.95+3.72
num_leaves=7, learning_rate=0.05, n_estimators=50, feature_set=15f-swing, walk_forward_window=250, regime_gate=False
r-ml-factor-lgbm-9f-jp-growth-0656
num_leaves: 7
feature_set: "15f-swing"
regime_gate: false
+2.88+3.50+2.18+5.47
num_leaves=31, learning_rate=0.1, n_estimators=50, feature_set=15f-swing, walk_forward_window=250, regime_gate=False
r-ml-factor-lgbm-9f-jp-growth-0728
num_leaves: 31
feature_set: "15f-swing"
regime_gate: false
+2.48+2.08+2.28+5.99
num_leaves=15, learning_rate=0.01, n_estimators=50, feature_set=8f-no-volume, walk_forward_window=60, regime_gate=False
r-ml-factor-lgbm-9f-jp-growth-0800
num_leaves: 15
feature_set: "8f-no-volume"
regime_gate: false
+2.73+3.69+2.24+2.36
num_leaves=31, learning_rate=0.1, n_estimators=500, feature_set=8f-no-volume, walk_forward_window=60, regime_gate=True
r-ml-factor-lgbm-9f-jp-growth-0863
num_leaves: 31
feature_set: "8f-no-volume"
regime_gate: true
-0.77-1.95-0.29-0.63
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-growth-0873
num_leaves: 63
feature_set: "8f-no-volume"
regime_gate: true
+1.02-1.01+1.67+1.63
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-growth-0945
num_leaves: 15
feature_set: "8f-no-volume"
regime_gate: true
+1.74-1.45+2.63+3.82
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-growth-1017
num_leaves: 63
feature_set: "8f-no-volume"
regime_gate: true
+0.92-2.74+1.99+2.23
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-growth-1089
num_leaves: 31
feature_set: "8f-no-volume"
regime_gate: true
+1.72-2.51+2.75+4.14
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-growth-1161
num_leaves: 7
feature_set: "7f-no-mrs"
regime_gate: true
+1.32-2.01+2.36+2.27
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-growth-1233
num_leaves: 31
feature_set: "7f-no-mrs"
regime_gate: true
+1.93-1.13+3.16+2.07
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-growth-1305
num_leaves: 7
feature_set: "7f-no-mrs"
regime_gate: true
+1.22-1.73+2.03+3.09
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-growth-1377
num_leaves: 63
feature_set: "7f-no-mrs"
regime_gate: true
+1.76-2.81+2.80+5.16
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-growth-1449
num_leaves: 15
feature_set: "7f-no-mrs"
regime_gate: true
+1.74-1.88+2.52+4.82

Target universe

Tokyo Stock Exchange Growth Market, ~495 stocks, tv >= 30M JPY
source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-08-14T04:11:19

Related strategies