Looking ahead without noticing
Seven confirmed look-ahead and misalignment bugs, and why the most famous of them — repainting — produces spectacular results.
The question: How much of a finding is explained purely by having used, without meaning to, information that didn't yet exist?
What was found
It's the class of error that produces the best results of anyone's career. The project confirmed seven: Elliott-wave repainting (15.7 days of average look-ahead), a 2,588-day misalignment in an ensemble, a volatility target computed on an expanding window, a smoothing window that changed with the chart's granularity, the era-unmatched null, an ETF-flow z-score computed over a calendar index when the series was business-day, and degenerate weights that turned an entire backtest into NaN. Every new hand-written script is another roll of the dice against the same class of bug; which is why the project's first corrective measure wasn't statistical but engineering: one single validation library with unit tests, and the previous 137 scripts frozen.
Try it yourself
How much looking ahead hands you for free. Set the days of look-ahead that leak in and the asset's daily drift, and compare with the edge the signal claims.
Edge left after subtracting it (%):
It's an order-of-magnitude estimate, not a measurement of the Elliott case: getting a move's sign right with fifteen days' notice is worth roughly what the asset moves in that span, and a price moves with the square root of time. It does what it needs to do: show that with 15.7 days of look-ahead you need no signal at all to produce a spectacular finding.
Illustrative example numbers for practice — not real data.
How it was tested, step by step
- Repainting is the most illustrative case. You don't know a local high was a high until price has fallen away from it. An indicator that marks that high on the date it happened, rather than the date it was confirmed, is putting future information into the past.
- The corrected version only counts a pivot as actionable once the days needed to confirm it have passed. With that correction, the Elliott finding disappears entirely.
- The project's validation library includes a repainting DETECTOR, with a unit test that reproduces the Elliott bug exactly and requires it to fire. A test that doesn't catch the error that already cost you two weeks isn't doing its job.
- And a sanity check that saved another sweep: an assertion about the Fourier transform's convention caught, in two successive iterations, that the cross-correlation was reversing the direction of time. Without that self-check a finding with the future inside it would have been published.