Factor Analysis: Alpha Signal Evaluation¶
Research question. Which price-based factors contain predictive information for future returns in a small liquid-equity universe, over what horizon, and with what robustness?
Factor hypotheses¶
| Factor | Type | Formula | Lookback | Signal Direction | Expected Horizon |
|---|---|---|---|---|---|
| Momentum 12-1 | Trend | P(t-21)/P(t-252) − 1 | 252d | Positive = long | Medium (21d+) |
| XS Momentum | Relative | Cross-sectional rank of Momentum | 252d | Higher rank = long | Medium (21d+) |
| RSI | Mean-reversion | 50 − RSI(14) | 14d | Positive = oversold | Short (1-5d) |
| Bollinger | Mean-reversion | −(P − SMA₂₀) / σ₂₀ | 20d | Positive = below band | Short (1-5d) |
0. Setup¶
1. Data & Universe¶
Universe: ['AAPL', 'AMZN', 'GOOGL', 'GS', 'JNJ', 'JPM', 'META', 'MSFT', 'NVDA', 'PG', 'UNH', 'V', 'WMT', 'XOM'] Period: 2020-01-02 to 2026-05-15 Shape: 1601 trading days × 14 tickers
Usable signal days per factor: Momentum 12-1: 1349 days (burn-off = 252d) XS Momentum: 1349 days (burn-off = 252d) RSI: 1587 days (burn-off = 14d) Bollinger: 1581 days (burn-off = 20d) Missing data per ticker:
| Missing Days | Coverage (%) | |
|---|---|---|
| AAPL | 0 | 100.000000 |
| AMZN | 0 | 100.000000 |
| GOOGL | 0 | 100.000000 |
| GS | 0 | 100.000000 |
| JNJ | 0 | 100.000000 |
| JPM | 0 | 100.000000 |
| META | 0 | 100.000000 |
| MSFT | 0 | 100.000000 |
| NVDA | 0 | 100.000000 |
| PG | 0 | 100.000000 |
| UNH | 0 | 100.000000 |
| V | 0 | 100.000000 |
| WMT | 0 | 100.000000 |
| XOM | 0 | 100.000000 |
Universe note. All 14 names are current large-cap equities selected with hindsight. Survivorship bias is present: companies that declined or delisted are excluded, so results likely overstate realised performance. A production system would use a point-in-time universe (e.g. S&P 500 constituents as of each rebalance date).
2. Signal Generation¶
Momentum 12-1: first signal on 2020-12-31 (18886 total values) XS Momentum: first signal on 2020-12-31 (18886 total values) RSI: first signal on 2020-01-23 (22218 total values) Bollinger: first signal on 2020-01-30 (22148 total values)
Observations.
- Momentum 12-1: positively biased (mean 0.25), right-skewed (1.84), excess kurtosis 6.6. The right tail reaches +3.0 (outlier performers, likely NVDA in 2023-24); the left tail is bounded near −0.71, since a stock can lose at most ~100% while gains are unbounded.
- XS Momentum: approximately uniform on (0, 1] by construction (percentile rank): skewness ~0, kurtosis −1.2 (platykurtic).
- RSI: nearly symmetric (skew ~0), slight negative mean (−3.8), so names spent marginally more time overbought than oversold. Platykurtic (kurtosis −0.5), spread across [−50, +47].
- Bollinger: negative bias (mean −0.24, median −0.40), reflecting the upward drift of equities (prices spend more time above the rolling mean, giving negative values after negation). Platykurtic (kurtosis −0.8) and non-Gaussian: the mode sits left of zero, drops steeply, flattens to a near-uniform plateau through zero, then tapers on the right. The 20-day window mixes trending and mean-reverting regimes.
3. Forward Returns¶
We compute forward returns at multiple horizons to test each factor at its expected time scale. Momentum factors are hypothesised to predict at 21d+; mean-reversion factors at 1-5d.
Forward return shapes: 1d: 1600 usable days 5d: 1596 usable days 10d: 1591 usable days 21d: 1580 usable days
| Mean (bps) | Std (bps) | Skewness | Kurtosis | N obs | |
|---|---|---|---|---|---|
| Horizon | |||||
| 1d | 9.600000 | 206.900000 | 0.080000 | 12.130000 | 22400 |
| 5d | 47.100000 | 440.000000 | -0.070000 | 4.210000 | 22344 |
| 10d | 93.200000 | 615.200000 | -0.050000 | 3.010000 | 22274 |
| 21d | 195.400000 | 895.700000 | 0.150000 | 2.920000 | 22120 |
Observations.
- Mean scales linearly with horizon (~10 bps/day): 1d 9.6 bps, 5d 47 bps, 10d 93 bps, 21d 195 bps. This reflects the universe's average upward drift (~24% annualised, consistent with a survivorship-biased large-cap sample over 2020-2026).
- Volatility scales as √h: 1d std 207 bps, 21d std 896 bps. The ratio 896/207 = 4.3 ≈ √21 = 4.6, confirming approximate diffusive scaling and little serial correlation.
- Kurtosis decays with horizon: 1d 12.1 (fat tails from single-day moves), falling to ~3.0 at 21d. This is aggregational Gaussianity: longer-horizon returns approach normality by the CLT.
- Skewness is near zero at all horizons, slightly negative at 5-10d and slightly positive at 21d.
Forward returns use simple percentage changes. For h ≤ 21 days the difference from log returns is negligible (<5 bps of bias at 21d).
4. IC Analysis¶
The Information Coefficient (IC) is the daily cross-sectional Spearman rank correlation between today's signal and the subsequent forward return. It answers: does ranking stocks by this signal predict the ranking of their future returns?
With N = 14 stocks, the standard error of a single day's IC is ≈ 1/√(N−1) ≈ 0.28, very noisy. Statistical power comes from averaging across ~1,300+ daily observations.
| Factor | Horizon | Mean IC | ICIR | t-stat | Hit Rate | N Dates | |
|---|---|---|---|---|---|---|---|
| 0 | Momentum 12-1 | 1d | 0.0177 | 0.045 | 1.64 | 52.4% | 1348 |
| 1 | Momentum 12-1 | 5d | 0.0231 | 0.059 | 2.17 | 54.2% | 1344 |
| 2 | Momentum 12-1 | 10d | 0.0246 | 0.065 | 2.37 | 55.3% | 1339 |
| 3 | Momentum 12-1 | 21d | 0.0402 | 0.109 | 3.98 | 59.2% | 1328 |
| 4 | XS Momentum | 1d | 0.0177 | 0.045 | 1.64 | 52.4% | 1348 |
| 5 | XS Momentum | 5d | 0.0231 | 0.059 | 2.17 | 54.2% | 1344 |
| 6 | XS Momentum | 10d | 0.0246 | 0.065 | 2.37 | 55.3% | 1339 |
| 7 | XS Momentum | 21d | 0.0402 | 0.109 | 3.98 | 59.2% | 1328 |
| 8 | RSI | 1d | 0.0042 | 0.012 | 0.48 | 51.7% | 1586 |
| 9 | RSI | 5d | 0.0055 | 0.017 | 0.66 | 50.6% | 1582 |
| 10 | RSI | 10d | 0.0125 | 0.038 | 1.50 | 51.1% | 1577 |
| 11 | RSI | 21d | 0.0140 | 0.042 | 1.67 | 48.7% | 1566 |
| 12 | Bollinger | 1d | 0.0032 | 0.009 | 0.36 | 51.7% | 1581 |
| 13 | Bollinger | 5d | 0.0094 | 0.028 | 1.12 | 52.1% | 1577 |
| 14 | Bollinger | 10d | 0.0264 | 0.079 | 3.14 | 55.1% | 1572 |
| 15 | Bollinger | 21d | 0.0357 | 0.107 | 4.23 | 53.4% | 1561 |
Observations.
- Momentum factors are significant at longer horizons. Both Momentum 12-1 and XS Momentum reach t = 3.98 at 21d (ICIR 0.109, hit rate 59.2%); at 1d they are insignificant (t = 1.64). Momentum predicts monthly returns more than daily ones.
- Momentum and XS Momentum produce identical ICs. XS Momentum is the cross-sectional rank of Momentum, and Spearman IC is already a rank correlation, so ranking an already-ranked signal changes nothing. They are redundant for IC (though they can differ in portfolio construction).
- RSI shows no significant predictive power at any horizon. Its best case is 10d (t = 1.50), below the t > 2 bar; hit rates hover near 50%. RSI(14) does not carry usable signal in this universe over this period.
- Bollinger is significant at intermediate horizons. Insignificant at 1d (t = 0.36) but significant at 10d (t = 3.14) and 21d (t = 4.23, ICIR 0.107). This is intermediate mean-reversion rather than the overnight bounce the initial hypothesis assumed: the signal may capture stocks that deviated from trend and take 2-4 weeks to revert.
- IC magnitudes are modest (0.02-0.04), typical for single price-based factors in liquid equities. The signals are weak individually but may combine, given their different mechanisms.
5. IC Decay¶
How quickly does each signal's predictive power fade? The decay curve shows mean IC at every forward lag from 1 to 42 days. The shape indicates the signal's natural holding period, and whether it behaves as a momentum or mean-reversion effect.
Observations.
- Momentum (both variants) shows no decay; IC increases almost monotonically from 0.018 at lag 1 to 0.049 at lag 42, with no flattening. This is consistent with a persistent trend signal. The 42-day window is likely still short of the peak; the momentum literature finds holding periods of 3-12 months. (In a trending sample, rising IC with horizon can also reflect the trend rather than added prediction; see the Section 10 caveat.)
- Bollinger has a hump-shaped decay. IC rises from near-zero at lag 1, peaks near lag 17 (IC ≈ 0.038), then decays toward zero by lag 42. This implies a natural holding period of ~15-20 days, consistent with the slow mean-reversion in Section 4; a Bollinger strategy should rebalance every 2-3 weeks.
- RSI is the weakest signal at every lag. IC peaks near lag 17 (≈ 0.017) and crosses zero near lag 34, never clearly above the noise floor. A brief dip near lag 2-3 hints at a very short-lived reversal too fleeting to capture at daily rebalancing.
- Momentum and XS Momentum overlap exactly, confirming the redundancy from Section 4: rank-transforming a signal does not change its Spearman IC decay.
- Rebalancing implications: momentum benefits from monthly+ holding; Bollinger from ~3-week holding; RSI offers no clear holding period.
6. Factor Correlation¶
Are the four factors redundant or do they capture different information? A correlation matrix of the signals shows which pairs rank stocks similarly and which are independent, which decides whether a multi-factor combination adds value.
Caveat on market regime (tested formally in Section 9):
The 2020-2026 sample is predominantly a bull market (post-COVID recovery, AI boom). Momentum mechanically benefits from trending markets, and the survivorship-biased universe amplifies this. NVDA alone (7% of the cross-section) likely drives a disproportionate share of momentum IC in 2023-24. The modest IC magnitudes (~0.04), the inclusion of stress periods (COVID crash, 2022 rate hikes), and Bollinger's regime-independent significance suggest the results are informative but likely somewhat inflated. Sub-period and leave-one-out tests in Section 9 quantify this.
Observations.
- Two factor families emerge. The correlation matrix is block-diagonal: momentum factors correlate at ρ = 0.79, mean-reversion factors at ρ = 0.88, and the two families are near-orthogonal (cross-family ρ ≈ −0.02 to 0.00).
- Momentum vs XS Momentum (ρ = 0.79): high but not perfect. The rank transform compresses extremes: a 200% and a 50% momentum stock both rank near the top, but their raw signals differ by 4×. Raw momentum overweights extreme winners; ranked momentum spreads weight more evenly.
- RSI vs Bollinger (ρ = 0.88): high. Both measure price below recent trend (RSI via relative gain/loss, Bollinger via z-score), so they flag the same stocks on the same days. With RSI's lack of IC significance, this supports dropping RSI in favour of Bollinger.
- Cross-family independence (ρ ≈ 0): momentum and Bollinger capture different information, so a combined signal would diversify rather than double-count. A composite Momentum + Bollinger factor is a natural next step.
7. Quantile Portfolio Analysis¶
Moving from statistical correlation (IC) to realised portfolio returns. Each day, we go long the top 3 stocks by signal and short the bottom 3, forming an equal-weight long-short spread. With N = 14 stocks, top/bottom 3 captures the extremes (~20% tails) while maintaining enough diversification to avoid single-stock dominance.
| Factor | Ann. Return (%) | Ann. Vol (%) | Sharpe | Hit Rate | N Days | |
|---|---|---|---|---|---|---|
| 0 | Momentum 12-1 | 6.700000 | 30.200000 | 0.220000 | 51.9% | 1348 |
| 1 | XS Momentum | 6.700000 | 30.200000 | 0.220000 | 51.9% | 1348 |
| 2 | RSI | 3.800000 | 27.100000 | 0.140000 | 51.1% | 1586 |
| 3 | Bollinger | -1.700000 | 27.900000 | -0.060000 | 50.3% | 1581 |
Observations.
- All spread Sharpes are weak (< 0.25), despite the significant IC findings. IC significance does not automatically translate to tradeable portfolio returns.
- Momentum leads but modestly (ann. return 6.7%, Sharpe 0.22, hit rate 51.9%). The IC-to-spread gap arises because the spread uses 1-day forward returns while momentum's IC peaks at 21d+: daily rebalancing captures the signal one day at a time, diluting an edge that accumulates over weeks. A monthly-rebalanced version would likely do better (tested in Section 8).
- Momentum and XS Momentum are again identical, since top/bottom 3 by raw momentum and by momentum rank select the same stocks.
- RSI is weakly positive (ann. return 3.8%, Sharpe 0.14), consistent with its insignificant IC. The small positive return likely reflects the market's upward drift in the long leg.
- Bollinger is slightly negative (ann. return −1.7%, Sharpe −0.06). Despite the strongest IC at 10-21d, daily long-short rebalancing captures noise rather than the reversion, which needs 2-3 weeks (Section 5). Rebalancing frequency should match the signal horizon.
- Volatility is high for all spreads (~27-30% annualised), driven by the small universe: with 3 stocks per leg, idiosyncratic risk dominates. A larger universe should reduce this.
8. Backtested Performance¶
The vectorized backtester constructs a dollar-neutral, unit-gross-exposure portfolio from each signal daily, then applies 10 bps round-trip transaction costs proportional to turnover. Unlike Section 7's equal-weight top/bottom 3, positions here are proportional to signal strength, so stocks with extreme signals receive larger weights.
| annualized_return | annualized_volatility | sharpe_ratio | sortino_ratio | max_drawdown | beta | alpha | |
|---|---|---|---|---|---|---|---|
| Factor | |||||||
| Momentum 12-1 | 3.59% | 14.28% | 0.32 | 0.30 | -26.45% | -0.019 | 4.86% |
| XS Momentum | 1.22% | 11.10% | 0.16 | 0.15 | -24.72% | -0.017 | 2.12% |
| RSI | -9.62% | 11.92% | -0.79 | -0.80 | -49.60% | -0.036 | -8.81% |
| Bollinger | -11.27% | 12.04% | -0.93 | -0.91 | -57.54% | -0.030 | -10.75% |
Best factor by Sharpe: Momentum 12-1
Observations.
- Momentum 12-1 is the only factor with a positive Sharpe (0.32, ann. return 3.6%). XS Momentum is weaker (Sharpe 0.16) despite identical IC, because raw momentum gives larger weights to extreme winners (proportional sizing) while XS Momentum compresses signals into a [0, 1] rank. Where a few stocks (NVDA, META) dominate returns, proportional weighting captures more of the edge.
- RSI and Bollinger are deeply negative (Sharpe −0.79 and −0.93). Bollinger had the strongest IC (t = 4.23 at 21d) yet the worst backtest. The cause is turnover: mean-reversion signals change rapidly day-to-day (average daily turnover ~0.37-0.45) versus momentum's 0.07. At 10 bps per unit of turnover, that costs ~9-11% per year, enough to turn a marginal signal into a loser.
- Beta is near zero for all factors (−0.02 to −0.04), confirming the dollar-neutral construction. These strategies have minimal market exposure.
- Max drawdowns are severe: momentum −26%, Bollinger −58%. With 14 stocks, concentration and idiosyncratic moves dominate.
IC ≠ P&L. Bollinger's strong IC at 21d does not survive daily rebalancing with costs. Capturing it would need less-frequent rebalancing (~every 15-20 days, per the decay curve) or position smoothing to reduce turnover. Signal quality and implementation efficiency are separate problems.
9. Robustness Tests¶
Four tests challenge whether the IC findings from Section 4 are robust or artefacts of the specific sample:
- Sub-period split: does IC persist in both halves of the sample (pre/post 2024)?
- Leave-one-out: does removing NVDA or META (the most volatile names) destroy the signal?
- Parameter sensitivity: is momentum IC stable across lookback windows, or is 252d cherry-picked?
- Sector split: does the signal work within tech and non-tech separately, or only across the two groups?
9a. Sub-Period Stability¶
| Factor | Horizon | Full IC | Full t | Pre-2024 IC | Pre-2024 t | Post-2024 IC | Post-2024 t | |
|---|---|---|---|---|---|---|---|---|
| 0 | Momentum 12-1 | 21d | 0.0402 | 3.98 | 0.0134 | 0.98 | 0.0756 | 5.07 |
| 1 | XS Momentum | 21d | 0.0402 | 3.98 | 0.0134 | 0.98 | 0.0756 | 5.07 |
| 2 | RSI | 10d | 0.0125 | 1.50 | 0.0076 | 0.71 | 0.0207 | 1.59 |
| 3 | Bollinger | 21d | 0.0357 | 4.23 | 0.0329 | 3.02 | 0.0407 | 3.04 |
Sub-period findings:
- Momentum's full-sample significance (t = 3.98) comes almost entirely from post-2024. Pre-2024 IC is 0.013 (t = 0.98, insignificant); post-2024 IC triples to 0.076 (t = 5.07). This matches the bull-market concern from Section 6: the 2024-2025 rally rewarded momentum. The full-sample result is regime-dependent, and momentum would likely underperform in a mean-reverting or bear market.
- Bollinger is the most stable signal. IC is similar across sub-periods: 0.033 (t = 3.02) pre-2024 and 0.041 (t = 3.04) post-2024. Its edge does not depend on the regime.
- RSI is insignificant in both halves (t = 0.71 and 1.59), confirming no usable signal.
Most volatile (excl. NVDA): META
| Condition | No META | No NVDA |
|---|---|---|
| Factor | ||
| Bollinger | 0.0391 | 0.0335 |
| Momentum 12-1 | 0.0256 | 0.0327 |
| RSI | 0.0108 | 0.0118 |
| XS Momentum | 0.0256 | 0.0327 |
Leave-one-out findings:
- No single stock drives the results. Removing NVDA cuts Momentum IC from 0.040 to 0.033; removing META cuts it to 0.026; neither collapses it. The ~35% drop from removing META suggests it contributes meaningfully to cross-sectional dispersion, but the signal survives.
- Bollinger is unaffected by either exclusion (0.034 without NVDA, 0.039 without META, vs 0.036 full sample), consistent with a broad mean-reversion effect rather than a single-stock anomaly.
- RSI remains weak regardless (~0.011-0.012).
| Horizon | 10d | 21d |
|---|---|---|
| Window | ||
| 126d | 0.0301 | 0.0279 |
| 189d | 0.0215 | 0.0134 |
| 252d | 0.0246 | 0.0402 |
| 378d | 0.0248 | 0.0298 |
| 504d | 0.0079 | 0.0055 |
Sensitivity findings:
- The 252d (12-month) lookback is not cherry-picked, and shorter windows are competitive. The 126d window reaches IC 0.030 at 10d and 0.028 at 21d, comparable to 252d at the 10d horizon. The classic 12-1 (252d lookback, 21d skip) is strongest at its natural 21d horizon (IC 0.040), but the signal is not fragile across the 126-378d range.
- Extreme windows fail. The 504d (2-year) lookback collapses to IC ≈ 0.006-0.008, likely from stale information spanning two regimes. The 189d window is also weak (IC 0.013 at 21d), possibly a sample artefact in this small universe.
- The 10d and 21d horizons differ. At 10d, shorter lookbacks (126-189d) do best; at 21d, the 252d dominates. Faster (6-month) momentum captures short-term continuation; slower (12-month) captures the longer trend.
| Sector | Factor | Mean IC | t-stat | N Tickers | |
|---|---|---|---|---|---|
| 0 | Tech | Momentum 12-1 | 0.0387 | 3.03 | 6 |
| 1 | Tech | Bollinger | 0.0236 | 2.10 | 6 |
| 2 | Non-Tech | Momentum 12-1 | 0.0686 | 5.92 | 8 |
| 3 | Non-Tech | Bollinger | 0.0332 | 3.09 | 8 |
Sector split findings:
- Both factors work within sectors as well as across them. If momentum only ranked all tech above all non-tech it would be a sector bet rather than stock selection. Instead, Momentum reaches IC 0.039 (t = 3.03) within the 6-stock tech group and 0.069 (t = 5.92) within the 8-stock non-tech group.
- Non-tech momentum is stronger (IC 0.069 vs 0.039). Non-tech names (GS, JPM, JNJ, XOM) have more heterogeneous return drivers, so cross-sectional dispersion is larger and momentum has more to separate. Tech names move more together (AI/growth themes), compressing the cross-section.
- Bollinger works in both sectors (tech t = 2.10, non-tech t = 3.09), again stronger in non-tech, likely for the same dispersion reason.
- Caveat: N = 6 and N = 8 are very small. Single-day IC with 6 stocks has SE ≈ 1/√5 = 0.45, so individual days are noise; significance comes from averaging over ~1,300+ days. Directionally encouraging but not definitive without a larger universe.
10. Conclusion & Decision Table¶
Synthesising nine sections of analysis into a single actionable table. Each factor is assessed on three axes: statistical significance (IC t-stat > 2), economic significance (backtest Sharpe after costs), and robustness (stability across sub-periods, stock exclusions, and sectors).
| Best Horizon | Mean IC | t-stat | Backtest Sharpe | Robustness | Decision | |
|---|---|---|---|---|---|---|
| Factor | ||||||
| Momentum 12-1 | 21d | 0.0402 | 3.98 | 0.32 | Regime-dependent | Keep |
| XS Momentum | 21d | 0.0402 | 3.98 | 0.16 | Redundant | Drop |
| RSI | 10d | 0.0125 | 1.50 | -0.79 | Insignificant | Drop |
| Bollinger | 21d | 0.0357 | 4.23 | -0.93 | Stable | Reparameterise |
Key Takeaways¶
IC is necessary but not sufficient. Bollinger has the highest t-stat (4.23) and the most stable robustness profile, yet the worst backtest (Sharpe −0.93). The gap is driven by turnover costs (higher daily turnover).
Signal horizon must match implementation frequency. Momentum's IC peaks at 21d+ and its decay never flattens, so it needs monthly rebalancing; Bollinger's IC peaks near lag 17 and decays, so it needs ~3-week holding. Both were backtested daily, which suits neither. Matching rebalance frequency to signal half-life is the highest-value improvement here.
Two factors survive, two should be dropped. Momentum 12-1 (keep) and Bollinger (reparameterise) capture orthogonal information (cross-family correlation ≈ 0) and are both significant. XS Momentum is redundant (identical IC, weaker backtest). RSI fails every test.
Survivorship bias and regime dependence are real but bounded. Momentum's IC is 6× stronger post-2024 than pre-2024, confirming a bull-market tailwind. But Bollinger is stable across sub-periods, neither factor collapses when removing NVDA or META, and both work within sectors. The findings are directionally valid; the magnitudes are likely inflated.
Next Steps (Phase 3)¶
- Reduce Bollinger turnover: position smoothing or lower-frequency rebalancing (every 15-20 days) to capture the 21d IC without daily costs.
- Composite signal: combine Momentum + Bollinger using IC-weighted z-scores; the near-zero correlation suggests the combination should improve Sharpe (roughly up to √2 under idealised independence).
- Expand universe: move from 14 hand-picked names to S&P 500 constituents with point-in-time membership, to remove survivorship bias and increase cross-sectional power.
- Out-of-sample validation: reserve 2025-2026 as a holdout and train/evaluate on 2020-2024 only.
- Event-driven factors: earnings surprise, short interest, fund flows, which are orthogonal to price-based momentum and mean-reversion.
Methodological Caveats & Known Limitations¶
1. Overlapping forward returns inflate t-statistics.
All IC computations above use daily-computed forward returns. At the 21d horizon, day t's return shares 20 of 21 days with day t+1's. This induces strong serial correlation in the IC series: successive daily ICs are nearly identical because both the signal (slow-moving) and the return window (overlapping) barely change day to day.
The t-statistics in Sections 4 and 9 assume independent observations: t = mean / (std / √N), with N ≈ 1,300 daily ICs. With 21d overlap the effective number of independent observations is closer to N/h ≈ 65, so the t-statistics are overstated by roughly √h ≈ √21 ≈ 4.6. A reported t = 3.98 may be ~0.87 after a Newey-West correction with lag = 21, no longer significant at 5%.
Proper corrections include:
- Newey-West standard errors with bandwidth = horizon, which widen the standard error to account for autocorrelation.
- Non-overlapping IC: compute IC on every h-th day (e.g. every 21st trading day), reducing N from ~1,300 to ~65 but giving independent observations.
- Block bootstrap: resample the IC series in contiguous blocks of length ≥ h, preserving the overlap structure, and take confidence intervals from the resampled distribution.
2. Regime contamination in the IC decay curve.
The monotonically increasing momentum decay curve (Section 5) is suspicious. In a persistent bull market, momentum signals and forward returns are both persistently positive: they reflect the same underlying trend rather than the signal predicting future returns. Extending the forward horizon from 21d to 42d captures more of the ongoing rally, mechanically raising IC without adding predictive content.
A genuinely predictive signal should show a decay curve that peaks and reverts toward zero (as Bollinger's does). The absence of decay in momentum's curve is consistent with measuring the autocorrelation of a trending market. This is reinforced by Section 9a: momentum IC is 6× stronger post-2024, when the rally was strongest.
3. Momentum's structural lag makes it slow to react to regime changes.
The 252d/21d momentum signal does not see price action from the most recent month (the 21-day skip). A stock that rallied for 11 months and then falls 30% in two weeks still shows a positive momentum signal: the fall occupies 10 days of a 231-day window and is outweighed by the accumulated gains.
For example, if NVDA runs from $400 to $900 over 11 months, then drops 30% to $630 in two weeks, the signal on the day the fall ends is still dominated by the $400→$900 rally. It takes roughly 2-3 months of sustained decline, or a single-month fall of 50%+, before the signal turns negative.
This is the tradeoff of long-lookback signals: stability (low turnover, good for costs) against reactivity at turning points. The 21-day skip, meant to filter short-term reversal noise, also removes the most recent information about regime changes. In the 2020-2026 sample this was rarely punished: the COVID crash (March 2020) and the 2022 drawdown were both followed by rapid recoveries, so the stale signal happened to be right by the time it could have been wrong. A prolonged bear market (2007-2009, 2000-2002) would expose this. The 2009 momentum crash is the standard example, where momentum portfolios were long financials and short defensives into the GFC and the signal did not flip until the damage was done.
4. The rolling IC plot is hard to interpret at N = 14.
The rolling IC plots in Section 4 use a 63-day rolling mean of daily ICs. Each daily IC has SE ≈ 0.28 with 14 stocks, and the 63-day window averages over only ~3 independent observations at the 21d horizon (63/21). The resulting waves mix: (a) real regime shifts, (b) noise from the small cross-section, and (c) rolling-window artefacts (a step change convolved with a moving average looks like a smooth cycle). With 100+ stocks the daily IC would be precise enough (SE ≈ 0.10) for rolling analysis; at N = 14 the plot should be read with caution.
5. Multiple testing.
We evaluated 4 factors × 4 horizons = 16 hypothesis tests. At 5% significance we expect ~0.8 false positives by chance. Bonferroni correction (threshold 0.05/16 = 0.003, or t > 2.96) still passes momentum and Bollinger at 21d, but the margin is thinner than the raw t-stats suggest, and this does not account for the overlap inflation in point 1.
6. Survivorship bias does more than shift the mean.
The 14 stocks are all current large-cap winners, selected with hindsight. Survivorship bias does not only inflate mean returns (which washes out in a dollar-neutral strategy); it also inflates momentum specifically, because the surviving stocks are disproportionately those that had strong past returns. A stock that crashed and delisted would have been a strong short signal, but its absence means the cross-section has fewer extreme losers, compressing the short leg and flattering momentum's long/short spread.
7. Small cross-section limits statistical power.
With N = 14 stocks, a single day's Spearman IC has SE ≈ 1/√(N−1) ≈ 0.28, so any individual daily IC below ~0.56 (2 × SE) is indistinguishable from noise. The mean ICs of 0.03-0.04 are detectable only by averaging over thousands of days, and (per point 1) the effective sample is much smaller than the raw day count. A universe of 100+ stocks would reduce single-day SE to ~0.10.