ONYX
MLBNFLWeek 1 · Sep 9NHLSeason opens October
BoardCheat SheetMarketsSlip BuilderResultsMy Picks
ARMS
Weak ArmsPitch EdgeArsenalsBullpensStrikeouts
HITTERS
HotSplitsBattersStacks
CONTEXT
WeatherMatchups
LIVE
Live HRLive Wire
CourseGuideAccount
onyx-v1.0.0 · 9 models
ONYXRESULTS
BoardCheat SheetMarketsBuilder
This is the full record.Every grade ONYX has published, checked against what actually happened — wins and misses both. Tonight’s board is members-only.
See tonight’s board →
v1.0.0|12,089 picks · 50 days

The receipts.

Every grade and probability ONYX publishes, checked against what actually happened. The percentages either mean what they say or they don't — this is where you find out. We don't hide the misses.

Graded
12,089
picks across 50 days
Calibration
±1
said 13%, got 12%
Skill
beats
Brier 0.103 vs 0.104 baseline
Bombs called
380
flagged EDGE or better, went deep

Last night, by name

Tue, Aug 18

The ten bats we ranked highest for a home run, and what each one did. Hits and misses at the same size — the top of a board is a probability, not a prediction, and the nights it looks worst are the ones worth publishing.

3/10went deep
24%we forecast, each
30%actually hit
10.3%rest of the slate
180Yordan AlvarezHOU · LAA@HOU28%0-4×
279Munetaka MurakamiCWS · CWS@CHC27%1 HR · 1-4 · 4 TB✓
377Kyle SchwarberPHI · MIA@PHI26%1-5 · 1 TB×
477Shohei OhtaniLAD · LAD@COL26%1 HR · 1-5 · 4 TB✓
576Matt OlsonATL · ATL@MIN25%0-4×
672Pete AlonsoBAL · NYY@BAL23%1-4 · 1 TB×
772Griffin ConineMIA · MIA@PHI23%1 HR · 2-4 · 5 TB✓
871Eduardo ValenciaDET · DET@PIT22%0-4×
970Miguel VargasCWS · CWS@CHC22%1-4 · 1 TB×
1070Max MuncyLAD · LAD@COL22%1-4 · 1 TB×

One slate is one slate — ten bats decide nothing, which is what every chart below this is for. It is here because a rate you cannot check against a game you watched is just a number we typed.

Calibration

The whole game

When the model forecast a given HR chance, how often it actually happened. The closer predicted and actual are in each band, the more the percentage on a player's card is worth.

Across 12,089 HR forecasts
Model avg13%
->
Actual rate12%
Gap±1 pts
0%0%15%15%30%30%under 10% predicted 8.7%, actual 8.2% on n=3,09710 -- 15% predicted 12.1%, actual 11.3% on n=6,19715 -- 20% predicted 17.0%, actual 15.7% on n=2,12120 -- 25% predicted 22.0%, actual 20.7% on n=50325% + predicted 27.8%, actual 19.9% on n=171PREDICTEDOBSERVED

Each dot is one probability band: what the model said against what happened, sized by how many player-games it rests on. The dashed line is perfect calibration — a dot above it beat its own number, below it fell short. Hover any dot for its sample.

No band is out of line. The widest miss is 25% + at -7.9 points on 171 player-games, z = -2.32 — inside the noise you would expect from a perfectly calibrated model tested five ways at once.
under 10%
8%pred 9%-1
10 -- 15%
11%pred 12%-1
15 -- 20%
16%pred 17%-1
20 -- 25%
21%pred 22%-1
25% +
20%pred 28%-8
PredictedActualn = 12,089 HR forecasts · Brier 0.103

Night by night

Last 30 slates

Every number above is an average over the whole record, and an average is what a model in trouble hides behind — an overall gap of a point or two can be built from a fortnight too high and a fortnight too low. This is the same figure per slate: what we forecast, and what actually happened.

20/30nights within 3 pts
7.5worst night (Jul 25)
243bats graded per night
20
21
22
23
24
25
26
27
28
29
30
31
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
Actual HR rateForecastSlates with fewer than 50 graded bats are left out — a partial night prints a wild rate on a handful of hitters and says nothing.

The catches

Longshots we called

Hitters we graded EDGE or better to homer — sorted by longest fair-value odds. The model reaching for the dart, and hitting.

Homered+582
Dansby Swanson
CHCEDGE · 60
had at 15%Jul 1
Homered+582
Spencer Torkelson
DETEDGE · 60
had at 15%Jun 30
Homered+582
Willson Contreras
BOSEDGE · 60
had at 15%Jun 29
Homered+568
Kody Clemens
MINEDGE · 60
had at 15%Jun 28
Homered+568
Sal Stewart
CINEDGE · 60
had at 15%Jun 27
Homered+568
Luis García Jr.
NYYEDGE · 60
had at 15%Jun 27
Homered+566
Manny Machado
SDEDGE · 61
had at 15%Jul 2
Homered+566
Freddie Freeman
LADEDGE · 61
had at 15%Jul 1
Homered+566
Bobby Witt Jr.
KCEDGE · 61
had at 15%Jun 30

The miss log

Our loudest calls that didn’t land

The mirror of the catches. These are the plays the model was most confident in that still came up empty — sorted by how loudly we said it. At an average of 31%, missing is the expected outcome roughly 69% of the time. That’s the honest shape of a home-run model, and it’s why we publish this next to the wins.

No homer+169
Yordan Alvarez
HOUPRIME · 85
we said 37%Jul 5
No homer+201
James Wood
WSHPRIME · 81
we said 33%Jul 8
No homer+203
Kyle Schwarber
PHIPRIME · 84
we said 33%Jul 9
No homer+218
Hunter Goodman
COLEDGE · 79
we said 31%Jul 5
No homer+222
Esmerlyn Valdez
PITPRIME · 84
we said 31%Jul 22
No homer+228
Junior Caminero
TBEDGE · 78
we said 31%Jul 5
No homer+237
Ben Rice
NYYPRIME · 80
we said 30%Jul 17
No homer+248
Juan Soto
NYMEDGE · 76
we said 29%Jul 8
No homer+248
Nick Kurtz
ATHEDGE · 76
we said 29%Jul 5

Do the grades sort?

Separation

Each market graded by its own score. Rate should step down from PRIME to COLD every column — that's the model earning its keep.

TierHomers1+ hit2+ bases
PRIME21%n5661%n4439%n59
EDGE17%n219965%n230842%n1801
EVEN13%n405362%n459235%n4277
COOL10%n462158%n408833%n4961
COLD6%n116057%n105733%n991

Which of our models actually work

51 slates · 12,089 player-games

Every model, scored on its own. AUC is the chance this model rated a hitter who homered above one who didn’t — 0.500 is a coin flip. Measured on the graded record, against a 11.8% base rate. Some of these numbers are not flattering, which is the point of publishing them.

ModelWeightAUCSignal above chanceTop 10%Bottom 10%
POWERcarries real signal50%0.59017.7%6.3%
PLATOONmodest signal8%0.56217.5%9.5%
LINEUP SPOTmodest signal3%0.55714.5%7.1%
FORMbarely separates12%0.53215.0%12.1%
PARKbarely separates6%0.52311.7%9.9%
ARM VULNbarely separates7%0.52113.1%9.9%
WEATHERbarely separates4%0.51212.9%10.7%
PITCH MATCHno better than chance7%0.50511.8%11.6%
BULLPENno better than chance3%0.49512.3%12.8%

Read this carefully before concluding a model is dead weight. These are standalone numbers. The models are correlated, and one can still earn its weight by sharpening the others in combination even when it ranks poorly alone. Park and Weather also barely vary within a single night, which mechanically depresses their score here. We tested that claim rather than just asserting it: a weight backtest across 26 slates and 6,207 graded player-games found that Power alone — the one model with a strong standalone number — scores the best of any variant on the first half of the data and the worst of any variant on the held-out half (0.6102 then 0.5791, against the live blend’s 0.5874). The weak-looking components are doing real work in combination. Re-weighting to chase these standalone numbers gained 0.0018 AUC out of sample, which is inside the noise, so the live weights stand.

When the board is wrong, who was talking?

1,208 convictions · HR grade 64+

The model’s own top 10% — every play it graded 64 or better — split by what actually happened. These plays homered 19.2% of the time against a 11.8% field, so the grade is doing real work. It is also wrong 81% of the time, and that is the part nobody explains. 232 homered, 976 did not — same grade, opposite night. So what were the nine models each saying in the two piles?

ModelCashedMissedSeparationz
PLATOON8% of the grade73.672.4+1.11.5
LINEUP SPOT3% of the grade61.961.2+0.71.3
BULLPEN3% of the grade57.859.4-1.6-1.1
WEATHER4% of the grade69.868.4+1.41.1
PARK6% of the grade55.955.2+0.80.6
ARM VULN7% of the grade50.550.9-0.4-0.4
PITCH MATCH7% of the grade54.454.7-0.3-0.2
FORM12% of the grade63.162.9+0.20.2
POWER50% of the grade77.677.6+0.00.0
NOTHING SEPARATED — AND THAT IS THE FINDING

Not one of the nine cleared the bar. On the record so far, the plays that cashed and the plays that missed look alike on every input we have — the biggest gap in the table is smaller than its own error bar.

Which is worth saying plainly, because the instinct it kills is a real one: there is no second filter to apply to the top of this board. Backing only the top plays whose weather looks best, or whose opposing arm looks softest, has not sorted the winners from the losers — those reads are already inside the grade, and past it they are noise. The grade is the read.

The bar is |z| = 2.5, not 2. Nine models are tested at once, and across nine tries the chance that at least one clears 2.0 on luck alone is about 37% — so publishing a “tell” off a 2.1 would mean inventing one roughly every third month. If a real separator appears, this panel will say so.

This is a description, not a filter. It is measured on the same graded rows it describes, so a gap found here is what already happened rather than a rule that will keep holding — which is exactly why the table leads with z and greys everything under 2 rather than ranking by the gap itself. And it is not an argument for re-weighting. Separation inside a narrow, self-selected band is a different quantity from the standalone predictive power in the table above; POWER in particular is close to constant here by construction, because a high Power grade is most of how a play reached this band at all. A model can be the best in the product and still be no help choosing between its own best plays.

What following the top 5 would have done

250 bets · 50 slates

One unit on each of the top 5 HR grades every night, settled at our own fair price. Flat stakes — any sizing plan is a second model, and layering one on would make this a statement about the staking rather than the record.

−18.4%
underwater at fair oddsthese plays landed less often than the model said they would, so on this sample backing them loses even at a zero-margin book. At 250 bets that is a warning, not a verdict — see the two readings below.
The ranking works. These plays homered 21.2% of the time against a 11.8% field — 1.80x the base rate. The model is finding the right hitters.
The probability may be too high. It said 25.8% and got 21.2% — 4.6 points short, at z = -1.67 on 250 bets. That is under 2 SE, so it is a direction rather than a finding — and re-fitting the curve on held-out slates does not beat the live one, so there is nothing yet to correct.
Hit rate21.2%model said 25.8%
Units at fair−38.9over 250 bets
Worst drawdown−63.8peak to trough
Landed53/250top 5 each night
2026-06-272026-08-18

This is not a profit claim, and it is not closing line value. Nothing here knows what any book offered or closed at — there is no odds feed. Betting a perfectly calibrated model at its own fair price returns exactly zero by construction, so this measures the gap between what the top of the board promised and what it delivered, expressed in units. A real market’s margin comes off the top of whatever is left. It is also a small sample: 250 bets over 50 slates, with a 64-unit worst drawdown along the way. Judge the direction, not the decimal.

Every pick · what happened

60 most recent

Raw log — HR grade and fair-value price going in, result coming out. Green = cashed. No edits.

DateHitterGradeHR%Result
Aug 18Yordan AlvarezHOU80PRIME28%+255HRHTB
Aug 18Munetaka MurakamiCWS79EDGE27%+264HRHTB
Aug 18Kyle SchwarberPHI77EDGE26%+284HRHTB
Aug 18Shohei OhtaniLAD77EDGE26%+284HRHTB
Aug 18Matt OlsonATL76EDGE25%+294HRHTB
Aug 18Griffin ConineMIA72EDGE23%+339HRHTB
Aug 18Pete AlonsoBAL72EDGE23%+339HRHTB
Aug 18Eduardo ValenciaDET71EDGE22%+351HRHTB
Aug 18Max MuncyLAD70EDGE22%+363HRHTB
Aug 18Miguel VargasCWS70EDGE22%+363HRHTB
Aug 18Ben RiceNYY69EDGE21%+376HRHTB
Aug 18Esmerlyn ValdezPIT68EDGE20%+390HRHTB
Aug 18Jordan WalkerSTL68EDGE20%+390HRHTB
Aug 18Willson ContrerasBOS68EDGE20%+390HRHTB
Aug 18Christian Encarnacion-StrandBAL68EDGE20%+390HRHTB
Aug 18Jake BauersMIL67EDGE20%+404HRHTB
Aug 18Dominic CanzoneSEA67EDGE20%+404HRHTB
Aug 18Jac CaglianoneKC67EDGE20%+404HRHTB
Aug 18Junior CamineroTB66EDGE19%+419HRHTB
Aug 18Mike TroutLAA65EDGE19%+434HRHTB
Aug 18Pete Crow-ArmstrongCHC65EDGE19%+434HRHTB
Aug 18Abimelec OrtizWSH64EDGE18%+449HRHTB
Aug 18Oneil CruzPIT64EDGE18%+449HRHTB
Aug 18Owen CaissieMIA64EDGE18%+449HRHTB
Aug 18Ronald Acuña Jr.ATL64EDGE18%+449HRHTB
Aug 18Drake BaldwinATL64EDGE18%+449HRHTB
Aug 18Jackson ChourioMIL64EDGE18%+449HRHTB
Aug 18Joshua BáezSTL64EDGE18%+449HRHTB
Aug 18Sal StewartCIN64EDGE18%+449HRHTB
Aug 18Wilyer AbreuBOS64EDGE18%+449HRHTB
Aug 18Heriberto HernándezMIA63EDGE18%+465HRHTB
Aug 18Alec BurlesonSTL63EDGE18%+465HRHTB
Aug 18Elly De La CruzCIN63EDGE18%+465HRHTB
Aug 18Coby MayoBAL63EDGE18%+465HRHTB
Aug 18Corey SeagerTEX62EDGE17%+482HRHTB
Aug 18Jake BurgerTEX62EDGE17%+482HRHTB
Aug 18Brandon LowePIT62EDGE17%+482HRHTB
Aug 18Rafael Flores Jr.PIT62EDGE17%+482HRHTB
Aug 18Kody ClemensMIN62EDGE17%+482HRHTB
Aug 18Tyler StephensonCIN62EDGE17%+482HRHTB
Aug 18Luis García Jr.NYY62EDGE17%+482HRHTB
Aug 18Austin RileyATL61EDGE17%+500HRHTB
Aug 18Eugenio SuárezCIN61EDGE17%+500HRHTB
Aug 18Colson MontgomeryCWS61EDGE17%+500HRHTB
Aug 18Francisco AlvarezNYM60EDGE16%+517HRHTB
Aug 18Michael Harris IIATL60EDGE16%+517HRHTB
Aug 18Mickey MoniakCOL60EDGE16%+517HRHTB
Aug 18Rafael DeversSF60EDGE16%+517HRHTB
Aug 18Victor Mesa Jr.TB59EVEN16%+536HRHTB
Aug 18Francisco LindorNYM59EVEN16%+536HRHTB
Aug 18Ty FranceSD59EVEN16%+536HRHTB
Aug 18Fernando Tatis Jr.SD59EVEN16%+536HRHTB
Aug 18Jackson MerrillSD59EVEN16%+536HRHTB
Aug 18Julio RodríguezSEA59EVEN16%+536HRHTB
Aug 18Bobby Witt Jr.KC59EVEN16%+536HRHTB
Aug 18Bryce EldridgeSF59EVEN16%+536HRHTB
Aug 18Seiya SuzukiCHC59EVEN16%+536HRHTB
Aug 18CJ AbramsWSH58EVEN15%+555HRHTB
Aug 18Bryce HarperPHI58EVEN15%+555HRHTB
Aug 18Trent GrishamNYY58EVEN15%+555HRHTB

Day by day

Trend

Each graded slate: bats scored, forecast HR rate, what actually happened.

DateBatsForecastActualHRs
Tue, Aug 1827013%12%32
Mon, Aug 1719813%11%21
Sun, Aug 1626913%14%39
Sat, Aug 1527013%10%27
Fri, Aug 1425212%12%30
Thu, Aug 1316213%9%14
Wed, Aug 1227013%12%32
Tue, Aug 1127013%13%36
Mon, Aug 1018013%10%18
Sun, Aug 927013%11%29
Sat, Aug 827012%9%25
Fri, Aug 727013%13%35
Thu, Aug 619812%12%23
Wed, Aug 527013%10%26
Tue, Aug 427013%10%28
Mon, Aug 314413%18%26
Sun, Aug 227013%11%29
Sat, Aug 127013%12%33
Fri, Jul 3127013%13%36
Thu, Jul 3018013%9%17
Wed, Jul 2928812%7%21
Tue, Jul 2827013%9%25
Mon, Jul 2719813%12%24
Sun, Jul 2627013%12%33
Sat, Jul 2527013%5%14
Fri, Jul 2426813%9%25
Thu, Jul 239012%10%9
Wed, Jul 2230613%12%36
Tue, Jul 2123413%12%27
Mon, Jul 2027013%17%45
Sun, Jul 1928813%11%32
Sat, Jul 1827013%11%29
Fri, Jul 1725213%13%33
Thu, Jul 161815%17%3
Sun, Jul 1226913%10%28
Sat, Jul 1128813%12%34
Fri, Jul 1025213%17%42
Thu, Jul 923413%15%36
Wed, Jul 826913%11%30
Tue, Jul 728813%10%28
Mon, Jul 614413%15%22
Sun, Jul 527013%12%33
Sat, Jul 427013%15%41
Fri, Jul 323313%13%31
Thu, Jul 216212%14%23
Wed, Jul 125212%16%40
Tue, Jun 3026912%15%41
Mon, Jun 2923412%13%31
Sun, Jun 2827013%9%24
Sat, Jun 2727012%11%29
Live record for axiom-v1.0.0 only · research estimates, not betting advice · calibration gap = |predicted − actual| HR rate · Brier score grades probability quality (lower = better; beating the baseline means the model adds real information)