qbuntuqbuntu

ML Factor with Meta-Label Filter (JP Growth Stocks)

slug: ml-factor-meta-label-jp-growth

ML Factor with Meta-Label Filter (JP Growth Stocks) backtest. Median Sharpe across 48 parameter sets is +0.66. p-value is 0.06. Max DD is -30.6%. Period: 2024-07-01 to 2025-06-30. Best Sharpe +3.14 is not the representative figure.

Verdict: marginal. Some parameter set has a p-value under 0.10, but the median itself misses promising (Sharpe > 0.5 and p-value < 0.05). Primary reason: no_edge. It is not regime, frequency, or cost, and the median does not clear the bar.

Performance summary

Sharpe (median)
+0.66
Max DD
-30.6%
Win rate
—
Alpha (ann.)
—
p-value
0.06
backtest period: 2024-07-01 → 2025-06-30
Sharpe across 48 grid runs:median 0.66best 3.14 (not representative)worst -3.47p25–p75 -1.07–2.19

Hypothesis

Applying meta-labeling (2-stage P(win) filter via LogisticRegression) to ml-factor predictions filters low-confidence signals, improving Sharpe at the cost of lower trade frequency. meta_label.py is implemented but never deployed.

Why it didn't work

Across 48 grid combinations, median Sharpe=0.66, best=3.14. Primary failure mode: no_edge.

Facts (5)

Best grid Sharpe ratio is 3.14 (p=0.0019).
period 2024-07-01–2025-06-30; cost=5.0bps
sharpe_ratio3.14
Median Sharpe across 48 grid runs is 0.66.
Full grid of 48 parameter combinations.
sharpe_ratio0.66
Median Sharpe in DOWN regime is 4.27 across 48 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio4.27
Median Sharpe in FLAT regime is -0.40 across 48 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.40
Median Sharpe in UP regime is 0.88 across 48 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.88

Runs (30)

runparamssharpeUPFLATDOWN
meta_threshold=0.5, n_short_max=10, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0001
n_short_max: 10
meta_threshold: 0.5
base_num_leaves: 15
+2.49+4.02+1.18+2.74
meta_threshold=0.5, n_short_max=10, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0002
n_short_max: 10
meta_threshold: 0.5
base_num_leaves: 15
-0.31+0.00-2.09+13.20
meta_threshold=0.5, n_short_max=10, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0004
n_short_max: 10
meta_threshold: 0.5
base_num_leaves: 31
+1.89+2.75+1.01+2.15
meta_threshold=0.5, n_short_max=10, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0005
n_short_max: 10
meta_threshold: 0.5
base_num_leaves: 31
-0.89-0.63-2.28+21.08
meta_threshold=0.5, n_short_max=15, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0007
n_short_max: 15
meta_threshold: 0.5
base_num_leaves: 15
+1.75+3.55-0.07+2.49
meta_threshold=0.5, n_short_max=15, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0008
n_short_max: 15
meta_threshold: 0.5
base_num_leaves: 15
-0.95-0.58-2.70+12.38
meta_threshold=0.5, n_short_max=15, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0010
n_short_max: 15
meta_threshold: 0.5
base_num_leaves: 31
+2.00+2.83+0.42+4.55
meta_threshold=0.5, n_short_max=15, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0011
n_short_max: 15
meta_threshold: 0.5
base_num_leaves: 31
+0.19+0.44-1.50+22.54
meta_threshold=0.5, n_short_max=20, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0013
n_short_max: 20
meta_threshold: 0.5
base_num_leaves: 15
+0.87+3.30-1.60+2.18
meta_threshold=0.5, n_short_max=20, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0014
n_short_max: 20
meta_threshold: 0.5
base_num_leaves: 15
-1.10-0.70-3.10+10.02
meta_threshold=0.5, n_short_max=20, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0016
n_short_max: 20
meta_threshold: 0.5
base_num_leaves: 31
+1.31+2.18-0.27+3.88
meta_threshold=0.5, n_short_max=20, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0017
n_short_max: 20
meta_threshold: 0.5
base_num_leaves: 31
-0.06+0.11-1.37+18.95
meta_threshold=0.55, n_short_max=10, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0019
n_short_max: 10
meta_threshold: 0.55
base_num_leaves: 15
+2.76+4.06+1.41+3.95
meta_threshold=0.55, n_short_max=10, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0020
n_short_max: 10
meta_threshold: 0.55
base_num_leaves: 15
-1.06-1.27-1.42+19.72
meta_threshold=0.55, n_short_max=10, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0022
n_short_max: 10
meta_threshold: 0.55
base_num_leaves: 31
+2.25+2.18+1.81+3.13
meta_threshold=0.55, n_short_max=10, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0023
n_short_max: 10
meta_threshold: 0.55
base_num_leaves: 31
+0.32+0.69-1.62+17.43
meta_threshold=0.55, n_short_max=15, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0025
n_short_max: 15
meta_threshold: 0.55
base_num_leaves: 15
+2.42+3.34+1.58+3.19
meta_threshold=0.55, n_short_max=15, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0026
n_short_max: 15
meta_threshold: 0.55
base_num_leaves: 15
-0.47-0.28-1.91+15.65
meta_threshold=0.55, n_short_max=15, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0028
n_short_max: 15
meta_threshold: 0.55
base_num_leaves: 31
+2.97+3.31+1.01+7.00
meta_threshold=0.55, n_short_max=15, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0029
n_short_max: 15
meta_threshold: 0.55
base_num_leaves: 31
+0.13+0.54-1.52+55.83
meta_threshold=0.55, n_short_max=20, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0031
n_short_max: 20
meta_threshold: 0.55
base_num_leaves: 15
+1.88+3.30+0.60+2.89
meta_threshold=0.55, n_short_max=20, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0032
n_short_max: 20
meta_threshold: 0.55
base_num_leaves: 15
-1.07-0.72-2.49+15.75
meta_threshold=0.55, n_short_max=20, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0034
n_short_max: 20
meta_threshold: 0.55
base_num_leaves: 31
+2.37+3.01+0.73+5.09
meta_threshold=0.55, n_short_max=20, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0035
n_short_max: 20
meta_threshold: 0.55
base_num_leaves: 31
+0.45+0.19+0.55+58.41
meta_threshold=0.6, n_short_max=10, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0037
n_short_max: 10
meta_threshold: 0.6
base_num_leaves: 15
+1.89+1.50+1.62+3.38
meta_threshold=0.6, n_short_max=10, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0038
n_short_max: 10
meta_threshold: 0.6
base_num_leaves: 15
-2.05-2.15-1.94+2.70
meta_threshold=0.6, n_short_max=10, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0040
n_short_max: 10
meta_threshold: 0.6
base_num_leaves: 31
+2.38+2.19+1.92+3.68
meta_threshold=0.6, n_short_max=15, base_num_leaves=31
r-ml-factor-meta-label-jp-growth-0046
n_short_max: 15
meta_threshold: 0.6
base_num_leaves: 31
+3.14+2.87+1.83+6.82
meta_threshold=0.65, n_short_max=10, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0055
n_short_max: 10
meta_threshold: 0.65
base_num_leaves: 15
+1.29+1.56+0.02+4.04
meta_threshold=0.65, n_short_max=15, base_num_leaves=15
r-ml-factor-meta-label-jp-growth-0062
n_short_max: 15
meta_threshold: 0.65
base_num_leaves: 15
-3.47-3.45-3.69-0.60

Target universe

Tokyo Stock Exchange Growth Market, ~495 stocks, tv >= 30M JPY

Related strategies

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-09-24T02:22:16

Related strategies