Quant Memo
Core

Feedback Loops and Self-Fulfilling Predictions

A model that acts on its own predictions can end up changing the very world it is trying to predict — sometimes proving itself right for the wrong reason, sometimes destroying the pattern it was built to exploit.

Prerequisites: Training-Serving Skew

Most models are trained on data generated by a world that doesn't know or care about the model's predictions. But once a model is deployed and acts on what it predicts, it can start contaminating its own training data. A trading model that predicts a stock will rise and then buys it can, if it trades enough size, actually push the price up — making the prediction "come true" for reasons that have nothing to do with the original signal. The next round of training data now contains an outcome the model itself caused, and the model learns to trust a pattern that only exists because it acted on it.

Two shapes of the loop

The first is the self-fulfilling version: the model's action reinforces its own prediction. A momentum signal buys a stock that's been rising; the buying adds to demand; the price keeps rising; the model's training data records another "successful" momentum trade, when part of the return it's now attributing to momentum was actually its own market impact. The model becomes overconfident in a signal that partly measures its own footprint rather than a real, independently existing pattern.

The second is the self-defeating version: the model's action erodes the very pattern it exploited. A statistical-arbitrage model finds a mispricing between two related stocks and trades on it; its trading (and everyone else's copying the same signal) pushes the prices back toward fair value, closing the gap faster each time it's exploited. Over time the signal's edge decays not because the underlying economic relationship changed, but because the population of models exploiting it changed the market's response to it. This is a version of alpha decay, but framed as a feedback loop rather than a slow drift: the model is actively consuming the resource it was built to harvest.

model predicts trade executed market moves becomes next label
The model's own trades change the market it then re-learns from. Whether that closes the loop into false confidence or into decay depends on which direction the model's impact pushes prices.

Worked example: sizing away a self-fulfilling bias

A momentum model buys $10 million of a stock trading $50 million in daily volume when it predicts a rise. Suppose academic estimates put price impact at roughly 10 basis points per 1% of daily volume traded (a common rough rule of thumb for large-cap impact). $10 million against $50 million in daily volume is 20% of the day's volume, so the expected impact is about 20 × 10 = 200 basis points, or 2%, added to the stock's price purely from the trade itself. If the model's average predicted move on these signals is 3%, then roughly two-thirds of the realized move (2% of 3%) could be mechanical impact from the model's own trade rather than the momentum effect it believes it found. Cutting the trade size to 2% of daily volume brings the mechanical impact down to about 0.2%, a small fraction of the predicted 3% move, and makes the label the model trains on next round much closer to a genuine, model-independent signal.

When a model's own actions are large enough to move the market it's predicting, its training data stops being an independent measurement of the world. Position sizing relative to available liquidity is a feedback-loop control, not just a risk control.

What this means in practice

The standard defense is keeping trade size small relative to the liquidity of the instrument, so any individual model's footprint is a rounding error in the price move rather than a meaningful driver of it — this is also why the same signal, backtested at small size versus deployed at large size, can show very different live performance. A second defense is separating the evaluation data from any period the model itself was live and trading, since a backtest run on history the model helped create is not an honest test. Firms running many models on correlated signals also have to watch for a fleet-level version of this loop: if twenty uncorrelated-looking models are all secretly reacting to the same underlying momentum pattern, their combined trading can create the very feedback loop that no single model's backtest would reveal in isolation.

Practice

  1. A model's backtest assumes zero market impact. Explain, using the mechanism above, why this assumption biases the backtest's estimate of the signal's persistence, not just its cost.
  2. Two competing desks trade near-identical size on the same momentum signal without knowing about each other. Why might each desk's individual capacity analysis understate the total feedback effect on the market?

The common mistake is treating feedback-loop risk as purely a live-trading cost problem (slippage, impact) rather than a data-integrity problem. Even if the impact cost is "acceptable," a model trained on labels its own trading helped generate is measuring a mixture of the real signal and its own footprint, and that mixture will not survive a change in trade size or a competitor entering the same trade.

Related concepts

Practice in interviews

Further reading

  • Sculley et al., Hidden Technical Debt in Machine Learning Systems (2015)
ShareTwitterLinkedIn