The Core Problem
Different signals peak at different horizons. A fast mean-reversion signal might peak at 3 days, while a slow momentum signal peaks at 63 days. How do we combine them?
Decay Curve Estimation
For each signal, estimate IC at multiple horizons and fit a parametric decay curve:
IC(h) = peak_ic × (1 - exp(-h/rise_hl)) × exp(-max(0, h-peak_h)/decay_hl)
Horizons to test: [1, 2, 3, 5, 10, 21, 42, 63, 126, 252] days
Daily IC Derivation
The key insight: weight signals by their daily IC, not peak IC. Daily IC represents marginal predictive value of daily signal updates:
daily_ic = peak_ic × (1 - exp(-1/rise_halflife)) × exp(-max(0, 1-peak_horizon)/decay_halflife)
| Signal Type | Peak IC | Peak Horizon | Daily IC | Implied Weight |
|---|---|---|---|---|
| Fast mean-reversion | 0.04 | 3 days | 0.035 | ~54% |
| Medium momentum | 0.05 | 21 days | 0.012 | ~23% |
| Slow momentum | 0.06 | 63 days | 0.004 | ~13% |
| Carry | 0.04 | 126 days | 0.002 | ~10% |
Signal Weight Computation
net_daily_ic = daily_ic - annual_transaction_cost / 252
ic_weights = net_daily_ic / sum(net_daily_ic)
final_weights = shrinkage × equal_weight + (1-shrinkage) × ic_weights
Shrinkage of 0.3-0.5 provides robustness to estimation error.
Single-Book vs Multi-Book
Recommendation: Use a single-book architecture. Transaction cost penalty in the optimizer naturally handles horizon-appropriate rebalancing. Slow signals have tiny daily IC → optimizer won’t trade them aggressively.
Mathematical Formulation
The decay curve can be expressed more formally as:
\[IC(h) = IC_{\text{peak}} \cdot \left(1 - e^{-h/\tau_r}\right) \cdot e^{-\max(0, h-h_{\text{peak}})/\tau_d}\]where:
- $h$ is the forecast horizon (days)
- $IC_{\text{peak}}$ is the maximum information coefficient
- $h_{\text{peak}}$ is the horizon at which IC peaks
- $\tau_r$ is the rise half-life
- $\tau_d$ is the decay half-life
The daily IC is simply $IC(1)$, representing the value of today’s signal update for tomorrow’s returns.