Define exactly what the model is predicting and align that horizon with portfolio execution. The current research target is a five-session sector-neutral residual-return rank, not a raw one-day return or an uncalibrated expected-return estimate.
For a signal observed after session t:
- Enter at
open[t+1]. - Exit at
open[t+6], after five complete trading sessions. - Calculate the log forward return.
- Subtract the same-date point-in-time sector mean, falling back to the market mean for small sector groups.
- Convert residuals to a centered cross-sectional percentile rank in
[-0.5, 0.5].
This matches the weekly rebalance interval and prevents the rank model from treating broad market or sector moves as stock-selection skill.
- Close-to-close and fill-timing mismatches were removed from the validated path.
- The target, signal date, next-open entry, and five-session holding period now share one contract.
- Raw forward returns remain available for portfolio simulation, while the centered rank is used for prediction evaluation.
fama_french.pynow supplies an experimental alternative: subtract market, SMB, and HML returns using trailing historical-only betas before sector neutralization and ranking.- In a fixed 182-week A/B, the FF3 target improved the point estimate but failed its bootstrap, shuffled-score, and factor-alpha significance gates, so it did not replace the current target.
- Sector neutrality relies on inferred rather than official historical classifications.
- A rank target improves robustness but does not directly determine economically optimal sizing.
- Alternative horizons must be separate preregistered experiments, not post-result adjustments.
- Future untouched work may compare the two targets inside nested, purged selection, with the target choice frozen before confirmation.