When Alpha Breaks: Two-Level Uncertainty for Safe Deployment of Cross-Sectional Stock Rankers
Abstract
Cross-sectional ranking models are often deployed as if point predictions were sufficient: the model outputs scores and the portfolio follows the induced ordering. Under non-stationarity, rankers can fail during regime shifts. In the AI Stock Forecaster, a LightGBM ranker performs well overall at a 20-day horizon, yet the 2024 holdout coincides with an AI thematic rally and sector rotation that breaks the signal at longer horizons and weakens 20d. This motivates treating deployment as two decisions: (i) whether the strategy should trade at all, and (ii) how to control risk within active trades. We adapt Direct Epistemic Uncertainty Prediction (DEUP) to ranking by predicting rank displacement and defining an epistemic uncertainty signal ehat relative to a point-in-time (PIT-safe) baseline. Empirically, ehat is structurally coupled with signal strength (median correlation between ehat and absolute score is about 0.6 across 1,865 dates), so inverse-uncertainty sizing de-levers the strongest signals and degrades performance. To address this, we propose a two-level deployment policy: a strategy-level regime-trust gate G(t) that decides whether to trade (AUROC around 0.72 overall and 0.75 in FINAL) and a position-level epistemic tail-risk cap that reduces exposure only for the most uncertain predictions. The operational policy, trade only when G(t) is at least 0.2, apply volatility sizing on active dates, and cap the top epistemic tail, improves risk-adjusted performance in the 20d policy comparison and indicates DEUP adds value mainly as a tail-risk guard rather than a continuous sizing denominator.
Figures & tables
| ALL | DEV (2016–2023) | FINAL (2024+) | |
| Panel A: Shadow portfolio (20d, monthly non-overlapping L/S, vol-sized LightGBM; cost model as in text; no UQ) | |||
| Sharpe (ann.) | 2.734 | 3.121 | 2.337 |
| Sortino (ann.) | 6.058 | 5.410 | 9.687 |
| Max drawdown | % | % | % |
| Calmar (CAGR / ) | 6.76 | 6.07 | 26.2 |
| Ann. return (arithmetic) | 87.0% | 79.6% | 137.3% |
| Work | Task | UQ method | Action rule | Regime control |
|---|---|---|---|---|
| Spears et al. (2021) | Futures return | Bayesian NN posterior | Multiplicative sizing | Variance threshold |
| Liu et al. (2026) | Return prediction | Rolling residual quantiles | Uncertainty-adj. sorting | None |
| Garlappi et al. (2007) | Portfolio opt. | Ambiguity / model uncertainty | Shrinkage toward safety | None |
| This paper | Cross-sec. ranking | DEUP on rank displacement | Tail-risk cap ( -Cap) | Binary gate |
| Category | Feature | Purpose |
| Per-prediction | score , abs_score | Prediction magnitude/strength |
| cross_sectional_rank | Position in today’s ranking | |
| Stock-level | vol_20d , vol_60d | Realized volatility |
| mom_1m | Recent momentum | |
| adv_20d | Liquidity proxy | |
| Market regime | vix_percentile_252d | Rolling VIX percentile |
| Signal | 20d ALL | 20d FINAL | 90d ALL | 90d FINAL |
|---|---|---|---|---|
| (DEUP) | 0.144 | 0.192 | 0.146 | 0.248 |
| (raw) | 0.192 | 0.218 | 0.161 | 0.262 |
| vol_20d | 0.047 | 0.010 | 0.035 | 0.009 |
| VIX percentile | 0.018 | 0.022 | 0.053 | 0.020 |
| 0.096 | 0.065 | 0.018 | 0.013 |
| Variant | ALL | DEV | FINAL | Crisis MaxDD |
|---|---|---|---|---|
| Ungated Raw (LGB) | 2.730 | 3.107 | 1.650 | -7.4% |
| 1. Gate + Raw | 1.928 | 2.039 | -0.322 | -7.4% |
| 2. Gate + Vol | 1.886 | 1.971 | 0.375 | -8.4% |
| 4. Gate + Resid- | 1.987 | 2.041 | 0.953 | -6.0% |
| 6. Gate + Vol + -Cap | 1.877 | 1.928 | 0.925 | -6.7% |
| Predictor | AUROC (ALL) | AUROC (FINAL) |
|---|---|---|
| (combined) | 0.721 | 0.750 |
| (gate) | 0.710 | 0.743 |
| -only | 0.715 | — |
| VIX percentile | 0.449 | 0.504 |
| Market volatility | 0.596 | 0.569 |
| Mean stock volatility | 0.590 | 0.460 |
| Level | Question | Signal | Mechanism |
|---|---|---|---|
| Strategy | Should we trade today? | (trailing RankIC) | Binary abstention |
| Position | Which stocks need caution? | (DEUP) | Percentile cap |
| 20d | 90d | ||||
|---|---|---|---|---|---|
| Quintile | DEV | FINAL | DEV | FINAL | |
| Q1 (low ) | 0.265 | 0.253 | 0.242 | 0.233 | |
| Q2 | 0.267 | 0.275 | 0.258 | 0.305 | |
| Q3 | 0.297 | 0.308 | 0.285 | 0.315 | |
| Q4 | 0.354 | 0.366 | 0.321 | 0.386 | |
| Q5 (high ) | 0.400 | 0.427 | 0.371 | 0.437 | |
| Horizon | ALL | DEV | FINAL |
|---|---|---|---|
| 20d | 0.144 | 0.142 | 0.192 |
| 60d | 0.106 | 0.103 | 0.140 |
| 90d | 0.146 | 0.138 | 0.248 |
| Variant | Sharpe (ALL) | Sharpe (DEV) | Sharpe (FINAL) | Crisis MaxDD |
|---|---|---|---|---|
| Gate + Vol + -Cap, | 1.864 | 1.915 | 0.906 | |
| Gate + Vol + -Cap, ( ) | 1.864 | 1.915 | 0.906 |
| Predictor | AUROC (ALL) | AUROC (FINAL) |
|---|---|---|
| (combined) | 0.721 | 0.750 |
| (gate) | 0.710 | 0.743 |
| -only | 0.715 | — |
| Market volatility (21d) | 0.596 | 0.569 |
| Mean stock volatility | 0.590 | 0.460 |
| VIX percentile | 0.449 | 0.504 |
| Bucket | Mean | Mean RankIC | % Bad days |
|---|---|---|---|
| 0 (lowest) | 0.006 | 0.011 | 51.2% |
| 1 | 0.236 | 0.065 | 34.3% |
| 2 | 0.573 | 0.114 | 22.0% |
| 3 (highest) | 0.939 | 0.153 | 11.5% |
| Period | Mean | % Abstain | Mean IC | Mean VIX% | VIX | |
| Crisis episodes | ||||||
| COVID recovery 2020 | 0.375 | 47% | 0.062 | 52% | ✓ | ✓ |
| Meme mania 2021 | 0.210 | 73% | 0.040 | 96% | ✓ | |
| Inflation shock 2022 | 0.077 | 86% | 0.024 | 72% | ✓ | ✓ |
| Late hiking 2023 H2 | 0.381 | 40% | 0.034 | 94% | ✓ | |
| AI rotation 2024 | 0.123 | 76% | 0.013 | 95% | ✓ | ✓ |
| Normalizer | Low- | Mid- | High- | Spread | Mean width |
|---|---|---|---|---|---|
| Raw (none) | 0.982 | 0.938 | 0.781 | 0.201 | 0.674 |
| DEUP / | 0.895 | 0.904 | 0.898 | 0.009 | 0.647 |
| DEUP / ( ) | 0.921 | 0.897 | 0.879 | 0.042 | 0.640 |
| DEUP / ( ) | 0.924 | 0.897 | 0.878 | 0.046 | 0.640 |
Quantitative Finance
Quantitative finance uses mathematical models, statistics, and machine learning to value assets, measure risk, and guide trading and portfolio decisions.
See all 191 papers