# ML Factor 12f-Quality with Meta-Label Filter (JP Growth Stocks)

- **Slug**: `ml-factor-lgbm-12f-meta-label-jp-growth`
- **Verdict**: marginal (no_edge)
- **Asset class**: equity
- **Categories**: factor, machine-learning, meta-label
- **Source**: qbuntu-analysis (computed asof 2026-09-24T02:22:16)
- **Reproducibility**: analysis-engine@1455e77, backtest-lib@17a7674, grid tier=shallow (python 3.12.10, numpy 2.4.2, pandas 3.0.0)
- **HTML**: https://qbuntu.ai/strategies/ml-factor-lgbm-12f-meta-label-jp-growth
- **JSON**: https://qbuntu.ai/v1/strategies/ml-factor-lgbm-12f-meta-label-jp-growth
- **License**: CC-BY-4.0

## Hypothesis

Combining H1's 12f-quality features (sharpe_60d, max_dd_60d, price_r2_60d) with H4's meta-label P(win) filter produces synergistic improvement: better features yield better base scores, and meta-label filters more accurately on higher-quality inputs. Phase 2c showed 12f-quality (Sharpe 1.28) and meta-label 0.55 (Sharpe 1.16) independently improve over 9f-base (0.58), but the combination is untested.

## Why it didn't work

Across 54 grid combinations, median Sharpe=1.08, best=3.03. Primary failure mode: no_edge.

## Performance summary

Headline figures are the **median across the parameter grid**, not the best run.

| Metric | Value |
|---|---|
| Sharpe (median) | 1.0837 |
| Max drawdown | -19.5% |
| p-value | 0.15 |
| Backtest period | 2024-07-01 to 2025-06-30 |

Sharpe distribution across 54 grid runs: median 1.08, best 3.03 (best-case — not representative), worst -1.93, p25 -0.16, p75 2.03.

## Methodology

- Notes: {"validation": "walk-forward (3 folds, 2023-12-01 onward)", "walk_forward_definition": {"type": "single_pass", "description": "Full period backtest without walk-forward split", "verdict_basis": "full_period"}}
- Slippage model: open-on-open + variable bps fixed
- Position sizing: equal_weight
- Regime definition: N225 SMA20/SMA60 three-class
- Transaction cost bps: 5

## Target universe

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

## Runs (30)

| run_id | params | sharpe | UP | FLAT | DOWN |
|---|---|---:|---:|---:|---:|
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0001` | num_leaves=7, n_short_max=10, meta_threshold=0.5 | 2.07 | 1.52 | 1.78 | 3.54 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0002` | num_leaves=7, n_short_max=10, meta_threshold=0.5 | 1.63 | 1.63 | 1 | 12.7 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0004` | num_leaves=15, n_short_max=10, meta_threshold=0.5 | 1.96 | 1.33 | 2.37 | 2.42 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0005` | num_leaves=15, n_short_max=10, meta_threshold=0.5 | 0.15 | 0.62 | -1.99 | 10.77 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0007` | num_leaves=31, n_short_max=10, meta_threshold=0.5 | 3.03 | 1.4 | 3.74 | 4.23 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0008` | num_leaves=31, n_short_max=10, meta_threshold=0.5 | 0.56 | 1.77 | -3.2 | 13.34 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0010` | num_leaves=7, n_short_max=15, meta_threshold=0.5 | 1.41 | 0.39 | 1.44 | 3 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0011` | num_leaves=7, n_short_max=15, meta_threshold=0.5 | 0.64 | 0.46 | 0.58 | 16.71 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0013` | num_leaves=15, n_short_max=15, meta_threshold=0.5 | 1.93 | 1.39 | 2.64 | 1.66 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0014` | num_leaves=15, n_short_max=15, meta_threshold=0.5 | -0.91 | -0.45 | -2.93 | 8.26 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0016` | num_leaves=31, n_short_max=15, meta_threshold=0.5 | 1.88 | 0.84 | 2.47 | 2.53 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0017` | num_leaves=31, n_short_max=15, meta_threshold=0.5 | 1.01 | 1.81 | -1.9 | 8.32 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0019` | num_leaves=7, n_short_max=20, meta_threshold=0.5 | 1.07 | 0.27 | 0.93 | 2.59 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0020` | num_leaves=7, n_short_max=20, meta_threshold=0.5 | 0.91 | 0.61 | 1.33 | 14.1 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0022` | num_leaves=15, n_short_max=20, meta_threshold=0.5 | 1.72 | 1.57 | 2.09 | 1.25 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0023` | num_leaves=15, n_short_max=20, meta_threshold=0.5 | -1.19 | -0.77 | -3.02 | 7.24 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0025` | num_leaves=31, n_short_max=20, meta_threshold=0.5 | 2.17 | 0.66 | 3.24 | 1.72 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0026` | num_leaves=31, n_short_max=20, meta_threshold=0.5 | -0.02 | 0.59 | -2.22 | 2.83 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0028` | num_leaves=7, n_short_max=10, meta_threshold=0.55 | 1.63 | 1.21 | 1.12 | 3.34 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0029` | num_leaves=7, n_short_max=10, meta_threshold=0.55 | 0.5 | 0.57 | -0.32 | 12.7 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0031` | num_leaves=15, n_short_max=10, meta_threshold=0.55 | 1.88 | 1.22 | 2 | 2.7 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0032` | num_leaves=15, n_short_max=10, meta_threshold=0.55 | -0.52 | -0.28 | -2.04 | 7.68 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0034` | num_leaves=31, n_short_max=10, meta_threshold=0.55 | 2.13 | 0.89 | 2.97 | 2.59 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0035` | num_leaves=31, n_short_max=10, meta_threshold=0.55 | 0.77 | 1.04 | -0.49 | 13.34 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0037` | num_leaves=7, n_short_max=15, meta_threshold=0.55 | 1.1 | -0.63 | 1.8 | 2.9 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0038` | num_leaves=7, n_short_max=15, meta_threshold=0.55 | 0.34 | 0.75 | -0.83 | 8.87 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0040` | num_leaves=15, n_short_max=15, meta_threshold=0.55 | 2.02 | 1.07 | 2.42 | 2.6 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0041` | num_leaves=15, n_short_max=15, meta_threshold=0.55 | -1.56 | -1.24 | -3.03 | 6.74 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0055` | num_leaves=7, n_short_max=10, meta_threshold=0.6 | 1.68 | 1.09 | 1.25 | 4.44 |
| `r-ml-factor-lgbm-12f-meta-label-jp-growth-0059` | num_leaves=15, n_short_max=10, meta_threshold=0.6 | -1.93 | -1.87 | -2.29 | 2.96 |

## Facts (5)

Each fact has a permanent citation URL. AI agents quoting qbuntu should use these.

- **Best grid Sharpe ratio is 3.03 (p=0.0028).**
  - Value: 3.03 sharpe_ratio
  - Context: period 2024-07-01–2025-06-30; cost=5.0bps
  - Supports verdict: `marginal`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-12f-meta-label-jp-growth-fact-best-sharpe

- **Median Sharpe across 54 grid runs is 1.08.**
  - Value: 1.08 sharpe_ratio
  - Context: Full grid of 54 parameter combinations.
  - Supports verdict: `marginal`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-12f-meta-label-jp-growth-fact-median-sharpe

- **Median Sharpe in DOWN regime is 4.06 across 54 runs.**
  - Value: 4.06 sharpe_ratio
  - Context: Regime=DOWN, N225 SMA20/SMA60 classification.
  - Supports verdict: `marginal`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-12f-meta-label-jp-growth-fact-regime-down

- **Median Sharpe in FLAT regime is 1.06 across 54 runs.**
  - Value: 1.06 sharpe_ratio
  - Context: Regime=FLAT, N225 SMA20/SMA60 classification.
  - Supports verdict: `marginal`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-12f-meta-label-jp-growth-fact-regime-flat

- **Median Sharpe in UP regime is 0.65 across 54 runs.**
  - Value: 0.65 sharpe_ratio
  - Context: Regime=UP, N225 SMA20/SMA60 classification.
  - Supports verdict: `marginal`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-12f-meta-label-jp-growth-fact-regime-up

## Related strategies

- same_strategy: [ml-factor-lgbm-12f-jp-growth](https://qbuntu.ai/strategies/ml-factor-lgbm-12f-jp-growth)
- same_strategy: [ml-factor-lgbm-9f-jp-growth](https://qbuntu.ai/strategies/ml-factor-lgbm-9f-jp-growth)
- same_strategy: [ml-factor-meta-label-jp-growth](https://qbuntu.ai/strategies/ml-factor-meta-label-jp-growth)

---

Cite as: qbuntu (2026). ML Factor 12f-Quality with Meta-Label Filter (JP Growth Stocks). https://qbuntu.ai/strategies/ml-factor-lgbm-12f-meta-label-jp-growth

Visit qbuntu.ai — the honest scorecard for quant strategies (live, promising, marginal, rejected).
