🔬 Data Science
Del Mar, Aug 22: Knightsbridge isn't Fierceness, and this year he may not have to be
August 23, 2026 · 7 min read
🏇 Card Debrief · Saratoga
Saratoga, Aug 22: our two-horse Alabama ticket survived by a neck
August 22, 2026 · 5 min read
💣 Opinion
Everybody in this sport has the data except the people betting on it
August 17, 2026 · 8 min read
🏇 Card Debrief · Four Tracks
Thursday, Aug 13: 34 winners of 35 in the pool, and a bug that was quietly flattering my own scorecard
August 13, 2026 · 5 min read
🏇 Card Debrief · Horseshoe Indianapolis
Horseshoe Indianapolis, Aug 11: the morning line was fiction by post time
August 11, 2026 · 5 min read
🏇 Card Debrief · Assiniboia Downs
Assiniboia Downs, Aug 11: the 20/1 horse that was never 20/1
August 11, 2026 · 5 min read
🏇 Card Debrief · Finger Lakes
I Flagged All Three of My Own Winners as Do-Not-Trust
August 10, 2026 · 5 min read
🏇 Card Debrief · Saratoga
Chalk went 2-for-11. I'd love to tell you that was our idea.
August 9, 2026 · 5 min read
🏇 Card Debrief · Mountaineer Park
Mountaineer: two odds-on winners, both listed sixth
August 9, 2026 · 5 min read
🏇 Card Debrief · Del Mar
Del Mar, Aug 9: we bet the winner and forgot to cover it
August 10, 2026 · 5 min read
🏇 Card Debrief · Ellis Park
I typed HARD AVOID in capital letters. He won at 7-1.
August 9, 2026 · 5 min read
🎟️ Losing Tickets
0-for-11: I built a model, then bet against it
August 9, 2026 · 5 min read
🏇 Card Debrief · Saratoga
Saratoga, Aug 8: four Grade 1s, two misses, and only one of them was our fault
August 9, 2026 · 5 min read
📊 By The Numbers · Saratoga
Saratoga, Aug 8: who actually had a good day — and why our hot-jockey flag should be embarrassed
August 9, 2026 · 4 min read
🏇 Card Debrief · Del Mar
Del Mar, Aug 8: ten for ten, which I refuse to enjoy
August 9, 2026 · 4 min read
🏇 Card Debrief · Ellis Park
Ellis Park, Aug 8: we called it a mess and the mess complied
August 9, 2026 · 4 min read
🏇 Card Debrief · Saratoga
Saratoga, Aug 7: the chalk got mugged and we called most of it
August 8, 2026 · 5 min read
🏇 Card Debrief · Del Mar
Del Mar, Aug 7: 6 for 8, and we'd argued about both misses already
August 8, 2026 · 5 min read
📊 Model Update
Track bias is real. Fitting it isn't an edge.
August 7, 2026 · 5 min read
⚙️ Model Update
Pace has teeth after all — just not where I looked first
August 2, 2026 · 7 min read
🔬 Data Science
The fulcrum, and a synergy I didn't expect
August 1, 2026 · 6 min read
✨ New Feature
The overlays: where the market is actually blind
July 24, 2026 · 7 min read
✨ New Feature
The banker flags — and the fade traps
July 18, 2026 · 6 min read
⚙️ Model Update
Stop picking winners. Size the pool.
July 16, 2026 · 5 min read
📖 Origin Story
I threw out the model. The market won.
July 15, 2026 · 8 min read
🔬 Data Science · Oaklawn Park
Oaklawn Park GPS: Why the "Presser" seat is worth +0.75 in the Slop
April 17, 2026 · 5 min read
🏇 Race Recap · Keeneland
KEE Apr 16 Recap: The "Presser" Seat is the Best Seat in the House
April 16, 2026 · 6 min read
🏇 Daily Picks · Keeneland
KEE Apr 16: The "Presser" Card — 4 Best Bets Per Race via GPS v8.3
April 16, 2026 · 8 min read
⚙️ Model Update · Keeneland
The Keeneland Speed Trap: Why GPS Says "Fade the Wire" on Dirt Routes
April 16, 2026 · 5 min read
🔬 Data Science
The Power Position: Calibrating Track Bias via GPS Tracking
April 15, 2026 · 4 min read
🏇 Race Recap · Mountaineer Park
MNR Apr 12 Recap: Edge Model Finds a 15/1 Longshot, Goes 3-for-3 on Value Plays
April 13, 2026 · 6 min read
🏇 Race Recap · Keeneland
KEE Apr 12 Recap: 33% Hit Rate, +47% ROI on Edge Plays, and Two Models That Tell Different Stories
April 12, 2026 · 7 min read
🏇 Daily Picks · Keeneland
KEE Apr 12: Full Card Picks, Jockey/Trainer Backtest & Distance-Surface Breakdown
April 12, 2026 · 8 min read
🏇 Race Recap
Apr 11 Recap: 44% Hit Rate at Keeneland, a +44% ROI Edge Filter, and What Went Wrong
April 12, 2026 · 6 min read
📊 Methodology
Why We Switched to Edge-Based Betting (And What the Data Says)
April 10, 2026 · 5 min read
🔬 Building in Public
Chasing the Zone: When the Data Humbles You
March 30, 2026 · 6 min read
🔬 Building in Public
What 1,896 Races Taught Me About Building a Handicapping Model
March 29, 2026 · 7 min read
🏇 Race Recap
Saturday Recap: Gulfstream Park & Oaklawn — How WagerCast Called It
March 29, 2026 · 7 min read
⚙️ Model Update
The %Early Zone: What Brohamer and Sartin Knew That Most Bettors Don't
March 28, 2026 · 6 min read
✨ New Feature
New: Class Level Experience — Knowing Whether a Horse Belongs
March 28, 2026 · 5 min read
📖 Origin Story
Building WagerCast: What 1,735 Race Results Actually Taught Us
March 28, 2026 · 8 min read
↑ All posts
🔬 Data Science
August 23, 2026
7 min read
Del Mar, Aug 22: Knightsbridge isn't Fierceness, and this year he may not have to be
Ten races at a mile and a quarter charted in 2026. Six on dirt. Knightsbridge ran the fastest half and the fastest three-quarters of all six, and the second-slowest final quarter. Those are the same fact, and working out which one matters took the whole afternoon.
He didn't steal it
45.94 to the half, 1:10.02 to the three-quarters — quicker than the Derby, quicker than the Big 'Cap, four seconds quicker to the three-quarters than the Alabama ran that same afternoon. What the running lines add, if you read them instead of the summary, is that he was never alone up there. First by a half at the quarter, headed by Full Serrano at the half, back in front by a head at the three-quarters. A duel, not a soft lead, and Full Serrano still held third beaten seven and a half after taking part in it.
Then Knightsbridge drew off by six and a quarter while running his last quarter in 26.62. Winning by daylight while decelerating that hard is what a fast contested pace does to a race — and he's the one who did the pressing and still had the last word.
45.94
Half-mile split
fastest of the six 2026 dirt runnings
6¼
Winning margin
after a genuine duel
2:02.28
Final time
3rd of those six
The 2025 bar, which is a very high bar
Cross-track time comparison is mostly astrology, so here's the one clean look: Del Mar, dirt, ten furlongs, last three elite runnings.
- Fierceness, 2025 Pacific Classic — 45.84 / 1:10.26 / 2:01.00, last quarter 25.30
- Forever Young, 2025 Breeders' Cup Classic — 45.97 / 1:10.48 / 2:00.19, last quarter 24.49
- Knightsbridge, 2026 Pacific Classic — 45.94 / 1:10.02 / 2:02.28, last quarter 26.62
Same track, same surface, same fractions to the three-quarters — and he is 1.28 seconds slower than Fierceness, 2.09 slower than Forever Young, with the gap in the last quarter. The other four dirt races on Saturday's card came back +0.11, +1.33, +1.04 and −1.54 against their meet averages, so it was a normal strip, not a bog.
Which settles what he isn't. It says nothing about whether anybody in 2026 is, and that's the question I'd been skipping.
So who else is there this year?
No speed figure exists for this race yet — Brisnet figures reach us through past-performance lines, so we get them when a horse runs back. Every ten-furlong race since August 1 has zero on file. What we do have is shared runners, and they chain.
Three horses ran in both the Suburban at Saratoga on July 4th and the Pacific Classic. Phileas Fogg won the Suburban by ten.
- Hit Show: beaten 10 by Phileas Fogg, beaten 13¾ by Knightsbridge → +3¾ Knightsbridge
- Forged Steel: beaten 12, then beaten 18¾ → +6¾ Knightsbridge
- Original Sin: beaten 18, then second, beaten 6¼ → −11¾
Now push it one link further. Sovereignty won the Whitney at Saratoga on August 8th by four and three-quarters, and two of the horses behind him had been behind Phileas Fogg in the Suburban: Antiquarian (beaten 5 by Sovereignty, beaten 11¼ in the Suburban) and Tiztastic (beaten 6, beaten 11). Both lines put the Suburban form above the Whitney form by five to six lengths, and the Suburban form sits a few lengths below Knightsbridge.
Do the arithmetic all the way through and it says Knightsbridge is somewhere around nine to eleven lengths the better of Sovereignty. I don't believe that number and neither should you. Eleven lengths is nearly two seconds, and Knightsbridge was already 2.09 seconds behind Forever Young's Breeders' Cup — so the chain is quietly claiming the Whitney winner is four seconds off a Breeders' Cup Classic winner, which is not a thing that is true about a Grade 1 horse. Two blowout margins stacked end to end inflate; the Suburban was won by ten and the lengths stretch at the longer trip. What survives is the direction, not the size of it: Knightsbridge ahead, by something, on every line that isn't Original Sin's.
Chain those and Knightsbridge comes out on top of the 2026 older dirt division — roughly what the market thought when it took 5/2 down to 11/10. The wet blanket: chained comparisons multiply their own noise, the Whitney was a furlong shorter so lengths don't convert cleanly, Antiquarian was the 8/5 favourite in the Suburban and ran flat, and Original Sin disagrees with the other two by twelve lengths. "Best of 2026" rests on five horses and a lot of arithmetic.
The rest of the year's ten-furlong winners
Golden Tempo won the Derby at 23/1 by a neck over Renegade and the Belmont at 6/1 — the only repeated top-level form in the group, and none of it touches the older horses. British Isles won the Santa Anita Handicap against four rivals in 2:05.17, then ran eighth beaten twenty here at 80/1. Burnham Square took the Arlington Million by a half at 4/5, Luster the King's Plate by seven and a quarter at 1/4, My Gun's Loaded the Alabama by a neck.
Where I was wrong
We had Knightsbridge on top, and the logged note reads: "Carries FADED-FRONT and is the FULCRUM horse: BOTH are retired constructs so they are CONTEXT ONLY and trim nothing." Two flags told me to knock the winner and both had already been retired for failing their own tests. Being saved by having previously been wrong is not a skill.
And our chart parser reads "11/2" as "eleventh, beaten nothing" when it means "first by a half" — it hit both pace-setters in this race, 135 races overall. Every length above was re-parsed by hand.
Bottom line: Knightsbridge won a Grade 1 on the fastest contested pace any ten-furlong dirt race has run this year, and every shared-horse line we can build says he sits on top of the 2026 older dirt division. He also ran a second-plus slower than the last two elite horses to go this trip over that exact strip. Both are true. The interesting question isn't whether he's Fierceness — it's whether anything in this division is, and nothing in a year of charts has answered that yet. The Breeders' Cup will.
↑ All posts
🏇 Card Debrief · Saratoga
August 22, 2026
5 min read
Saratoga, Aug 22: our two-horse Alabama ticket survived by a neck
Twelve races Saturday. Eleven winners inside our pool. 91.7%, against roughly 82% for just boxing the market's top few.
Our actual top pick won once.
The Alabama, or: how to be right and wrong in the same race
Race 11 was the Alabama, Grade 1, $600,000, six three-year-old fillies at a mile and a quarter. We called it a LOCK and fired a two-horse pool — Counting Stars and My Gun's Loaded — which is about as much conviction as we are capable of expressing.
Counting Stars was our top pick and went off at 0.38. That's two-to-five. That's the market filing the race under "formality." She made the lead and held it to the eighth pole, and she did the whole thing four and five paths off the fence: "rounded the first turn in the four path, showed the way with a clear advantage while continuing well out in the surface." Making the lead is fine. Making it that wide for ten furlongs is a bill that comes due in the last sixteenth, and it did. She was outfinished for third.
Which would be a lovely trip excuse if the winner hadn't gone wider still. My Gun's Loaded took the lead in the six path turning for home and won anyway. So the excuse holds for about half a sentence.
There was no pace meltdown to blame either. The quarters came back 24.55, 24.89, 24.62, 24.93, 25.88 — four of them inside half a second of each other. Nobody softened the favourite up. She was on an even lead, got looked in the eye, and lost the argument.
Now the part that should worry us. Measure ran second, beaten a neck, at 10.76. Last of six for a mile, saved ground the whole way, came up the fence and nearly got there. She was our third-ranked horse, and here is our own pre-race note on her, word for word:
"power 89.5 rank3; class +13; 2nd off 45d; work rank2, sharp; weak turn-time out of band; dropped for sizing."
Dropped for sizing. One more jump and our Grade 1 LOCK is a losing ticket and this is a very different blog post. Two horses in a six-horse field is an aggressive thing to call a lock, and it got home by a neck.
The other horse we wrote up, admired, and left out
Race 3, nine first-time starters, which is the handicapping equivalent of being handed nine sealed envelopes. What we logged about American History beforehand:
"VALUE PLAY. FTS; Velazquez/Pletcher both hot; DEBUT-GATE — gate 27d back, 54.0fps, 2 drills ago; work rank 9 (slow-gate profile, but hot connections measurably blunt this flag)."
He won at 9.61. We had him as a value play and cashed it. We also ranked him seventh and built a six-horse pool, so he finished exactly one slot outside the only thing that mattered for the sequence. We identified him, argued ourselves into him, and then declined to include him for administrative reasons.
The tempting read is that the pool was too thin. It wasn't. He was 10/1 on the morning line and closed at 9.61, so the money never moved on him either, and our tickets lock on the morning line. He only looks catchable if you grade yourself on final odds, which is a wonderful way to invent failures you didn't have and fixes you don't need.
Second place is a strategy now, apparently
Our number-two ranked horse won seven of twelve races. Races 1, 4, 5, 6, 7, 10, and the Alabama. Our number one won race 9 and spent the rest of the afternoon getting beaten at short prices.
Wet blanket time. Across our full logged history the top pick wins 29.3% (n=1,111) and the second pick 19.8% (n=1,105), which is the ordering you'd hope for. One-for-twelve and seven-for-twelve on a single card is about a one-in-two-hundred afternoon, and we have run a lot more than two hundred afternoons. There's a duller explanation too: our top pick was the shorter price in essentially every race, and the chalk got mugged all day. The final-odds favourite won three of twelve. This is not a discovery. It's a Saturday.
Where I was wrong
The value lane. Fourteen picks at Saratoga, one winner, flat-bet ROI −24.2%. Seven of the fourteen closed at 10/1 or bigger and all seven lost, which is precisely what that band does over our running book: 3% strike, −56% ROI across 507 settled picks. We keep firing into it anyway.
One more correction, aimed at us. Our internal debrief bundled Saratoga with Del Mar and reported the combined value lane at +6.7%. That number is Del Mar's. Split by track, Del Mar went 2-for-10 for +50% and Saratoga went 1-for-14 for −24.2%. Blending two tracks turned a losing lane into a winning headline, and we caught it late. Fourteen bets isn't a sample anyway, it's an anecdote with a decimal point — but if you're going to publish an anecdote, publish the right one.
Also missing: our plunge watch, which checks whether a winner outside the pool got quietly bet down before post. It hasn't run since Wednesday, so race 3 went ungraded. We noticed while writing this up, which is not the ideal time to notice things.
Bottom line: Eleven of twelve covered, no sizing changes needed, and the Alabama paid. But we won the Grade 1 with our second choice, survived it by a neck against a filly we cut for sizing, and left another winner out of a pool after writing a paragraph about why he was interesting. Good card. Bad afternoon of being right.
↑ All posts
💣 Opinion
August 17, 2026
8 min read
Everybody in this sport has the data except the people betting on it
A professor gets charged with fraud for reading a database. Five layoff horses from one training center light up British betting shops. The robots get 10% off at the window. Also, I found out about all of it from X.
Let's review the last eight days in the sport I have voluntarily organized my life around.
On Sunday the 9th, five horses who had all been working at the Fair Hill Training Center in Maryland, every one of them off a long layoff, shipped into races at Saratoga and Monmouth. Four won. One by nine lengths. A six figure payout got collected in British betting shops, which is how anybody found out at all. Not because American racing noticed. Because British bookmakers, who had money at risk, noticed. HISA is now investigating five races.
Read that order of events again. The people who caught it were the people standing to lose on it. The sport's own regulator arrived second, on a tip, from another country.
Then this morning HISA charged Marshall Gramm, economics professor and tournament player and owner, with fraud and unauthorized access for allegedly pulling confidential horse health records out of the HISA portal at scale over six weeks this spring. HISA says it was deliberate and engineered to dodge their security. Gramm says he used his own authorized login, never hid who he was, and showed poor judgment by not reporting the hole sooner. He intends to fight it. That is a charge and not a finding, and I have no idea which version is true.
Here is what I do know, and it is the part nobody at a podium will say:
There is a portal. The horse's health record is in it. You cannot see it.
That is the story. The professor is a subplot. This sport built, on purpose and at expense, a system where the most predictive fact about whether a horse can run today sits behind a login that the connections and the state vet can open and you cannot. And when somebody outside allegedly got in, the institutional reflex was not "why does this asymmetry exist." It was "who touched the perimeter."
There are real reasons a medical file is not public and I am not pretending otherwise. But look at the shape of it. Every argument for privacy is an argument about the horse and the owner. Not one of them is about the person handing over money against an unknown. The bettor is not a stakeholder in that conversation. The bettor is the revenue.
Thank god for X, otherwise we'd be completely F'd
Here is the detail that should embarrass every media outlet in this sport.
I watched the Fair Hill Five unfold in real time, and I watched it on X, from @DougieSal. Not a wire story. Not a press release. A guy with an account and sources. Same thing this morning with the professor and the veterinary records, which I got from @SwifttKirk before I got it from anywhere with a masthead.
I am not complaining about them. They were right and they were first and they were free. I am complaining that in a sport with governing bodies, integrity authorities, trade publications, and an entire paid media apparatus, the actual news reaches me from two handles with better insiders than the institutions. That is probably just the times we live in. It is also a report card. Thank god for those guys, genuinely, because the alternative was finding out never.
Your only remaining edge as a horse player is paranoia
Meanwhile, here is what handicapping actually looks like now:
A horse ships into Saratoga from some track that exists exclusively because of slot machines and because somebody once heard a rumor a Buc-ee's might go in nearby. This horse has no form. None. The past performances read like a ransom note. It goes off at a price and absolutely dismantles a Saratoga field.
And the only genuinely available angle, the one piece of analysis the game has left me, is: why this horse, why here, why today. Something must be up. Therefore I should bet it.
That is not handicapping. That is Miss Cleo. I have a database with millions of rows in it and a seven axis composite and validated turn time figures, and the highest expected value thought available to me that I painstakingly aggregate myself and the angle of this particular race was "somebody drove a long way for a reason." We have arrived at a place where the sharpest read on the board is vibes about intent and intent is gated and insider information that can be traded against public money.
The robots get a discount and you get a rounding error
Computer assisted wagering teams are roughly a quarter to a third of the money in the pools. They get rebated somewhere around eight to twelve percent of what they push through. You, a normal person with a normal account, get between nothing and three percent.
That is not proof of a rigged game. That is just two prices at one window, and only one customer was offered the good one.
By the Stronach Group's own California filing, CAW participation raises the effective takeout for retail bettors by two and a half percent. Their number. Two and a half points of extra rake on you so that a faster customer can be charged less.
There is a federal RICO suit over it now, brought by a man in Colorado who bet a hundred dollars a week for twenty years and then quit. The defense position is that this is innovation, comparable to high frequency trading, and that "CAW bettors access the same data as other bettors; they simply crunch it differently."
Sure. And the professor just crunched the health portal differently.
The industry's own answer, at this year's regulators' conference, was that villainizing CAW is counterproductive and that it is "not a problem to be solved" but "a reality in racing." Fantastic. It's not a problem, it's a reality. Print it on a tote bag. NYRA, in fairness, now cuts the robots off at 1:59 to post instead of the last second, so we have moved the goalposts one full second and filed it under consumer protection.
And then you get to find out whether you won
You handicap the race. You are right. Your horse crosses first. Then INQUIRY comes up and you stand there for four minutes learning whether three people you cannot see, applying a standard nobody wrote down for you, are taking your winner down.
I am not inventing a scandal. I will tell you what is in my own charted database: eighteen disqualification flagged runners since July 1 across the tracks we cover, four of them at Del Mar, three of those in the last three weeks including yesterday's sixth race winner. That proves nothing. Stewards are supposed to take horses down sometimes.
The problem is that the reasoning is not a document. You get a result, never an explanation and if you do get an explanation it just leaves more questions. No written finding, no published standard, no appeal a bettor has standing in, because you are not a party to the race. You have a financial position on the outcome and no seat at the table deciding it.
Compare the two halves of one week. A bettor allegedly reads a database he shouldn't and receives a charging document, a named cybersecurity firm, a referral to federal and local law enforcement, and a demand for his winnings back. A panel rearranges the order of finish and you get to curse on #TheDiscord, I don't even get the satisfaction of ripping up my ticket anymore. Thanks internet.
Complaining is not a plan
Take back the data. Not medical files. Everything else this sport pretends is proprietary. Charts, fractions, running lines, points of call, bias by surface and distance, morning line against post time. All of it is a record of something that happened in public, in front of a grandstand, and all of it is either sold back to us, buried in a PDF engineered to resist parsing, or behind a firewall that fights a browser. Open, versioned, free datasets of the public record. Not a subscription. A repository. If a race ran in front of people the chart belongs to everybody, and the only reason it doesn't is that the friction pays somebody.
Take back the tote board. The most valuable unpublished number in racing is odds drift, horse by horse, timestamped. When something goes 30/1 in the morning line to 6/1 at the gate, that movement is information, and it currently exists only for the people fast enough to cause it. A public archive of odds movement would be the most confrontational thing anybody in this game could ship. It costs almost nothing. Nobody with a license will build it, which tells you the price.
Publish your losses. Every tout talks about winners. I will tell you we went 0 for 11 on real tickets in a stretch where our model covered the winner in 31 of 33 races, because I kept tossing horses who were sitting in my own A B C pools. A verifiable losing record beats an unverifiable winning one, and nobody keeps one because this sport punishes candor at every level from the stewards' stand to the tout sheet.
It will do this to itself
A pari-mutuel pool is not a casino. There is no house edge that works without us. The takeout comes out of a pot we fill. Every structural decision of the last decade, rebate the CAWs, gate the data, explain nothing, investigate the guy who looked, has been a choice to squeeze a shrinking crowd instead of growing a bigger one.
The RICO plaintiff is the whole thesis in one man. Twenty years, a hundred a week, gone. Not because he lost. Everybody loses. Losing is the cover charge and we pay it cheerfully. He left because he worked out he was being charged a different price than the guy next to him and told TOO BAD.
The death of this sport will not look like a scandal. It will look like a quiet, rational exit by people who like horses and can do arithmetic.
I am still here, still betting, still writing down every number they would rather I didn't and giving it away at pretty much cost. If you are still holding a program, do the same. Data is the only leverage a bettor has ever had, and you can tell it's leverage by how frightened they are of us having any.
↑ All posts
🏇 Card Debrief · Four Tracks
August 13, 2026
5 min read
Thursday, Aug 13: 34 winners of 35 in the pool, and a bug that was quietly flattering my own scorecard
Thirty-five races. Four tracks — Horseshoe Indianapolis, Saratoga, Del Mar, Charles Town. Thirty-four winners inside the coverage pool. 97.1%.
Boxing the market's top four would have gone 32 for 35 on the same card. So for the first time in about two weeks of these write-ups, we're actually ahead of the chalk instead of drawing level with it while congratulating ourselves. Two races did it, both at Indiana, both chaos legs where the model widened the pool to six: Don't Cross Alexis, sixth choice of nine, and Alexas Hope, fifth of eight at 10.8. Those are exactly the races the wide pool exists for.
Now the part that costs money.
The value plays went 1 for 35
One winner. Uncles Lil Trophy, Indiana's opener, 4.3. Then thirty-four losers in a row across four tracks. Flat-bet return: minus 84.9%.
That's the worst day this lane has ever had, and it isn't close. The running book on value plays now sits at 104 picks, 11 wins, minus 29%. I've written before that the only band that's ever shown a profit is 5-10/1 and that everything above 10/1 is a bonfire. Thursday didn't contradict that so much as set fire to the 5-10/1 band too, just to be even-handed.
And the scoreboard was lying in my favour
Here's the bit I'd rather not write.
Partway through the night I changed how I typed one field — logging a value play as 9 VONNTASTIC (6/1) instead of 9, because it read better in my own notes. The database resolves that field against either a program number or a horse name. A decorated label is neither.
So fourteen of the thirty-five picks silently failed to register. Nothing errored. They just dropped out of the scorecard as VOID — excluded from the count — instead of being graded as the losses they were. All fourteen lost.
The published number therefore said 21 picks at minus 74.8%, when the truth was 35 picks at minus 84.9%. My own bug was rounding my own record up, and nobody caught it for fifteen races because the warning goes to a log file that literally nothing reads.
It's fixed — the fourteen are backfilled and graded, and there's now a guard that surfaces the failure where I'll actually see it. But a scoring system that silently discards its own bad results is a special kind of useless, and I built it.
Where I was wrong
Charles Town, race 7. I made Larz my top pick — hot jockey, hot barn, best worktab, best form cycle — deliberately overriding a market that had him sixth of six. I also declined to quietly widen the pool to include him, because covering all six horses in a six-horse field guarantees a "hit" and makes the coverage stat meaningless.
He finished last. Of six.
The horse I'd marked down in that same race, Hey Boots, on a validated fade for a declining form cycle, won at 2.5. The discipline held and the opinion was garbage. I'll take that over the reverse, but let's not dress it up.
Del Mar race 7 was more annoying. Kuwaitya was my top pick and my value play, and the whole justification was his price — 5/1 put him inside two validated bands. He was bet to 2.2 and ran seventh of eight, which means at the price that mattered he was in neither. I flagged this exact failure in the opposite direction on the 9th, when a horse I'd cut for being a longshot got bet down below the threshold and won. It cuts both ways. I hadn't written that down.
The one winner that escaped the pool was I Forgot It at Indiana, 11.4, bet down from 20/1. My logged note, before the race:
"…a gaudy +630% lifetime ROI — but that is 1 win from 5 starts, i.e. one result, not a record. DECLINING-FORM, worst turn-time in the field, no work in 90 days, only 5 works on file. Out."
Every one of those facts was true and he won anyway. The favourites box missed him too, so I'm filing it under variance rather than lesson.
What did work
Surface calls went 12 for 12. Five races came off the turf and all five were flagged before the gate; four stayed on grass and those were called too. That matters more than it sounds — when a race moves to dirt, half the model's inputs are computed against the wrong surface, and getting it wrong quietly poisons everything downstream.
Also, at Indiana, short-priced horses I'd tagged don't-single went 0 for 5 while the clean ones went 5 for 18. Small sample, one card, and I'd want fifty of those before I'd call it anything. But it's the direction the fades are supposed to point.
Top pick won 10 of 35, about 29%. That's roughly what a favourite wins, which is roughly what a model built on the market's own ranking ought to produce.
Bottom line: best coverage day on record and the worst value day on record, on the same thirty-five races. The coverage number is real and I'll take it. The value number was worse than my own dashboard admitted, because I broke the thing that counts it and it failed politely instead of loudly. No bets were fired Thursday, which on this evidence was the single best decision of the day.
↑ All posts
🏇 Card Debrief · Horseshoe Indianapolis
August 11, 2026
5 min read
Horseshoe Indianapolis, Aug 11: the morning line was fiction by post time
Nine races charted at Horseshoe Indianapolis on Tuesday. Six winners in the pool. 66.7%.
Boxing the market's top few gets you roughly 82%. So that's a losing card, and no amount of framing fixes it. Rain arrived after the first race, the track went Sloppy (Sealed) for the rest of the night, and the morning line I'd built every pool on stopped describing reality somewhere around the second race.
Both catchable misses were horses the money had already found
Three winners escaped the pool. One of them was Jojojustice at 44/1, tenth choice of eleven on the final board — nobody sane had that, and boxing the chalk misses it too. Fine. Variance.
The other two are the story, and they rhyme.
Race 3: Lil Gin N Class was 10/1 on the morning line. Dead last on my board — eighth of eight. He went off at 3.8, third choice. Race 9: Senora d'Oro was 20/1 in the program, sixth on my board. She went off at 10.2 and won.
Both bet down. Both outside a pool I'd sized off a price that no longer existed by the time the gate opened. My whole method leans on the market's ranking because the market is better at this than I am — which is true, and which is worth nothing if I'm reading last week's version of it.
I re-ran race 9 on the real odds. It didn't help.
Obvious fix: get a live board, re-sort the pool on actual money. So I re-ran race 9 with the final odds plugged in to see what I'd have built.
Same pool. Five horses. Senora d'Oro still sixth, still outside. The market moved plenty between the two boards — Diamond Rock Hill went from 15/1 to 5.2 and jumped from fifth choice to third — but the horse sitting exactly on my coverage boundary was her either way.
So a live feed rescues race 3 and does nothing for race 9. Two misses that look identical from the outside have different causes, and the fix I'd have reached for first only addresses one of them. That's the useful thing I learned all night.
The part where I wrote down the mistake and then made it anyway
Race 9 lost nine of its sixteen entrants to scratches, including the 5/2 favourite and both 5/1 co-third-choices. My own logged note, before the race:
"…that is a re-normalisation of a 16-horse morning line down to 7 runners after the favourite and both co-third-choices came out — it is the leftover of a board, not a calibrated one."
Correct. The model hands you a coverage number, that number was built on a board that no longer existed, I spotted it and said so in writing.
Then I lowered the confidence label from 90 to 65 and kept the pool size the discredited number had produced.
Which is a bit like noticing the fuel gauge is broken and responding by feeling less confident about the drive. Coverage is the thing that gets graded. A smaller number in the confidence column buys exactly zero additional horses. Senora d'Oro was the next horse in market order — one more slot covers her, and I'd already written the paragraph explaining why I should widen it.
Where I was wrong
Beyond the above: surface reads. Three turf races, and I tried to work out from scratch-reason codes which ones would come off. I got race 7 right, called race 5 as staying on the grass, and threw up my hands at race 9. All three came off. The signal that would have worked was sitting in plain sight — the main track was sloppy from race 2 onward. Reading tea leaves when there's a weather report.
Also: my top pick won once in nine. The pools are built on the market, not on my opinion, so that number matters less than it looks — but it isn't flattering and I'm not going to bury it.
The tenth race was a 300-yard Quarter Horse dash which I analysed at some length before observing that none of our validated signals were built for a race with no turn in it. It was then cancelled, which I choose to interpret as agreement.
What actually worked
Two of them, both in the value lane, both priced where the research says they should be.
Mo Can Dance won race 7 at 6.6 — fifth choice on the final board, which means boxing the favourites misses him entirely. He carried the highest composite score on the card. Barca Billy won race 8 at 5.6 off the dirt-class-relief flag: back on dirt, dropping nine class points, coming out of a turf race at the same distance.
Three winners from sixteen settled value plays. Both of the real ones landed in the 5-10/1 band, which is the only band in the running book that's ever shown a positive return. Now the killjoy: sixteen picks is not a sample, it's an anecdote with a decimal point, and the running ledger on this lane sits around a 16% strike rate at minus 18%. One good night doesn't move that.
The ticket
Fifty-cent Pick 3, races 7 through 9, thirty dollars. Legs one and two came in — Mo Can Dance at 6.6, then Barca Billy at 5.6. Leg three was race 9.
The daily double covering those last two legs paid $897. So this was one horse, worth about fifteen dollars of extra coverage, standing between a losing ticket and a genuinely good one.
That takes the ledger to 0-for-12, $294 staked, nothing back. Every previous loss here died because the ticket used fewer horses than the model's pool and the winner was sitting in the pool, unplayed. Not this one. This time the pool itself was short. At some point a recurring bug stops being bad luck and starts being a personality trait, and it's a small mercy that this particular one is mine and not the ticket's.
Bottom line: 6 of 9, under the chalk benchmark, on a night when the morning line stopped being true after the first race. The fixable part isn't the two bombs — it's that I diagnosed race 9 correctly in writing and then applied the fix to the confidence label instead of the pool. Stale board, wider pool. Writing it down doesn't count.
↑ All posts
🏇 Card Debrief · Assiniboia Downs
August 11, 2026
5 min read
Assiniboia Downs, Aug 11: the 20/1 horse that was never 20/1
Seven races Tuesday at Assiniboia Downs. Four winners in the pool. 57%.
Boxing the market's top few gets you about 82%. So this was a losing card, and I'd rather say that in the first paragraph than bury it under a value-play stat I'll get to later and immediately apologize for.
Three winners got away. They got away for three completely different reasons, which is the only genuinely useful thing about the day.
Miss one: the price moved and I didn't
Counting On You was 20/1 on the morning line. I ranked her eighth of ten. Reasonable enough — top-rank workout tab with two bullets, Khelawan going at 23%, but stepping up five class points off the worst average class in the field and 0-for-4 lifetime.
She went off at 2.55. Second choice on the board. She won.
Here's the part that isn't bad luck. My pool that race was the morning-line top six, exactly — no cleverness, no deviation, just the first six names in price order. So when the money arrives on horse number eight and drags it to second choice, there is no pool depth that saves me. Going seven deep doesn't do it. Eight deep in a ten-horse field isn't a pool, it's a fire sale.
The tickets lock on the morning line. The scoreboard grades on final odds. Those are two different races and I keep entering the first one.
This is the fifth time I've logged this exact miss. Five is where I stop calling something variance and start calling it a habit. The fix isn't smarter ranking and it isn't a wider net — it's the profoundly unglamorous act of looking at the tote board before I fire, and noticing when a 20/1 shot has quietly become 5/2.
Miss two: I wrote the scouting report and then filed it under no
Flying Tex, race six, won at 13.5. Here is my own logged note on him, in full, before the race:
FULCRUM horse with the highest 2C pace figure on the card (78); CLASS-DROP -7; 4-for-26 at +20% ROI; Taphorn hot 29.4%. Then the tab: 229 days since a published work.
Best pace figure on the card. Seven-point class drop. A record that's actually profitable to back. Hot barn. Then I found one thing I didn't like and ranked him eighth.
In fairness to me — a phrase I use sparingly — 229 days without a published work is a real objection, and most horses carrying it run like they haven't worked in 229 days. The market agreed with me, too: he was 15/1 in the morning and 13.5 at the gate. Nobody was fooled except the horse.
I'm keeping this one as variance. He was the sixth choice on the board. Anyone boxing favorites missed him just as thoroughly as I did. But it stings differently when the miss comes with a paper trail proving you looked right at it.
Where I was wrong
Race two is the one I actually have to answer for.
Five entered, one scratched, four ran. I called it a LOCK behind Silver Spiced at 3/5 and took a two-horse pool. Two horses. Out of four.
Silver Spiced ran third. Amma Jaw Dropper — my third-ranked, the market's third choice, 5/1 in the morning and 5.6 at the gate — won it. Nobody was hiding. There was no plunge, no bomb, no clever handicapping required. I covered half a four-horse field and the winner was the very next name on my own list.
That's not variance, that's arithmetic. A short field is exactly where the marginal horse is cheapest to add, and I economized in the one spot where economizing has no upside. New rule going in: when four or five horses actually go to the gate, the pool floor is three, no matter how short the favorite looks.
The good part, briefly, before I ruin it
Value plays went two from four. High Miler at 7.65, Ralph's Gift at 3.35. Flat-bet return for the day: +225%.
Now the ruining. That's four bets. Four. Two of them won and one paid better than seven-to-one, which is enough to make any four-bet sample look like genius. Strip this single card out of the running v7.4 book and the lane goes from +38% to roughly +17% — meaning one Tuesday in Winnipeg is carrying about 60% of the profit off about 10% of the picks. The longer book on this lane sits near 16% strike at negative ROI.
One honest note inside the noise: High Miler landed in the 5-10/1 band, which remains the only price range where this lane has ever made money across a real sample. Ralph's Gift came from the 2-5/1 band, which loses. Two winners, two different stories, and only one of them is evidence.
Bottom line: 4 of 7, under the benchmark, and only one of the three misses was my fault — but it was entirely my fault. The two-horse pool in a four-horse field is dumb and fixable and fixed. The 20/1-to-2.55 problem is fixable too, just not by handicapping: I have to look at the board before I bet, which is somehow the hardest instruction I've ever tried to follow.
↑ All posts
🏇 Card Debrief · Finger Lakes
August 10, 2026
5 min read
I Flagged All Three of My Own Winners as Do-Not-Trust
Nine races on a Monday at Finger Lakes. Six winners in the pool. 66.7%. A lazy box of the four shortest prices got five. So we won the argument by one race, which at this track counts as a parade.
Three of those six came from the horses I put at the top of my own list — Anmolo in the third, Lily's Army in the seventh, My First Dinah in the eighth. Every one of them won. And every one of them was carrying a flag from my own system telling me not to trust it.
The flags called all three, and all three won anyway
Anmolo's note reads "FULCRUM-fade-single (don't single), class-drop -15, 0-for-7." He won at 1.24. My First Dinah: "MAIDEN-GRAD (don't single), class-drop, closer." Won at 1.40. Lily's Army was a maiden graduate bet to a dime and a nickel — 0.20, which is the exact price band where that flag says a maiden grad underperforms. Won by daylight.
This is not the flags failing. Every one of those reads is a don't single, not a don't cover — keep the horse, just don't lean the whole ticket on him. All three stayed in the pool as top picks, all three won, and the pool collected. The flags didn't cost a thing today. They just looked silly doing it.
The one that actually cost us
Race 6, a maiden sprint. I logged a five-horse pool. Recorded Time — my sixth-ranked horse, and the one whose note I wrote as "DECLINING, class-up, 3 starts, overweight 121" — got backed into the third choice and won at 4.28.
Here's the annoying part. My own tool offered me a six-horse pool for that race and Recorded Time was the sixth horse in it. It also told me, in the same breath, that the projected pace was FAST and the field was lightly raced — the two conditions where a race is most likely to come apart. I took the five-horse option anyway.
So: I wrote down four reasons he was bad, ranked him sixth, was handed the wider pool that contained him, and declined it. The chalk box caught him without thinking about it. It's the only miss on the card a plain favorites box would have covered, and any multi-race ticket running through that leg died right there.
The other two misses I'll take without complaint. Jayce And Liam (8.42) in the second was the fifth choice by final odds — outside my pool, outside the box, a horse nobody sensible had. And Call Saul (31.44) in the nightcap was a 0-for-2 maiden moving up in class who ran the best race of his short life. If the process is catching 31/1 maidens, it isn't a process, it's a séance.
A banker that drifted out of its own rulebook
Anna Brocknana in the sixth went in as a DIRT-CLASS-RELIEF horse, a flag that only means anything at 4/1 or shorter. Opened 3/1, drifted to 7.83, ran seventh. By the time the gate opened that horse wasn't in the flag's price band at all — the thing I'd trusted had quietly stopped applying while I wasn't looking.
That's the second time in three days this exact shape has bitten. Every price band in this system was measured on final odds, and I build tickets off the morning line, hours earlier. There's no live-odds feed on this setup — final prices arrive with the chart, after the race — so a flag with a price condition is a flag I can never actually confirm before I bet it. I changed the rules last week so those flags can demote a horse but never delete it from the pool. Today was a reminder of why, from the other direction.
The two genuine short-priced bankers both lost, for the record. Teresa at 3.55 ran fifth. Richies Love got bet to 36 cents on the dollar in the ninth and finished sixth — his note read "forward/fastest, regular tab, sharp 5d," which is a lovely sentence about a horse that did not run.
Where I was wrong
Beyond race six: I had Mach Schnell on top in the fourth at 1.84 and he ran last of seven. My top pick won three of nine, which is a number I'd rather not print. It isn't the number that decides whether a Pick 4 lives — that's coverage, which is what gets graded here — but three of nine is three of nine.
The value lane won one, so here's the cold water
Disco Dancer, 9.45, race four. Flagged as an overlay in the morning, went off at nearly 10/1, and won — a horse the favorites box never had. Seven value plays on the card, that one hit, flat-bet return +49%.
Do not read that as skill. One horse is carrying the entire lane and the other six lost, including a 2.32 chalk that had no business being called value in the first place. Strip the winner and it's minus everything. The one detail worth keeping is where he priced: 5-to-10/1, which is the only band this lane has ever made money in. Seven bets is not a sample, it's an anecdote with a decimal point.
Bottom line: Six of nine, one better than the chalk box, and every winner I anchored came pre-labelled by my own system as a horse not to lean on. The flags were right to say don't single and wrong about who'd win, which is exactly what a don't-single flag is supposed to be. The single miss that mattered was a horse I ranked sixth and described in four unflattering words, and the fix is boring: size the pool to six.
↑ All posts
🏇 Card Debrief · Saratoga
August 9, 2026
5 min read
Chalk went 2-for-11. I'd love to tell you that was our idea.
Eleven races at Saratoga on Sunday. Eight winners in the pool. 72.7%.
That's below our long-run bar. Boxing the market's top few gets you roughly 82% over time, and 72.7% is not 82%. So this was a losing card by the only number I actually track, and I'm not going to dress it up.
Here's the part that keeps it from being a coverage failure: on this specific card, the top-four chalk box missed the exact same three races we did. Every winner that escaped our pool also escaped a four-horse favorites ticket. We didn't get outplayed by the simple strategy — we got beaten alongside it.
The betting favorite won twice all day
Two. Out of eleven. And our top pick was the betting favorite in nine of those races, which tells you how much independent thinking was going on around here. We won the two that the favorite won and lost the other seven with everyone else.
Two of them were properly ugly. JUST CLASSIC went off at 0.98-to-1 and finished seventh. CAPRICIOUS OUTCOME went off at 0.90-to-1 and finished sixth. Both were inside our pool, so they didn't cause a single miss — if either had won, those races are green. They just took a lot of money with them on the way down.
Miss one: we wrote him up, then filed him under "no"
Race 4. The winner was CLASSIC ROCK at 8.34-to-1. Here is the note we logged on him before the race, in full:
"Fulcrum value-watch, DECLINING-FORM, 1st-off"
So we found him, flagged him as interesting, attached a fade tag, ranked him seventh of eight, and left him out. He won.
The tag is the problem, and it's a specific problem I can name. DECLINING-FORM is validated as a short-price fade — the point of it is that a horse on a downward form cycle gets overbet when the crowd already likes him. At 10/1 on the morning line it has no validated meaning whatsoever. We hung it on him anyway, and it did what an out-of-band flag does, which is quietly cost us a race.
Across the whole card we hung DECLINING-FORM on sixteen horses. At short prices, where the flag is actually validated, it went 0-for-3. Outside that band it went 1-for-13, and that single winner is the one that broke our pool. At some point a flag that only works inside its band needs a gate that checks the band, not a note that mentions it.
Misses two and three: shrug
Race 6 was TAKE A STANCE at 47-to-1, ninth choice in an eleven-horse field. We called it CHAOS, went six deep, and were nowhere near him. Nobody sane had that.
Race 7 is the one I find genuinely funny. The winner, M BS MELANIE CARES, was 15/1 on the line. The runner-up, RED BEACH, was 20/1. Those were the two longest-priced horses in the race, and they ran one-two. We had notes on both — "2 bullets, 1st-off" and "REGULAR-2ND-OFF, class-drop, gate work, 20/1" — and ranked them seventh and eighth. In an eight-horse field. We put them dead last and they finished dead first.
All three misses sat at our rank seven, nine and seven. There is no honest pool size that catches them. You don't fix that by going deeper; you fix it by accepting that some days the morning line is decoration.
Two of the three came out of the same barn
CLASSIC ROCK in Race 4 and M BS MELANIE CARES in Race 7 were both trained by Ernesto Ochoa and both ridden by Ricardo Santana Jr. Two of the three horses that beat our pool, one barn, one rider, 10/1 and 15/1 on the line. We ranked them seventh and seventh.
I'm flagging that as a gap in our numbers, not as an accusation. A barn whose runners we consistently park near the bottom of the sheet is a modelling problem that belongs to us. And one afternoon with two horses in it isn't a pattern — it's a coincidence with a good story attached, and the internet is extremely willing to supply the story. Before I write another word about it I'll pull the barn's full record against our own rankings and see whether we're actually systematically low on them or whether Sunday was just Sunday. If there's something there, it'll be in the data, and I'll publish it either way.
The fade board, with the asterisk it deserves
Short-priced horses we tagged don't-single went 0-for-7. Clean short-priced horses went 5-for-16. That's a 31-point spread and it looks fantastic.
It's also seven horses on one afternoon, which is not a sample, it's a rumour. And the same flag family that produced the pretty number is the one that handed us the Race 4 miss from outside its own price band. I'll take the 0-for-7 as a nice afternoon and nothing more.
Where I was wrong
The value lane went 0-for-18. Flat-bet ROI of −100%. Not one of them won, at any price, in any band — five at 2-5/1, eight at 5-10/1, five at 10/1 and up, all losers.
Four of them ran second, at 8.03, 15.33, 8.77 and 9.54. That is either a sign the lane is finding live horses or a sign that second place pays nothing, and since second place pays nothing I'm going with the second one. The running book on this lane is 357 picks, 14% strike, −22% ROI. A zero-for-eighteen Sunday doesn't change that number much, which is its own kind of insult.
Six of the eighteen were first-time starters, all beaten. One of them, THE PAPER LADY, was 20/1 on the line and our eleventh-ranked horse of twelve, and she only got originated at all because debut runners are exempt from the 10/1 price ceiling that would have stopped everything else. That exemption has a validator waiting on it. It is not looking better this week.
Bottom line: 8-for-11, below our bar, and the chalk box missed the same three. No pool-sizing change — you can't cover a winner you ranked seventh of eight without covering everything. The fixable one is Race 4, where a fade flag validated only at short prices got attached to a 10/1 horse and talked us out of the winner. That's not variance. That's a flag doing a job it was never tested for.
↑ All posts
🏇 Card Debrief · Mountaineer Park
August 9, 2026
5 min read
Mountaineer: two odds-on winners, both listed sixth
Nine races at Mountaineer on Sunday. Seven winners in the pool. 77.8%. You'd get roughly 82% by boxing the market's top few and going to get a sandwich, so this was a losing card and I'm not going to dress it up.
The morning line was a rumor
Nine horses on this card fell four or more points off their morning line. Five of them fell by nine or more. Completely Elegant opened 20/1 and went off at 7-10. Beach Colt opened 12/1 and went off at 7-10. Both won.
Those were our two misses. Both of them.
Here's the part that stings. We ranked each of those horses sixth — which is also exactly where the morning line had them. We didn't get clever and downgrade anybody. We read the same sheet as everyone else, agreed with it, and built a pool on a price that quietly stopped being true somewhere between when we hit save and when the gates opened.
Mountaineer lost four or five runners to scratches in five of the nine races. A morning line survives that about as well as a sandcastle survives a tide.
"Live but outside budget"
That's lifted straight from our own note on Beach Colt. Here's the whole thing: "Herrera, 14-for-45, pwr#4, fastest early 60fps, 3rd-off — live but outside budget."
We found him. We wrote down that he had the fastest early fractions in the race. We noted he was third off a layoff, which is the good one. Then we typed "outside budget," left him out, and watched him win at 7-10 as the betting favorite.
Race five is worse. Our note on Completely Elegant: "Barrios(jock chg)/Oliver, CLASS-DROP -25, closer/bias-fit." A twenty-five point class drop, a jockey change, and a running style that fit the way the track was playing. We ranked him sixth of six.
Writing down every reason a horse is going to win and then putting him last is the kind of thing that stops being an analytical error around the third time and starts being a bit.
The one we got right, for a reason that didn't exist
Race six. We promoted Geraldraydaplegray into the pool despite 12/1 on the morning line, and he won at 2.6. Our logged reason: "replaces first-turf #5 in pool."
Race six came off the turf. It was run on dirt. "First-turf" didn't apply to a single horse in that race, on account of there being no turf. We made the right swap on the strength of a fact the weather had already cancelled.
Three of the nine races came off the turf, and our signals were still being computed against the surface the race was supposed to be run on. Dumb, fixable, now logged as a patch.
Where I was wrong
Short-priced horses carrying one of our fade flags went 1-for-6. Unflagged ones went 8-for-15. Terrific for the flags, right up until you notice the unflagged bucket contains Beach Colt and Completely Elegant — the two winners we missed. The flags partly look good here because they stayed out of the way of horses we were also staying out of the way of. Twenty-one runners on one card is not a study, it's a rounding error with opinions.
Value plays went 0-for-9. That's -100% ROI, a number which at nine picks means precisely nothing. What does mean something: three of the nine were 10/1 or longer, and our running book on that band is a 3% strike rate at -48% across 408 picks. A 40/1 shot is not a value play. It's a lottery ticket with extra paperwork.
One more, in fairness to the framework: an eight-horse pool wouldn't have saved race five either. The winner was our sixth of a six-horse field. Short of betting the entire race there was no pool size that covered it.
Bottom line: Both misses were won by horses the market bet from longshot to odds-on after our pool was locked. No amount of extra coverage fixes that, because the information didn't exist when we were building. The fix is operational and deeply boring — look at the actual tote board before firing. We have now written that down seven separate times, which at this point is less a to-do item and more a personality trait.
↑ All posts
🏇 Card Debrief · Del Mar
August 10, 2026
5 min read
Del Mar, Aug 9: we bet the winner and forgot to cover it
Nine races Sunday. Eight winners in the pool. 88.9%.
That's comfortably above the ~82% you'd get by lazily boxing the market's top few, on a card where the chalk behaved and every single winner came from the final-odds top four. Fine. Good. Now the interesting part, which is the one race we missed, because we didn't just miss it — we found it first.
Our two lanes had an argument and the loud one lost
Race 4, a maiden sprint full of first-time starters. The winner was Eleanore's Pick at 3.8.
She was our #2 ranked horse. She was a logged value play. And here is the pre-race note, verbatim, written the night before:
"The debut worth a bet rather than a cover: THREE bullets, the top work rank, a regular 4-in-45 tab and a gate drill — and the sire is 6-for-17 (35%) at +267% ROI with first-timers... Left outside a cap-bound pool but logged as our value play; DEBUT-GATE horses are exactly the overlay lane."
So we wrote down that she was the best debut in the race, put actual money on her in the value lane, noted in the same sentence that she wasn't in the coverage pool, and posted it anyway. She won. The value lane collected +3.8 units. The coverage lane recorded its only miss of the day. Same horse. Same document.
The mechanism isn't mysterious, it's just dumb. The coverage pool gets built in morning-line order and stops at six horses. She was 8/1 on the morning line — one of four horses at 8/1 — and lost the tie-break for the last slot on program number. Then the public bet her down to 3.8, third choice in the race.
A pool that ranks horses by the morning line and breaks ties alphabetically-by-saddlecloth will occasionally throw out the horse its own analyst called the best bet in the race. It did that here.
This is the second time in two days a horse got cut purely by the six-horse cap — Saratoga's race 7 on Saturday had a note reading "cut only by the 6-horse cap," and that one won at 6.38 too. Two is not a pattern yet. Two is enough to stop calling it bad luck.
The don't-single flags had a genuinely good day
Twenty-two horses went off at 4/1 or shorter. Sort them by whether we'd tagged them don't-single the night before:
Flagged: 0 winners from 7. Not flagged: 4 from 15. Same prices, same races. One list went 0%, the other 26.7%.
Pure Chaos is the pick of them — 4/1 morning line, bet to 3.8, carrying DECLINING-FORM, and finished tenth. Moonlit Sonata went off at 1.9 with two separate caution flags and ran seventh.
An honest asterisk, because this stat is softer than it looks: those flags have different validated price bands — MAIDEN-GRAD is a ≤2/1 read, DECLINING-FORM ≤4/1, others milder — and I've bucketed them all at ≤4/1 here because that's the cut that makes a clean table. Seven horses is also seven horses. It's a good day for the flags, not evidence of anything.
The trust flags went 2-for-3 the other way: Memorized won at 2.1 carrying ALLOW-DROP and BANKER+HOT-JOCKEY, Holmby won at 0.8 with COMPANY-CLASS and TRIP-AUTHORITY.
Where I was wrong
The top pick won once in nine. Miss Monica at 0.5, which is the kind of winner that impresses nobody including me.
Our #1 in race 9, Moonlit Sonata, was bet from 5/1 down to 1.9 — the public liked her a lot more than we did — and she ran seventh. Our #1 in race 7 drifted the other way, 6/1 out to 11.0, and finished nowhere. On a card where being roughly right about the shape of eight races worked out, the single most confident opinion we expressed in each race was mostly noise.
That's the honest read of a coverage model: it isn't a picking machine, and days like this are what that actually looks like from the inside.
The value lane, and the usual bucket of cold water
Three winners from twelve picks — Eleanore's Pick at 3.8, Smart Code at 6.7, Divisible By at 4.4. That's +5.9 units, +49.2%.
Please don't do anything with that number. Twelve bets is not a sample. The running book for this lane under the current framework is 357 picks, a 14% strike rate, and −22% ROI. Three horses carried this entire card; strip the best one and it's +2.1u. A good Sunday is a good Sunday.
Bottom line: eight of nine, well clear of the chalk benchmark, and the don't-single flags went 0-for-7 on short horses. The one miss was a horse we ranked second, bet in the value lane, and left out of the coverage pool because it lost a morning-line tie-break on program number. The handicapping was fine. The plumbing wasn't.
↑ All posts
🏇 Card Debrief · Ellis Park
August 9, 2026
5 min read
I typed HARD AVOID in capital letters. He won at 7-1.
Ten races at Ellis Park on Sunday. Nine winners in the pool. Ninety percent.
Boxing the market's top four would've gotten you eight of ten. So this was a good card by the only measure I care about, and I'd enjoy it more if the one that escaped hadn't been my own doing.
The one that got away had my fingerprints on it
Race 1, a twelve-horse two-year-old turf maiden with eight first-time starters in it. Mid American was 15/1 on the morning line. Here's what I wrote about him before the race, copied out of the log exactly as it went in:
"HARD AVOID and the cleanest one on the card. This is FIRST-TURF at 15/1, which is the precise cell the research says never to cover — dirt-only horses debuting on grass at 8/1 or longer win about 1% of the time and return -60%."
He won. Paid $17.22.
The flag isn't the problem. Dirt horses trying grass for the first time at a long price really are a graveyard, and that number holds up across a lot of races. The problem is that "8/1 or longer" is measured on final odds, and I applied it to a morning line.
Mid American opened 15/1 and got bet down to 7.61. Under the threshold. By the time the gate opened he wasn't in the fade cell at all — somebody had already decided he was live and the tote board said so in plain numbers. I ran a horse through a rule using the wrong price and then wrote HARD AVOID in capitals like I'd spotted something.
The genuinely annoying part is that this is a known bug. There's a note attached to a completely different flag in our own system that says its price band "is a FINAL-ODDS condition and tickets lock on M/L." I wrote that note. I did not think to apply it here.
Same flag, four hours later, completely right
Race 10, another turf route, another dirt-only horse trying grass. Sails Up, 8/1 on the line. I pulled him out of the pool for identical reasons and swapped in a first-time starter instead.
He drifted to 28-1 and finished nowhere.
One flag, two races, four hours apart, opposite verdicts. The difference wasn't anything about the horses. It was which direction the money moved between the morning line and the bell. Mid American got backed hard; Sails Up got abandoned. The flag was really reading the crowd, and all I had at the time was yesterday's guess about what the crowd would do.
That's not an argument for throwing the flag out. It's an argument for looking at the board before I commit to the word "avoid."
Where I was wrong
Race 1 was not the only place.
Top picks went 2 for 10 — Igniter in the $400k and Paseo in the finale. That's the stat every tout leads with, it isn't the one that pays a Pick 4, and 2 for 10 is still 2 for 10.
Race 5: I described Five A Side as "the horse we would most like to beat." He hadn't published a workout in 66 days, his form was declining, and he'd returned minus 58 percent over his career. He won.
Race 8 is the one that stings. I made Twirling Aces the top pick and called him the clearest overlay of the day at 9/2. The public got there first and bet him to 1.33; he ran third. The winner was Conceit, who was on my own value list, and about whom I had written: "The flags say trust her, the figures say do not key her." She won at 2.47. I found her, wrote her up, and then argued myself out of her inside the same paragraph.
Race 6: Glory Run posted the highest composite score on the entire card, a +9. Fourth.
The value lane, with the cold water included
Sixteen value plays, two winners, minus 11.9 percent flat. Master of Light was the good one — flagged at 8/1 in the morning, went off at 9.62, won, and a favorites box never had him anywhere.
Split by final odds it's the identical shape we keep running into: the 5-10/1 band came back +77 percent, and everything 10/1 and up went 0 for 4 at minus 100.
Before anybody gets attached to that +77: it's six bets carrying exactly one winner. Six. The running book on this lane sits around a 16 percent strike rate at minus 18 percent, and a single afternoon doesn't shift it a millimetre. Anyone publishing +77 percent off six bets as an edge is selling you something.
Bottom line: Nine for ten against an eighty percent benchmark, and the only winner that got out did so because I ran a final-odds rule against a morning-line price and then shouted about it in capital letters. The pool sizing is in good shape. The typing needs work.
↑ All posts
🎟️ Losing Tickets
August 9, 2026
5 min read
0-for-11: I built a model, then bet against it
Every handicapper you follow posts their winners. Here is my complete betting record since I started logging tickets:
11 bets. 11 losses. $264 in. $0 out. Minus one hundred percent.
Not a slump. Not a rough patch. A perfect, unblemished record of failure, achieved over the same weekend my own model put the winner inside its pool in 31 of 33 races.
Both of those things are true, and the gap between them is the most useful thing I've learned all month.
The tickets weren't stupid. I was.
Here's what makes it worse: the tickets were built off the model. Same pools, same reads. Every one of them started life as a defensible structure.
Then I got involved.
The Del Mar Pick 4. $32. Legs one, two and three hit — including Daytona Diamond at 10.6, the debut-work overlay I'd flagged the night before and written a whole blog post congratulating myself about. Three legs deep, live to a nice number.
The model's pool in the last leg had six horses. I used two. The winner, Non Domicile at 4.2, was the model's third choice. He was right there, on the sheet, ranked above two horses I did use.
The Saratoga Pick 5. $48. Legs one, two, four and five all hit. Four out of five. The leg that killed it was race three, where the model gave me a five-horse pool and I decided two would be plenty. San Siro won at 10.23. He was the model's third choice. He was in the pool. I removed him personally.
The Ellis Pick 3. $18. This one I'd like buried at sea. Legs one and two hit — including Urban Planner at 14.45, a genuine price, exactly the horse the value lane exists to find. Two legs down, one to go, live to a monster.
Last leg: the model handed me a six-horse CHAOS pool. I trimmed it to three. Vaporetti won at 7.25.
Vaporetti was in the pool. He was ranked sixth. And here's the part that should end my career: I published a post this week using that exact horse to explain that our caution flags mean "don't build your ticket on him," not "throw him out." I wrote that. Then I threw him out. On a ticket. Which is the specific thing the post says not to do.
The Saratoga Daily Double. $30. Died in leg one, which is at least efficient. The winner was Tagermeen at 2.73 — the model's second choice, in the pool.
And I had him. On the Pick 5 I fired earlier that same afternoon, leg five, that identical race, my selections were 6 and 7. Tagermeen is 7.
An hour later, same race, different ticket, I wrote down 4 and 6. I dropped the model's #2 and added a horse that wasn't in its pool at all.
Same horse. Same race. Same day. Same guy. Two different opinions, and the one I paid $30 for was the wrong one.
The pattern is not subtle
Four tickets. Four dead legs. In all four, the winner was in the model's pool and not on my ticket.
Not one of these was a case of the model missing. Not one was bad luck in the "the 40/1 woke up" sense. Every single one was me looking at a pool of five or six horses, deciding I knew which two mattered, and being wrong about which two.
The legs where I did just use the pool? Those hit. Daytona Diamond at 10.6 hit. Urban Planner at 14.45 hit. The model found both of those at a price, and I cashed neither, because I saved four dollars in a different leg by outsmarting myself.
Why I'm publishing this
Because the whole pitch of this site is a coverage model, and a coverage model has exactly one enemy: the person operating it deciding he's cleverer than it in the fourth leg at 4:15 on a Saturday.
You can read the three card debriefs from this weekend and come away thinking the thing works — 31 of 33, four Grade 1s, a 10/1 first-timer called for the stated reason. All true. Also true: the man who wrote them went 0-for-11 and lost $264, and every ticket died on a leg where he stopped listening.
The model doesn't get tired at leg four. It doesn't get a feeling about the 4 horse. It doesn't reduce a six-horse pool to three because the ticket was getting expensive. I do all of those things, which is why I'm now the least reliable component in my own system.
Touts post winners. I've got a ledger, and right now it reads 0-for-11, and I'd rather show you that plus the reason than a screenshot of the one ticket that hit.
Bottom line: the model went 31-for-33 on coverage. I went 0-for-11 with real money. Four tickets, four dead legs, and in every single one the winner was a horse my own model had in the pool and I took off the ticket. The system's problem isn't the system.
↑ All posts
🏇 Card Debrief · Saratoga
August 9, 2026
5 min read
Saratoga, Aug 8: four Grade 1s, two misses, and only one of them was our fault
Fourteen races on Whitney day. Twelve winners in the pool. 85.7%.
For context, the laziest possible version of this job — box the market's top few, go outside, enjoy the weather — lands around 82%. So we beat a strategy that requires no thought, on the hardest card of the meet, by about four points. Hold the parade.
The two we missed are worth more words than the twelve we got, because one of them is a bug and the other one is just horse racing being horse racing.
The Grade 1s behaved, which felt suspicious
Explora in the Test at 1.87 and Deterministic in the Fourstardave at 1.61 were both our top pick and both won. Two top-pick wins, landing in the two spots where being right is hardest. I'd love to tell you that's skill. It might even be.
Then the Whitney decided to teach a lesson.
Our top pick was Magnitude, and the note on him reads less like an endorsement than a restraining order: top power in the field, 8-for-14, three bullets, three banker tags — "but FULCRUM bet to ≤2/1 is the validated over-bet single, so do NOT banker. Pool keeps him." He went off at 1.95 and ran sixth. The flag was right. Cool. Great.
Because the horse that won, Sovereignty at 2.26, was our #2 — and we had slapped a don't-single flag on him too. "DECLINING-FORM at 3/1 (decel +6.8) and the slowest best-work in the pool." He then went out and won the Whitney, presumably out of spite.
Here's the thing I'm contractually obligated to point out before anyone enjoys this too much: a don't-single flag is not a prediction that a horse loses. It says he wins less often than his price implies. Sometimes the horse you flagged wins the biggest race on the card, and the flag was still correct on average and still cost you nothing, because the instruction was "keep, don't key" and we kept him. Treat that tag as an eliminator and we'd have thrown out the Whitney winner. We didn't. That's the entire design working exactly as intended while feeling deeply unsatisfying.
The miss that was ours
Race 7. Our #1, Magnanimous Max, scratched.
One scratch reshuffles an eleven-horse field, and our process responded by confidently doing nothing. The winner, Il Siciliano, sat at our #7 — one spot outside a CHAOS pool already maxed at six. The pre-race note, which I would like entered into evidence: "cut only by the 6-horse cap."
He won at 6.38 and closed as the market's third choice. So we identified him, wrote down why he was interesting, and then declined to include him for administrative reasons.
He was 6/1 on the morning line, in a field with four horses at 6/1 — which is exactly the shape where a six-horse cap has to start cutting horses that are, mathematically speaking, the same horse. Two problems stacked: the cap bites hardest when the field is bunched, and a top-three morning-line scratch invalidates the ordering the entire pool is built from.
This is the fourth time in two days we've been caught handicapping yesterday's prices — Ellis and Evangeline on the 7th, Charles Town race 6 earlier the same day. At some point a recurring bug stops being bad luck and starts being a personality trait. The fix isn't "make every pool deeper," which is just paying more money to be wrong more expensively. It's re-tiering against the actual board before firing, and treating a top-three scratch as an automatic max-depth leg.
The miss that wasn't
Race 13, Will Not Be Swayed at 12/1. He was our #6. He was also the market's #6. One work in the last 45 days and a declining form cycle. Nobody had him. Not us, not the crowd, quite possibly not his connections.
Our top pick in that race, Feminism, was described in our own notes as "the most singleable horse on the card" — top power, fastest work, a bullet, five works in 45 days, zero fade flags. She ran fourth at 4.6.
So the most defensible horse on the page ran fourth and a 12/1 with one work in six weeks beat everybody. There is no fix for this. This is the product.
The value lane, as unflattering as ever
Three winners from 22 plays, −3.09 units, −14.7%. Which is, depressingly, right on trend: the long-run book for this lane is about a 16% strike at −18%.
The best of them was Glacius in the Saratoga Derby at 9.62, and I have to disclose the embarrassing footnote: his note says "NO worktab on record — a European shipper data gap, so no fitness read." We got paid on a horse we openly admitted we could not evaluate. I'm filing that under variance, not genius, no matter how much I'd prefer the other drawer.
Bottom line: 12 of 14 on the biggest card of the year, both Grade 1 singles landed, and the don't-single flags did their job even when the flagged horse won the Whitney. The one genuine error was a scratch we never re-priced — for the fourth time this week. Fix the prices, not the model.
↑ All posts
📊 By The Numbers · Saratoga
August 9, 2026
4 min read
Saratoga, Aug 8: who actually had a good day — and why our hot-jockey flag should be embarrassed
Coverage numbers tell you whether the circle was the right size. They don't tell you who was actually riding and training the winners. So here's the Whitney-day scoreboard, 111 finishers, fourteen races.
The riders
Jose Ortiz took the day: 3 wins from 13 mounts, and seven times in the top three. His winners paid 2.87, 2.73 and 15.88 — a chalk, a mild chalk, and a 15/1 nobody wanted. That's the profile of someone who was simply on a lot of live horses and didn't waste any of them.
Behind him, a three-way tie at two wins apiece, and each of the three earned it differently:
- Flavien Prat — 2 from 12, both short (2.41, 1.87).
- Luis Saez — 2 from 10 at 6.38 and 9.62, comfortably the best prices of any multi-winner.
- Tyler Gaffalione — 2 from 8, including San Siro at 10.23.
Saez deserves a special mention for personally being both the best and worst thing that happened to us on Saturday. He won the Saratoga Derby on Glacius at 9.62, which was our logged value play. He also won race 7 on Il Siciliano at 6.38 — the horse our six-horse cap had cut. Same rider, same afternoon, one hand giving and the other taking it straight back.
Now the part that hurts. John Velazquez went 0-for-9 and hit the board five times. Five top-threes, no wins. That is the most expensive possible way to be almost right, and anyone who backed him for place is currently very calm about it. Irad Ortiz Jr. went 0-for-7 with a single board hit. Javier Castellano: 0-for-4, no board.
Kendrick Carmouche went 1-for-4, and the one was Deterministic in the Fourstardave at 1.61 — a strike rate of 25% and a Grade 1 on the card. Efficient.
The barns
Chad Brown (2 from 7) and Steve Asmussen (2 from 9) led on volume, but the quietly outrageous line belongs to Miguel Clement: 2 wins from 3 starters, at 2.42 and 1.61. Two-thirds strike rate on Whitney day. No notes.
Three trainers went a perfect 1-for-1 — Bob Baffert with Explora in the Test at 1.87, Hugo Palmer with Glacius at 9.62, and Lolita Shivmangal with Will Not Be Swayed at 12.0. I am certain all three will mention their 100% strike rate at every available opportunity, and honestly they've earned it.
At the other end: Todd Pletcher saddled ten horses and won one. Bill Mott went 1-for-5, but the one was Sovereignty in the Whitney, which is the correct one to win. And William Walden ran eight horses, hit the board four times, and won nothing — the trainer edition of the Velazquez experience.
And now the bit where we look stupid
We have a flag called BANKER+HOT-JOCKEY. It fires when a horse already carrying a banker signal also has a rider in form, and the research behind it is genuinely encouraging — at ≤4/1 the combination has historically won 43.5% against 30.7% for the same bankers without the hot rider. It's supposed to be our "trust this one most" tag.
At Saratoga on Saturday it fired on twelve horses.
It went 1-for-12.
The one winner was Tagermeen at 2.73. The other eleven included Magnitude getting beaten in the Whitney at 1.95, Red Poppy at 0.61 — yes, odds-on — running fifth, and Remember Mamba finishing fourth at 2.02.
Zooming out slightly doesn't rescue it either. Across the whole card, horses whose notes described the connections as hot won 6 of 44 (13.6%). Everyone else won 8 of 72 (11.1%). A gap of two and a half points, on a sample where that's indistinguishable from nothing.
Is one card evidence the flag is broken? No. Twelve fires is nothing, the underlying study is much larger, and a signal that wins 43% is still losing 57% of the time by definition. But it's a useful reminder that "hot connections" is the single most seductive number in this sport — it is right there on every program, it feels like inside information, and everybody can see it, which is precisely why it's already in the price.
Bottom line: Jose Ortiz won the day, Saez won the best prices, Velazquez found five ways to not win, and our flashiest connections flag went 1-for-12 on the biggest card of the meet. We'll be logging that one, not quietly deleting it.
↑ All posts
🏇 Card Debrief · Del Mar
August 9, 2026
4 min read
Del Mar, Aug 8: ten for ten, which I refuse to enjoy
Ten races. Ten winners in the pool. The whole card.
A perfect card is the easiest thing in the world to oversell, so let me get ahead of myself: covering every winner is part handicapping and part Saturday-afternoon chalk deciding to behave. The number I care about isn't 100%. It's that we got there without padding — because you can cover every winner by simply betting every horse, and that's called "donating."
What "well-sized" actually looks like
Every pool is an argument with itself. Too narrow and you miss; too wide and you catch the winner while handing the profit back at the window. Saturday:
- One LOCK, a pool of three — covered.
- Eight STANDARD, averaging 5.5 horses — all covered.
- One CHAOS at the full six — covered.
No leg burned for being too thin, no leg bloated with insurance we didn't need. Four were outright top-pick wins: High Pronto, Code Duello, Ima Track Star, Matt At Five.
The LOCK is the one worth poking, because a three-horse pool is the most exposed call on the card — there's nowhere to hide. That was the Best Pal, a Grade 3 for babies. Our top pick, Kennyten, lost. The note had already been rude about him: "MAIDEN-GRAD bet short at 9/5 is the watch-fade (27% vs 43% for other favorites at the price) and much the weakest connections. Keep, do not key." He ran third at 1.6, exactly as advertised.
The winner, Hughes at 1.5, was our #3, tagged CO-ANCHOR: "TRIP-AUTHORITY (won last with reserve), bullet work, 5 works/45d regular." Third-ranked horse, three-horse pool, covered. We didn't know which of the three it would be, and — this is the important part — we didn't pretend to.
The one I'll actually brag about
Race 7: a Cal-bred maiden with five first-time starters. Which is to say, a race where most handicapping is elaborate guessing with a straight face.
Daytona Diamond won at 10.6. She was our #6 and a logged value play, and the note was specific enough to be falsifiable: "fastest debut work of the five first-timers (55.70), 5 works/45d regular, gate 14d @54.8; the prioritized FTS work-speed overlay."
That is not a horse we tripped over. That's a written-down theory about which debut horses the crowd underprices, applied to a named horse the night before, paying 10.6. The money is nice. Winning for the stated reason is the part that actually matters, because that's the only kind of result you can repeat on purpose.
The obligatory wet blanket
Three of seventeen value plays won — Daytona Diamond at 10.6, Path To Power at 6.7, Warming at 1.8 in the Yellow Ribbon. That's +5.1 units, +30%.
Do not read that as a 30% edge. Seventeen bets is not a sample, it's an anecdote with a decimal point, and one 10/1 carries most of it. The running book for this lane across every card we've ever done is roughly a 16% strike at −18%. One good Saturday at Del Mar doesn't dent that, and convincing yourself otherwise is how people end up with a very confident spreadsheet and no money.
Bottom line: ten for ten, four top picks, and no wasted depth anywhere — which is the actual achievement. The debut-work overlay found a 10/1 first-timer for precisely the reason it exists. Nothing to change, which is the most boring and best possible verdict.
↑ All posts
🏇 Card Debrief · Ellis Park
August 9, 2026
4 min read
Ellis Park, Aug 8: we called it a mess and the mess complied
Nine races, nine winners in the pool.
The interesting number isn't nine, it's five — five of the nine we graded CHAOS, our polite institutional term for "this race is a coin flip wearing a saddle," and pushed to the full six-horse pool. Most chaos-heavy card anybody had on Saturday. Every one of those deep legs covered.
Knowing you don't know is a skill
There are two jobs here and people conflate them constantly. One is picking the winner. The other is knowing how confident you're entitled to be. The second one is less glamorous and considerably more profitable.
Ellis on Saturday was almost entirely the second job. Three top-pick wins (Joe's Candy, Hit The High Note, La Puma), which is respectable and not really the story. The story is that in the five races where our honest position was we don't know, we sized like we didn't know, and the winner was inside the circle every single time.
This matters because the same track mugged us 24 hours earlier. On the 7th, Ellis cost us two races to morning-line drift — horses priced out of our pool on the overnight number and bet into contention by post time. Saturday, the wider pools absorbed exactly that risk instead of being punished by it. Occasionally we learn something.
"Don't single" and "throw out" are different sentences
Race 9, a maiden turf route, is the cleanest example on the card.
Vaporetti won at 7.25. He was our #6, and he was wearing two caution flags — first time on turf, and first start off a layoff, both firmly in the don't-banker bucket. He was in the pool anyway, because that is what those flags mean. They say do not build your ticket on this horse's back. They do not say this horse is incapable of winning. People collapse those two into one instruction constantly and it costs them races like this.
Race 7 made the same point from the other direction. Our top pick, First Resort, was written up as an "A-anchor/single" — class drop, fitness peak, four bullets, banker flags at a price where those flags have actually been tested. He ran sixth at 1.88. Meanwhile the winner, Urban Planner at 14.45, was our #5, logged as a value play at 8/1: "5-for-13 +189% ROI; closer, BIAS-FIT."
About that value number
One winner from fourteen plays. Because that winner paid 14.45, the lane shows +1.45 units, +10.4%, which looks lovely in green.
Strip Urban Planner out and it's 0-for-13.
That is precisely the concentration pattern our own protocol tells us to distrust, and I'd rather say so here than let a green number sit unchallenged on a page and slowly turn into a belief. Saturday's value lane was roughly zero with a lot of variance stapled to it.
Bottom line: the openness calls were right, which is a quieter kind of correct than picking winners and probably worth more. Five max-depth legs, five covered, at the track that punished narrow pools a day earlier. The value lane was one horse in a trench coat pretending to be a strategy.
↑ All posts
🏇 Card Debrief · Saratoga
August 8, 2026
5 min read
Saratoga, Aug 7: the chalk got mugged and we called most of it
Eleven races Friday. Ten winners in the pool. 91%.
Before anybody gets excited: the pool isn't a pick. The entire job is drawing a circle big enough to have the winner inside it and small enough that betting it doesn't bankrupt you. 91% is a good circle. It's not a victory lap — the lazy version of this, boxing the market's top few, gets you around 82% on its own.
The part I actually enjoyed was watching the favorites eat it.
The "don't single" flags went off like a smoke alarm
Some of our flags aren't recommendations, they're warnings. They say: this horse is too short, keep it in the pool because it can still win, but do not build a ticket on its back.
Twenty-four horses went off at 4/1 or less Friday. Sort them by whether we'd slapped a don't-single tag on them the night before:
Flagged: 1 winner out of 13. Not flagged: 5 out of 11. Same prices, same races. One list went 7.7%, the other went 45%.
EZ Roll belongs on a poster. Even money in the fifth, DECLINING-FORM, and the note said — in actual capital letters — "DO NOT single." Ran second. Beaten by Papa Yo, who was our value play in that same race, at 2.11. It does not get cleaner than that.
Then Margarita Molly, who opened 3/1 and got hammered down to 1.18 by people who apparently never checked whether she'd been getting slower. Sixth. Touch of Fire at 1.21, third. Coquito at 1.72, third.
The flags that say trust worked too, which is less fun to write about. Coach Ryan had three separate banker tags stacked on him in the third, all at a price where those tags have actually been tested. He won. Boring. Good.
The one that got away, and no, it wasn't bad luck
Constant Force won the sixth and wasn't in our pool. Here's the embarrassing part: he was in our notes. Verbatim — "fastest debut work 55.9 + DEBUT-GATE fresh + COMPANY-CLASS; top FTS value."
So one half of the model found him and the other half threw him out.
The reason is dumb and fixable. The pool gets built off the morning line, and the morning line said 15/1. Our pool caps at six horses. You cannot reach the tenth-ranked horse on a 15/1 line no matter how much you like him. By the time the gate opened the public had him at 8/1 — comfortably inside the range we'd have covered, if we'd bothered to look at the actual board instead of a number somebody printed the night before.
Same thing bit us at Ellis and Evangeline the same day. It has a name now, "stale morning line," which is a polite way of saying we were handicapping yesterday's prices.
The value lane, with a wet blanket attached
Four of nine value plays won: Mobile (7/1), Papa Yo (2/1), Constant Force (8/1), Bottas (7/2). Paper return, +178%.
Please ignore that number. It's nine bets. Two of them carry the whole thing. The long-run record for this lane across every card we've done is somewhere around a 16% strike rate at −18% ROI, and one pretty Friday doesn't dent that.
The bit worth keeping is Mobile. First-time starter, gate work that was frankly mediocre, which is precisely the horse the research says the crowd throws away too cheap. Paid 16.44. I don't care that she won nearly as much as I care that she won for the reason we said she might.
Bottom line: the circle was the right size, and the flags correctly fingered which short horses were frauds. The one winner we missed wasn't a modeling problem. We were just reading an out-of-date price.
↑ All posts
🏇 Card Debrief · Del Mar
August 8, 2026
5 min read
Del Mar, Aug 7: 6 for 8, and we'd argued about both misses already
Eight races, six winners in the pool. 75%.
That's a bad day. Boxing the market's top few gets you roughly 82%, so we did worse than the lazy option, and there's no spin available.
What keeps it from being humiliating is that we didn't miss either winner. We had both in hand and let them go on purpose, for two completely different reasons, and I'll defend exactly one.
Miss one: the math ate it
Unpretentious, race four, paid 14.9. Our note on him, word for word: "class-drop −7; closer; dropped for sizing."
The pool isn't a top-four, it's a budget. You add horses in market order until the win probability you've stacked up crosses about 80%, then you stop, because every extra horse costs money on every single ticket. In race four the budget filled after four horses. He was the fifth. Ranked, written up, and cut by arithmetic.
I'm keeping it. Something built to be right 80% of the time is wrong 20% of the time. That's not a bug report, that's the definition. If I widen the pool every time the fifth horse wins, I've reinvented boxing the field, and I can do that without a database.
Miss two: shrug
Grandisimo. 57/1. Twenty-to-one on the morning line, dead last of eleven on our ranks, first time on turf. He nearly tripled his morning line and won anyway. Nobody sane had that. Write it down, move on.
The favorites got wrecked here too
Seventeen horses at 4/1 or shorter. The ten we'd tagged don't-single produced one winner. The seven clean ones produced three.
Race seven is the showcase. Early Encore: best power figure in the field, five bullet works, bet down to 2/5. Also a maiden graduate facing winners for the first time, which is a well-documented way to lose money when the crowd sends one off that short. Our note said "don't single, fade exotics." He ran third. Net Par, our number two, won and paid 4.9.
And one small thing that made me happy. The turn-time work sorts lone front-runners into two piles using the middle fraction nobody publishes — the ones that hold and the ones that fold. Friday, Del Mar ran one from the hold pile and two from the fold pile. The hold one won. Both fold ones lost. One card proves nothing, but that's the exact shape it's supposed to make.
Where I was wrong
Two places.
Theresasilverlinin won the second at 1.3 wearing a DECLINING-FORM don't-single tag. The flag is a lean, not a law, and it will absolutely cost you favorites that win. That's the trade.
And the value lane at Del Mar went 0 for 6. All first-time starters, all debut-gate overlays, none of them sniffed it. Saratoga's value plays went 4 for 9 the same afternoon. Both numbers are noise. I'd just have preferred the noise in the other order.
Bottom line: 6 for 8 is bad, and neither miss tells me to change anything. One was the budget being wrong on schedule, the other was a 57/1 shot. The thing that actually worked is the same thing that worked at Saratoga — knowing which short prices to refuse.
↑ All posts
📊 Model Update
August 7, 2026
5 min read
Track bias is real. Fitting it isn't an edge.
Every handicapper talks about track bias — "the rail's golden today," "you can't win from off the pace here." So I built it properly: a bias card that reads, for each track by surface by sprint-or-route, where the winner actually sat at the first call. Speed-favoring, closer-friendly, balanced, or not enough data. It's on every card now as a small ▲ fits / ⚠ counter badge on each runner.
The finding I didn't want
The bias is real — and the market already prices it. A forward horse on a speed-favoring surface does win more often. But it wins only as much as its shorter price implies: matched against same-priced peers, the edge is essentially zero. "The track favors speed, so bet the speed" is information the crowd has already put into the odds.
So BIAS-FIT is scene-setting. It helps you picture the race. It is not a bet.
The one piece worth acting on
The exception is the horse fighting the bias. BIAS-COUNTER — a forward/speed horse on a closer-friendly surface — underperforms its price (about −2.7 points on Saratoga turf, and it held in both halves of the date-split). That's a mild don't-single caution. The reverse — a closer on a speed-favoring surface — isn't flagged at all, because there's no edge there either.
The takeaway: "fits the bias" is already in the odds. The only actionable thing track bias gives you is the horse whose style fights it — and even then, as a fade, not a play. Real bias, no free money. Which is most of this job.
↑ All posts
⚙️ Model Update
August 2, 2026
7 min read
Pace has teeth after all — just not where I looked first
Earlier in the rebuild I retired pace as a betting edge. The projected setup — how many horses will contest the lead, who gets a lone lead — turned out to be essentially unpredictable (correlation ~0.04 across every method I tried). Early bunching is semi-random. So I benched it: pace became context, not a bet.
But that was the wrong funeral. The setup is unpredictable; the form-cycle splits between the published calls are not — and the crowd underbets them because they're not printed on the page.
Turn-time: what separates lone speed that holds from lone speed that folds
Turn-time is Brohamer's middle fraction — the second-to-fourth-furlong run around the turn. It's the conditioner nobody reads. On the field's lone early-speed horse it splits cleanly two ways:
- LONE-SPEED-ANCHOR — lone speed with a strong figure and a strong turn-time: 25% win. Trust the single.
- LONE-SPEED-FADE — lone speed with a sub-par turn-time: 11% win, −0.46 ROI. It gets the easy lead and still folds late. Don't single it.
It survives a date-split, and it survives a speed-figure control — it adds about +9 points within a figure tier, so it isn't just a proxy for a fast horse.
Declining-form: the short-price trap
DECLINING-FORM is a Sartin idea — a horse whose deceleration is steepening start over start. At ≤4/1 it wins meaningfully less than same-priced peers (ROI about −0.35 vs −0.18). It's a short-price fade only — no edge at longshots, where the crowd already discounts it.
The one I killed
I also built the Sartin energy-distribution match-up — early-energy vs late-energy elimination. Clean null. Zero separation, incoherent by odds band, failed the date-split. I wrote it up and threw it out. That's the job too.
And a tiebreak, not a bet: TRIP-AUTHORITY — a horse that won its last race with reserve (in hand, geared down, ridden out) beats a grind-it-out winner at the same figure and same price by 5–9 win-percentage points. Real, robust — and fully priced. Use it to pick your single, not to make a bet.
The filter: the difference between a real edge and a good story is a date-split. Turn-time and declining-form passed. Energy distribution didn't. Only two of the three shipped.
↑ All posts
🔬 Data Science
August 1, 2026
6 min read
The fulcrum, and a synergy I didn't expect
Two findings from the same week, and together they taught me something about how signals behave.
The fulcrum: a real signal that's fully priced
Tom Pizzola's "fulcrum" is the field's fastest competitive early-pace horse — the one the race turns around. I built it, and it behaves exactly as advertised: the fulcrum horse wins about 22% and hits the board about 54% of the time. But when I wired it in price-aware, the useful part was a caution, not a bet: bet down to ≤2/1, the fulcrum horse is over-bet — it wins 34% on 38% implied probability. So the rule is "don't single it," even though a coverage pool still keeps it (it's the top win rate in the race). The tempting 5–10/1 value pocket washes out entirely on the morning line. A genuine handicapping signal, and the crowd already has it.
The synergy: two weak things making one strong thing
Then the opposite. A hot jockey alone is a money-loser to bet (about −26% ROI — the crowd overbets the name). A banker flag alone is just a tiebreak. But a banker-flagged horse whose jockey is also hot (20%+ over the last 30 days)?
43.5%
Banker + hot jockey
win rate (≤4/1)
30.7%
Same bankers,
cold jockey
+35%
ROI on the pair
(n=131, survives strip-top)
An interaction, not a sum — neither piece works alone. And the pattern is specific: a hot trainer doesn't reproduce it, and hot connections actually hurt a debut-gate longshot (the crowd piles on and kills the price).
The lesson: signals don't add — they interact. Sometimes the whole is worth more than the parts (banker × hot jockey); sometimes the parts are already baked into the price (the fulcrum). The only way to tell them apart is to test the combination, not the pieces.
↑ All posts
✨ New Feature
July 24, 2026
7 min read
The overlays: where the market is actually blind
Coverage is defense. Overlays are offense — the one place you can genuinely beat the price rather than just contain the winner. The market is efficient almost everywhere, so the whole game is finding the few spots where it structurally can't compute, and betting only there.
Debut horses: the market's blind spot
On first-time starters the market's ranking falls apart — its AUC drops to about 0.61 (versus ~0.71 with form) because it can't price a horse that has never raced. Two edges live in that gap:
- FTS work-speed — the fastest-working first-timer is a live longshot; work-speed carries real signal (~0.58 AUC) exactly where it's noise everywhere else.
- DEBUT-GATE — a first-timer with a gate work is underbet: 14.2% at an average of 15/1, +30% ROI (n=225). The sharpest slice is the slow-working gate horse the crowd throws out on the clocking — 13.6% at ~18/1, +67% ROI — the one raw work-speed misses.
Wrong-surface excuses the crowd over-penalizes
- DIRT-CLASS-RELIEF — back on dirt, dropping in class, off a turf race at the same distance: 40% win / +38% ROI at ≤4/1 (n=32). The premium subset that is also top-2 in raw power: 52.4% / +73% (n=21).
- COMPETITIVE-EXIT — a horse that survived a genuinely fast-paced key race: 15.7% vs 6.3% for same-priced peers at >4/1 (n=51).
The discipline that saved the most money
A hard 10/1 price ceiling on judgment overlays. When I checked my own logged value plays, the 5–10/1 band was the only one with a positive return (+17%); above 10/1 was 1% win and about −75% ROI. I'd been quietly leaking money originating "value" on experienced longshots. So I made the ceiling mechanical — the logger now auto-strips any origination above 10/1 that isn't a genuine first-timer edge. The prose rule wasn't enough; I had to take the pen out of my own hand.
The overlay rule: the market is right almost everywhere. Bet the handful of places it can't see — debut horses, wrong-surface excuses, key-race survivors — and nowhere above 10/1 unless it's a firster.
↑ All posts
✨ New Feature
July 18, 2026
6 min read
The banker flags — and the fade traps
If the market sets the pool, the last handicapping question is: among horses at the same price, which one do I actually trust as my single? I went looking for angles that survive both a field-size control and an odds-matched control — i.e. that still win more than their same-priced peers. A handful did.
The bankers (all ≤4/1 reads)
- ALLOW-DROP — an allowance horse dropping to a claimer: 52% vs 41% for same-priced peers at ≤2/1.
- TROUBLE-TRIP — a troubled trip plus a decent finish last out: hidden form the crowd marks down too hard.
- REGULAR-2ND-OFF — a horse with a regular worktab making its 2nd start off a 45-day-plus layoff: 39% vs 30% at ≤4/1 (n=56).
- COMPANY-CLASS — a cheap horse that matched a much better stablemate's exact workout (same date, distance, clocking): 44.7% vs 30.1% at ≤4/1 (n=47).
The crucial caveat, and the one that took me a while to accept: these are win-rate reads, not price edges. The flagged horse wins more, but it also pays less — the ROI collapses once you match on odds. So they tell you which same-priced horse to single. They do not tell you to bet a longshot.
The fades
The mirror image matters just as much:
- FIRST-TURF — a dirt-only horse trying turf for the first time at a long price: about 1% at 8/1+, roughly −60% ROI. Do not cover it.
- 1ST-OFF-LAYOFF — a mild don't-single caution.
- Short MAIDEN-GRAD — a horse that just broke its maiden and is now bet ≤2/1 against winners: 27% vs 43% for other favorites at that price. Keep it in the pool (it still wins 27%), but never make it your banker, and fade it in the exotics.
The distinction I live by: an angle that wins more but pays the same is a tiebreak, not a bet. Confusing the two is how handicappers go broke feeling smart.
↑ All posts
⚙️ Model Update
July 16, 2026
5 min read
Stop picking winners. Size the pool.
Once you accept that the market sets the order, the only real decision left is how deep to go in each leg. And the old habit — always box the top four — is lazy. A dominant 4/5 favorite doesn't need four horses under it. A wide-open maiden claimer needs six and still might miss.
Size to a probability budget
Every horse's fair win probability is roughly one over its odds-plus-one, and the market prices those well. So instead of a fixed count, I add horses in market order until the pool's cumulative win probability crosses a budget:
~70%
LOCK
(a clear favorite — 2–3 deep)
~80%
STANDARD
(normal hierarchy — 3–5)
~85%
CHAOS
(flat board — up to 6)
No prediction is required — the price of the horses you leave out is the evidence they won't win. The card shows a "Dropped (sizing)" note so you can see exactly what a flat top-four would have carried that the budget trimmed.
Field size is a confidence dial
Small fields are far more predictable. In a field of six or fewer the market's top three covers the winner about 84% of the time; in nine or more it's about 67%. So I tighten and trust the LOCK legs in small fields, and spread the bankroll off the big-field chaos legs. Same budget, different conviction.
Why it matters: the edge in a Pick-N isn't the winner you find — it's the losers you correctly refuse to pay for. Budget sizing is just refusing to pay for them systematically.
↑ All posts
📖 Origin Story
July 15, 2026
8 min read
I threw out the model. The market won.
For a long stretch this blog documented a model that tried to name the single most likely winner — Selection Scores, GPS zones, tactical bonuses. It was fine. The top pick won about a quarter of the time. Better than a coin flip, better than most tout sheets. But "fine" is not an edge, and I kept feeling like I was decorating the favorite rather than beating anyone.
So I did the thing I'd been avoiding: I ran a full mechanical backtest — no AI in the loop, just the data — over the entire charted set. 518 races, 3,776 runners. The question was blunt: does any signal I have out-predict the betting market's own win ranking?
It doesn't.
0.695
Market win-rank AUC
(the odds)
0.687
Best model AUC
(everything I had)
82–85%
Top-4 favorites already
contain the winner
The humbling part
My old composite covered the winner in its spread about 70% of the time. Boxing the top four betting choices covered 82–85%. My handicapping wasn't adding coverage — it was subtracting it, because every pace-and-value tilt ranked a live favorite down and a dead longshot up.
That reframed the whole project. I'm not building a Pick-N ticket to name winners. I'm building the smallest pool that reliably contains the winner, at efficient cost. And for that, the market's price is both the benchmark and the ceiling.
What the tool is now
The morning line is the spine. Handicapping is a small, high-confidence adjustment layer on top of it — never the driver. The seven-axis composite I used to rank the field got demoted to a surgical instrument with exactly three jobs: break ties inside the favorite tier, find the one live longshot in a chaotic race, and flag genuine price overlays. Nothing else.
The rule I handicap by now: you cannot out-rank the odds. You can only cover smarter and find the few spots the market can't compute. Everything after this post is me looking for those spots — and grading every one of them in public on The Record.
↑ All posts
🔬 Data Science · Oaklawn Park
April 17, 2026
5 min read
Oaklawn Park GPS: Why the "Presser" seat is worth +0.75 in the Slop
After running our full GPS calibration for Oaklawn Park (OP), the data has spoken: Oaklawn is currently a "Presser's Paradise." While Keeneland has its famous "Speed Trap" on dirt routes, Oaklawn's current bias is more about tactical sustainability—especially at the 6-furlong and 1 1/16-mile distances.
The Power Position: GPS E2-E3
Our analysis of recent Oaklawn charts shows that horses sitting in the **GPS E2 and E3 positions** (1.5 to 4 lengths off the lead) are outperforming both the pure "wire" speed and the deep closers. This "Presser Seat" allows a horse to avoid the early duel while staying close enough to pounce as the field turns for home.
+0.75
Bonus for GPS Pressers
(OP 6.0f & Routes)
+0.50
Bonus for GPS Stalkers
(OP Routes)
2.0–4.5
Optimal RSE/SSE Range
(The Tactical Pocket)
Distance Specific Findings
- 6.0 Furlongs (Dirt): The **SSE 2.0–4.0 range** is the sweet spot. Horses in this pocket are winning at a significantly higher rate than those trying to clear the field from the rail. We've assigned a **+0.75 bonus** to these "Pressers."
- Dirt Routes (8.0f - 9.0f): The bias is even broader. We see strong returns for both **Pressers (RSE 2.5–4.5)** and **Stalkers (RSE 4.0–6.5)**. We've balanced this with a **+0.75 bonus** for pressers and a **+0.50 bonus** for stalkers.
The "Slop" Factor
Oaklawn has seen its share of off-tracks recently. In wet conditions, the GPS data suggests the lead is slightly more advantageous than on a fast track, but the "Presser" still holds the highest ROI. Staying out of the kickback while maintaining a manageable 2-length gap is the winning formula at OP right now.
Handicapper Note: When looking at today's Oaklawn card, prioritize horses with a **Tactical Score > 0** and an RSE/SSE in the 2.5–4.5 range. These are the horses sitting in the "Power Position" identified by our GPS tracking analysis.
↑ All posts
🏇 Race Recap · Keeneland
April 16, 2026
6 min read
KEE Apr 16 Recap: The "Presser" Seat is the Best Seat in the House
Nine races at Keeneland today. While the headlines will go to the favorites, the real story for the WagerCast models was the continued dominance of tactical positioning. Our GPS v8.3 model flagged the "Presser" (E2/E3) as the Power Position, and the track delivered exactly that.
The 0.60 Overlay: Emirates Affair
It sounds like a contradiction, but the model's biggest value play of the day was the 3/5 favorite in Race 1. EMIRATES AFFAIR showed a +9.8% Edge. While the public saw a "heavy favorite," our model saw a statistical outlier with a 72% win probability. His SSE of 3.7 placed him in the tactical pocket, and he never looked back, winning by daylight.
The Value Model Outlier: Blessed Flyer
Race 2 provided the cleanest validation of the Edge methodology over raw Selection Score. BLESSED FLYER was ranked #6 by Selection Score in a field of first-time starters. However, the Value Model flagged him with a +7.5% Edge at 8/1. He delivered the upset, proving that when the price is wrong, the ranking doesn't always matter.
GPS Validation: Avoiding the Trap
In our morning analysis, we warned that the early lead (GPS E1) was a "Speed Trap" for dirt routes this meet. Race 6 proved it. The front-runners dueled through early fractions, emptying their tanks and allowing UNION MIST (a rank #4 closer) to sweep from the back. Position 1 speed remains a liability in KEE dirt routes.
Statistical Summary
55%
Winners inside the
Selection Score Top 2
+17.3%
ROI on positive-edge
winners today
4/9
Winners from the GPS
"Presser" Power Zone
Handicapping Lesson: Don't be afraid to back a favorite if the Edge is positive. Value isn't just about longshots; it's about the gap between reality and the morning line. Today, that gap favored the elite tactical horses.
↑ All posts
🏇 Daily Picks · Keeneland
April 16, 2026
8 min read
KEE Apr 16: The "Presser" Card — 4 Best Bets Per Race via GPS v8.3
Today at Keeneland, we are putting our v8.3 GPS model to the ultimate test. We've combined our historical Selection Score hit rates with our edge methodology to isolate the four horses in every race that most logically fit the track's current bias. At Keeneland this spring, it's all about finding the "Presser" — the horse that can sit within striking distance without burning out early.
The Strategy: We've prioritized horses with an RSE/SSE in the 2.5–4.5 "Power Zone," rewarding those where our dual-model win probability (Primary + Longshot) shows meaningful edge over the morning line.
Race 1 (6F Dirt): The Sprint Powerhouse
A classic Keeneland sprint where early positioning is everything. EMIRATES AFFAIR is a massive statistical standout here.
| Selection | ML | Score | Edge | Why? |
| #1 EMIRATES AFFAIR | 3/5 | 14.2 | +9.8% | Dominant SSE 3.7 (Presser). Model sees 72% win prob — huge overlay even at 3/5. |
| #6 COASTLINE HOTTIE | 4/1 | 10.5 | -7.2% | Next highest score; fits the tactical profile but price is thin. |
| #3 DEVIL OF PARADIS | 9/2 | 8.7 | -5.5% | Solid SSE 3.1; the clear third choice in a shallow field. |
| #5 SO FAR SO GOOD | 12/1 | 8.0 | -1.9% | Best longshot look; sits in the E4 stalker seat. |
Race 3 (5.5F Turf): The Turf Dash
Turf dashes are chaotic, but our model has isolated a clear hierarchy in the pace numbers.
| Selection | ML | Score | Edge | Why? |
| #8 HEADSPIN | 9/2 | 15.8 | -4.3% | Highest Selection Score on the card. Great turf sprint profile. |
| #3 LUCY MCGEE | 4/1 | 13.3 | -3.0% | SSE 3.0 is the tactical sweet spot for this distance. |
| #9 LLAMP | 10/1 | 12.5 | -4.4% | Class specialist; price provides defensive value. |
| #2 GELLHORN | 6/1 | 11.9 | -4.7% | High-velocity finisher; best if the front-runners duel early. |
Race 5 (8.5F Turf): The Route Logic
This is where the GPS model really shines. We are looking for the horse sitting 2-3 lengths back.
| Selection | ML | Score | Edge | Why? |
| #9 JUDGE DAVIS | 6/1 | 15.7 | +1.1% | Perfect RSE 3.5. Model loves this horse at a price. |
| #8 GREEN LIGHT | 8/1 | 14.8 | +2.9% | Our top "Edge" play in the race. SSE/RSE blend is optimal. |
| #3 LEGALIZE | 6/1 | 13.2 | +2.5% | Consistent performer; RSE 2.0 is slightly aggressive but manageable. |
| #5 JUST A TOUCH | 8/5 | 13.2 | +1.0% | The class of the field; sits in the 2.5 Presser seat. |
Race 6 (8.5F Dirt): The Speed Trap Test
A classic dirt route where we must avoid the E1 wire-runners. METFARDEH and IVORY AND EBONY are the primary targets.
| Selection | ML | Score | Edge | Why? |
| #4 METFARDEH | 9/2 | 13.4 | +4.6% | RSE 3.0 (Presser). Not the leader, not a closer. Perfect seat. |
| #3 IVORY AND EBONY | 7/2 | 13.1 | +6.2% | The highest edge on the card. Model sees 28% win prob vs 22% implied. |
| #2 ORAIA | 10/1 | 10.8 | -1.5% | Stalker profile (RSE 4.0). Massive price value for exotics. |
| #1 UNION MIST | 6/1 | 9.0 | -0.9% | Fits the "off-the-pace" GPS profile required for KEE dirt routes. |
Race 8 (8.5F Dirt): Final Turn Power
Another dirt route. We are ignoring the pure speed and betting on tactical sustainability.
| Selection | ML | Score | Edge | Why? |
| #5 CLOONEY | 2/1 | 13.9 | +2.0% | Model's top pick by a wide margin. RSE 5.5 is deep, but safer than the lead. |
| #8 AWESOME RUTA | 7/2 | 13.6 | +0.5% | Tactical RSE 3.0. This is the horse most likely to inherit the lead. |
| #1 TRUSTY RUSTY | 8/1 | 12.9 | +0.4% | Stalker profile; huge TE (Total Energy) numbers. |
| #4 AMERICAN LAW | 6/1 | 9.8 | -7.7% | Class drop look; price is sufficient to protect a score gap. |
Today's "Must Bet" Horses: #1 EMIRATES AFFAIR (R1), #3 IVORY AND EBONY (R6), and #9 GREEN LIGHT (R5). These horses combine high Selection Scores with positive model Edge and tactical RSE positions.
↑ All posts
⚙️ Model Update · Keeneland
April 16, 2026
5 min read
The Keeneland Speed Trap: Why GPS Says "Fade the Wire" on Dirt Routes
If you're betting dirt routes at Keeneland and looking for the horse that "needs the lead," you might be betting against physics. After analyzing 81 races from the current meet using our new GPS tracking model, we found a startling reality: at 1 1/16 miles on the dirt, being first out of the gate is the fastest way to lose.
The Death of the Wire-to-Wire
In our dataset for the current meet, horses that occupied GPS Position 1 (the early lead) in dirt routes have a win rate of exactly 0%. Not a single wire-to-wire winner in the sample. While that 0% will surely break eventually, the trend is clear. At Keeneland, early speed is a trap.
0%
Win Rate for GPS E1
(Keeneland Dirt Routes)
32%
Win Rate for GPS E2
(The Presser Seat)
2.5–4.5
Optimal RSE Range
(The Target Zone)
The "Presser" Sweet Spot
So where is the money? It's in the E2 position—the horse sitting 1 to 2 lengths off the lead, watching the speed burn itself out. These "Pressers" are winning at a 32% clip. This isn't just about energy; it's about the configuration of the Keeneland track and the specific way the dirt surface is playing this spring.
RSE: The New Filter
To capitalize on this, we've introduced **RSE (Route Style Early)** to our cards. RSE is the median position a horse takes at the first call in route races. We aren't just looking for "speed"; we are looking for tactical positioning.
- RSE < 2.5: The "Need the Lead" types. In our v8.3 model, these horses now receive a penalty on Keeneland dirt routes. They are too likely to get caught in the speed trap.
- RSE 2.5–4.5: The Presser Zone. These horses get the GPS Bonus badge. They have the tactical speed to stay close without emptying the tank.
- RSE > 4.5: The Closers. While we don't bonus them (pace scenarios are too volatile), we've removed the penalties previously associated with being too far back. At Keeneland, it's better to be late than too early.
The 6.5 Furlong Exception
It's important to note that this isn't a track-wide bias. At 6.5 furlongs on the dirt, the script flips: front-runners (E1) win 40% of the time. This is why distance-specific modeling matters. A horse that is a "Speed Trap" candidate at 1 1/16 miles might be a "Power Position" play at a sprint.
Deployment: v8.3 is Live
This GPS-calibrated logic is now fully baked into the WagerCast Selection Scores. When you see the GPS Bonus badge on today's Keeneland card, you're looking at a horse that our model believes is sitting in the statistically optimal seat for that specific track and distance. Don't chase the lead; chase the position.
↑ All posts
🔬 Data Science
April 15, 2026
4 min read
The Power Position: Calibrating Track Bias via GPS Tracking
For decades, the wire-to-wire winner has been the holy grail of handicapping. Most players look at the lead and assume that is where the money is. However, after analyzing over 1,600 Equibase GPS charts across 11 major tracks, we have discovered a more nuanced reality: The Presser is King.
The GPS Deep Dive
We integrated a new tracking system to harvest per-horse data, capturing position, speed, and stride length at every 0.5-furlong interval. By mapping where every winner was actually running at the first call, we found that "Early Speed" is often a trap.
Key Findings at Keeneland and Gulfstream
In Keeneland route races, pure front-runners in GPS Position 1 win only 5% of the time on dirt. In contrast, "Pressers" running second or third early dominate with a 32% win rate. Gulfstream Park shows an even stronger trend across all surfaces, where being one length off the lead is consistently the most profitable seat in the house.
The 6.5 furlong sprint remains the notable exception. On dirt at this distance, the traditional need-the-lead bias still holds, with front-runners maintaining a 40% win rate.
Turning Data into Edge
We used these findings to deploy v8.3 of our model. Instead of a flat bonus for any horse with high early energy, we now use a Median-based Style Metric to identify confirmed Pressers. By rewarding horses that fit the Power Position profile for their specific track and distance—and removing penalties for closers that were previously being over-calculated—we saw an immediate 5.9% improvement in route hit rates during validation.
What is Next
This GPS-calibrated bias is now live for 10 major tracks on WagerCast. We are no longer just looking at how fast a horse can run; we are looking at where they need to be positioned when the gates open to actually reach the wire first.
↑ All posts
🏇 Race Recap · Mountaineer Park
April 13, 2026
6 min read
MNR Apr 12 Recap: Edge Model Finds a 15/1 Longshot, Goes 3-for-3 on Value Plays
Eight races at Mountaineer Park last night. The selection score system landed zero top-1 winners. The edge model went 3-for-8 on outright winners — including a 15/1 shot — and found 5 of 8 winners inside the top 2 ranked by edge. Here's the full breakdown.
The Scorecard
| Race | Winner | ML | SS Rank | Edge Rank | Edge | Notes |
| R1 | HEY BATTER BATTER | 5/2 | ✅ #2 | ❌ #8 | −8.0% | Top pick LUCHO scratched by stewards |
| R2 | ROUBAIX | 6/1 | ✅ #2 | ✅ #2 | −0.9% | Beat the 7/2 chalk, Garcia/Silva combo |
| R3 | MACI'S WORLD | 6/1 | ❌ #4 | ✅ #1 | +2.0% | Edge top pick won — 2/1 fav finished off the board |
| R4 | MOTHER VOLGA | 15/1 | ❌ #3 | ✅ #1 | +4.7% | 🔥 Longshot — edge model's best call of the night |
| R5 | MITICO | 2/1 | ✅ #2 | ❌ #4 | −0.4% | SS was on it; hot J/T combo (42% together) |
| R6 | WAJDA | 5/2 | ❌ #3 | ✅ #1 | +2.1% | Garcia/Silva again — second hit on the night |
| R7 | MAGIC MOVER | 5/1 | ❌ #5 | ❌ #8 | −2.6% | Barbaran/Bernardini connection (23% on 222 starts) |
| R8 | FIVEMINUTSOFPASION | 5/2 | ❌ #5 | ✅ #2 | +0.8% | Dist/surf specialist — 33% win rate at this distance |
0%
Selection Score
Top-1 Hit Rate
37.5%
Edge Model
Top-1 Hit Rate
62.5%
Both Models
Top-3 Hit Rate
3/3
Positive Edge Plays
That Won
The headline number is the edge model's 3-for-3 on positive-edge plays. Every horse where the model showed meaningful positive edge going in — MACI'S WORLD (+2.0%), MOTHER VOLGA (+4.7%), WAJDA (+2.1%) — won their race. That's the filter working exactly as designed: not betting every race, but identifying the specific spots where the model believes the market has underpriced a horse.
The 15/1 Play: Mother Volga in Race 4
This is the one worth unpacking. MOTHER VOLGA went off at 15/1 in a maiden-plus claiming field at 6 furlongs. The selection score system had her ranked third — perfectly reasonable given the pace figures in the race. But the edge model had her as the top-ranked horse in the entire field by positive edge at +4.7%.
What was the edge model seeing that the selection score missed? A few things converged: her morning line implied just 6.25% win probability, but the model calculated she had closer to an 11% actual chance — nearly double. The Batista/Donjuan jockey-trainer combination had been working together at a 28.6% clip over 7 shared starts. And at 15/1, you only need to be right once every 15 tries to break even — when the model thinks you're right about 1-in-9, that's a significant edge.
A $20 win bet on the three positive-edge plays (MACI'S WORLD, MOTHER VOLGA, WAJDA) would have returned $12 + $32 + $7 = $51 profit on $60 invested — +85% ROI on the night. Flat betting all 8 races at $10 returns a loss. The filter matters.
The Garcia / Silva Connection
Jockey Francisco Garcia and trainer Juan Pablo Silva put on a clinic last night. They combined for wins in Race 2 (ROUBAIX, 6/1) and Race 6 (WAJDA, 5/2) — two of the eight races on the card. Their overall career record together sits at 23.1% wins across 13 shared starts in our dataset — a legitimately strong number that suggests a real working relationship, not a coincidence.
What makes this more interesting: Luis Negron — the highest-volume winning jockey at MNR — also delivered with MITICO in Race 5. Negron rides at a 25.5% overall win rate. When Negron and the Garcia/Silva team are both on horses the model rates highly, it's a strong card.
Barbaran / Bernardini: The Connection the Model Underweighted
Race 7 is the most instructive miss of the night. MAGIC MOVER won at 5/1 — our selection score had it ranked fifth, the edge model ranked it eighth. Yet both systems were low despite the fact that jockey Erik Barbaran and trainer Jay P. Bernardini are 23% winners together over 222 starts. That's not a small sample quirk — that's a statistically meaningful team that consistently fires.
The model gave MAGIC MOVER a Trainer Bonus of +1.5 and a Jockey Bonus of +2.0, so it partially credited the connection — it just wasn't enough to overcome the pace figure gap with SIR MAXIMUS and BARTULIA. Going forward, when Barbaran/Bernardini are paired on a horse within two score points of the leader, that combination deserves a manual upgrade. It's the kind of angle the data supports but the model doesn't fully price in.
Distance & Surface: Specialists Win at MNR
Three of the eight winners had notably strong records at their specific distance and surface heading in:
| Horse | Race | Dist/Surf | DS Win% | DS Starts | Result |
| MACI'S WORLD | R3 | 5½F Dirt | 15.4% | 26 | ✅ Won |
| MAGIC MOVER | R7 | 1M Dirt | 28.6% | 14 | ✅ Won |
| FIVEMINUTSOFPASION | R8 | 5½F Dirt | 33.3% | 9 | ✅ Won |
Horses with 10+ starts at their specific distance and surface — and a win rate above 15% — went 3-for-3 last night when they appeared. That's not a coincidence. At a track like Mountaineer where the horse population is relatively stable and horses run back frequently, distance/surface specialists carry real predictive weight. It's a filter worth isolating on future MNR cards.
Why Selection Score Struggled
Zero top-1 hits from the selection score system on an 8-race card is an outlier. The most honest explanation is that Mountaineer's lower-level claiming environment introduces noise that hurts pace-based scoring models specifically:
- Small trainer sample sizes — several trainers with 0% win rates in our data won races last night (Lucas Ted W in R1, Shafer Gabe in R3). They're not bad trainers — we just don't have enough starts to calibrate them properly yet
- Scratch impact on R1 — LUCHO was our #1 pick and got scratched by the stewards. That wasn't a model failure, it was a card change. The actual winner (HEY BATTER BATTER) was ranked #2
- Market corrections — in races like R3 and R4, the 2/1 and 2/1 favorites both lost. The market oversold horses the pace figures liked; the edge model was skeptical and correct
The top-3 rate of 62.5% is actually solid — 5 of 8 winners were inside the top 3 by score. The pace and energy analysis is getting the right horses in the conversation. It's the final ranking step where low-volume trainer data introduces calibration noise.
The Playbook for Mountaineer
What worked: Positive edge as a bet filter (3/3). Garcia/Silva J/T combo (2/2 on the night). Dist/surf specialists with 10+ starts (3/3).
What to improve: Trainer bonus scoring needs a minimum-starts floor — 0% on <10 starts is noise, not signal. Barbaran/Bernardini needs a manual hot-connection flag when within striking distance of the leader.
MNR rule: When the edge model's top pick diverges from the selection score top pick by 2+ positions, trust the edge model. That divergence was present in all three positive-edge winners tonight.
The big picture: edge model 3-for-3 on value plays, found a 15/1 winner the traditional ranking missed, and two specific J/T angles delivered on cue. That's a productive night at Mountaineer. We'll build more MNR history as the meet continues and tighten the trainer data over time.
↑ All posts
🏇 Race Recap · Keeneland
April 12, 2026
7 min read
KEE Apr 12 Recap: 33% Hit Rate, +47% ROI on Edge Plays, and Two Models That Tell Different Stories
Nine races at Keeneland today with 19 scratches reshaping half the card. The selection score system found 3 winners. The edge system found 2 — and those 2 are the ones that mattered most financially. Here's the full breakdown.
The Scorecard
| Race | Our Pick | Score | Edge | ML | Result | Winner | Winner Rank | Win $2 |
| R1 | USE ME (IRE) | 15.5 | -0.7% | 5/1 | ✅ 1st | Use Me (IRE) | #1 | $5.22 |
| R2 | SENIOR OFFICER | 19.7 | +4.2% | 1/1 | ✅ 1st | Senior Officer | #1 | $2.84 |
| R3 | COMPETITIVE MARKET | 17.0 | -7.2% | 3/1 | ❌ 4th | Vronti (GB) | #10 | — |
| R4 | PASS AND GO | 14.9 | -1.5% | 3/1 | 🥉 3rd | Flash of Chaos | #7 | — |
| R5 | MUNNINGS TALKS | 15.7 | -4.9% | 7/2 | 🥈 2nd | How About Now | #4 | — |
| R6 | PAHOEHOE D'ORO | 15.1 | +5.2% | 4/1 | ❌ Also-ran | Take Charge Omaha | #6 | — |
| R7 | CREED'S GOLD | 15.2 | -5.9% | 10/1 | 🥈 2nd | In Our Time | #3 | — |
| R8 | CIVIL LIBERTY | 14.7 | +6.1% | 5/2 | ✅ 1st | Civil Liberty | #1 | $3.04 |
| R9 | IRON MAN CAL | 16.5 | +2.9% | 3/1 | ❌ 4th | Capitol Hill | #6 | — |
ROI (edge plays only)
+47%
33% is nearly double our historical KEE baseline of 17.9% — and well above random (10%). The 67% top-3 rate is the real weapon for exotic bettors. Five of nine races had our pick finish 1st, 2nd, or 3rd. But flat betting every race produced a -38% return. The selection score gets you in the right races. The edge system tells you which ones to actually bet.
The Edge System: 2/2 on High-Conviction Plays
Going into the day we flagged two horses with clear positive model edge and an actual morning line:
| Horse | Race | Edge | ML | Result | Win Payout | $10 Profit |
| Senior Officer | R2 D 6F | +4.2% | 1/1 | ✅ WON | $2.84 | +$4.20 |
| Civil Liberty | R8 D 7F | +6.1% | 5/2 | ✅ WON | $3.04 | +$5.20 |
Both edge plays won. A $10 win bet on each returned $28.40 + $30.40 = $58.80 on a $20 investment — +47% ROI. The selection score system alone ($10 flat on all 9 picks) returned $52.20 + $28.40 + $30.40 = $111 on $90 invested — which looks fine until you remember the negative-edge picks dragged it down. The edge filter is doing exactly what it's supposed to: separating the signal from the noise.
Worth noting: IRON MAN CAL had +2.9% edge on paper (R9) and finished 4th. Three scratches significantly reshuffled that field — PITKIN, TENACIOUS LEADER, and SPECIAL JUSTICE all gone — and Capitol Hill emerged from the chaos as a 6th-ranked horse. Scratch-heavy races are the model's biggest vulnerability, and R9 was the clearest example today.
The Miss That Stings: R6 Pahoehoe D'Oro
Our featured value play going in was PAHOEHOE D'ORO in Race 6 — +5.2% edge, 4/1, Dirt 1 1/8M (our best-performing distance/surface bucket at 33%). It finished in the also-rans. Take Charge Omaha won at $5.56 — the same horse our model had flagged with the 🚨 FALSE FAV signal.
This one hurts for two reasons. First, it was our highest-profile recommendation of the day. Second, the False Favorite flag is supposed to be a fade signal — and the horse we flagged won anyway. That's a direct model failure worth logging. Take Charge Omaha had legitimate class (Dirt route specialist, solid pace figures) and the market clearly knew something we didn't. The FF flag has been reliable over our broader backtest, but today was a counter-example. We're watching.
R3: The Scratch Chaos Race
Race 3 is the hardest to evaluate. Five scratches (Canterbury Lane, Oraia, Jerseys Parade, Gigi's World, Sweet Molly B) turned a 15-horse field into a 10-horse affair by post time. Our top pick COMPETITIVE MARKET finished 4th. The winner was VRONTI (GB) at $7.96 — a horse we had ranked #10 in the original field (rank #8 in the scratch-adjusted field), carrying the 🎓 MDN GRAD badge.
VRONTI is actually a useful data point. Maiden graduates in turf routes are one of the categories where our pace-based model structurally underrates horses — pace figures from maiden races don't translate well to open company, and a physically developing lightly-raced horse can improve rapidly. That's a calibration note for the model going forward.
The positive: SY B finished 2nd (our #2 pick at 5/1) and SUNSHINE DAYDREAM 3rd (our #3). The trifecta was in our top 3 picks. The exacta paid $35.58.
Jockey & Trainer Notes
Flavien Prat went 0-for-2 on our top picks (R3 Competitive Market 4th, R6 Pahoehoe D'Oro also-ran). His KEE backtest number stays ugly: 1/15 when riding our model's top-ranked horse. The pattern is consistent — he typically rides underlaid horses the market has already priced correctly, leaving no value. When Prat is our pick but the edge is negative, fade.
Brad Cox won in R2 with SENIOR OFFICER. First top-pick win of the meet for him after a slow start.
William Walden went 1-for-2 — PASS AND GO (R4) finished 3rd, but CIVIL LIBERTY (R8, after BEIJING scratched) won at 5/2. Walden continues to deliver when the model aligns with his horses.
Distance & Surface: The Day's Lessons
| Surface | Distance | Result | Notes |
| T | 1M | ✅ Win (R1) / ❌ (R9) | 1/2 — scratch chaos hurt R9 |
| D | 6F | ✅ Win (R2) | 1/1 — edge play hit |
| T | 1 1/8M | ❌ (R3) | 5 scratches, maiden grad won |
| D | 1 1/16M | 🥉 3rd (R4) | Pick finished 3rd, 8/1 shot won |
| T | 1M | 🥈 2nd (R5) | — |
| D | 1 1/8M | ❌ (R6) | FF winner beat our edge pick |
| T | 5 1/2F | 🥈 2nd (R7) | Creed's Gold ran well at 10/1 |
| D | 7F | ✅ Win (R8) | Post-scratch, edge pick hit |
Our backtest flagged Dirt 7F as a 7.7% hit rate bucket — the worst on the KEE card. BEIJING was scratched from R8 (our original top pick, D 7F), and CIVIL LIBERTY stepped up to fill the top slot. That scratch actually helped us: Civil Liberty was a cleaner edge play at 5/2 and won. Sometimes the scratch removes the right horse.
The Playbook Refinements
What worked: Positive edge as a bet filter (2/2). Top-3 coverage for exotic building (6/9). Identifying score gaps as confidence signals.
What needs work: False Favorite flag failed in R6. Scratch-heavy fields (R3, R9) exposed calibration gaps. Maiden grad turf routers are underrated by pace figures.
Rule update: In any race with 3+ scratches, downgrade confidence on all win singles. Use top-3 for exotics instead.
Overall: a solid day. 33% hit rate, 67% top-3, edge system positive. The two misses (R6 and R9) both have clear explanations — a false fav that overcame its flag, and a scratch-reshuffled field. Neither is random noise. Both are model calibration notes we'll act on.
Next KEE card drops Tuesday, April 14.
My Tickets
Two Pick 5s on the day. One consolation cash, one loss.
| Leg | Race | Selections | Winner | Result |
| 🎟️ Ticket 1 — $0.50 Pick 5 (R1–R5) · $48.00 · Consolation $11.14 (-$36.86) |
| Leg 1 | R1 | 5, 8, 10, 11 | Use Me (IRE) — PP8 | ✅ |
| Leg 2 | R2 | 2 | Senior Officer — PP2 | ✅ |
| Leg 3 | R3 | 4, 7 | Vronti (GB) — PP8 | ❌ missed |
| Leg 4 | R4 | 3, 7, 10 | Flash of Chaos — PP10 | ✅ |
| Leg 5 | R5 | 2, 6, 8, 11 | How About Now — PP2 | ✅ |
| 🎟️ Ticket 2 — $0.50 Pick 5 (R5–R9) · $30.00 · Lost |
| Leg 1 | R5 | 2, 6, 8, 11 | How About Now — PP2 | ✅ |
| Leg 2 | R6 | 4 | Take Charge Omaha — PP1 | ❌ missed |
| Leg 3 | R7 | 1 (SCR → replacement), 7 | In Our Time — PP7 | ✅ scratch replacement hit |
| Leg 4 | R8 | 8 | Civil Liberty — PP8 | ✅ |
| Leg 5 | R9 | 4, 11, 12 | Capitol Hill — PP5 | ❌ missed |
Ticket 1 went 4/5 — Vronti (GB) at PP8 in R3 was the killer, a rank #10 maiden grad we didn't have. The consolation came back $11.14 on a $48 ticket. Painful. Ticket 2 was undone by Take Charge Omaha in R6 (had PP4, winner was PP1) and Capitol Hill in R9 (had 4/11/12, winner was PP5). Net on the day: -$66.86. The model was right on the winners — the tickets just needed Vronti and Capitol Hill.
↑ All posts
🏇 Daily Picks · Keeneland
April 12, 2026
8 min read
KEE Apr 12: Full Card Picks, Jockey/Trainer Backtest & Distance-Surface Breakdown
Nine races at Keeneland today — a mix of turf routes, dirt sprints, and a couple of dirt routes that represent the model's strongest recent surface. Here's the full WagerCast breakdown: top picks by selection score and edge, plus the jockey, trainer, and distance/surface data from the past two weeks of the meet so you know where the real edge is.
The Card at a Glance
| Race | Pick | ML | Score | Edge | Surface | Distance | Flags |
| R1 | USE ME (IRE) | 5/1 | 15.51 | -3.9% | T | 1M | — |
| R2 | SENIOR OFFICER | 1/1 | 19.65 | +3.4% | D | 6F | Gap +1.37 |
| R3 | COMPETITIVE MARKET | 3/1 | 16.97 | -8.9% | T | 1 1/8M | — |
| R4 | PASS AND GO | 3/1 | 14.89 | -4.5% | D | 1 1/16M | — |
| R5 | MUNNINGS TALKS | 7/2 | 15.67 | -6.6% | T | 1M | Gap +0.70 |
| R6 | PAHOEHOE D'ORO | 4/1 | 15.05 | +4.7% | D | 1 1/8M | Gap +0.38 |
| R7 | CREED'S GOLD | 10/1 | 15.21 | -7.0% | T | 5 1/2F | Gap +0.37 |
| R8 | BEIJING | 4/1 | 16.43 | -10.3% | D | 7F | ⚠️ Danger dist |
| R9 | IRON MAN CAL | 3/1 | 16.52 | -0.7% | T | 1M | Tiny gap (0.03) |
Two horses show positive model edge today: SENIOR OFFICER in Race 2 and PAHOEHOE D'ORO in Race 6. Both are on dirt routes — exactly the segment where WagerCast has performed best this meet. Those are the bets worth circling.
The Top Two Value Plays
R2 — SENIOR OFFICER (even money, D 6F)
Highest selection score on today's entire card at 19.65, biggest score gap (+1.37 over the field), and a +3.4% positive edge — meaning the model thinks he's about 3-4 points underpriced against the morning line. Running at even money might feel like a laydown, but an even-money horse with legitimate positive edge is rare. The model is saying the market hasn't caught up yet. The concern: trainer Brad Cox is 0-for-3 at KEE this meet when our model tops a race. That's a flag worth noting, but the horse's own pace profile and edge are too clean to fade entirely.
R6 — PAHOEHOE D'ORO (4/1, D 1 1/8M)
The better value play of the two. Edge of +4.7% at 4/1 means the model believes this horse has a meaningful probability advantage over what the morning line implies. The dirt route at 1 1/8M is our best-performing distance/surface combination this meet (33.3% top-pick win rate — more on that below). Trainer Philip D'Amato doesn't have a big KEE track record in our data, but there's no red flag either. Clean setup, good price.
Positive edge plays today: R2 SENIOR OFFICER (+3.4%) and R6 PAHOEHOE D'ORO (+4.7%). Both on dirt. Both worth a look. R8 BEIJING is the highest-scoring dirt horse but has a -10.3% edge and sits in the model's worst-performing distance bucket (D 7F). Pass on BEIJING win singles.
Jockey Backtest — Keeneland 2026 Spring Meet
We ran every KEE race from April 3–11 (56 races, 10 wins = 17.9% overall hit rate) and measured how each jockey performed when riding our model's top-ranked horse. The results separate the jockeys who deliver when the model is hot from those who consistently fade.
| Jockey | Rides as Top Pick | Wins | Win% | Today's Ride |
| Machado Luan | 2 | 1 | 50% | — |
| Hernandez Jr Brian J | 3 | 1 | 33.3% | — |
| Gaffalione Tyler | 7 | 2 | 28.6% | R1 USE ME (IRE) |
| Ortiz Jr Irad | 8 | 2 | 25.0% | R2, R5, R8 |
| Velazquez John R | 4 | 1 | 25.0% | — |
| Prat Flavien | 13 | 1 | 7.7% | R3, R6 |
| Ortiz Jose L | 4 | 0 | 0% | R4 |
| Saez Luis | 6 | 0 | 0% | — |
The Flavien Prat number is the strangest in the dataset. He's the highest-volume top-rider at KEE with 13 rides as our model's top pick — and only 1 win (7.7%). What's happening? Prat typically rides the favorites, which means he often pilots horses the market has already bid down below their true value. The model recognizes the pace edge but the price is already gone. When Prat is our top pick, it's often a horse the public agrees with — and public consensus favorites don't hit at 25%+.
Tyler Gaffalione is the standout at 28.6% — best among the high-volume riders. He's on USE ME (IRE) in Race 1 today. Trainer Walsh is a concern (see below), but Gaffalione has been delivering when the model agrees with him.
Irad Ortiz Jr. at 25% is solid — he's on three races today (R2, R5, R8). Note that BEIJING in R8 sits in the model's worst-performing distance bucket, so that's not a clean Ortiz spot despite his numbers.
Trainer Backtest — Keeneland 2026 Spring Meet
| Trainer | Races as Top Pick | Wins | Win% | Today's Horse(s) |
| Ward Wesley A | 3 | 2 | 66.7% | — |
| Pletcher Todd A | 2 | 1 | 50% | — |
| Lynch Brian A | 3 | 1 | 33.3% | — |
| McCarthy Michael W | 3 | 1 | 33.3% | — |
| Walden William | 3 | 1 | 33.3% | R4 PASS AND GO, R8 BEIJING |
| Asmussen Steven M | 2 | 0 | 0% | — |
| Brisset Rodolphe | 2 | 0 | 0% | — |
| Brown Chad C | 3 | 0 | 0% | R3 COMPETITIVE MARKET |
| Cox Brad H | 3 | 0 | 0% | R2 SENIOR OFFICER |
| Harty Eoin G | 2 | 0 | 0% | — |
| McPeek Kenneth G | 2 | 0 | 0% | — |
| Walsh Brendan P | 4 | 0 | 0% | R1 USE ME (IRE), R5 MUNNINGS TALKS |
William Walden is the biggest positive signal today — 33.3% win rate with our model at KEE, and he saddles two horses today: PASS AND GO (R4) and BEIJING (R8). The Walden x Ortiz Jr. combination (both R4 and R8) is worth watching even if we're fading BEIJING's distance spot.
The red flags are harder to ignore. Brendan Walsh is 0-for-4 as our top pick trainer at KEE. He has USE ME (IRE) in R1 and MUNNINGS TALKS in R5 today — both horses we'd otherwise like based on score. The trainer fade is real and forces these into play-with-caution territory rather than win singles.
Brad Cox is 0-for-3, which makes the SENIOR OFFICER situation more interesting. The model loves the horse. The trainer data says something's off. The edge says bet. Our lean: box SENIOR OFFICER in exactas rather than hammering the win pool.
Chad Brown at 0-for-3 is the clearest fade. COMPETITIVE MARKET leads Race 3 by score (16.97) but with a modest edge of -8.9% and the Brown red flag — this is a good race for an upset from SY B (score 15.66, +1.7% edge, 5/1).
Distance & Surface Backtest — Keeneland 2026 Spring Meet
This is where things get genuinely useful. We tracked every KEE race this meet and measured the model's top-pick win rate broken down by distance and surface. The spreads are significant.
| Surface | Distance | Races | Wins | Win% | Signal |
| Dirt | 1 1/16M | 8 | 3 | 37.5% | ⭐ Best |
| Dirt | 1 1/8M | 3 | 1 | 33.3% | ✅ Strong |
| Dirt | 6F | 4 | 1 | 25.0% | Neutral |
| Turf | 1M | 5 | 1 | 20.0% | Neutral |
| Turf | 1 1/16M | 11 | 2 | 18.2% | Neutral |
| Dirt | 7F | 13 | 1 | 7.7% | 🚩 Fade |
| Dirt | 6 1/2F | 5 | 0 | 0% | 🚩 Cold |
| Turf | 5 1/2F | 4 | 0 | 0% | 🚩 Cold |
Dirt Route (≥1M) Win%
34.5%
The headline finding: WagerCast's model is built for dirt routes at Keeneland. Eleven wins from 11 qualifying races would be 100% — we went 4 for 11, a 36% hit rate that's nearly 4x random. The pace model captures the energy distribution over distance better than the sprint game, where raw speed and gate luck dominate.
Dirt 7F is the landmine. Thirteen races into the meet, our top pick has won exactly once (7.7%). That's actually below random for a top pick. Something about the 7F distance specifically doesn't suit our pace model — likely because 7F at KEE attracts a chaotic mix of true sprinters stretching out and routers cutting back, making pace profiles noisy. BEIJING (R8, D 7F) is a model fade on this basis alone, despite a high score.
Turf sprints (5 1/2F) are 0-for-4. CREED'S GOLD (R7) runs in exactly this spot. Score 15.21, gap of 0.37, but negative edge (-7%) and in the model's coldest bucket. Use in exotics, not win singles.
Today's Playbook
Best bet: R6 PAHOEHOE D'ORO — +4.7% edge, D 1 1/8M (33% hit rate), clean trainer, 4/1 price
Value look: R2 SENIOR OFFICER — top score on card (19.65), +3.4% edge, best gap — use in exactas given Cox trainer flag
Alt angle R3: SY B over COMPETITIVE MARKET — Brown 0/3 KEE, SY B has +1.7% edge at 5/1
PASS: R8 BEIJING (D 7F = 7.7% hit rate), R7 CREED'S GOLD win singles (turf sprint = 0%)
Watch: Walden x Ortiz Jr. exotics in R4 (PASS AND GO) — trainer +33% at KEE
The data edge at Keeneland is clearly on dirt routes. Two of today's nine races fit that profile with positive model edge. That's a good day for focused betting — not a spray-and-pray card.
We'll post results tonight once the card is complete.
↑ All posts
🏇 Race Recap
April 12, 2026
6 min read
Apr 11 Recap: 44% Hit Rate at Keeneland, a +44% ROI Edge Filter, and What Went Wrong
Yesterday was one of WagerCast's better single-day results since we started tracking — and also one of the more instructive. Strong at the tracks we expected, ugly at the ones we didn't, and the edge system drew a sharp line between value and noise. Let's break it all down.
The Scorecard
We had scored picks for 56 races across six tracks: Keeneland, Aqueduct, Gulfstream, Oaklawn, Laurel, and Tampa Bay Downs. A random pick finds the winner ~10% of the time. We more than doubled that overall and nearly quintupled it at Keeneland.
| Track | Races | Top-1 | Top-3 | T1% | T3% |
| KEE | 9 | 4 | 5 | 44% | 56% |
| AQU | 8 | 3 | 7 | 38% | 88% |
| OP | 12 | 3 | 6 | 25% | 50% |
| LRL | 9 | 2 | 4 | 22% | 44% |
| GP | 10 | 1 | 5 | 10% | 50% |
| TAM | 8 | 0 | 2 | 0% | 25% |
| All | 56 | 13 | 29 | 23% | 52% |
Keeneland: The Model's Home Track
KEE was the story of the day. Four top-1 wins from nine scored races — every winner had a pace score above 12, and every top-1 win came with high model conviction:
| Race | Winner | Our Rank | Pace Score | ML | Pace |
| R1 | WEST COAST DREAM | #1 | 12.49 | 6/1 | Fast |
| R3 | EYE DEE KAY | #1 | 13.58 | 8/5 | Fast |
| R7 | NOBLE CONFESSOR | #1 | 12.81 | 3/1 | Fast |
| R11 | WEST END KID | #1 | 16.16 | 9/2 | Fast |
No squeakers, no flukes. The model ranked them first and they won.
The misses are just as telling. R9 (Jenny Wiley G1) and R10 (Lexington G3) were both graded stakes — exactly the kind of race where pace modeling loses edge to pedigree, fitness, and class dynamics the model can't fully see. EXPENSIVE QUEEN finished ranked #10 of 10 in our system and won the G1. TRENDSETTER went off at 20/1 ranked #7. Grade stakes are spread bets, not win singles. Confirmed again.
The Edge System Draws a Line
The value model isn't just about picking winners — it's about identifying when the morning line is wrong. Here's what happened when we filtered by minimum edge threshold yesterday:
| Edge Filter | Bets | Win% | ROI |
| Any positive edge | 56 | 18% | -31% |
| ≥5% edge | 18 | 44% | +2% |
| ≥8% edge | 7 | 43% | +3% |
| ≥10% edge | 5 | 60% | +44% 🔥 |
The pattern is clear: drift from the high-conviction zone and returns erode fast. The five plays at ≥10% edge:
| Horse | Track | Edge | Fair% | Score | Result |
| NO MO MUFFINS | LRL R1 | 12% | 62% | 15.6 | ✅ Won |
| GRAYWING | AQU R5 | 11% | 44% | 12.4 | ✅ Won |
| MUNNINGS CHALLENGE | OP R9 | 10% | 56% | 15.8 | ✅ Won |
| AUTHENTIC STRIKE | KEE R6 | 12% | 46% | 14.9 | ❌ Lost |
| ILLMATIC | AQU R6 | 15% | 57% | 11.7 | ❌ Lost |
The two losses are worth studying. AUTHENTIC STRIKE had every signal aligned — 12% edge, 46% fair probability, 14.9 pace score, Slow pace setup. ORIGINAL SIN (8/1, our #3) just ran the better race. ILLMATIC had the highest edge of anyone on the card at 15%, with a 57% fair win probability, and lost as the 7/5 favorite. Racing result, not a modeling failure.
The golden combo that went 3/3 today: Edge ≥10% + Fair probability ≥40% + Pace score ≥12. When all three lights are green, the model is confident for a reason.
Jockey & Trainer Angles
Tyler Gaffalione had a quietly strong day at KEE — 3 wins from 10 mounts (30%), including the upset ORIGINAL SIN at 8/1 in R6 and WEST END KID at 9/2 in R11. That's a notable reversal from his fade signal through the first week and a half of the meet (1-for-39 across Apr 3–10). Worth watching whether this is a correction or a one-day aberration.
Brendan P. Walsh went 2-for-4 at KEE — both wins came with the model ranking the horses highly. When Walsh runners show up with high pace scores, they're converting. Make a note.
Kazushi Kimura was the wildcard — two KEE winners (MAGICAL FACTOR 15/1, TRENDSETTER 20/1) both buried well outside our top 3 in Fast-pace races. Grade stakes chaos, but it's a data point to track.
Across all tracks, Todd Pletcher went 3-for-5 (60%) — the best trainer performance of the day. His runners included NOBLE CONFESSOR (our #1 at KEE R7) and two others. The rule holds: when Pletcher horses align with strong pace scores, bet them.
On the fade side: Prat Flavien went 0-for-8 at KEE. Alvarado Junior 0-for-4 after being one of the stronger dirt jockeys through the meet's first two weeks. One bad day doesn't erase the trend, but worth flagging.
What Went Wrong: Gulfstream and Tampa
GP gave us five misses, all Fast-pace races, with winners buried at ranks 4–7. Every losing winner at GP had a pace score between 1.85 and 8.99 — well below typical winners. Either GP's pace profile isn't calibrating cleanly right now, or Fast-pace races there are simply too noisy to model reliably at this point in the meet. We're watching.
Tampa Bay Downs went 0-for-7 in scored races. Every winner ranked 4th or worse. TAM is a short-field, cheap-claiming track where pace shapes are compressed — the model can't find separation. WIN singles at TAM are off the table until we see a reason to bring them back.
The Slow Pace Signal: Still the Most Reliable Finding
Slow pace has now outperformed Fast in every data window we've run: the two-week KEE backtest, today's full 56-race sample. When WagerCast flags Slow pace, respect it.
The Playbook Going Forward
WIN singles: Edge ≥10% + Fair% ≥40% + Pace score ≥12 + Slow pace shape
Exotics: Top 3 picks in Fast-pace races, spread in graded stakes
Avoid: GP Fast-pace races (for now), TAM win singles, graded stakes singles
23% top-1 hit rate across 56 races. Random gets 10%. The ≥10% edge filter delivered +44% ROI on a single afternoon. The models are working — the discipline is knowing which filter to apply.
We'll be back with the KEE Apr 12 card breakdown later today.
↑ All posts
📊 Methodology
April 10, 2026
5 min read
Why We Switched to Edge-Based Betting (And What the Data Says)
We built WagerCast on a solid handicapping foundation — pace analysis, class evaluation, connections, workouts. The model was good. Top pick won 24.8% of races across 2,300+ starts. Better than a coin flip. Better than most tout sheets.
But we kept asking the same question: good at picking winners, but are we finding value?
There's a difference. A 4/5 favorite wins 55% of the time and still loses you money long-term if you bet it blindly. A 12/1 shot wins 8% of the time and can be highly profitable if the real probability is 15%. The win rate isn't the point — the edge is the point.
So we ran an experiment. We built a dual logistic regression model trained on 700+ races, and instead of ranking horses by our score, we started asking a different question: where does our predicted win probability exceed what the morning line is implying?
That's the edge. If the morning line says a horse has a 20% implied chance of winning, but our model says 31%, that's an 11-point edge. The market is undervaluing that horse — and you can bet it with mathematical confidence.
What the backtest showed
We ran a walk-forward validation on 717 races — meaning the model was trained on past data and tested on future races it had never seen, which is the only honest way to validate.
| Edge Threshold | Bets | Win Rate | ROI |
| 2%+ | 562 | 24.4% | +2.3% |
| 5%+ | 267 | 28.8% | +11.8% |
| 8%+ | 115 | 35.7% | +23.0% |
| 10%+ | 72 | 37.5% | +12.4% |
The 8%+ tier is the headline: 35.7% win rate and +23% ROI over 115 bets. That's not noise. That's signal.
It works across all price tiers
What surprised us most: the model found value at every price point.
| Odds Tier | Bets | Win Rate | ROI |
| ≤2/1 (chalk) | 118 | 45.8% | +6.8% |
| 5/2–4/1 | 155 | 34.8% | +22.9% |
| 9/2–8/1 | 63 | 20.6% | +26.2% |
The mid-range (5/2–8/1) is where the model shines brightest. These are horses the market treats as legitimate contenders but slightly misprices — exactly where inefficiencies live.
The longshot problem (and our solution)
Longshots are different. At 8/1+, the morning line implied probability is a less reliable market signal — there's less information baked in. So we built a second model for longshots: same features, but no market signal. It has to find value from fundamentals alone.
The result is our PRIME alert system. Horses scoring 80+ on our longshot composite (speed vs. field, consistency, hot jockey, class drop, pace rank) win at 9.9% with an average ML of 11.8:1. On flat win bets, they're near break-even — but the real value is in exotics. PRIME longshots underneath your top edge picks in exactas and trifectas change the payout math dramatically.
Why this changes how you use WagerCast
The old model told you who was most likely to win. The new model tells you who is most likely to win relative to what the market is paying.
That's a meaningful distinction. You'll see races where our top edge horse is ranked lower by raw pace numbers — because the market has over-bet the "obvious" pick and underpriced something with real form. You'll see chalk at negative edge (bet at your own risk) and longshots at +15% edge (take a serious look).
The thesis: Filter by 5%+ edge. Bet those horses. Track your results. The data backs it up.
WagerCast is a value betting probability model. Past backtest performance does not guarantee future results.
↑ All posts
Building in Public
March 30, 2026
·
6 min read
Chasing the Zone: When the Data Humbles You
There's a concept in pace handicapping called the Optimum %Early. The idea is simple: every track has a sweet spot — a range of early-pace energy distribution that winners tend to fall into. Too much early speed and you tire. Too little and you never get into the race. The winners cluster in the middle, and that cluster is the zone.
Tonight I spent a few hours trying to turn that concept into a betting edge. Here's what I found — the good, the frustrating, and the thing that actually works.
Starting Point: A Broken Flag
The site has had a 🚨 False Fav badge for a while. The idea was to flag morning-line favorites whose pace profile was a mismatch for the track — take the public's money and fade them.
Except I never actually backtested whether the flag worked. Tonight I did.
The original logic fired when our model's top-ranked horse happened to be the ML favorite AND had a below-zone %Early figure. Sounds reasonable. Except those horses won at 33.6%. That's better than the 22.3% baseline. The flag was marking horses to fade that were literally winning a third of the time.
Completely backwards. The flag was finding good horses with slight pace quirks and telling you to bet against them.
Fixed it. The new logic: fire when the public's favorite (not our top pick) has a below-zone pace profile AND our model has already ranked them lower. That's the actual false favorite — the crowd loves it, the track history says the pace doesn't fit, and our model independently disagrees.
Backtest on the corrected flag? −0.7% win rate difference vs. normal favorites. Basically nothing. The signal exists but it's noise-level at our current sample size. I'm keeping it on the site as experimental — it's not hurting anything and the concept is sound — but I'm not building a betting strategy around it.
The Zone Itself: Better as a Negative Filter
While I was in there, I dug deeper into what zones actually predict.
For all horses at 4/1 or longer — value plays where you're actually getting paid for being right:
- In-zone longshots: 4.9% win rate, −36.5% ROI
- Below-zone longshots: 3.8% win rate, −55.2% ROI
- Baseline all longshots: 4.6%, −40.3%
The zone doesn't tell you who's going to win. But it does tell you who's more likely to not win. Below-zone longshots hit −55% ROI. That's a real edge — just in the direction of eliminating horses, not selecting them.
The 4/1–7/1 midfield range showed the clearest gap: in-zone horses at 11.8% win rate vs. below-zone at 8.9%, with a +15.8% ROI difference. Real money, real signal.
The Part That Actually Works: Zone + Late Pace
Then I asked a different question. What if you stack the zone condition with something else?
Sustainability (the ability to maintain pace through the stretch) combined with zone fit: barely moved the needle. +0%.
LP — late pace, the final fraction speed — combined with zone fit: +14.6% ROI improvement over baseline.
| Combination | Win% | ROI |
| All 4/1+ horses | 7.1% | −38.0% |
| Zone fit only | 7.5% | −34.5% |
| Zone + top-25% LP | 9.1% | −23.4% |
The logic makes sense in hindsight. A horse that runs the right early pace profile for the track and still has a strong final fraction is doing something genuinely special. It's not burning out early. It's not just coasting to the finish. It's threading the needle — right amount of early energy, real kick at the end.
That combination is now a flag on the site. The 🎯 Zone Play badge (purple, you'll see it on the race cards) fires when a 4/1+ horse hits both criteria: %Early in the zone for that track/surface/distance, and LP in the top 25% for that race type.
1,565 horses flagged in our historical data. 9.1% win rate. Still negative ROI standalone — horse racing almost always is — but +14.6% better than betting value horses blindly.
What I Tried That Didn't Work
In the interest of honesty:
Gating the ⚡ Upset flag on zone fit: Below-zone horses with upset signals (hot connections, track specialist, trouble trip) won at 13.6% — above the 12.4% average. Their specific signals override the pace mismatch. The zone gate made results worse. Reverted.
Zone + sustainability as a combo: Sustainability is already baked into the scoring through the power calculation. It's correlated with LP but not as direct. Adding it on top of zone + LP diluted the signal slightly (9.1% → 8.7%).
The Takeaway
Zones are real. The track does reward certain pace profiles, and the historical data confirms it clearly once you look at enough races.
But zones alone don't isolate winners. They isolate pace fit — and pace fit is a necessary but not sufficient condition. Stack it with something that measures what the horse does in the second half of the race, and you get a signal worth paying attention to.
We now have 37 track-specific zones (plus 4 surface/distance fallbacks) computed automatically from historical winners, updating as new results come in. Every horse card on the site shows zone context in the narrative. Value horses get the full breakdown. The best ones get the badge.
More to come.
↑ All posts
Building in Public
March 29, 2026
·
7 min read
What 1,896 Races Taught Me About Building a Handicapping Model
Most people who build something like this don't show you the failures. They show you
the final win rate and skip the part where they tried twelve things that made it worse.
This is the part where I show you the failures.
What Backtesting Actually Is
Every morning, WagerCast ranks every horse in every race using a Selection Score —
a composite number built from pace figures, jockey and trainer stats, class, recent form,
workouts, and a handful of other signals. The top-ranked horse is our pick.
Backtesting is simple: we collect the actual race winners after the fact, join them against
our rankings, and ask — how often was the winner the horse we ranked #1?
No hindsight. No cherry-picking. Every race we have data for goes into the number.
Right now, after 1,896 races across 14 tracks:
24.7%
Top pick wins
the race
1,896
Races · 14 tracks
v8.1 model
In a typical 10-horse field, random chance gives you a 10% win rate. We're running at
24.7%. The model is doing real work.
How the Model Got Here: v7 → v8 → v8.1
The current version didn't start here. It went through several rounds of testing,
failing, adjusting, and occasionally making things worse before getting better.
Version 7 (971 races): Top-1 at 24.2%, Top-3 at 57.0%. The baseline.
A solid foundation but several scoring components weren't weighted right.
Version 8 (1,368 races): Top-3 improved to 58.6%. The big changes:
- Jockey bonus boosted. Regression showed jockeys are a stronger predictor than trainers at this sample size. Adjusted accordingly.
- Class bonus increased. Horses dropping in class — especially big drops of 10+ points — win at meaningfully higher rates. The original bonus was too timid.
- Recency bonus was severely underweighted. The raw coefficient for recency was the highest in the model, but the actual bonus was tiny. Fixed.
- Replaced the Fade Penalty. Instead of penalizing horses that fade at the end of their races, we multiply Power Score by a Sustainability factor. Faders get naturally scaled down; closers get scaled up. Cleaner and more accurate.
Version 8.1 (1,896 races): Top-1 improved to 24.7% — a +1.1% gain that
is statistically significant (p=0.034).
The key change: sprint FPS filtering. For sprint races, the model was
mixing in route past performances when calculating speed figures. Route races have different
timing call points (4F/6F) than sprints (2F/4F). Mixing them inflated the sprint averages
in ways that confused the rankings. Now sprint FPS uses only sprint past performances.
One methodology fix, one meaningful improvement.
The Things That Didn't Work
This is the part most people skip. I'm not skipping it.
Tactical Score — we built a full scoring component based on running
style: pressers, stalkers, closers. The population-level signal was real. When we added
it to the Selection Score, all hit rates dropped. Logistic regression confirmed a negative
coefficient. Removed from scoring entirely, still displayed on cards as context.
Distance transition penalties — horses switching distances have distinct
pace profiles. Route Presser, Sprint Closer, Sprint Fader. Population data showed real
differences in win rates. Adding them to scores added noise. Removed from scoring,
kept as narrative flags.
Sprint Fader penalty — directionally correct but flagged 16% of all
route entrants. Too broad. Removed.
Neural network experiment — we trained a shallow neural network on
18 raw features and cross-validated it against the Selection Score. Result: NN top-3
was 48.2%, Selection Score was 60.5%. The hand-tuned model won by 12+ points. The neural
net needs roughly 2,500+ races to potentially compete. We'll revisit when we get there.
8f reclassified as Route — a mile sounds like a route. Tested it.
Top-1 dropped 0.9%. The 2F/4F timing structure at 8f is identical to sprints. Reverted.
What the Regression Says
Running logistic regression on all scoring components gives us the relative importance
of each factor in predicting winners:
| Factor | Importance |
| Power Score (pace velocity + sustainability) | 21.0% |
| Class Bonus | 17.3% |
| Jockey Bonus | 15.0% |
Power Score topping the list makes sense — it's the core of the model. Class and jockey
being #2 and #3 surprised me when I started building this. The crowd underrates class
movement and overrates raw speed figures.
The Neural Net Finding That Stuck With Me
Feature importance from the neural net ranked factors in this order: JockeyWinPct,
TrainerWinPct, J/T combination win rate, V3 (velocity), TE (total energy).
What had weak or no signal: today's class label, average class rating,
trouble trip score, workout count.
That last one is counterintuitive. Workout count doesn't predict winners.
Workout quality — the fps of those workouts, the spacing — does, and that's
already baked into the Workout Bonus. The raw count is noise.
Where This Goes Next
Three things on the roadmap with real theoretical backing:
- AP Ranking — eliminate "One Fraction Wonder" horses that dominate a single pace call but can't sustain it.
- Distance switch %Early filter — horses switching distances often have a pace profile mismatch. The %Early Zone data can flag this automatically.
- Per-track Decision Model — each track has a different optimal running style. CT is not SA is not OP. Encoding that per-track.
The model is at 24.7% top-1 win rate on nearly 1,900 races. The backtest is live on
the site at wagercast.xyz. Every day's results
are updated automatically and folded in.
Building in public means the numbers update whether they go up or down.
↑ All posts
Race Recap
March 29, 2026
·
7 min read
Saturday Recap: Gulfstream Park & Oaklawn — How WagerCast Called It
Saturday was a 14-race card at both Gulfstream Park and Oaklawn Park. Here's
a race-by-race look at how the model performed — what hit, what missed, and
what the results actually taught us about the system.
🏇 Gulfstream Park — 3 for 14 (21%)
Three solid hits, a Florida Derby near-miss by a tenth of a point, and a Grade 3
win from our highest-scored horse of the day.
R2 — SOVEREIGN LAW (8/1) ✅
Our top-ranked horse in a maiden field, Selection Score 14.55. The public dismissed
him at 8/1; the pace profile didn't. He wired the field. This is exactly the type of
play the BET filter is built around — dominant score, clear gap over the field, right
price.
R3 — IMMORTALISED (FR) (3/1) ✅
Hit — with an asterisk. We had a 🚨 False Favorite flag on this horse, meaning
his energy distribution was below the GP turf zone for 7½ furlongs. He won anyway.
That's a counterexample worth documenting honestly: the False Fav flag is a warning
signal, not a veto. One race doesn't reverse the data, but it keeps us calibrated.
R13 — FAR BRIDGE (8/5) ✅ — Pan American S. (G3)
Our highest Selection Score of the entire day: 16.41. Identified as a 🔥 Fast Pace
race — two energy-forward horses set up a contested pace scenario over 1½ miles on
turf. In those conditions, the horse with the most sustainable speed wins going away.
FAR BRIDGE did exactly that. Best result of the day.
Misses Worth Understanding
R4 — Appleton S. (G3) — SPIRIT OF ST LOUIS ❌ (QUATROCENTO won, 3/1, rank 4)
The top five horses in this race were separated by just 2.3 score points. When fields
compress that tightly, the model is essentially a coin flip. That's honest variance, not
a flaw — compressed fields are genuinely hard to separate.
R5 — ADIOS NOW ❌ (WISTUCKY won, 15/1, rank 4)
Slow Pace race. Our top pick had a +0.5 Pace Shape bonus as a front-runner in a slow
setup — exactly the scenario the feature is meant to catch. WISTUCKY won from rank 4,
also pace-bonused. Right read on race shape. Wrong horse within it.
R7 — Ghostzapper S. (G3) — FORGED STEEL ❌ (GRANDE won, 1/1, rank 2)
We went 10/1 over even-money. GRANDE beat our pick by 0.90 score points. Tight miss
on a Grade 3 — the model had the right race type, the public had the right horse by
a hair.
R8 — Orchid S. (G3) — RAMSEY POND ❌ (SULTANA won, 12/1, rank 5)
We led with RAMSEY POND at 20/1 over the 8/5 favorite BELLEZZA, who was flagged
🚨 False Fav and finished off the board. The False Fav call was correct — the wrong
outcome was picking the right kind of race and finding the wrong longshot within it.
Two longshots in the same Grade 3 is a tough environment.
R9 — GP Oaks (G2) — NASTI Z ❌ (PROM QUEEN won, 9/5, rank 5)
We had NASTI Z at 30/1 as our top-scored filly. PROM QUEEN won at 9/5 from rank 5.
Graded stakes with wide-open form are the hardest environment for pace-based scoring.
When lightly-raced fillies haven't fully established their pace profiles, the model
is working with incomplete information.
R14 — Florida Derby (G1) — NEARLY ❌ (COMMANDMENT won, 5/2, rank 2)
NEARLY scored 14.35. COMMANDMENT scored 14.26. Nine hundredths of a point separated
our top pick from the winner of the biggest race on the Gulfstream calendar. The model
had the race completely right — winner was sitting rank 2. That's the Florida Derby.
In the five graded stakes at GP on Saturday, we went 1 for 5 (FAR BRIDGE in the Pan
American). Graded stakes attract horses whose form is deliberately obscured, managed,
and pointed. The pace model works best where public money hasn't already compressed
the pricing. We're honest about that.
🏇 Oaklawn Park — 2 for 13 (15%)
A harder day at OP. Several low-differentiation fields and a Grade 1 in the Arkansas
Derby made for a rough card — but two results stand out as exactly what the model
is supposed to produce.
R1 — ONE WAY OR ANOTHER (2/1) ✅
Slow Pace race, top score, front-runner profile. Clean execution in a small field.
Low drama, just the model working.
R10 — B SUDD (20/1) ✅
This is the one to highlight. Our top-ranked horse at 20/1, beating a 10-horse field.
The ML favorite MOE EIGHTY EIGHT (8/5) was flagged 🚨 False Fav — and the flag was
right. MOE EIGHTY EIGHT got beat. B SUDD paid 61-1. This is the False Fav feature
doing exactly what it's supposed to: surface a misalignment between public price and
pace profile, so you can look elsewhere for value.
Misses Worth Understanding
R4 — Temperence Hill S. — JOKESTAR ❌ (PARCHMENT PARTY won, 1/1, rank 6)
JOKESTAR was our top-scored horse AND flagged 🚨 False Fav. The flag correctly signaled
something was off with JOKESTAR at 8/5. PARCHMENT PARTY won at 1/1 from rank 6 — also
flagged FF and carrying an ⚡ upset signal. The fade was right; we just didn't have the
winner ranked up.
R5 — NOBLE AFFAIR ❌ (TWO SEVEN O won, 5/2, rank 5)
NOBLE AFFAIR at 1/1, flagged False Fav, didn't win. Back-to-back races at Oaklawn where
the flagged ML favorite failed. Two is still a small sample — but it's directionally what
the feature is supposed to do.
R11 — Oaklawn Mile S. (G3) — NEOEQUOS ❌ (NU WHAT'S NEW won, 3/1, rank 5)
Similar pattern to the Gulfstream Grade races — graded stakes at OP showed the model's
limits in deep, competitive fields where connections are managing horses toward specific
targets.
R13 — Arkansas Derby (G1) — LITMUS TEST ❌ (RENEGADE won, 3/2, rank 5)
The biggest race of the day at OP. RENEGADE was the 3/2 public choice and won from
rank 5 — but the model had flagged RENEGADE with an ⚡ upset signal, meaning something
in the profile registered as disruptive even though the score ranked him fifth. Interesting
data point as we continue building out the flag system: the winner was flagged, just not
ranked.
The Bigger Takeaways
5/27
Combined GP+OP
top-pick wins
0.09 pts
Florida Derby margin
(our pick vs. winner)
61-1
B SUDD payoff —
False Fav call correct
1/5
Graded stakes hit rate
(FAR BRIDGE, Pan Am G3)
False Fav flags are earning their keep. Across both tracks on Saturday,
flagged horses at OP R4, R5, and R10 all failed to win. B SUDD at 20/1 winning while
the 8/5 False Fav got beat is the textbook result this feature is designed to surface.
Graded stakes are a different game. We went 1 for 5 in graded races on
Saturday. Pace handicapping has less edge when form is managed and fields are elite. That's
not a flaw to fix — it's an honest signal about where to focus your action.
Compressed scores = low confidence. Several Saturday misses (Appleton G3,
Temperence Hill S.) had top-5 horses within 2–3 score points. That's the model telling you
the race is genuinely hard to call. We're working on surfacing that signal more explicitly
on the card.
The 32-day backtest sits at 24.8% win rate on 1,747 races, with a
+5.1% ROI on BET-filtered spots. One Saturday in late March doesn't move
that needle — but it gives us real data to keep building on.
Full cards for today's races are live at wagercast.xyz.
↑ All posts
Model Update
March 28, 2026
·
6 min read
The %Early Zone: What Brohamer and Sartin Knew That Most Bettors Don't
Speed figures get all the attention. If a horse has the top Beyer coming in, most
bettors assume that's the horse to beat. But here's an uncomfortable truth backed
by decades of research: most races are won by horses that are NOT the top
speed figure horse. The reason? Energy distribution.
Tom Brohamer and Howard Sartin figured this out long before modern data tools
existed. Their core insight: every horse has a preferred pattern of how it
distributes energy across a race, and every track has an optimal pattern for
winners. When those two things don't match, the horse is working against the track
— regardless of how fast it ran last time.
Today we built that concept into WagerCast.
What Is %Early?
%Early is a single number that describes how a horse distributes its energy.
It's calculated from feet-per-second velocity figures:
Total Energy = Early Pace (EP) + Final Fraction velocity
%Early = EP ÷ Total Energy
A horse with a %Early of 53% expends 53% of its total energy before the second
call, leaving 47% for the stretch run. A horse at 50% saves more for late —
it's a deeper closer. The typical range runs from about 49% (pure sustainers)
to 54%+ (front-runners who empty the tank early).
What makes this more than a curiosity is what Brohamer and Sartin discovered
next: each track, surface, and distance combination has an optimal
%Early — a sweet spot where winners tend to cluster. They called this "The Zone."
The Zone — Built From Our Own Data
Rather than rely on published figures from other tracks, we computed WagerCast's
Zone values directly from our own backtest database — 1,747 verified winners
across 16 tracks and 4 surface/distance combinations. For each track,
we calculated the median %Early of all winning horses and defined The Zone as:
- Narrow Zone: Optimum −0.5% to Optimum +1.0% (contains ~80–85% of winners)
- Expanded Zone: Optimum −1.0% to Optimum +1.5% (contains ~90% of winners)
The asymmetry is intentional. Brohamer's research found that surprise winners
tend to come from the high side of The Zone — horses with a little more early
pace than the optimum — not from the low side. Horses below the Zone on the
low end are working hardest against the track bias.
Our data confirmed this. Looking at top-ranked horses across our full dataset:
horses inside The Zone win at 24.4%. Horses whose %Early
falls more than 1% below the Zone low win at just 19.3%. That's
a meaningful gap — roughly one fewer win per five races.
The False Favorite Signal
The most actionable application of %Early isn't about finding winners — it's
about identifying false favorites. Brohamer's research found that favorites whose
%Early falls outside The Zone on the low side win less than 14% of the time
in non-maiden races — roughly half what you'd expect from a morning-line favorite.
That's a powerful fade signal hiding in plain sight. When the public has hammered
a horse down to short odds but its energy distribution is fundamentally mismatched
with what the track rewards, the crowd is likely wrong.
Today we added a 🚨 False Fav badge to WagerCast. It fires when
three conditions are met simultaneously:
- The horse is our model's top pick for the race
- It's the morning-line favorite (3/1 or lower)
- Its %Early is more than 1% below the track's Zone low
On a typical day, this badge fires on just 2–3 races across the entire national
card. It's rare by design. When it shows up, pay attention.
An Important Caveat
We tested whether using %Early as a direct score modifier improved our top-pick
win rate. It didn't. Backtesting showed that while below-Zone horses win less
often on average, our model had already incorporated pace information
well enough that penalizing the score caused more wrong flips than right ones.
This matches exactly what Brohamer wrote: "%Early is not a standalone
handicapping factor. It will seldom isolate who to play, but it can be deadly
accurate in eliminating false contenders — including false favorites."
So the False Fav badge isn't changing any scores. It's a warning flag layered
on top of the model — information for you to weigh, not an automated fade.
The Presser, Closer, and Fader distance-transition signals work the same way:
they live in the detail section of each card as context, not as score modifiers.
What This Looks Like in Practice
On today's card (March 28), the badge fired on three races:
GP R3 (borderline — barely below zone),
OP R4 (JOKESTAR 8/5 — 1.2% below zone on a 12f route), and
OP R5 (NOBLE AFFAIR 1/1 — 0.6% below zone, also a maiden graduate).
Two of three are worth watching closely. In both cases, the public price is
short, the bias is working against them, and there's a pace mismatch with what
Oaklawn has historically rewarded.
Whether they win or not doesn't validate or invalidate the signal — individual
races are noisy. But over hundreds of races, the pattern is real, and now
WagerCast surfaces it automatically every day.
What's Next
The %Early Zone opens the door to several other Brohamer concepts we haven't
implemented yet — pace shape analysis (how Fast vs. Slow pace scenarios shift
the optimal zone), AP rankings for eliminating "One Fraction Wonder" horses,
and distance-switch filtering using %Early. Those are on the roadmap.
For now, the Zone data updates automatically every day alongside the rest of
WagerCast — pulling from the latest winners and keeping the optimums current
as track conditions evolve through the meet.
↑ All posts
New Feature
March 28, 2026
·
5 min read
New: Class Level Experience — Knowing Whether a Horse Belongs
One of the oldest debates in handicapping is class. Does this horse belong here?
Is it dropping down because connections are targeting a soft spot, or is it sliding
because it's been getting beaten at a level it couldn't handle? Is this horse
stepping up into a situation where it's never competed before?
The Selection Score already accounts for class through a bonus/penalty system
in the narrative. But today we added something more nuanced: a Class Level
Experience badge on every horse card that shows, at a glance, exactly how
much experience that horse has at today's class level — and in which direction
they're moving.
How It Works
Every race type maps to a numeric level in a nine-step hierarchy, from maiden
claiming at the bottom to stakes at the top:
| Level | Race Type |
| 1 | Maiden Claiming (MCL) |
| 2 | Maiden Optional Claiming (MOC) |
| 3 | Maiden Special Weight (MSW) |
| 4 | Claiming (CLM) |
| 5 | Starter Optional / Starter (SOC / STR) |
| 6 | Optional Claiming / Allowance Optional (OCL / AOC) |
| 7 | Allowance (ALW) |
| 8 | Handicap (HCP) |
| 9 | Stakes (STK) |
For each horse, we count how many of their recent past performances (PPs) fell
at today's level, above it, or below it. For races at the same level, we go
one step further and compare purse amounts — a horse running in a $14,000
claimer after a string of $8,000 claimers is in a very different spot than
one dropping from $25,000 company.
What the Badges Mean
Four distinct situations now show up on every horse card:
-
First at this level —
All prior starts were at a lower class. No experience here. High risk,
especially in a competitive field. The score may still be high if the
pace figures translate, but now you know it's unproven territory.
-
Class dropper —
The horse has meaningful starts at a higher level than today's race.
Dropping down, either to find a soft spot or get a confidence-builder.
These are the horses serious bettors circle — and the ones that tend to
be underestimated by the crowd.
-
Stepping up —
Horse is moving up in class relative to most of its recent PPs.
Combined with a step-up penalty in the score, this is a horse to
downgrade unless the pace figures are dominant.
-
Proven at level / Purse step-up —
Horse has solid experience at today's exact class. The purse breakdown
tells you whether they're comfortable (same or higher purse) or quietly
stepping up within the same class label.
Why This Matters for Analysis
The pace model scores horses on their figures. Class experience answers a
different question: can they handle the competition they're about to face?
A horse with dominant pace numbers dropping out of stakes company into an
allowance field is a very different proposition than a maiden who's never
seen a field at this level.
The highest-value plays we look for: a Gold-tier pick that's
also a class dropper. Dominant pace figures + proven experience
at a higher level = the model and the class angle are pointing in the same
direction. Those line up less often than you'd think — but when they do,
they're worth pressing.
Conversely, a Red-tier pick with a "First at this level" badge is a red flag
in both directions. The pace model already doesn't love it, and now the class
data confirms it's untested. Easy fade.
A Note on Contradictions
You may occasionally see the narrative reference a class step-up or drop
that doesn't align perfectly with the new badge. The narrative's class
component is calculated from a slightly different logic path — comparing
the most recent race to today — while the badge counts across all recent
PPs using the full race type hierarchy. We're actively reconciling the
two systems. When they disagree, the badge is typically showing you the
fuller picture.
Both pieces of information are visible on the card so you can weigh them
yourself. That's the point — this isn't a black box. The more context
you have, the better the decision.
↑ All posts
Origin Story
March 28, 2026
·
8 min read
Building WagerCast: What 1,735 Race Results Actually Taught Us
WagerCast started with a simple frustration: most handicapping tools are either too complex for
casual players or too shallow to give serious bettors a real edge. We wanted something in between —
a model grounded in real pace theory, validated against actual results, and usable on a phone
before post time.
This post is the story of what we built, how we tested it, and what the numbers show after
backtesting 1,735 races across 16 tracks over 32 race days.
The Core Idea: Pace Wins Races
Horse racing is fundamentally a pace game. A horse that runs the first fraction in :22 flat is
in a very different race than one running :24. The question isn't just who's fast —
it's who's fast at the right time, in the right race scenario.
Our model scores every horse using pace figures from their recent races — how they ran at each
call — then projects how those figures match the expected pace scenario today. A horse that
dominates in slow pace scenarios gets a very different score than one that thrives when the pace
heats up.
The output is a Selection Score for each horse. The top-ranked horse is our
pick. But the tier that score falls into is where the real signal lives.
The Tier System
Not all top picks carry equal confidence. We use a four-tier system:
- Gold — Top pick with strong trainer and/or jockey connections. The full signal: pace edge and connections aligned. Highest confidence.
- Green — Top pick in a sprint (≤7 furlongs) or a race with a significant pace gap to the rest of the field. Strong signal, no connection bonus.
- Yellow — Top pick with a moderate pace edge. Playable, but size down.
- Red — Top pick in a competitive field with no clear pace advantage. Proceed carefully.
What the Backtest Shows
We ran every race with available results from February 14 through March 26, 2026 — 1,735 races
across 16 tracks. Here's the headline:
23.3%
Top pick win rate
(all races)
57.2%
Top-3 coverage
(winner in top 3)
32.0%
Win rate on
💰 BET races
1,735
Races backtested
16 tracks · 32 days
A 23.3% overall win rate is competitive — but it doesn't tell the full story. The real insight
from the data is that race selection matters more than pick selection.
The model performs dramatically better in specific conditions.
The 💰 BET Filter: Where the Edge Lives
One of the most important findings from our backtest: the model has a clear edge in a specific
subset of races. We call it the BET filter:
- Field size of 9 horses or fewer
- Score gap of 4.0+ points between our top pick and the second-ranked horse
When both conditions are met, we display a 💰 BET badge on the race.
In 269 BET-filtered races, the top pick won 32.0% of the time — nearly
9 full percentage points better than the overall rate. That's the difference between
mechanical profit and mechanical loss.
The biggest mistake bettors make is treating every race the same. The data shows exactly
which races the model is most confident about. Discipline — knowing when to sit out —
is half the game.
Track-by-Track Performance
Not all tracks are equal for pace handicapping. Some favor closers, some reward speed,
some have tight configurations that produce predictable pace scenarios. Here's the full
top-pick breakdown by track from our backtest:
| Track |
Win Rate |
ROI |
Races |
| Charles Town (CT) |
31.2% |
+41.8% |
80 |
| Turf Paradise (TUP) |
26.6% |
+12.3% |
109 |
| Sam Houston (HOU) |
25.7% |
+13.4% |
70 |
| Turfway Park (TP) |
22.5% |
+15.9% |
160 |
| Parx (PRX) |
24.6% |
+2.6% |
122 |
| Colonial Downs (CNL) |
27.8% |
-12.8% |
18 |
| Aqueduct (AQU) |
27.1% |
-11.6% |
129 |
| Santa Anita (SA) |
23.3% |
-9.2% |
116 |
| Oaklawn Park (OP) |
22.2% |
-11.1% |
180 |
| Gulfstream Park (GP) |
19.2% |
-17.7% |
182 |
| Fair Grounds (FG) |
20.5% |
-12.4% |
171 |
| Tampa Bay (TAM) |
22.7% |
-24.3% |
150 |
Charles Town stands out. CT tops the list at 31.2% with a remarkable
+41.8% ROI — the model's best-performing track in our sample. Routes at CT
in particular have been outstanding, likely because the tight configuration rewards horses
that can sustain pace over a full distance. We'll break CT down in a dedicated post.
Turfway Park, Sam Houston, and Turf Paradise all return positive ROI. On the flip side,
Gulfstream and Tampa Bay have been the model's toughest assignments — wide open fields
with unpredictable pace scenarios tend to compress our edge.
The Upset Flag System
One of the more interesting discoveries from building this: longshots aren't random.
Specific signal combinations fire at a much higher rate than chance. We built four flags
into the model to identify them:
- ⚡ Troubled Trip — Horse was impeded, checked, or wide last out. Hidden form.
- ⚡ Hot Connections — Trainer win rate ≥30% + elite jockey. Someone knows something.
- ⚡ Track Specialist — Horse has a significantly better record at this specific track vs. elsewhere.
- ⚡ Layoff Fresh — Horse returning from a 60–90 day rest with strong recent workouts.
A horse ranked 5th or lower in our model with 2+ flags gets an
⚡ Upset badge — worth including in your exotics. One flag gets a
🔍 Watch badge.
In our backtest, Upset-flagged horses (rank 5+, 2+ signals) hit at 13.4%
— a meaningful rate for horses that are typically 10/1 or longer. At those prices, a handful
of hits pays for a lot of losses. These aren't plays to make straight up, but they're exactly
the kind of horses to throw into your Pick 4s and exactas.
Honest About the Limits
We want to be straight with you: the model's overall ROI on a flat $2 win bet across all
1,735 races is -6.6%. That's the reality of horse racing — the takeout
rate is brutal, and most mechanical betting strategies bleed over time.
The edge isn't in betting everything the model produces. It's in being selective: the BET
filter, the tracks where the model demonstrably has edge (CT, TP, HOU), and using the full
card data — tier scores, upset flags, pace narratives — to make smarter exotic bets.
That's what WagerCast is built for. Not a tip sheet. A tool.
What's Next
The model runs daily at wagercast.xyz, covering
the featured tracks daily with full pace cards, tier badges, upset flags, and Pick 5/6 sequence tickets.
In upcoming posts we'll go deeper: how the pace projection works, a full breakdown of Charles
Town, the Pick ticket optimizer, and what specific race shapes the model handles best.
Racing is hard. The data helps.