Sentinel ← back to the live book

How this works

A robot reads the news all day, then bets against the hype.

And it keeps score in public — including when it loses.

The whole thing in one paragraph

Every ten minutes a small computer in my house reads 7 public news and social feeds. When a stock suddenly gets talked about far more than usual, and no real news explains why, it writes that down as a hazard. History says those stocks tend to do slightly worse than the market over the next week — the excitement fades faster than the price. So it places a pretend bet against each one, using fake money, and closes the bet five trading days later. Every bet is recorded forever, win or lose. Right now it is right about 65% of the time and averages +2.97% per bet.

The pipeline, step by step

1

It reads everything, constantly

Every ten minutes it checks official company filings, press releases, Reddit, StockTwits, and records of what politicians are buying and selling. It has collected 33,541 items so far.

Sources are polled on a systemd timer. Each item is de-duplicated by SHA-256 hash, then linked to a stock ticker — via the filing's official company ID where one exists, never by guessing from the text.

2

It throws most of it away

Most 'news' is the same story repeated. About 55% of what it reads gets binned for being a near-copy of something it already saw.

Every item is converted into a list of numbers that represents its meaning (an embedding), then compared against everything from the last few weeks. Too similar to a neighbour ⇒ discarded before it can become an alert.

3

It notices when a crowd gets loud for no reason

If a stock is suddenly mentioned far more than its own normal rate, the system looks for a real filing or press release to explain it. If there isn't one, that's a hazard: attention without news.

Mention counts are turned into a z-score against that ticker's own trailing baseline — so a stock that is always noisy doesn't trip it. A spike with no primary source inside a 6-hour window is flagged. 688 hazards across 355 different stocks so far.

4

It bets against them — carefully

It puts a small, equal amount against every hazard priced between $5 and $100. Never one big bet: dozens of tiny ones, so no single stock can wreck it.

$1,000 of paper credits. Each day's budget is one fifth of the balance, split equally across everything that qualifies — a five-day hold recycles about a fifth of the capital per day. Same stock can't be re-entered for 20 trading days.

5

Five days later it marks its own homework

Every bet closes after five trading days and gets written into a permanent record — whether it worked or not. That record is the actual product.

Returns are measured in trading days from the closing price at the moment the alert became public, against split- and dividend-adjusted prices. Realistic trading costs are deducted, not footnoted.

What survives each stage

Roughly a thousand things read for every one bet placed. The bars are on a log scale, or the last one would be invisible.

33,541
things collectedevery filing, press release and post
15,093
actually new55% were repeats of something already seen
814
worth flaggingcleared the scoring threshold
688
hazard flagsunexplained crowd spikes — the useful ones
407
graded tradesold enough to have a verdict

What one bet actually looks like

This is the part worth understanding, because it explains why the system doesn't care whether the market goes up or down.

It never bets that a stock will fall. It bets the stock will do worse than the stock market as a whole. Two bets are placed at once: against the flagged stock, and for the market.

day 0 day 5 5 trading days later, both legs close both bets start here the market · −2% the flagged stock · −12% gap = +10%

If the market crashes and the stock crashes harder — profit. If the market soars and the stock soars less — also profit. Only the gap matters. That's what "market-neutral" means, and it's why a bad week for stocks generally isn't a bad week for this.

Real bets it has made

Not illustrations — actual rows from the database, best and worst. The last column is the only one that matters.

Its three best

StockFlaggedPrice Stock didMarket did Result
PHOE2026-07-20$36.50-45.2%-0.4%+44.8%
CAST2026-06-22$9.84-43.1%-0.5%+42.6%
SOC2026-06-29$6.97-39.3%+0.9%+40.2%

Its three worst

StockFlaggedPrice Stock didMarket did Result
SLS2026-06-22$8.53+81.1%-0.5%-81.6%
OTLY2026-07-22$10.78+41.6%-2.4%-44.0%
BB2026-06-22$8.79+42.0%-0.5%-42.4%

SLS went up 81% in five days while the system was betting against it. That is called a short squeeze, it is the single biggest risk here, and it is why every bet is tiny and spread across dozens of stocks. One un-capped bet like that would erase twenty-five ordinary wins.

The uncomfortable part

The thing it was built to do doesn't work

Sentinel was built to find genuinely new, important news before the market noticed. It did find it — 126 times. Those alerts turned out to be worth -1.26% over 96 measured cases. That is nothing. The idea was wrong.

The hazard flag — the thing built to throw noise away — was the part that worked, and it sat unreported for weeks because it had been deliberately excluded from every screen that could have shown it. The signal was fine. The scoreboard was broken.

This is why the journal exists and why the losses are on this page. A system that only shows its wins can't tell you which half of itself to throw away.

Things that could still be wrong

← see what it's doing right now