# LightGBM Factor Model (JP All Stocks)

- **Slug**: `ml-factor-lgbm-9f-jp-all`
- **Verdict**: rejected (no_edge)
- **Asset class**: equity
- **Categories**: cross-sectional, factor, machine-learning
- **Source**: qbuntu-analysis (computed asof 2026-08-06T01:50:20)
- **Reproducibility**: analysis-engine@2f23bb7, backtest-lib@711b855, 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-all
- **JSON**: https://qbuntu.ai/v1/strategies/ml-factor-lgbm-9f-jp-all
- **License**: CC-BY-4.0

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

## Why it didn't work

Across 1536 grid combinations, median Sharpe=-1.19, best=0.38. 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.1902 |
| Max drawdown | -55.5% |
| p-value | 0.017 |
| Backtest period | 2022-02-01 to 2026-02-20 |

Sharpe distribution across 1536 grid runs: median -1.19, best 0.38 (best-case — not representative), worst -2.12, p25 -1.44, p75 -0.84.

## 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 all listed (Prime/Standard/Growth), ~3747 stocks

## Runs (30)

| run_id | params | sharpe | UP | FLAT | DOWN |
|---|---|---:|---:|---:|---:|
| `r-ml-factor-lgbm-9f-jp-all-0000` | num_leaves=7, feature_set="9f-base", regime_gate=false, n_estimators=50 | -0.96 | -1.43 | -0.81 | -0.46 |
| `r-ml-factor-lgbm-9f-jp-all-0001` | num_leaves=7, feature_set="9f-base", regime_gate=true, n_estimators=50 | -1.26 | -2.84 | -0.81 | -0.46 |
| `r-ml-factor-lgbm-9f-jp-all-0002` | num_leaves=7, feature_set="9f-base", regime_gate=false, n_estimators=100 | -1.44 | -2.06 | -1.19 | -1.24 |
| `r-ml-factor-lgbm-9f-jp-all-0006` | num_leaves=7, feature_set="9f-base", regime_gate=false, n_estimators=500 | -1.33 | -1.68 | -1.07 | -1.83 |
| `r-ml-factor-lgbm-9f-jp-all-0024` | num_leaves=7, feature_set="9f-base", regime_gate=false, n_estimators=50 | -1.2 | -2.29 | -0.68 | -1.04 |
| `r-ml-factor-lgbm-9f-jp-all-0029` | num_leaves=7, feature_set="9f-base", regime_gate=true, n_estimators=200 | -2.12 | -3.82 | -1.43 | -2.61 |
| `r-ml-factor-lgbm-9f-jp-all-0077` | num_leaves=31, feature_set="9f-base", regime_gate=true, n_estimators=200 | -1.4 | -3.26 | -0.64 | -1.9 |
| `r-ml-factor-lgbm-9f-jp-all-0096` | num_leaves=63, feature_set="9f-base", regime_gate=false, n_estimators=50 | -1.23 | -1.6 | -1.02 | -1.41 |
| `r-ml-factor-lgbm-9f-jp-all-0150` | num_leaves=7, feature_set="9f-base", regime_gate=false, n_estimators=500 | -1.19 | -1.91 | -0.91 | -0.88 |
| `r-ml-factor-lgbm-9f-jp-all-0222` | num_leaves=31, feature_set="9f-base", regime_gate=false, n_estimators=500 | -1.33 | -2.19 | -1.05 | -0.39 |
| `r-ml-factor-lgbm-9f-jp-all-0256` | num_leaves=7, feature_set="9f-base", regime_gate=false, n_estimators=50 | -0.15 | -0.32 | -0.1 | 0.18 |
| `r-ml-factor-lgbm-9f-jp-all-0295` | num_leaves=15, feature_set="9f-base", regime_gate=true, n_estimators=500 | -1.04 | -2.09 | -0.75 | -0.18 |
| `r-ml-factor-lgbm-9f-jp-all-0367` | num_leaves=63, feature_set="9f-base", regime_gate=true, n_estimators=500 | -1.22 | -1.88 | -0.98 | -0.93 |
| `r-ml-factor-lgbm-9f-jp-all-0384` | num_leaves=7, feature_set="15f-swing", regime_gate=false, n_estimators=50 | -0.49 | -0.67 | -0.62 | 0.95 |
| `r-ml-factor-lgbm-9f-jp-all-0440` | num_leaves=15, feature_set="15f-swing", regime_gate=false, n_estimators=50 | -1.5 | -2.55 | -1.15 | -0.54 |
| `r-ml-factor-lgbm-9f-jp-all-0512` | num_leaves=7, feature_set="15f-swing", regime_gate=false, n_estimators=50 | -0.4 | -0.81 | -0.08 | -1.22 |
| `r-ml-factor-lgbm-9f-jp-all-0584` | num_leaves=31, feature_set="15f-swing", regime_gate=false, n_estimators=50 | -1.11 | -1.07 | -1.23 | -0.39 |
| `r-ml-factor-lgbm-9f-jp-all-0656` | num_leaves=7, feature_set="15f-swing", regime_gate=false, n_estimators=50 | -0.44 | 0.02 | -0.93 | 1.5 |
| `r-ml-factor-lgbm-9f-jp-all-0728` | num_leaves=31, feature_set="15f-swing", regime_gate=false, n_estimators=50 | -0.86 | -0.23 | -1.01 | -1.99 |
| `r-ml-factor-lgbm-9f-jp-all-0800` | num_leaves=15, feature_set="8f-no-volume", regime_gate=false, n_estimators=50 | -1.43 | -2.49 | -1.17 | 0.32 |
| `r-ml-factor-lgbm-9f-jp-all-0872` | num_leaves=63, feature_set="8f-no-volume", regime_gate=false, n_estimators=50 | -1.62 | -3.15 | -0.96 | -0.97 |
| `r-ml-factor-lgbm-9f-jp-all-0944` | num_leaves=15, feature_set="8f-no-volume", regime_gate=false, n_estimators=50 | -1.13 | -1.37 | -0.66 | -3.23 |
| `r-ml-factor-lgbm-9f-jp-all-1016` | num_leaves=63, feature_set="8f-no-volume", regime_gate=false, n_estimators=50 | -1.24 | -1.74 | -0.75 | -2.68 |
| `r-ml-factor-lgbm-9f-jp-all-1044` | num_leaves=7, feature_set="8f-no-volume", regime_gate=false, n_estimators=200 | 0.38 | 0.69 | 0.23 | 0.35 |
| `r-ml-factor-lgbm-9f-jp-all-1089` | num_leaves=31, feature_set="8f-no-volume", regime_gate=true, n_estimators=50 | -1.18 | -2.89 | -0.55 | -0.93 |
| `r-ml-factor-lgbm-9f-jp-all-1161` | num_leaves=7, feature_set="7f-no-mrs", regime_gate=true, n_estimators=50 | -0.76 | -3.58 | -0.01 | 1.07 |
| `r-ml-factor-lgbm-9f-jp-all-1233` | num_leaves=31, feature_set="7f-no-mrs", regime_gate=true, n_estimators=50 | -1.87 | -4.45 | -0.9 | -2.04 |
| `r-ml-factor-lgbm-9f-jp-all-1305` | num_leaves=7, feature_set="7f-no-mrs", regime_gate=true, n_estimators=50 | -1.52 | -3.02 | -0.92 | -1.73 |
| `r-ml-factor-lgbm-9f-jp-all-1377` | num_leaves=63, feature_set="7f-no-mrs", regime_gate=true, n_estimators=50 | -1.74 | -2.97 | -1.04 | -3.6 |
| `r-ml-factor-lgbm-9f-jp-all-1449` | num_leaves=15, feature_set="7f-no-mrs", regime_gate=true, n_estimators=50 | -1.3 | -2.45 | -0.61 | -2.78 |

## Facts (7)

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

- **Average monthly return correlation with other strategies in DOWN regime: 0.04**
  - Value: 0.044 correlation
  - Context: Pairwise Pearson correlation of monthly returns across 42 strategies, filtered to DOWN regime months (N=3, N225 < SMA20 < SMA60)
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-9f-jp-all-fact-avg-corr-down

- **Average monthly return correlation with other strategies (full period): -0.06**
  - Value: -0.0564 correlation
  - Context: Pairwise Pearson correlation of monthly returns across 42 strategies, full backtest period
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-9f-jp-all-fact-avg-corr-full

- **Best grid Sharpe ratio is 0.38 (p=0.45).**
  - Value: 0.38 sharpe_ratio
  - Context: period 2022-02-01–2026-02-20; cost=5bps
  - Supports verdict: `rejected`
  - Cite: https://qbuntu.ai/cite/ml-factor-lgbm-9f-jp-all-fact-best-sharpe

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

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

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

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

---

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

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