The evening shift
How it learns
Most market sites grade themselves on the one stock they told you about. We grade the whole exchange. Every evening, once the closing bell has rung, the day's move is recorded for every listed stock we track — the ones we picked, the ones we ranked and passed over, and the thousands we never mentioned. Then the morning's scoring is marked against it.
Sessions graded
44
Stock-days measured
240,735
Average rank correlation
0.001± 0.017
Why measure stocks we did not pick
A screen that quietly throws away a whole family of winners leaves no trace of that mistake in the stocks it kept. The evidence sits entirely in what it discarded. So the only way to find that kind of blind spot is to keep score on the discards too, which is what the evening run does.
That turns one graded call a day into a hundred graded rankings and thousands of measured stock-days. It is the difference between an opinion about how the day went and a dataset.
What each number means
- Rank correlation
- Did the stocks we scored highest actually outrun the ones we scored low? Measured against the market's own move that day, so a session where everything rose does not flatter us. Zero means the ranking carries no directional information — our order and the market's were unrelated. Above zero, it carries some.
- It comes with a ± figure for the same reason every other number here does. A correlation drawn from a hundred stocks wobbles by roughly a tenth from one session to the next even if nothing about the scoring changed, so no single row in the table below means anything on its own. The average across sessions steadies as they accumulate, and the ± shows how far it can still drift by chance alone. We call it a result only past twice that figure, because clearing it once is something a coin does one try in three.
- Decile spread
- The same idea in percentage points: our best-scored tenth of the day minus our worst-scored tenth.
- Pick vs. best candidate
- What the published stock did, next to the best stock we had already shortlisted. The gap is regret — value that was in our hands and not chosen.
- Top-20 recall
- Of the twenty biggest relative gainers that were actually tradable that day, how many had made it into our shortlist at all. This is the one that grades the filter rather than the scoring. "Tradable" matters: the largest movers on any given session are usually two-dollar micro caps spiking on an announcement, which our screen rules out on price and liquidity by design. Judging it against those would be scoring it on a race it deliberately does not enter.
- Two yardsticks sit beside it, because a recall on its own is not a result. The first is a shortlist of the same size drawn at random. The second is harder and is the one we would apply to somebody else: volatility persists, so a screen built on momentum and volume catches more big movers than chance without forecasting anything. That column takes the most volatile names of the preceding sessions — same size, same price and liquidity floors, judged only on days already behind it so it never sees the answer — and counts what it would have caught. We are behind it, and we would rather you read that here than discover it yourself in our public dataset.
What each model has proved so far
Three models grade the finalists every morning, and the obvious way to score them is to ask how often a bullish call was followed by a stock that beat the market. That number lies. On a session where three quarters of the shortlist beat the market, a model that says yes to everything scores 75% and looks brilliant; on a dull session the same ignorance scores 40% and looks broken. Ours rose and fell together from one session to the next, which is the signature of a measurement reading the day rather than the model.
So every session is now scored against its own baseline — the share of that day's shortlist that beat the market — and what survives is the excess: what the model added over saying yes at random. Calls are pooled and weighted, because a day where a model spoke once cannot count as much as a day where it spoke seventy times.
| Model | Bullish calls | Beat the market | Chance would give | Excess |
|---|---|---|---|---|
| Perplexity | 2507 | 1191 | 1199.2 | −0.3 ± 1.0 |
| Claude | 1097 | 511 | 522.4 | −1.0 ± 1.5 |
| GPT | 930 | 449 | 451.1 | −0.2 ± 1.6 |
Which sessions may tune the scoring
Two things get confused constantly, so they are kept apart here. The published record holds every session — the bad ones, and the ones where our own machinery misbehaved. No published call is ever removed from it, and the returns quoted anywhere on this site are computed over all of it. The tuning set is narrower: the sessions the scoring is allowed to learn from.
The distinction is not cosmetic. Fitting coefficients to a stretch where the system was not running as designed teaches it to expect a behaviour that no longer exists. The result is not a flattered algorithm, it is a wrong one.
What keeps that from becoming a licence to drop inconvenient days is the rule itself. It is mechanical, it is written here with its numbers, and it never looks at how the session turned out. A session may tune the scoring when all 3 models graded it and none covered less than 80% of what the fullest one covered. That is the whole rule. A day where the pick lost money is eligible; a day where a model was down is not, however well the pick did.
33 of 44 graded sessions currently qualify.
- 2026-10-15— only 0 of 3 models graded this session
- 2026-09-04— partial coverage — anthropic 58/89
- 2026-09-03— partial coverage — anthropic 59/89
- 2026-09-02— partial coverage — anthropic 59/89
- 2026-09-01— partial coverage — anthropic 57/87
- 2026-08-31— partial coverage — anthropic 55/79
- 2026-08-28— partial coverage — anthropic 54/82
- 2026-08-27— partial coverage — anthropic 61/89
- 2026-08-18— partial coverage — anthropic 39/88
- 2026-08-17— partial coverage — perplexity 1/100
- 2026-08-14— only 2 of 3 models graded this session
What the scoring is set to, and why
The final score is a blend of three things, and how much each one counts is not a decision anybody makes by hand any more. It is set by the record above. These are the shares in force this morning.
- Quantitative analysis40%
- Three-AI consensus50%
- Catalyst quality10%
Every evening, once the sessions are graded, the three shares are re-examined. The test is deliberately hard to pass. A revision may shift at most 5 points from one component to another, so the scoring drifts rather than lurches. It may not happen at all until 60 sessions qualify for tuning. And the candidate setting is judged only on sessions it was not chosen from: each session is held out in turn, the move is picked on the others, and its gain is measured on the one left aside. That gain must clear 0.01 in rank correlation and be steady enough across sessions to reach t = 3.0 — roughly a one-in-a-thousand chance of clearing it on luck alone.
Almost every evening the answer is no, and that is the expected result rather than a failure. Both answers are recorded below, because a log that only kept the changes would suggest the question was only asked on the days it moved.
- 2026-10-16left unchanged
not enough graded sessions yet — 32 of the 60 required before the weights may move
- 2026-10-15left unchanged
not enough graded sessions yet — 32 of the 60 required before the weights may move
- 2026-10-14left unchanged
not enough graded sessions yet — 32 of the 60 required before the weights may move
- 2026-10-13left unchanged
not enough graded sessions yet — 32 of the 60 required before the weights may move
- 2026-10-12left unchanged
not enough graded sessions yet — 31 of the 60 required before the weights may move
- 2026-10-09left unchanged
not enough graded sessions yet — 30 of the 60 required before the weights may move
- 2026-10-08left unchanged
not enough graded sessions yet — 29 of the 60 required before the weights may move
- 2026-10-07left unchanged
not enough graded sessions yet — 28 of the 60 required before the weights may move
- 2026-10-06left unchanged
not enough graded sessions yet — 27 of the 60 required before the weights may move
- 2026-10-05left unchanged
not enough graded sessions yet — 26 of the 60 required before the weights may move
- 2026-10-02left unchanged
not enough graded sessions yet — 25 of the 60 required before the weights may move
- 2026-10-01left unchanged
not enough graded sessions yet — 24 of the 60 required before the weights may move
- 2026-09-30left unchanged
not enough graded sessions yet — 23 of the 60 required before the weights may move
- 2026-09-29left unchanged
not enough graded sessions yet — 22 of the 60 required before the weights may move
- 2026-09-28left unchanged
not enough graded sessions yet — 21 of the 60 required before the weights may move
- 2026-09-25left unchanged
not enough graded sessions yet — 20 of the 60 required before the weights may move
- 2026-09-24left unchanged
not enough graded sessions yet — 19 of the 60 required before the weights may move
- 2026-09-23left unchanged
not enough graded sessions yet — 18 of the 60 required before the weights may move
- 2026-09-22left unchanged
not enough graded sessions yet — 17 of the 60 required before the weights may move
- 2026-09-21left unchanged
not enough graded sessions yet — 16 of the 60 required before the weights may move
- 2026-09-18left unchanged
not enough graded sessions yet — 15 of the 60 required before the weights may move
- 2026-09-17left unchanged
not enough graded sessions yet — 14 of the 60 required before the weights may move
- 2026-09-16left unchanged
not enough graded sessions yet — 13 of the 60 required before the weights may move
- 2026-09-15left unchanged
not enough graded sessions yet — 12 of the 60 required before the weights may move
- 2026-09-14left unchanged
not enough graded sessions yet — 11 of the 60 required before the weights may move
- 2026-09-11left unchanged
not enough graded sessions yet — 10 of the 60 required before the weights may move
- 2026-09-10left unchanged
not enough graded sessions yet — 9 of the 60 required before the weights may move
- 2026-09-09left unchanged
not enough graded sessions yet — 8 of the 60 required before the weights may move
- 2026-09-08left unchanged
not enough graded sessions yet — 7 of the 60 required before the weights may move
- 2026-09-04left unchanged
not enough graded sessions yet — 6 of the 60 required before the weights may move
- 2026-09-03left unchanged
not enough graded sessions yet — 6 of the 60 required before the weights may move
- 2026-09-02left unchanged
not enough graded sessions yet — 6 of the 60 required before the weights may move
- 2026-09-01left unchanged
not enough graded sessions yet — 6 of the 60 required before the weights may move
- 2026-08-31left unchanged
not enough graded sessions yet — 6 of the 60 required before the weights may move
- 2026-08-28left unchanged
not enough graded sessions yet — 6 of the 60 required before the weights may move
- 2026-08-27left unchanged
not enough graded sessions yet — 6 of the 60 required before the weights may move
- 2026-08-26left unchanged
not enough graded sessions yet — 6 of the 60 required before the weights may move
- 2026-08-25left unchanged
not enough graded sessions yet — 5 of the 60 required before the weights may move
- 2026-08-24left unchanged
not enough graded sessions yet — 4 of the 60 required before the weights may move
Which of the two shortlists earns its place
The hundred stocks the three AIs read every morning do not come from one place. Eighty are the highest quantitative scores of the day. The other twenty are picked on how much a stock is already moving — volume, gap, the size of yesterday's swing, up or down alike. Until now nothing measured whether the second queue was worth its twenty seats.
It is measured now, one session at a time. The comparison is between the two queues' average return against the market on the same day, so a rising or falling market cancels out. The unit is the session and never the individual stock: a hundred names from one morning rise and fall together, and counting them as independent would multiply the apparent certainty by the length of the shortlist.
not enough labelled sessions yet — 39 of the 60 required before the two queues may be told apart
The bar is the same one the weights must clear: 60 sessions, and a gap steady enough to reach t = 3.0. Giving this question an easier bar would be a second, softer route to the same kind of decision. Expect the answer to stay “not yet” for a long time, and read any single session below for what it is worth, which is very little. As it stands the running total leans one way entirely on the strength of one bad day: drop that session and it leans the other. That is the whole reason the bar is where it is.
| Session | Quantitative queue | Movement queue | Gap |
|---|---|---|---|
| 2026-10-12 | -1.49% (32) | +0.63% (11) | +2.12% |
| 2026-10-08 | +0.53% (53) | +1.04% (16) | +0.51% |
| 2026-10-07 | -0.38% (29) | +2.32% (10) | +2.70% |
| 2026-10-06 | -4.26% (57) | -0.65% (14) | +3.61% |
| 2026-10-05 | -2.57% (48) | -0.56% (14) | +2.00% |
| 2026-10-02 | +0.19% (80) | -1.70% (20) | -1.88% |
| 2026-10-01 | +0.36% (80) | +1.23% (20) | +0.88% |
| 2026-09-30 | -0.02% (80) | -0.58% (20) | -0.56% |
| 2026-09-29 | +1.06% (80) | -0.59% (20) | -1.65% |
| 2026-09-28 | -1.28% (80) | +3.35% (20) | +4.63% |
| 2026-09-25 | -1.37% (80) | -3.01% (20) | -1.64% |
| 2026-09-24 | +1.41% (80) | -1.35% (19) | -2.76% |
| 2026-09-23 | -1.27% (79) | -2.80% (20) | -1.53% |
| 2026-09-22 | +2.11% (80) | +0.34% (20) | -1.77% |
| 2026-09-21 | -1.27% (80) | -1.05% (20) | +0.22% |
| 2026-09-18 | -0.12% (80) | -0.44% (20) | -0.32% |
| 2026-09-17 | +0.35% (80) | +0.78% (20) | +0.44% |
| 2026-09-16 | +0.42% (80) | -2.08% (20) | -2.49% |
| 2026-09-15 | +0.88% (80) | -0.63% (20) | -1.51% |
| 2026-09-14 | -0.32% (80) | +0.08% (20) | +0.39% |
| 2026-09-11 | -0.08% (80) | -1.87% (20) | -1.78% |
| 2026-09-10 | -0.17% (80) | +2.26% (20) | +2.43% |
| 2026-09-09 | -1.09% (80) | -2.62% (20) | -1.53% |
| 2026-09-08 | -0.32% (80) | -0.05% (20) | +0.27% |
| 2026-09-04 | +1.02% (79) | +1.24% (20) | +0.22% |
| 2026-09-03 | -1.62% (79) | -1.20% (20) | +0.42% |
| 2026-09-02 | +1.14% (78) | -1.03% (20) | -2.17% |
| 2026-09-01 | -0.12% (79) | +0.92% (20) | +1.04% |
| 2026-08-31 | +0.48% (79) | +0.28% (20) | -0.20% |
| 2026-08-28 | -2.15% (80) | -5.70% (20) | -3.55% |
| 2026-08-27 | -2.64% (80) | -3.45% (19) | -0.81% |
| 2026-08-26 | -1.12% (80) | +2.93% (20) | +4.05% |
| 2026-08-25 | +3.58% (80) | -0.93% (18) | -4.52% |
| 2026-08-24 | -1.40% (80) | -1.93% (20) | -0.53% |
| 2026-08-21 | +0.05% (80) | -0.16% (20) | -0.22% |
| 2026-08-20 | +0.59% (80) | +0.77% (20) | +0.18% |
| 2026-08-19 | +1.27% (79) | -4.03% (20) | -5.30% |
| 2026-08-18 | -0.51% (80) | +0.23% (20) | +0.74% |
| 2026-08-17 | +0.03% (80) | +0.90% (20) | +0.88% |
This one is worth publishing even while it says nothing, because anybody can already work it out. The open dataset gives the quantitative score of all hundred candidates for every closed session, and the first queue is by construction the top eighty of that ranking — sort, cut at eighty, and the two queues separate exactly. Keeping the number back would not hide it. It would only mean we were not looking.
Session by session
| Session | Stocks measured | Rank corr. | Decile spread | Pick | Best candidate | Top-20 recall | Chance would give | Volatility basket |
|---|---|---|---|---|---|---|---|---|
| 2026-10-15 | 3,663 | — | — | — | — | 0/20 | — | — |
| 2026-10-14 | 925 | — | — | — | — | 0/20 | — | — |
| 2026-10-13 | 1,266 | -0.064 | -1.42% | -0.71% | +6.24% | 3/20 | 1.26/20 | 2/20 |
| 2026-10-12 | 1,642 | -0.274 | -9.75% | — | +17.00% | 4/20 | 1.53/20 | 2/20 |
| 2026-10-09 | 3,010 | -0.009 | +0.37% | -1.00% | +12.71% | 1/20 | 1.03/20 | 4/20 |
| 2026-10-08 | 4,502 | 0.042 | +1.58% | +0.65% | +5.91% | 0/20 | 0.85/20 | 4/20 |
| 2026-10-07 | 2,151 | 0.007 | -3.52% | — | +26.77% | 6/20 | 0.97/20 | 7/20 |
| 2026-10-06 | 4,651 | 0.126 | +11.06% | +1.15% | +6.22% | 1/20 | 0.90/20 | 3/20 |
| 2026-10-05 | 3,225 | 0.019 | -0.63% | -1.44% | +6.95% | 1/20 | 1.04/20 | 6/20 |
| 2026-10-02 | 6,094 | 0.070 | -0.01% | -2.82% | +36.05% | 6/20 | 0.92/20 | 5/20 |
| 2026-10-01 | 6,085 | -0.105 | -3.41% | +2.53% | +47.78% | 3/20 | 0.88/20 | 5/20 |
| 2026-09-30 | 6,088 | -0.065 | -1.19% | -6.32% | +10.95% | 2/20 | 0.87/20 | 5/20 |
| 2026-09-29 | 6,082 | 0.038 | +1.76% | -1.30% | +26.05% | 2/20 | 0.92/20 | 9/20 |
| 2026-09-28 | 6,075 | 0.030 | -0.78% | -2.98% | +46.08% | 6/20 | 0.93/20 | 7/20 |
| 2026-09-25 | 6,083 | -0.047 | +0.02% | -4.21% | +10.38% | 3/20 | 0.97/20 | 4/20 |
| 2026-09-24 | 6,106 | 0.202 | +3.34% | +7.80% | +20.18% | 9/20 | 0.91/20 | 8/20 |
| 2026-09-23 | 6,107 | -0.022 | +2.68% | -1.91% | +15.12% | 3/20 | 0.92/20 | 9/20 |
| 2026-09-22 | 6,093 | -0.004 | +0.67% | -2.42% | +18.08% | 2/20 | 0.90/20 | 3/20 |
| 2026-09-21 | 6,117 | -0.033 | -0.28% | +1.44% | +14.74% | 5/20 | 0.92/20 | 6/20 |
| 2026-09-18 | 6,059 | 0.106 | -2.41% | -1.60% | +16.47% | 6/20 | 0.74/20 | 6/20 |
| 2026-09-17 | 6,091 | -0.028 | +0.46% | +3.61% | +25.60% | 3/20 | 0.91/20 | 6/20 |
| 2026-09-16 | 6,078 | 0.034 | +2.23% | +1.72% | +19.33% | 3/20 | 0.90/20 | 8/20 |
| 2026-09-15 | 6,101 | 0.141 | +2.67% | +2.31% | +12.32% | 2/20 | 0.91/20 | 9/20 |
| 2026-09-14 | 6,108 | -0.094 | +0.16% | +0.01% | +13.36% | 3/20 | 0.93/20 | 3/20 |
| 2026-09-11 | 6,055 | 0.119 | +3.05% | +1.22% | +17.05% | 2/20 | 0.97/20 | 8/20 |
| 2026-09-10 | 6,094 | -0.223 | -2.85% | +1.57% | +19.12% | 3/20 | 0.95/20 | 8/20 |
| 2026-09-09 | 6,057 | 0.021 | -0.01% | -0.38% | +13.64% | 1/20 | 0.94/20 | 4/20 |
| 2026-09-08 | 6,096 | 0.104 | -0.36% | -0.47% | +8.75% | 1/20 | 0.95/20 | 5/20 |
| 2026-09-04 | 6,073 | -0.010 | +2.11% | -0.06% | +37.56% | 3/20 | 1.03/20 | 10/20 |
| 2026-09-03 | 6,060 | -0.004 | -0.76% | -1.19% | +13.68% | 2/20 | 0.95/20 | 7/20 |
| 2026-09-02 | 6,083 | 0.215 | +5.30% | -0.43% | +27.26% | 2/20 | 0.93/20 | 5/20 |
| 2026-09-01 | 6,084 | 0.040 | +1.39% | -0.62% | +28.26% | 4/20 | 0.93/20 | 6/20 |
| 2026-08-31 | 6,116 | -0.126 | +0.00% | -2.95% | +30.10% | 5/20 | 0.92/20 | 8/20 |
| 2026-08-28 | 6,079 | -0.104 | +1.22% | -3.99% | +5.66% | 2/20 | 1.02/20 | 4/20 |
| 2026-08-27 | 6,093 | -0.020 | +2.37% | -5.00% | +9.26% | 2/20 | 0.99/20 | 6/20 |
| 2026-08-26 | 6,107 | 0.114 | +3.80% | +0.84% | +43.10% | 5/20 | 1.00/20 | 4/20 |
| 2026-08-25 | 6,129 | 0.046 | +9.79% | +0.59% | +62.72% | 6/20 | 0.97/20 | 12/20 |
| 2026-08-24 | 6,099 | 0.003 | +2.85% | -1.74% | +10.02% | 5/20 | 0.97/20 | 6/20 |
| 2026-08-21 | 6,110 | 0.148 | +2.50% | +3.93% | +20.89% | 3/20 | 1.02/20 | 6/20 |
| 2026-08-20 | 6,774 | -0.153 | -3.29% | +1.52% | +17.73% | 6/20 | 0.95/20 | 7/20 |
| 2026-08-19 | 6,614 | 0.162 | +1.30% | +0.43% | +15.18% | 2/20 | 0.93/20 | 6/20 |
| 2026-08-18 | 6,539 | -0.192 | -0.02% | -1.08% | +15.81% | 4/20 | 0.95/20 | 9/20 |
| 2026-08-17 | 6,537 | -0.025 | +1.64% | +1.67% | +12.94% | 5/20 | 0.95/20 | 6/20 |
| 2026-08-14 | 6,534 | -0.157 | -3.66% | +3.73% | +8.98% | 0/20 | 0.29/20 | — |
Take the data and check it yourself
Nothing above is worth much if you have to take our word for the arithmetic. So the raw rows are downloadable: one file with every closed session and its graded metrics, one with every candidate we scored that morning and what it went on to do. Load either into a spreadsheet or into pandas and you can recompute every figure on this site — including the ones that do not flatter us.
Sessions
One row per closed session: the published pick, its open-to-close return against SPY, the algorithm version that produced it, the grading metrics and the sealed fingerprint.
What we are not claiming
The tuning is not a pledge about some later version. It is a job that runs after every close, on the whole accumulated history, and that so far concludes every single time that there is not enough evidence to move anything. That is the honest description, and it is a narrower claim than the one most sites make: not that the scoring is getting better, but that the question is put to the data nightly and answered in public either way.
So no improvement is being asserted here. What is asserted is that the record is being built, that it decides the weights rather than a person deciding them, and that it will keep declining to move them for as long as the numbers say so — including if that turns out to be a very long time. The counters at the top of this page are the whole claim, and deliberately the easiest thing on this site to check.
One caveat on the earliest sessions. Whole-universe measurement started after the first calls were published, so those sessions were graded after the fact rather than on the evening itself. The prices are the same either way — a closing price does not change — but the investable universe they are compared against is today's definition, not the one in force that morning. The sessions file carries a graded_on column giving the date each grade was computed, so a retroactive one is visible at a glance rather than passed off as same-day work.
Each morning's call is sealed and timestamped into the Bitcoin blockchain before the market opens, which is what stops any of this from being tidied up after the fact.