The R²=0.997 Lie: The Most Common Backtest Self-Deception
Key takeaways
- A model that predicts tomorrow’s price level at R²=0.997 is almost always just repeating today’s price.
- Price levels are trivially autocorrelated, so a near-perfect fit on levels proves nothing tradeable.
- Measured on returns — the change you actually trade — that same model’s explanatory power collapses toward zero.
- The collapse is not failure. It is the truth the level chart was hiding.
- Rule we adopted: measure what you trade. You trade the change, not the level.
Our research program began the way many do: train a model to predict a stock’s next-day price. It scored an R² of 0.997 — visually a near-perfect fit, the prediction line sitting almost exactly on top of the actual price. It was also completely worthless, and understanding precisely why is the single most useful lesson in quantitative investing. It is why almost every result we publish is measured on returns, out-of-sample, after costs.
Why does 99.7% accuracy mean nothing here?
Tomorrow’s closing price is almost identical to today’s. Day-to-day moves are a fraction of a percent against a price that might be $400. So a model that simply learns the rule “tomorrow ≈ today” will be right to three decimal places nearly every day — not because it understands the market, but because prices move slowly and are highly autocorrelated in levels. The chart looks like genius. The model has learned nothing you can trade. It has learned that $400 is followed by about $400.
The tell is the lag. Plot the “prediction” against the actual price and it tracks beautifully — but shifted one day to the right. The model is not forecasting tomorrow; it is reporting today and calling it a forecast. Any naive “predict the last value” baseline scores nearly the same R². That baseline has zero information, which is exactly how much information the fancy model added.
What is the honest test?
Predict the return — the percentage change from today to tomorrow — not the level. Returns strip out the autocorrelation that flatters level predictions and leave only the part you can actually profit from. They are also very close to unpredictable, so the moment you switch the target from level to return, R² collapses from ~0.997 toward roughly zero. Newcomers see that and think the model broke. It did not. The 0.997 was the illusion; the near-zero is the reality of forecasting returns.
| What the model predicts | Apparent R² | Information added |
|---|---|---|
| Tomorrow’s price level | ≈ 0.997 | None — echoes today |
| “Predict last value” baseline | ≈ 0.997 | Zero, by construction |
| Tomorrow’s return (the change) | ≈ 0.00 | The honest answer |
How do you catch it in any backtest?
- If a price-prediction model looks near-perfect, assume it is predicting the level and re-score it on returns.
- Always run the dumb baseline (“tomorrow = today”). If your model barely beats it, you have no edge.
- Be suspicious of any equity curve that is too smooth or any R² above a few percent on a daily horizon.
- Measure the strategy on the thing you would actually trade — the return, net of costs — never the level.
The rule we adopted
Measure what you trade. You do not trade the price level; you trade the change. A backtest that scores the level is grading the wrong exam — and it will pass every time while telling you nothing.
About this series: every figure comes from a leak-free research harness on US equities — point-in-time index membership, fundamentals keyed to filing date, expanding-window walk-forward, and transaction costs charged. Statistics are gross and in-sample unless noted, and describe published anomalies, not a Yayati product. Standing caveats: roughly a third of true historical index members are unpriced by the naive data source (survivorship); a 2 bps cost assumption is optimistic; fundamentals are post-2009 XBRL.
Keep reading
This article is for educational and informational purposes only and is not investment, tax, or legal advice. It describes findings from an internal research program about publicly documented market anomalies and research methodology; it is not a description of any Yayati product or its results. Research statistics are gross, in-sample illustrations subject to survivorship, data-coverage, transaction-cost, and modeling limitations described in the text, and do not represent actual trading or any client account. Past performance and backtested results are not indicative of future results. Yayati Asset Management is a Registered Investment Adviser. © Yayati Asset Management. VOLT™ and PLASMA™ are trademarks of Yayati.
See VOLT™ on a real position.
The tax-smart option overlay behind this paper, for concentrated stock.