Skip to content

Latest commit

 

History

History
46 lines (34 loc) · 2.14 KB

File metadata and controls

46 lines (34 loc) · 2.14 KB

Prediction target module

Goal

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.

How it works

For a signal observed after session t:

  1. Enter at open[t+1].
  2. Exit at open[t+6], after five complete trading sessions.
  3. Calculate the log forward return.
  4. Subtract the same-date point-in-time sector mean, falling back to the market mean for small sector groups.
  5. 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.

Current achievement

  • 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.py now 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.

Limitations and next work

  • 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.

Related documentation