Writing · 27 Aug 2026
My trading system writes down why every trade failed, then refuses to learn from most of it
An AI handed a pile of losing trades will happily invent a lesson from noise. Aegis lets a model propose lessons but never accept them, and a sealed out of sample test does the accepting. So far it has accepted zero, which is the right answer.

The most dangerous sentence in machine learning for trading is "the system learns from its mistakes." It sounds responsible. It is usually how people talk themselves into overfitting.
Hand a language model a stack of losing trades and ask what went wrong, and it will always find an answer. It is very good at answers. It will tell you the losses clustered in choppy markets, or after earnings, or on Tuesdays, and every one of those stories will sound plausible, and most of them will be the model drawing a face in the noise. A losing strategy plus a fluent narrator is not learning. It is a machine for generating confident nonsense.
So the learning loop in Aegis is built to do the opposite of what it sounds like it should. It lets a model propose all the lessons it wants, and it never once lets the model decide whether a lesson is true.
What the loop actually does
Every time a trade closes, it becomes an episode: an immutable, hash chained record of what was bought, why the rules bought it, the market it opened in, how far it ran up before it ran down, and how it ended. The chain is tamper evident on purpose, so the record I learn from cannot quietly drift.
Then a small model writes a post mortem on each closed trade, one falsifiable hypothesis about what generalisable thing was over or under weighted. These are cheap and I let them pile up. They are candidate ideas, not conclusions.
Once a week, a bigger model does the reflection. It is shown the aggregate statistics over an older slice of the trades and asked to nominate a handful of lessons, each a concrete claim of the form "within this kind of setup, this metric is negative." That is the only thing the model is allowed to do. Nominate.
Then the gate takes over, and the gate is deterministic. Every nomination is re tested on a held out slice of newer trades that the model was never shown. If the claimed pattern holds up out of sample with enough trades to matter, it is confirmed. If the newer slice contradicts it, it is rejected and recorded as rejected. The model gets a vote. The sealed data gets the verdict.
Even a confirmed lesson does not change any account by itself. It only ever reaches the memory accounts at a window boundary, and if it proposes an actual rule change, a human has to approve that by hand. The code never rewrites its own rules.
The number that matters
Across the run so far I have around three hundred and sixty post mortems sitting in the pile. The gate has confirmed zero lessons.
For a while that looked like the loop was broken. It is not. It is the loop being honest. The strategy is roughly break even, and when a strategy is break even, there is usually no clean, scoped edge hiding inside it for the gate to find. A learning loop that manufactures a lesson from break even data is not smarter than one that returns nothing. It is just less honest. Zero confirmed lessons is the correct output when there is nothing there.
The twist I did not expect
Here is the part I liked. The formal gate found nothing, but the pile of post mortems, read in aggregate, was not silent at all. When I clustered a few hundred of them, two themes came up again and again with a consistency single trades never have. The entry signal fires without enough directional confirmation and gets chopped up. The stop is set too tight for how far these trades naturally wobble, so winners give back their gains, and worse, the stop meant to cap a loss slips past it on a gap.
The gate could not confirm those as lessons, and it was right not to, because they are not edges inside the strategy. They are flaws in the design of the strategy. That is a different kind of finding, and it is exactly the raw material for the next version. I wrote them down as hypotheses to test, clearly labelled as hypotheses, not as things to act on now.
That is the whole shape of it. The model is a fast, tireless source of ideas, and ideas are cheap and often wrong. The sealed test is a slow, unglamorous judge, and the judge is the only thing allowed to say yes. When the honest answer is nothing, the loop says nothing, and it turns out the pile of rejected ideas was still worth reading.