Sentinel ← back to the live book

How this works

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

It keeps score in public, including when it loses.

The whole thing in 1 paragraph

Every 10 minutes, a small computer in my house reads 7 public news and social feeds. Sometimes a stock gets talked about far more than usual and no real news explains why. The computer writes that down as a hazard. Stocks like that tend to do slightly worse than the market over the next week. The excitement fades faster than the price. So the computer places a pretend bet against each one with fake money. It closes the bet 5 trading days later. It records every bet forever, win or lose. Right now it is right 58% of the time and averages +0.82% per bet.

The pipeline, step by step

1

It reads everything, constantly

Every 10 minutes it checks company filings, press releases, Reddit, StockTwits, and records of what politicians buy and sell. It has collected 64,352 items so far.

A systemd timer polls each source. It removes duplicates with a SHA-256 hash (Secure Hash Algorithm, 256-bit). Then it links each item to a stock ticker. It uses the filing's official company ID where one exists. It never guesses the ticker from the text.

2

It throws most of it away

Most 'news' is the same story repeated. About 51% of what it reads gets dropped as a near-copy of something it already saw.

It turns each item into a list of numbers that stands for its meaning. That list is called an embedding. It compares each one against everything from the last few weeks. It drops any item too close to a neighbour before that item can become an alert.

3

It notices when a crowd gets loud for no reason

Sometimes a stock gets 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 is a hazard: attention without news.

It turns mention counts into a z-score against that ticker's own recent baseline. A stock that is always noisy does not trip it. It flags a spike that has no primary source inside a 6-hour window. It has found 1,363 hazards across 509 different stocks so far.

4

It bets against them, carefully

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

It starts with $1,000 of paper credits. Each day it risks 20% of the balance. It splits that evenly across every stock that qualifies. A 5-day hold recycles about 20% of the money per day. It cannot re-enter the same stock for 20 trading days.

5

5 days later it marks its own homework

Every bet closes after 5 trading days. It writes the outcome into a permanent record, whether the bet worked or not. That record is the actual product.

It measures returns in trading days, not calendar days. It starts from the closing price at the moment the alert became public. It uses prices adjusted for splits and dividends. It deducts realistic trading costs instead of hiding them in a footnote.

The same thing, as a map

2 loops. The top loop runs every 10 minutes. It decides what is worth noticing. The bottom loop runs once a night. It marks its own homework and places the bets. Nothing here starts by hand.

Company filings, newswires, StockTwits, Reddit, Congress, federal contracts"Everywhere it reads from. All public, all free."
EVERY 10 MINUTES
Fetch what's new"Go and look at the world again."
Clean it up"Strip the formatting, drop exact repeats."
Find the company"Which company is this about?"
Is it new?"Have I seen this story before?"
Count the chatter"How loudly is this ticker being talked about?"
Worth flagging?"Is this worth writing down?"
Hazard"Everyone is shouting and nothing happened. That is the suspicious one."
alerts waiting to be graded
EVERY NIGHT, 2 AM
Get the closing prices"What did everything close at?"
Mark yesterday's homework"How did every past alert do?"
Place today's bets"Small, and spread wide."
Close anything 5 days old"Cash it out, win or lose."
Write down the balance"Tonight's number. Never edited again."

What survives each stage

Roughly 1,000 things read for every bet placed. The bars use a log scale, or the last one would be invisible.

64,352
things collectedevery filing, press release and post
31,532
actually new51% were repeats of something already seen
1,830
worth flaggingcleared the scoring threshold
1,363
hazard flagsunexplained crowd spikes, the useful ones
817
graded tradesold enough to have a verdict

What a single bet actually looks like

This is the part worth understanding. It explains why the system does not 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 whole stock market. It places 2 bets at once: 1 against the flagged stock, 1 for the market.

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

If the market crashes and the stock crashes harder, that is profit. If the market rises and the stock rises less, that is also profit. Only the gap matters. That is what "market-neutral" means. It is why a bad week for stocks is usually not a bad week for this.

Real bets it has made

These are actual rows from the database, best and worst. They are not illustrations. 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%
CAPR2026-07-27$7.00-40.0%+2.5%+42.5%

Its three worst

StockFlaggedPrice Stock didMarket did Result
REPL2026-07-28$5.35+122.8%+4.1%-118.7%
REPL2026-07-29$5.41+118.7%+5.5%-113.1%
SLS2026-06-22$8.53+81.1%-0.5%-81.6%

SLS went up 81% in 5 days while the system was betting against it. That is a short squeeze. It is the single biggest risk here. It is why every bet is tiny and spread across dozens of stocks. One uncapped bet like that would erase 25 ordinary wins.

The uncomfortable part

The thing it was built to do does not work

I built Sentinel to find genuinely new, important news before the market noticed. It did find that news, 227 times. Those alerts turned out to be worth -1.19% over 186 measured cases. That is nothing. The idea was wrong.

The hazard flag was built to throw noise away. That flag was the part that worked. It sat unreported for weeks because I had deliberately kept it out of every screen that could have shown it. The signal was fine. The scoreboard was broken.

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

Things that could still be wrong

← see what it's doing right now