Saratoga & Del Mar · 2026 Meets · Model v0-heuristic-1.4 the anti-tout
EdgeCardHQ
Transparent racing cards · Locked before post · Every pick graded

The Record

Flat 1u · losses count the same as wins
Record
47-125
Flat-$2 P/L
-22.62
Flat ROI
-6.6%
95% range for ROI
-32% to +21%
Sample size
172 bets
Market drift vs ML
+35.3%
Picks scored
184

Flat-$2 = one $2 win bet on every flag. Losses are counted identically to wins.

Why the counts on this page differ. 184 scored selections = 47 wins + 125 losses + 12 voided by scratch. The 172 settled bets behind the ROI exclude the voids, because a scratched runner is money returned, not a bet lost. The closing-line table below is smaller again. It only covers selections we have a closing price for. Calibration is larger than all of them: it scores every runner we priced, not just the ones we flagged.

Read the range, not the headline. On 172 settled bets the ROI figure could comfortably be anywhere from -32% to +21%, and on this record there is roughly a 70% chance the true long-run figure is negative. A few months is nowhere near enough racing to tell a real edge from a hot streak, and anyone quoting the headline number at you , including us, is quoting the least reliable part of this page.

The record is concentrated: 2026-07-26 contributed +39.98 units across both tracks. Every other race day combined — 27 of them — comes to -62.60 units. We would rather you learned that here than worked it out yourself.

-60u-50u-40u-30u-20u-10u0u+10u+20uSAR 07-26: +20.38u07-1607-2608-27SAR 2026-07-16 · day +0.30u · running +0.30uDMR 2026-07-17 · day +0.40u · running +0.70uSAR 2026-07-17 · day +0.40u · running +1.10uDMR 2026-07-18 · day +5.20u · running +6.30uSAR 2026-07-18 · day +4.70u · running +11.00uDMR 2026-07-19 · day −8.00u · running +3.00uSAR 2026-07-19 · day +0.30u · running +3.30uDMR 2026-07-23 · day −6.00u · running −2.70uSAR 2026-07-23 · day −3.28u · running −5.98uDMR 2026-07-24 · day −8.00u · running −13.98uSAR 2026-07-24 · day −8.00u · running −21.98uDMR 2026-07-25 · day −2.60u · running −24.58uSAR 2026-07-25 · day −0.16u · running −24.74uDMR 2026-07-26 · day +19.60u · running −5.14uSAR 2026-07-26 · day +20.38u · running +15.24uDMR 2026-07-30 · day −8.00u · running +7.24uDMR 2026-07-31 · day −6.00u · running +1.24uSAR 2026-07-31 · day +5.68u · running +6.92uDMR 2026-08-01 · day −8.00u · running −1.08uSAR 2026-08-01 · day +8.94u · running +7.86uDMR 2026-08-02 · day −1.40u · running +6.46uSAR 2026-08-02 · day +4.28u · running +10.74uDMR 2026-08-06 · day +2.60u · running +13.34uSAR 2026-08-06 · day +3.34u · running +16.68uDMR 2026-08-07 · day −4.00u · running +12.68uSAR 2026-08-07 · day +0.52u · running +13.20uDMR 2026-08-08 · day +3.20u · running +16.40uSAR 2026-08-08 · day −8.00u · running +8.40uDMR 2026-08-09 · day −4.00u · running +4.40uSAR 2026-08-09 · day −8.00u · running −3.60uSAR 2026-08-12 · day +8.54u · running +4.94uDMR 2026-08-13 · day +6.00u · running +10.94uSAR 2026-08-13 · day −4.80u · running +6.14uDMR 2026-08-14 · day −6.00u · running +0.14uSAR 2026-08-14 · day −2.20u · running −2.06uDMR 2026-08-15 · day −1.00u · running −3.06uSAR 2026-08-15 · day +15.04u · running +11.98uDMR 2026-08-16 · day −5.40u · running +6.58uSAR 2026-08-16 · day −8.00u · running −1.42uSAR 2026-08-19 · day −4.60u · running −6.02uDMR 2026-08-20 · day −6.00u · running −12.02uSAR 2026-08-20 · day −6.00u · running −18.02uDMR 2026-08-21 · day −0.60u · running −18.62uSAR 2026-08-21 · day −0.88u · running −19.50uDMR 2026-08-22 · day +2.40u · running −17.10uSAR 2026-08-22 · day −8.00u · running −25.10uDMR 2026-08-23 · day +1.60u · running −23.50uSAR 2026-08-23 · day −8.00u · running −31.50uSAR 2026-08-26 · day +16.98u · running −14.52uDMR 2026-08-27 · day −4.00u · running −18.52uSAR 2026-08-27 · day −4.10u · running −22.62u−43.00uwithout that card−22.62upublished total
Cumulative, every cardExcluding SAR 2026-07-26

Flat-$2 running total, one point per graded card. Losses are plotted identically to wins. The dashed line is the same record with SAR 2026-07-26 removed; it ends at −43.00 units. One card carrying that much of the net is the most important thing on this page, so it is drawn rather than described.

Every published card, newest first: picks, win-loss, flat-$2 profit and loss, ROI, and market drift against the morning line. Ungraded days appear with their status rather than being omitted.
DateTrackPicksW–LFlat-$2ROIDrift
Fri Aug 28SAR3grading pending, results not yet posted; the picks are locked in the ledger
Fri Aug 28DMR4grading pending, results not yet posted; the picks are locked in the ledger
Thu Aug 27SAR41-3-4.10-51.2%+44.9%
Thu Aug 27DMR20-2-4.00-100.0%+86.6%
Wed Aug 26SAR42-2+16.98212.2%-5.8%
Sun Aug 23SAR40-4-8.00-100.0%+19.9%
Sun Aug 23DMR21-1+1.6040.0%+26.6%
Sat Aug 22SAR40-4-8.00-100.0%+15.2%
Sat Aug 22DMR41-3+2.4030.0%+44.3%
Fri Aug 21SAR42-2-0.88-11.0%+81.1%
Fri Aug 21DMR31-1-0.60-15.0%+79.9%
Thu Aug 20SAR40-3-6.00-100.0%+69.2%
Thu Aug 20DMR30-3-6.00-100.0%+66.8%
Wed Aug 19SAR41-3-4.60-57.5%+22.5%
Sun Aug 16SAR40-4-8.00-100.0%+14.5%
Sun Aug 16DMR41-3-5.40-67.5%-1.5%
Sat Aug 15SAR42-1+15.04250.7%+13.2%
Sat Aug 15DMR31-2-1.00-16.7%+56.4%
Fri Aug 14SAR41-3-2.20-27.5%-0.3%
Fri Aug 14DMR30-3-6.00-100.0%+40.9%
Thu Aug 13SAR41-3-4.80-60.0%+59.9%
Thu Aug 13DMR32-1+6.00100.0%+8.7%
Wed Aug 12SAR22-0+8.54213.5%+52.8%
Sun Aug 9SAR40-4-8.00-100.0%+39.4%
Sun Aug 9DMR20-2-4.00-100.0%+47.2%
Sat Aug 8SAR40-4-8.00-100.0%+3.8%
Sat Aug 8DMR42-2+3.2040.0%+73.3%
Fri Aug 7SAR31-2+0.528.7%+18.8%
Fri Aug 7DMR30-2-4.00-100.0%+50.7%
Thu Aug 6SAR42-2+3.3441.8%+36.6%
Thu Aug 6DMR11-0+2.60130.0%+73.9%
Sun Aug 2SAR42-2+4.2853.5%+43.1%
Sun Aug 2DMR41-3-1.40-17.5%+56.6%
Sat Aug 1SAR42-2+8.94111.8%+21.0%
Sat Aug 1DMR40-4-8.00-100.0%+50.4%
Fri Jul 31SAR31-0+5.68284.0%+4.2%
Fri Jul 31DMR40-3-6.00-100.0%+5.4%
Thu Jul 30DMR40-4-8.00-100.0%n/a
Sun Jul 26SAR42-2+20.38254.8%-26.3%
Sun Jul 26DMR43-1+19.60245.0%+14.4%
Sat Jul 25SAR41-3-0.16-2.0%+56.9%
Sat Jul 25DMR41-3-2.60-32.5%+96.3%
Fri Jul 24SAR40-4-8.00-100.0%+22.0%
Fri Jul 24DMR40-4-8.00-100.0%+42.0%
Thu Jul 23SAR41-3-3.28-41.0%+23.7%
Thu Jul 23DMR40-3-6.00-100.0%+32.0%
Sun Jul 19SAR41-3+0.303.7%+29.1%
Sun Jul 19DMR40-4-8.00-100.0%-0.7%
Sat Jul 18SAR42-0+4.70117.5%+32.1%
Sat Jul 18DMR42-1+5.2086.7%+78.7%
Fri Jul 17SAR41-2+0.406.7%+44.3%
Fri Jul 17DMR41-3+0.405.0%+32.4%
Thu Jul 16SAR31-2+0.305.0%+6.4%

The card is also published on TwinSpires as Edge Card Plays. Edge Card is an independent publication, not a TwinSpires product, and the record here is the whole record either way.

Did our price hold to post?

Did our flagged price hold to post?

Our flags are straight win bets. In a pari-mutuel pool your payout is set by the final odds no matter when you bet, so there is no price to hold you to . This table is a model diagnostic, not a bet rule. Overlay at close counts the flags whose closing odds still beat our fair number: the value we saw was real at post. Value at the close is the stricter test. the close also reached the reference price we recorded before the race. When these run low, it means our fair line is too long, usually because it is anchored to a generous morning line rather than the real market. That is the known v0 weakness the version notes track. ML→close is the opposite signal: how far the crowd moved toward our flags after we published.

Value at the close
57/165
Overlay at close
69/165
Median ML→close
+1.0 pts
Did our price hold to post: for every graded selection, the price we called, the reference price we required, where the market closed, and whether the value we claimed survived to post.
DateRaceHorseOur callRef≥ClosedAt closeML→closeResult
Thu Aug 27R8Titan ReadyLikely bet down6/55/2value-1.1lost
Thu Aug 27R5Jet Black JewelPrice may move5/23/5short+2.3lost
Thu Aug 27R4First Call BobPrice may move9/27/2short+4.3lost
Thu Aug 27R3YinzerLikely bet down5/25/2value-0.5lost
Thu Aug 27R2WingfootPrice may move7/21/1short+2.5won
Thu Aug 27R1Silkie SeveiPrice may move5/29/5short+1.1lost
Wed Aug 26R7Go For LaunchPrice may move7/210/1value-4.0won
Wed Aug 26R7Shining MomentPrice may move7/210/1value-4.5lost
Wed Aug 26R5Al MowashaahLikely bet down2/18/5short+0.9lost
Wed Aug 26R2Unit EconomicsLikely bet down4/51/2short+0.3won
Sun Aug 23R9SyntaxLikely bet down4/19/2value-0.4lost
Sun Aug 23R8Tough StreetLikely bet down3/15/2short+1.1lost
Sun Aug 23R5Run Curtis RunLikely bet down5/23/1value-0.6lost
Sun Aug 23R5Maggles McgeeLikely bet down5/29/5short+1.7won
Sun Aug 23R3Hot CurrencyLikely bet down8/53/5short+1.1lost
Sun Aug 23R1Ice ChocolatLikely bet down6/52/1value-0.1lost
Sat Aug 22R12Mary LoisLikely bet down5/27/2value+0.0lost
Sat Aug 22R10SegestaLikely bet down7/54/5short+0.5lost
Sat Aug 22R9Playa Del MarLikely bet down3/14/1value+0.2lost
Sat Aug 22R9Kensington LaneLikely bet down7/29/5short+1.3lost
Sat Aug 22R7CentrodelanteroPrice should hold13/29/1value-0.6lost
Sat Aug 22R3Ventry StrandPrice may move4/15/2short+2.3lost
Sat Aug 22R1Modest MacleanLikely bet down8/51/1short+0.6lost
Sat Aug 22R1FlamboyantPrice should hold6/14/1short+3.8won
Fri Aug 21R8Boston's PhinestLikely bet down8/53/5short+0.8won
Fri Aug 21R7Georgia MagicLikely bet down3/11/1short+3.0won
Fri Aug 21R5Seeking AttentionLikely bet down5/23/5short+1.8won
Fri Aug 21R3Hurricane WayLikely bet down3/18/5short+1.4lost
Fri Aug 21R2Quick To AccusePrice may move5/12/1short+2.9lost
Fri Aug 21R1CuginoLikely bet down3/21/1short+0.6lost
Thu Aug 20R8Birkin GirlPrice may move4/19/2value+0.6lost
Thu Aug 20R7A Little At FirstLikely bet down2/18/5short+1.3lost
Thu Aug 20R7Spirit Of New YorkPrice may move9/211/2value+0.6lost
Thu Aug 20R5HimothyPrice should hold6/17/2short+6.6lost
Thu Aug 20R3Missed FortuneLikely bet down5/26/5short+2.4lost
Thu Aug 20R1Wiki KaneLikely bet down3/11/1short+1.5lost
Wed Aug 19R8Paula's ChoiceLikely bet down2/13/5short+1.8won
Wed Aug 19R7Celtic DawnLikely bet down2/15/2value+0.6lost
Wed Aug 19R5Hot Off The BeachLikely bet down7/26/1value-2.1lost
Wed Aug 19R2ConcurrentlyLikely bet down7/27/2short-0.1lost
Sun Aug 16R9Intricate SpiritPrice may move11/213/2value-0.3lost
Sun Aug 16R9GettinbyLikely bet down7/27/1value-2.9lost
Sun Aug 16R8InspeightofcharlieLikely bet down4/12/1short+1.3lost
Sun Aug 16R7InstantlyLikely bet down2/12/1short+0.5lost
Sun Aug 16R7CiprianiLikely bet down7/212/1value-10.0lost
Sun Aug 16R5Sweet AztecaLikely bet down6/51/4short+0.5won
Sun Aug 16R4Scene By MeLikely bet down4/12/1short+1.9lost
Sun Aug 16R3Limes Don't LieLikely bet down3/15/2short+0.1lost
Sat Aug 15R10CadenzaLikely bet down3/14/1value-0.5won
Sat Aug 15R9SurviePrice may move3/19/2value+1.5won
Sat Aug 15R8VrontiLikely bet down5/23/2short+1.0won
Sat Aug 15R7CandytownPrice may move7/27/2value+1.0lost
Sat Aug 15R6Grand Slam SmileLikely bet down2/13/5short+1.0lost
Sat Aug 15R2WildcatterLikely bet down3/12/1short+2.0lost
Fri Aug 14R9Miss VyvyanneLikely bet down5/25/2value-0.2lost
Fri Aug 14R8Danzing DaisyPrice may move5/29/5short+3.2lost
Fri Aug 14R6PokerknightatveesPrice should hold7/210/1value-1.8lost
Fri Aug 14R4ZalamoPrice may move5/19/2short+1.4lost
Fri Aug 14R3IntellectLikely bet down9/59/5value-0.1won
Fri Aug 14R2Southern KissLikely bet down9/51/1short+1.1lost
Fri Aug 14R1First BlessingPrice may move9/211/1value-5.7lost
Thu Aug 13R7Shoot It TrueLikely bet down6/53/5short+0.4won
Thu Aug 13R7RethinkPrice may move3/18/1value-2.4lost
Thu Aug 13R6FionnLikely bet down6/54/5short+0.3lost
Thu Aug 13R5Elite HeatLikely bet down5/23/1value+0.3won
Thu Aug 13R4MajazLikely bet down9/52/1value-0.2lost
Thu Aug 13R1Liberty's AdvancePrice may move3/11/1short+4.0lost
Thu Aug 13R1Mr. A. P.Likely bet down6/54/5short+0.8won
Wed Aug 12R9GumPrice may move9/22/1short+2.5won
Wed Aug 12R5Artistic SuccessLikely bet down3/15/2short+0.7won
Sun Aug 9R11BostontonianPrice should hold13/210/1value-2.3lost
Sun Aug 9R10Ciao ChuckLikely bet down3/15/2short+1.1lost
Sun Aug 9R6Capricious OutcomeLikely bet down9/54/5short+1.6lost
Sun Aug 9R5All Star LeighLikely bet down3/16/5short+1.3lost
Sun Aug 9R5EnterdadragonLikely bet down3/14/1value+0.0lost
Sun Aug 9R1Ulysses RoseLikely bet down9/54/5short+1.7lost
Sat Aug 8R10RhetoricalLikely bet down5/29/2value-2.0lost
Sat Aug 8R8Sweet RebeccaLikely bet down3/15/2short+0.8lost
Sat Aug 8R8WarmingPrice may move5/19/5short+4.2won
Sat Aug 8R7Write Off JerryPrice should hold6/19/1value+2.9lost
Sat Aug 8R6Conquer We MustLikely bet down4/19/5short+1.7lost
Sat Aug 8R5FactPrice may move4/17/2short+1.2lost
Sat Aug 8R4Code DuelloLikely bet down5/29/5short+1.7won
Sat Aug 8R3Yo DaddyPrice may move7/25/1value-0.3lost
Fri Aug 7R10Fitz RightLikely bet down3/17/2value-0.8lost
Fri Aug 7R8Joint VentureLikely bet down3/12/1short+1.3lost
Fri Aug 7R6Make Me MoneyLikely bet down7/29/5short+1.7lost
Fri Aug 7R3Coach RyanLikely bet down3/15/2short+0.7won
Fri Aug 7R2Midtown MischiefLikely bet down5/27/5short+1.2lost
Thu Aug 6R8A Bourbon For TobyLikely bet down7/25/2short+0.8lost
Thu Aug 6R7Risk ToleranceLikely bet down6/51/1short+0.0won
Thu Aug 6R4Play Good Pay GoodPrice should hold15/26/1short+4.1lost
Thu Aug 6R4City BlocksPrice may move5/15/2short+2.3won
Thu Aug 6R1NokieLikely bet down5/26/5short+1.7won
Sun Aug 2R10Little Hidden PortPrice should hold5/19/2short+3.4lost
Sun Aug 2R9Jolene FuryPrice may move2/15/2value+2.3lost
Sun Aug 2R7NobalsPrice should hold13/24/1short+6.2lost
Sun Aug 2R7KeewaydinPrice may move11/215/2value-1.7lost
Sun Aug 2R4Dividend RecapLikely bet down5/28/5short+0.9won
Sun Aug 2R3O K RosePrice should hold3/113/2value+1.6lost
Sun Aug 2R2Avalon RosePrice may move9/25/2short+2.7won
Sun Aug 2R1Silly SeasonLikely bet down5/25/2value+1.0won
Sat Aug 1R12NonconsecutivetrmsLikely bet down5/22/1short+0.6won
Sat Aug 1R11IllmaticPrice may move4/15/2short+2.0lost
Sat Aug 1R10Seismic BeautyLikely bet down5/23/2short+1.0lost
Sat Aug 1R9OwlPrice should hold9/18/1short+6.7lost
Sat Aug 1R7Silkie SeveiLikely bet down4/19/5short+2.2lost
Sat Aug 1R6BookedLikely bet down9/52/1value-0.6lost
Sat Aug 1R3Tuscan SkyPrice may move11/29/2short+1.4won
Sat Aug 1R1Maggles McgeeLikely bet down2/15/2value+0.4lost
Fri Jul 31R6Sogno Di VinoPrice may move5/112/1value-6.1lost
Fri Jul 31R6KokosanLikely bet down7/29/5short+1.3lost
Fri Jul 31R4March Of TimePrice may move5/15/1value+0.9lost
Fri Jul 31R3MursalLikely bet down7/23/1short+0.2won
Sun Jul 26R9Gold PhoenixLikely bet down3/19/2value-1.7won
Sun Jul 26R8MaidaPrice may move7/27/1value-1.8won
Sun Jul 26R6SamartinaLikely bet down4/111/2value-1.9won
Sun Jul 26R5Come On OmLikely bet down3/13/1value+0.8won
Sun Jul 26R4RabeebaPrice may move4/13/1short+2.1won
Sat Jul 25R11TuthilltownPrice should hold9/19/2short+7.3lost
Sat Jul 25R10CornucopianLikely bet down3/16/5short+1.8lost
Sat Jul 25R9Can't SleepPrice should hold9/23/1short+5.1lost
Sat Jul 25R8Paige TurnerPrice should hold15/210/1value+1.8lost
Sat Jul 25R7Ventry StrandLikely bet down5/27/5short+2.1lost
Sat Jul 25R6Emerging MarketLikely bet down9/53/5short+1.1lost
Sat Jul 25R4InspeightofcharlieLikely bet down3/13/1short+0.6won
Sat Jul 25R1Kinzlee'scharismaLikely bet down7/29/5short+2.3won
Fri Jul 24R10War And MajestyPrice may move4/19/2value+1.6lost
Fri Jul 24R9Spirit Of New YorkPrice may move3/15/1value+1.2lost
Fri Jul 24R8Flash Of LightningLikely bet down3/15/2short+1.1lost
Fri Jul 24R7Mommy's TurnLikely bet down3/18/5short+1.3lost
Fri Jul 24R6Bad Uncle BarryPrice may move9/23/1short+1.9lost
Fri Jul 24R4City ExileLikely bet down2/11/1short+1.5lost
Fri Jul 24R4Lord BullingdonLikely bet down7/25/2short+0.5lost
Fri Jul 24R3Krissys StarPrice should hold15/215/1value-1.9lost
Thu Jul 23R8Suntory TimePrice may move11/211/2short+0.5lost
Thu Jul 23R7Celtic DawnLikely bet down5/22/1short+0.5lost
Thu Jul 23R6Canto Della TerraLikely bet down7/29/2value-0.3lost
Thu Jul 23R4Spirit Of St LouisLikely bet down5/29/5short+0.3lost
Thu Jul 23R4SalamisLikely bet down3/17/5short+1.1won
Thu Jul 23R2Practical JackPrice should hold7/111/2short+6.3lost
Thu Jul 23R1Bounding AlongLikely bet down3/13/1short+0.7lost
Sun Jul 19R11ZalamoPrice may move4/15/1value+0.9lost
Sun Jul 19R7Fair QuestionPrice should hold13/215/1value-6.0lost
Sun Jul 19R5Pelican PridePrice should hold6/19/1value-0.6lost
Sun Jul 19R4Hot GossipPrice should hold4/18/1value+0.1lost
Sun Jul 19R3MotoriousLikely bet down9/58/5short+0.4lost
Sun Jul 19R2Emergency NinePrice should hold11/23/1short+4.8won
Sun Jul 19R1American GrantPrice should hold7/111/1value+0.5lost
Sun Jul 19R1Freddy Five FourPrice should hold13/215/2value+0.6lost
Sat Jul 18R11KoekkoekLikely bet down3/13/1short+1.0won
Sat Jul 18R8Cy FairLikely bet down9/51/2short+0.1won
Sat Jul 18R7CentrodelanteroLikely bet down4/18/5short+2.4lost
Sat Jul 18R6Net ParLikely bet down3/13/5short+1.9won
Sat Jul 18R4Shape NoteLikely bet down7/29/5short+1.7won
Fri Jul 17R9Deep SatinPrice may move15/27/2short+1.6lost
Fri Jul 17R8Secured FreedomPrice should hold9/115/1value-4.0lost
Fri Jul 17R5Boston's PhinestPrice may move6/12/1short+2.8won
Fri Jul 17R4Code DuelloLikely bet down7/25/2short+1.0lost
Fri Jul 17R3Charlie's ClockLikely bet down5/24/5short+1.1lost
Fri Jul 17R2Victorious DreamPrice may move7/23/1short+2.8won
Fri Jul 17R1BeijingLikely bet down4/17/2short+0.5lost
Thu Jul 16R7English LawLikely bet down6/12/1short+1.4won
Thu Jul 16R6JadorlinijaPrice may move15/215/2short-1.4lost
Thu Jul 16R2Irish GoodbyeLikely bet down7/23/1short-0.3lost

ML→close = to-1 points the price moved from the morning line to post. Positive means it shortened. This is descriptive only: because your payout is the final price regardless of when you bet, our “play at” figure is a reference price and not a rule. There is no earlier price to catch and nothing to hold you to. To be unambiguous, because it matters: a flag that closes below that figure is still graded on the public record, win or lose. It does not become a pass after the fact. A run of “short” closes is a sign our number was set against a loose morning line, not the real market.

Our call is an early hold/shorten read set from each flag’s committed board price. Long-priced flags the crowd tends to leave alone hold, short ones get bet down. It is a heuristic on a small sample, shown next to what actually happened so you can watch it prove out or fail in public. Not a bet-timing tip: you are paid the closing price whenever you bet, so a flag we call “likely bet down” is simply a likely pass. The read is versioned: cards locked before August 24, 2026 carry the call they were published with, from one pair of thresholds used at both meets, and cards from that date use thresholds set separately for each track. This column therefore mixes two versions on purpose. A call we have already published is not restated.

Calibration

When we say 30%, do they win 30%?

Across every runner we priced, not just the flags, binned by our model win probability against how often they actually won. The probabilities were hash-chained before post, so this is an honest reliability check, not a backtest.

Runners scored
4037
Brier (model)
0.102
Brier (morning line)
0.101

Brier score: lower is better (0 = perfect). Ours and the morning line’s sit within a thousandth of each other, and that is the honest headline: a standalone Brier comparison cannot tell a real model from a plausible one. Both numbers are dominated by the fact that most horses lose, and a model that did nothing but copy the board would score the same as the board.

So we ask the question that separates them: does our number add anything the board does not already contain? Fit the outcome on the market’s estimate alone, then again with ours added, and test whether the second fit is genuinely better.

The answer is suggestive, at the edge of significance, on a sample too small to lean on. We are publishing all of it rather than the flattering part.

The test was chosen and written down before we ran it, by someone other than the person who built the model. That matters more than the result. Anyone can fit models until one of them clears a threshold and then publish that one; the only defence is to fix the method in advance and be bound by whatever it returns. The estimator below, a conditional logit on race choice sets, was specified, written and frozen by a separate reviewer before any of these numbers existed, and we are reporting exactly what it produced, including the two checks that go against us.

Frozen analysis, as of 2026-07-31. Every figure in this section is pinned to the ledger as it stood that day and is deliberately not re-fit as new races are graded. Re-fitting a pre-registered test to newer data is the thing pre-registration exists to prevent. The race and runner counts below are therefore smaller than the calibration counts above, and that is expected, not an error. When it is re-run, it will be re-run in full and dated again.

The pre-registered test is a conditional logit over race choice sets, 138 races, 1,170 runners. Our estimate carries a coefficient of +0.6643 (standard error 0.3013) once the board is already in the model, likelihood-ratio χ²(1) = 4.833, p = 0.0279.

Two robustness checks disagree with that, and they matter more than the headline. Allowing for the fact that horses in the same race are not independent gives a cluster-robust p of 0.0548, the wrong side of the conventional 0.05 line. And when whole races are resampled and the test refit, 41% of those refits fail to reach significance at all. A result that disappears two times in five under resampling is not a finding to build on.

An earlier version of this page reported p = 0.026 from the same data. That number was overstated and we are correcting it. It treated all 1,181 runners as independent observations. They are not: exactly one horse wins each race, and the probabilities are worked out relative to the others in that race, so the real number of independent units is the 138 races, not the runners. Ignoring that makes any result look stronger than it is.

Superseded figure below. The current record is 47-125, -22.62 units, -6.6% ROI. The paragraph that follows is the frozen snapshot from the pre-registered analysis and is not our current performance. It is kept because deleting a figure we once published is not something we do.

Alongside it, the money, as measured on 2026-07-31, when this analysis was run. It is a smaller sample than the running record above and does not match it, because races have been graded since. The running record is the current figure; this one is frozen so the pre-registered analysis cannot be re-fit to newer data. Over 58 settled bets across 16 race days, flat-$2 profit is +7.24 units, an ROI of +6.2% with a 95% range of -46% to +68%, and roughly a 43% chance the true long-run figure is negative. Whole race days were resampled rather than individual bets, because one day carries most of the profit.

We are deliberately not printing a yes or no here. The method and every number are published together so you can weigh them yourself, and the full output is in the machine-readable record. Judge it again at the end of the meet, when there is more of it.

0%0%20%20%40%40%60%60%perfectPREDICTEDOBSERVED0–10% · predicted 6% · observed 6% · n=2045n=204510–20% · predicted 14% · observed 16% · n=1544n=154420–30% · predicted 24% · observed 31% · n=337n=33730–40% · predicted 33% · observed 32% · n=90n=9040–50% · predicted 45% · observed 41% · n=17 · too thin to read50–60% · predicted 53% · observed 50% · n=4 · too thin to readruns hot: 24% priced, 31% won

Each circle is one probability band. Its area is how many runners stand behind it, so the two bands holding most of the book are the two that dominate the picture, which is the correct weighting and the thing a row of equal-length bars could not show. On the dashed line means a band did exactly what it said it would.

The gap worth knowing about is the 20–30% band: across 337 runners we priced them at 24% and they won 31% of the time. That is the model being shy in its middle range, not sharp.

The faded circles are bands with fewer than 50 runners (21 between them). They are drawn because leaving them out would be editing the picture, and muted because nothing can be read from them.

The same numbers as a table
BandPredictedObservedRunners
0–10%6%6%2045
10–20%14%16%1544
20–30%24%31%337
30–40%33%32%90
40–50%45%41%17
50–60%53%50%4

Provenance

One hash chain, verifiable

The public ledger is one continuous SHA-256 chain: every card’s lock entry references the exact bytes of the entry before it, so a back-edit anywhere breaks the walk. Chain status: verified ✓ · 949 entries · 54 cards.

SARThu Jul 16 · SHA 970405a2813327fc…
DMRFri Jul 17 · SHA 910012f7fdcbbcbd…
SARFri Jul 17 · SHA cb1ec2f6d1d68ffd…
DMRSat Jul 18 · SHA 452a707b645298a8…
SARSat Jul 18 · SHA ba2c741b3ea0c8a2…
DMRSun Jul 19 · SHA 4c9c5e8e4aef0d3a…
SARSun Jul 19 · SHA a989d8e7773e6e83…
DMRThu Jul 23 · SHA 5d18e4b2450bfe33…
SARThu Jul 23 · SHA 834825237f681453…
DMRFri Jul 24 · SHA 7a988efd1ee58c4d…
SARFri Jul 24 · SHA 74b3e1d7629297c4…
DMRSat Jul 25 · SHA 7bfff866e6b7172b…
SARSat Jul 25 · SHA f82ed51d5645eb05…
DMRSun Jul 26 · SHA ee2f7ccdc08a723a…
SARSun Jul 26 · SHA 99d2c0a8398a0d5d…
DMRThu Jul 30 · SHA 81b42c1e625ff520…
SARThu Jul 30 · SHA 833504d9e1be60fe…
DMRFri Jul 31 · SHA 38a2c1953e922294…
SARFri Jul 31 · SHA 6b6a065dc0051fd0…
DMRSat Aug 1 · SHA e8e8657c2f9469d2…
SARSat Aug 1 · SHA e4a0b565b4004683…
DMRSun Aug 2 · SHA 0d4b92f30fa8b903…
SARSun Aug 2 · SHA 750cbac128ab5ed9…
DMRThu Aug 6 · SHA b61e301215faf08d…
SARThu Aug 6 · SHA 2a965c9da7b08cdf…
DMRFri Aug 7 · SHA 25134c86e30291e6…
SARFri Aug 7 · SHA 69a6d1abd18ee5f8…
DMRSat Aug 8 · SHA 41c5263e482e2b27…
SARSat Aug 8 · SHA 5d303a6f6a279314…
DMRSun Aug 9 · SHA 32cd1b413d0e3634…
SARSun Aug 9 · SHA cef1963caf274445…
SARWed Aug 12 · SHA 5ca2650e76e9cabf…
DMRThu Aug 13 · SHA 3340caa20c7b373e…
SARThu Aug 13 · SHA 3f7a8c2026dc6e00…
DMRFri Aug 14 · SHA 2faf53de0ee20de8…
SARFri Aug 14 · SHA 82f43a1c410ca947…
DMRSat Aug 15 · SHA 8089db42a62e526a…
SARSat Aug 15 · SHA 7b5952d2150fa514…
DMRSun Aug 16 · SHA 8071829086ee07f8…
SARSun Aug 16 · SHA a53e999c04420f8d…
SARWed Aug 19 · SHA bd84ebbadf79d928…
DMRThu Aug 20 · SHA a6bf8f5f14aad303…
SARThu Aug 20 · SHA caadf63dc0d61a6a…
DMRFri Aug 21 · SHA 30b9596cff166c34…
SARFri Aug 21 · SHA 5270b9fb42b742a4…
DMRSat Aug 22 · SHA 36db7c843b6c2c23…
SARSat Aug 22 · SHA 86994caec317123b…
DMRSun Aug 23 · SHA 9f6019a8bddda5c0…
SARSun Aug 23 · SHA 4cf82544adf7bce6…
SARWed Aug 26 · SHA 552d58c7f0868dc1…
DMRThu Aug 27 · SHA 432d7a35925f5570…
SARThu Aug 27 · SHA 4655d20cf706c2a8…
DMRFri Aug 28 · SHA e0bdbe1af7a733c8…
SARFri Aug 28 · SHA 842f3091d513bdb0…

Corrections and verification

Two integrity defects were found on 2026-07-26 and are recorded here in full. No card, metadata file, ledger entry, recorded hash, or timestamp proof was rewritten to make either go away.

How to verify a card

Download card.json from any card page and hash it (sha256sum card.json). That value should equal the downloadable artifact hash shown in that card’s “Verifying this card” box. The card’s OpenTimestamps proof commits to those same bytes.

There are four independent evidence layers, answering different questions:

  1. The append-only ledger and Git history: when the card was committed, and that nothing was edited afterwards.
  2. The card lock and publication timestamps: that the card existed before first post.
  3. The OpenTimestamps calendar commitment: independent third-party evidence that those exact bytes existed when we say they did.
  4. A Bitcoin attestation, once the proof is upgraded: the same evidence anchored in a block.

Layers 1 and 2 establish that a pick was published before post. A Bitcoin confirmation arriving later strengthens the external evidence; it is not what makes the pre-post claim true, and a pending proof does not weaken it.

Card hashes: recorded lock hash vs downloadable file

Cards published before 2026-07-26 were generated on Windows. The lock hash was calculated from CRLF-formatted bytes before Git stored the same JSON with LF line endings, so the recorded hash does not match the file you can download. The selections and JSON values are unchanged. The difference is exclusively line endings, proven byte-for-byte for every affected card. This broke reproducible verification, which is why it is disclosed here rather than described as a formatting detail.

CardDownloadable hashOriginal lock hashDifferenceOpenTimestamps
2026-07-16-sar91f2264a9bd2786d…970405a2813327fc…newline-onlyBitcoin confirmed (block 958263)
2026-07-17-dmr5c5738c552644939…910012f7fdcbbcbd…newline-onlyBitcoin confirmed (block 958444)
2026-07-17-sareee831ef7500a09f…cb1ec2f6d1d68ffd…newline-onlyBitcoin confirmed (block 958444)
2026-07-18-dmrf054f172d11271ff…452a707b645298a8…newline-onlyBitcoin confirmed (block 958590)
2026-07-18-sar7470d5434d899bc6…ba2c741b3ea0c8a2…newline-onlyBitcoin confirmed (block 958587)
2026-07-19-dmr0a22d8979143b47d…4c9c5e8e4aef0d3a…newline-onlyBitcoin confirmed (block 958756)
2026-07-19-sara295b82f5d0ccac7…a989d8e7773e6e83…newline-onlyBitcoin confirmed (block 958756)
2026-07-23-dmr3c06ef8b29249138…5d18e4b2450bfe33…newline-onlyBitcoin confirmed (block 959238)
2026-07-23-sar09ba713f7784c496…834825237f681453…newline-onlyBitcoin confirmed (block 959238)
2026-07-24-dmr4e9088b356aa5dd4…7a988efd1ee58c4d…newline-onlyBitcoin confirmed (block 959385)
2026-07-24-sar8b399bb0a6fe598b…74b3e1d7629297c4…newline-onlyBitcoin confirmed (block 959385)
2026-07-25-dmr6784f29f6adc84a4…7bfff866e6b7172b…newline-onlyBitcoin confirmed (block 959570)
2026-07-25-sar7ed9dae36137d5e8…f82ed51d5645eb05…newline-onlyBitcoin confirmed (block 959570)
2026-07-26-dmr1c5d42b418bbde69…ee2f7ccdc08a723a…newline-onlyBitcoin confirmed (block 959652)
2026-07-26-sardb33d2f0e2962fc1…99d2c0a8398a0d5d…newline-onlyBitcoin confirmed (block 959652)

Provenance display defects

Cases where the evidence was intact but the site did not show it. Recorded to the same standard as anything else here: what a reader saw, what actually caused it, and how long it lasted.

PD-2026-08-01-01 · 4 cards

Affected: 2026-07-31-dmr, 2026-07-31-sar, 2026-08-01-dmr, 2026-08-01-sar
Window: approximately two days; began when the 07-31 cards published, ending 2026-08-01T18:05:00+00:00
Found by: us, from a failing test

What readers saw. These four card pages rendered with no 'Verifying this card' block: no downloadable artifact hash and no OpenTimestamps status. Cards from 07-25 and 07-26 displayed theirs normally, so the omission read as arbitrary rather than as a build stage that had not run.

Why. The site build rendered pages BEFORE regenerating proof_status.json, and it writes that file into the same tree it reads its inputs from. A build on a clean checkout therefore rendered from whatever proof_status.json happened to be committed, and the committed copy covered 17 of 21 cards -- it did not yet list these four. The renderer found no proof entry for them and emitted no verification block. The build then overwrote the stale file, so a second build produced different bytes from the first.

The proofs were never missing. Not a missing, invalid, expired or mis-targeted proof, and not a hash discrepancy. No card, ledger entry, recorded hash or timestamp proof was altered at any point. Every affected card held a valid timestamp proof committing to its current published bytes throughout.

Effect on the record: No selection, result, grade or published figure changed. The defect was entirely in what the page displayed about verification.

Fixed. scripts/build_deployable_site.py now regenerates record.json, proof_status.json and proof_registry.json BEFORE rendering. Verified from a genuinely clean checkout -- site/ and all three regenerated files deleted -- that two consecutive builds differ in 0 of 208 files and all four cards render their block on the first build.

Still open. The build still writes into its own source tree, which is the property that made this possible. Making the archive root read-only input is scheduled and recorded in docs/known_issues/build_writes_into_its_own_source_tree.md.

Machine-readable: provenance_defects.jsonl

Machine-readable: card_hash_corrections.jsonl (hash-chained, append-only) and proof_status.json.

Metadata proofs

A card’s meta.json holds presentation detail: publish time, weather, per-pick notes. For 2026-07-17 (both tracks) that file was edited after its proof was created, so the original proof commits to the metadata as first published, not to the current file. Both are kept: meta.json.ots is the original-publication proof, and meta.current.json.ots commits to the current bytes, stamped 2026-07-26 and labelled as such. The card hash embedded in the metadata never changed, and the card.json proofs are unaffected. Metadata is presentation, not locked evidence. The card is the locked evidence.

Result entries: provisional grades superseded by chart grades

Provisional results were later superseded by enriched chart results. Both entries remain in the append-only ledger, while the canonical record counts each selection once. Settlement values (win/loss and P/L) agree in every case; the later entry only adds finishing position, closing odds and drift.

Raw result entries in the ledger192
Effective unique results184
Chart-enrichment supersessions8
Conflicting settlements0
Pending selections7
Record47-125
Voids12
Net (flat $2)-22.62
ROI-6.6%

Machine-readable: record.json. It distinguishes raw ledger entries from effective results, so the de-duplication rule is visible rather than something you have to reconstruct.