Research question

Can machine learning time equity factors?

Factor returns vary over time. I test whether learned forecasts add value beyond a pooled, shrinkage-mean benchmark in emerging markets.

01 · Method

I compare out-of-sample linear, tree, and neural-network forecasts on JKP global factors, test developed-to-emerging-market transfer, and evaluate timing after turnover costs.

02 · Conclusion

Pooling explains much of the apparent predictability.

On capped value-weighted factors, all learned forecasts lose to the shrinkage mean on out-of-sample R². At the baseline trading cost, the shrinkage-mean tilt also beats learned timing portfolios.

Scope of the evidence. Out-of-sample predictive association. Results depend on factor weighting and trading costs; equal-weighted factors differ. Factor returns exclude their own rebalancing costs.

03 · Direct evidence

See what supports the finding.

Open interactive Space ↗

Shrinkage mean beats every learned timing model on OOS R²

Out-of-sample R² vs unpooled own mean (%) · 801,536 country-factor-months

Shrinkage mean beats every learned timing model on OOS R²

What this shows. Against the unpooled own mean, every model achieves positive OOS R² (+0.83% to +1.16%), but the non-timing regional shrinkage mean alone reaches +1.20% (t = 9.05). Measured against the shrinkage mean, all learned models have negative OOS R².

View exact values & source
Model / scopeOOS R² vs own mean (%)OOS R² vs shrinkage (%)Net Sharpe (20 bp)
Shrinkage mean1.20250.01.9054
Elastic net (EM)1.157-0.04611.1121
OLS (EM)1.1483-0.05491.0665
GBRT (pooled)1.0959-0.10791.1682
GBRT (EM)0.9928-0.21231.2648
GBRT (DM → EM)0.9726-0.23271.1253
Neural net (EM)0.8316-0.37551.0691
Own mean0.0-1.21721.4127

Source: EMFactorTiming/reports/jkp_em/r2_oos.csv

Download figure (SVG)

Shrinkage-mean tilt leads net Sharpe after turnover costs

Annualized Sharpe ratio net of 20 bp turnover cost · 2000–2025 OOS

Shrinkage-mean tilt leads net Sharpe after turnover costs

What this shows. Because learned timing rules turn over 41%–61% per month versus 6.1% for the shrinkage-mean tilt, the shrinkage-mean portfolio achieves the highest net Sharpe (1.91) ahead of static equal weight (1.48) and GBRT (1.26).

View exact values & source
Portfolio ruleNet Sharpe (20 bp)Monthly turnover
Shrinkage-mean tilt1.910.061
Static equal-weight1.480.018
Own-mean rule1.410.073
GBRT (EM)1.260.479
GBRT (pooled)1.170.552
GBRT (DM → EM)1.130.611
Elastic Net (EM)1.110.412
Neural Net (EM)1.070.446

Source: EMFactorTiming/reports/jkp_em/portfolios.csv

Download figure (SVG)
Research notes

Design, sources & limitations

What I built

I built an out-of-sample evaluation and transfer-learning framework for 153 Jensen-Kelly-Pedersen (JKP) equity factors across 22 emerging and 23 developed markets, pairing Monte Carlo size/power audits with turnover-penalized portfolio tests.

+1.20%shrinkage-mean OOS R² vs own mean
87.5% → 5.0%null false-positive rate fixed
1.91shrinkage-tilt net Sharpe (20 bp)
801,536EM country-factor-months

Research question and benchmark discipline

Question: Is the predictability of equity factor returns documented in developed markets present in emerging markets, and does a model trained on developed-market history forecast emerging-market factor returns out of sample, net of trading costs?

In a multi-country factor panel, each country-factor mean is estimated from a noisy history. Testing against each series own expanding mean (hist_mean) conflates time-series factor timing with cross-sectional pooling of unconditional premia. On known-truth synthetic panels with zero predictability, testing against the own mean rejects 87.5% of the time; replacing it with a regional shrinkage mean (shrink_mean) restores nominal 5.0% size while keeping 92.5–100% power.

Capabilities demonstrated

  1. Audit benchmark size and power on synthetic multi-country panels before opening real emerging-market holdouts.
  2. Train pooled OLS, Elastic Net, gradient-boosted trees (GBRT), and 3-seed neural-network ensembles on deviations from the regional shrinkage mean.
  3. Compare three training scopes for the 22 emerging markets: EM-only (own), developed-to-emerging transfer (dm_only), and pooled.
  4. Evaluate both statistical accuracy (out-of-sample R² and Clark-West t-statistics) and net economic value after 20 bp turnover costs.
  5. Run systematic robustness across shrinkage intensity (κ = 60, 120, 240), equal-weighted vs uncapped value-weighted factors, time-varying MSCI reclassifications, and U.S. macro state variables.

What the empirical run supports

Strategy / ModelOOS R² vs own mean (%)OOS R² vs shrink mean (%)Net Sharpe (20 bp)Interpretation
Shrinkage mean (rule)+1.200.001.91Pooling unconditional factor means across countries captures +1.20% OOS R² (t = 9.05) with minimal turnover (0.06/mo).
Static equal-weight——1.48Passive equal-weight portfolio across available factors within each market (turnover 0.02/mo).
GBRT (EM own)+0.99−0.211.26Positive Clark-West signal (t = 3.66), but forecast over-dispersion (slope 0.30) and 0.48/mo turnover reduce net Sharpe below static EW at 20 bp.
GBRT (DM → EM transfer)+0.97−0.231.13Developed-market trees transfer directional signal (CW t = 3.79) without seeing EM training labels, but remain too dispersed for 20 bp turnover costs.
Elastic Net (EM own)+1.16−0.051.11Closest learned model to the shrinkage mean on R², but linear timing evidence is fragile across κ and weighting specifications.
Neural Net (3-seed EM)+0.83−0.381.07Positive directional signal (CW t = 1.82 own, 3.88 DM transfer), penalized by higher forecast dispersion.

On equal-weighted factors, 7 of 9 learned models beat the shrinkage mean on OOS R² (up to +0.17%, CW t 3.8–5.0) and beat static equal weight net of 20 bp, but still trail the low-turnover shrinkage-mean tilt (3.90).

v2.0 Real-Data Empirical Validation (312 Monthly JKP Portfolios, 2000-01 to 2025-12)

SpecificationOOS R² vs Own (%)Gross SharpeNet Sharpe (20 bp)Turnover / moMax DD (%)NW t (net)
shrink_mean:rule (kappa = 60)+0.97591.83371.73150.0648-3.268.19
shrink_mean:rule (kappa = 120 baseline)+1.20251.99791.90540.0606-3.438.77
shrink_mean:rule (kappa = 240)+1.35642.13252.05220.0558-3.609.15
eb_shrink_mean:rule (36m adaptive kappa)+1.21162.01131.91860.0605-3.438.81
gbrt_rs:own (forecast-shrunk GBRT)+1.18352.09371.70500.2436-3.807.63
turnover_damped_blend (75% k240 + 25% gbrt_rs)+1.31312.17192.01220.1028-3.648.95

The blend has the highest gross Sharpe but not the highest net Sharpe: at 20 bp it reaches 2.0122, below kappa = 240 alone (2.0522), because it turns over 0.1028 a month against 0.0558. Its kappa = 240 and 75/25 weight were chosen after seeing these same 312 out-of-sample months, so the comparison is in-sample model selection. No committed script in the project repository generates this table (reports/jkp_em/eb_and_long_only_summary.csv).

Reproduce and inspect

Run make setup, make test, and make reproduce-sample for the synthetic verification slice, or place JKP factor archives in data/raw/ and run make run and make robustness.

Evidence boundary

  • Out-of-sample predictive comparison (association), not causal identification of risk premia or behavioral mechanisms.
  • JKP factor returns are gross of their own stock-level rebalancing costs and signed by the original studies; Sharpe ratio levels must be read comparatively.
  • Baseline market classification is static MSCI; historical reclassification robustness does not model initial index inclusion dates.