How this works
And it keeps score in public — including when it loses.
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.
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.
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.
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.
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.
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.
Roughly a thousand things read for every one bet placed. The bars are on a log scale, or the last one would be invisible.
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.
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.
Not illustrations — actual rows from the database, best and worst. The last column is the only one that matters.
| Stock | Flagged | Price | Stock did | Market did | Result |
|---|---|---|---|---|---|
| PHOE | 2026-07-20 | $36.50 | -45.2% | -0.4% | +44.8% |
| CAST | 2026-06-22 | $9.84 | -43.1% | -0.5% | +42.6% |
| SOC | 2026-06-29 | $6.97 | -39.3% | +0.9% | +40.2% |
| Stock | Flagged | Price | Stock did | Market did | Result |
|---|---|---|---|---|---|
| SLS | 2026-06-22 | $8.53 | +81.1% | -0.5% | -81.6% |
| OTLY | 2026-07-22 | $10.78 | +41.6% | -2.4% | -44.0% |
| BB | 2026-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.
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.