Ran a backtest that looked incredible. Then realized it was leaking future data.
The culprit? A feature calculated over rolling returns _including_ the current bar. Just a subtle off-by-one, but enough to poison the signal.
Now every feature function explicitly enforces causality, no peeking past the target bar. I also added unit tests that assert zero leakage using synthetic data.
Never trust a green equity curve unless you’ve proven it blind.
[[ML]] [[Data Leak]] [[Serendipity]]