# LightGBM Factor Model (JP Growth Stocks)

- **Slug**: `ml-factor-lgbm-9f-jp-growth`
- **Verdict**: promising
- **Asset class**: equity
- **Categories**: cross-sectional, factor, machine-learning
- **Source**: qbuntu-analysis (computed asof 2026-08-14T04:11:19)
- **Reproducibility**: analysis-engine@a18e2c1, backtest-lib@17a7674, grid tier=shallow (python 3.10.11, numpy 2.2.6, pandas 2.3.3)
- **HTML**: https://qbuntu.ai/strategies/ml-factor-lgbm-9f-jp-growth
- **JSON**: https://qbuntu.ai/v1/strategies/ml-factor-lgbm-9f-jp-growth
- **License**: CC-BY-4.0

## 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.

## Performance summary

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

| Metric | Value |
|---|---|
| Sharpe (median) | 1.7464 |
| Max drawdown | -32.4% |
| p-value | 0.0003 |
| Backtest period | 2022-02-01 to 2026-06-10 |

Sharpe distribution across 1536 grid runs: median 1.75, best 3.62 (best-case — not representative), worst -0.77, p25 1.19, p75 2.43.

## Methodology

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

## Facts (5)

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

- **Best grid Sharpe ratio is 3.62 (p=9.7e-14).**
  - Value: 3.62 sharpe_ratio
  - Context: period 2022-02-01–2026-06-10; cost=5bps
  - Supports verdict: `promising`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-9f-jp-growth-fact-best-sharpe

- **Median Sharpe across 1536 grid runs is 1.75.**
  - Value: 1.75 sharpe_ratio
  - Context: Full grid of 1536 parameter combinations.
  - Supports verdict: `promising`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-9f-jp-growth-fact-median-sharpe

- **Median Sharpe in DOWN regime is 3.05 across 1536 runs.**
  - Value: 3.05 sharpe_ratio
  - Context: Regime=DOWN, N225 SMA20/SMA60 classification.
  - Supports verdict: `promising`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-9f-jp-growth-fact-regime-down

- **Median Sharpe in FLAT regime is 2.22 across 1536 runs.**
  - Value: 2.22 sharpe_ratio
  - Context: Regime=FLAT, N225 SMA20/SMA60 classification.
  - Supports verdict: `promising`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-9f-jp-growth-fact-regime-flat

- **Median Sharpe in UP regime is 0.26 across 1536 runs.**
  - Value: 0.26 sharpe_ratio
  - Context: Regime=UP, N225 SMA20/SMA60 classification.
  - Supports verdict: `promising`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-9f-jp-growth-fact-regime-up

---

Cite as: qbuntu (2026). LightGBM Factor Model (JP Growth Stocks). https://qbuntu.ai/strategies/ml-factor-lgbm-9f-jp-growth

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