The Bot That Chased Its Own Tail
I once gave my live trading bot what felt like a stroke of intelligence: the ability to adapt. After a run of losses it would grow more cautious; after a run of wins, more aggressive. It seemed responsive, almost alive — a system that paid attention to how it was doing and adjusted accordingly.
What I had actually built was a machine that reacted to noise and called it learning. It tightened and loosened in response to what was mostly small-sample noise, and because each adjustment shaped what happened next, it spent its time anxiously chasing its own tail.
The feature that felt intelligent
The idea was seductive in its reasonableness. If the bot had just lost several times in a row, surely conditions were unfavorable, and it should raise its standards before risking more. If it was on a winning streak, conditions were good, and it could afford to lean in. Adapt to the environment. Respond to feedback. What could be more sensible than a system that adjusts to how it is doing?
I remember being pleased with it. It made the bot feel less like a fixed set of rules and more like something with judgment.
What it was actually adapting to
The problem is what counted as “feedback.” The bot was adjusting based on a tiny number of recent outcomes — a mere handful of trades. And a handful of trades usually carries too little evidence to support a reliable inference about what comes next.
A few losses in a row is one of the most ordinary things that can happen in any sequence of uncertain bets. It is what randomness looks like up close. But the bot could not tell the difference between a meaningful change in conditions and the totally normal clustering of luck, so it treated every short streak as a message and dutifully changed its behavior in response.
Reacting to noise feels exactly like learning
From the inside, overreaction is hard to distinguish from adaptation. The bot was, in a narrow sense, “responding to the market.” But what it was really responding to was variance — the random bunching of wins and losses that occurs in any process with a chance element — and re-labeling that variance as insight.
This is the trap at the heart of a lot of trading machinery, human and automated alike: a string of recent results feels enormously informative and is mostly noise. The faster a system moves to act on those results, the more faithfully it tracks the noise instead of anything real.
The self-reinforcing part
It got worse, because the adjustments fed back into the very thing being measured. Growing cautious after losses meant fewer trades, which meant the next handful of outcomes was even smaller and more erratic, which meant larger swings in the signal the bot was reacting to, which meant sharper adjustments. The system was responding to a number it was itself distorting — a loop with little on the outside to anchor it.
A feedback loop is only as stable as the thing it is anchored to. Mine was anchored mostly to its own recent luck, which is to say, anchored to very little. So it oscillated: cautious, then bold, then cautious again, each swing a reaction to the swing before it rather than to the world.
Why small samples lie
Underneath all of this is a single, unglamorous statistical fact: small samples do not average out, they swing. The whole comfort of “the numbers will tell me” rests on having enough numbers for luck to cancel. A handful of trades is the opposite regime — heavily influenced by chance, where a few good or bad outcomes can drag the average almost anywhere.
Any rule that responds quickly to a short recent window — without an independently validated signal or some real change-detection behind it — is mostly responding to chance. Responsiveness, the very thing that made the feature feel smart, was a large part of what made it wrong here. The quicker that kind of reaction, the closer it gets to superstition.
The fix: react slower, or not at all
The repair, in that prototype, was to take away the bot’s reflexes — to stop letting a short streak of outcomes change its behavior at all. The broader lesson I kept is simpler: distrust adaptations driven by short sequences of results. If a system is going to adjust at all, the evidence for adjusting should be large enough, and gathered slowly enough, to plausibly mean something rather than to track the last few flips of luck.
It is a little counterintuitive that making a system slower to react can make it better. But speed of reaction is only a virtue when there is real signal to react to. When the short-term input is mostly noise, much of the responsiveness you add is just a faster way to be fooled.
Not all adaptation is intelligence
The deepest thing I took from this is a distinction I now hold onto: reacting and learning are not the same act, even though they can wear the same face. Learning extracts a stable pattern from a large body of evidence. Reacting just mirrors the most recent thing that happened. A system that instantly adjusts to its last few outcomes has not necessarily become intelligent. It may have become superstitious — performing little rituals in response to coincidences, convinced it has noticed something.
“It adapts to conditions” sounds like a feature. Some of the time, it is a polite description of a system chasing its own tail. The question is never only whether something adapts. It is whether the thing it is adapting to was ever real.
— No signals, no returns, not investment advice.