An end-to-end system that watches the pre-market for unusual volume in small, cheap stocks and trades against what happens next. The underlying economics are simple: getting compensated for bearing risk. It scans roughly 3,000 tickers concurrently at about 1,000 requests per second, working from nanosecond-resolution trade data, correlates what it finds against a ten-source news pipeline, and routes orders through a broker API. It runs unattended and it places real orders, sized small.
I’m not going to publish the strategy, and I’d rather talk about the part that actually taught me something. Five of the six versions lost money, and the useful work was figuring out why rather than trying again harder.
The sixth version is the one trading live capital now, and it looks promising. Its edge held stable across the full tested range, 2021 through 2026, and live trading so far shows the same statistics. I plan to scale it soon.
The news side is its own system. The scraper pulls from ten different sources constantly, and NLP models trained on WPI’s Turing HPC cluster process the feed. Retail news access is normally delayed by minutes; this pipeline has a story readable within ten seconds of publish time, faster than any other retail route I’ve found.
I first tried an agentic workflow, Claude incorporated directly into the algorithm. It worked, but it got expensive fast, which is why I moved to training my own NLP models.
The turning point was a control experiment. I took the labels on my ranking model, scrambled them so they no longer matched the data, and re-ran the whole evaluation. The model scored almost as well on nonsense as it did on the real thing. That meant whatever edge I was seeing came from the rules underneath, not from the machine learning, so I documented it and cut the model rather than trade something I couldn’t defend.
I also learned to write down what would make me quit before running the test. On one strategy I set a threshold in advance: 40 percent of my target universe had to be reachable for the strategy to live. I measured 17, recorded the strategy as dead, and rescoped instead of moving the line after the fact.
A lot of the rest was market microstructure learned the hard way. Some trades get reported to the tape late, so a trade from yesterday afternoon can appear stamped with this morning’s time and show up as a volume spike that never happened. That bug survived three versions before I caught it.
Separately, I built a research dataset that includes 23,260 delisted companies alongside 13,022 active ones, 6.68 million daily bars in all, because a backtest that only looks at companies still trading today quietly assumes you picked the survivors.