Marcia Adair

Strategy + Experiments

Feasibility

Is the pretty one any better than random?

A deliberately silly betting app, 177 races and a dashboard, built to test one hunch properly.

Experiment designPrototypeData analysis

Client
Self-initiated
Country
Germany
Role
Design, build, analysis
Duration
7 weeks

−15%

return on random picks: almost exactly the track's cut

Three screens from the Pretty Pony app: coat colour picker, tapped names, and the four suggested picks

The question

Pick the prettiest horse, or pick blind?

Most people at the races bet on something that has nothing to do with form: a grey coat, a funny name, silks in a favourite colour. The question was simple. Does choosing the pretty one beat choosing at random?

Answering it needed a record of every hunch, every bet and every result, plus a random pick in every race to compare against.

The build

An app that turns hunches into data

Step 1 of 4

Designed to be silly

The welcome screen sets the tone. This is a game for a day at the races, not a tipster service. If it stopped being fun, nobody would log a hunch.

Cartoon pony with the caption Giddy up

Step 2 of 4

Pick the prettiest

Coat colour comes first because it is the purest hunch there is. Every horse's colour is read from its photo, so the app knows which ones are grey, black, chestnut or bay.

Coat colour picker with grey, black and chestnut selected

Step 3 of 4

Tap whatever catches the eye

Name, outfit, lucky number, jockey, trainer, owner. No reason needed. Every tap is stored with the race, so each kind of hunch can be scored later.

Jockey, trainer and owner lists with three names tapped

Step 4 of 4

Four picks, one decision

The app ranks the field on taps, sets that next to the odds and offers four bets: the top vibes pick, the favourite, a random pick and the horse both agree on. Whatever is backed is logged with the result.

Pick screen with Vibes, Random, Odds and Convergence picks

Behind the app, small server functions fetch the day’s race cards, odds and official results, so nothing has to be typed in. Each finished race day is saved, then pulled into an analysis script that rebuilds a results dashboard.

Race data
Race cards, odds and results from deutscher-galopp.de
Coat colour
Horse photos classified by Claude
App
React, hosted on Vercel, with Python endpoints
Storage
Race-day snapshots in Upstash Redis
Analysis
Python backtests and a self-updating dashboard

The test

Two days at the track, 22 more as a game

  1. 19 June – 5 July Play Two race days in person. On the others, the same app and the same process, played as a game. 596 bets over the full run.
  2. 7 July First review After nine race days, every strategy was replayed against the real results to see which kinds of hunch carried any signal.
  3. July Play on Fifteen more race days, with the findings in mind.
  4. 6 August A rulebook and a dashboard The review became a set of fixed rules: skip small fields, then bet win or place depending on the odds. The dashboard compares those rules with what was actually bet.
  5. 8 August Last race day One day on the rulebook. By then the betting had become mechanical.

The results

Pretty beat random on paper. Then the outliers came out.

Same races, same stakes, three ways of betting. Switch views to remove the freak results.

Real record (hedged) Top vibes pick Random pick

Raw: vibes looks like the clear winner

Backing the top-vibes horse every race ends 1,022€ up, well ahead of the real record. Most of that came from a few long-priced wins early on.

Place bets, stake matched to the real stake in each race. Cumulative profit after stakes.

League table

Return on stake, 177 races, stake matched per race.

StrategyBetReturnROI
Top vibes pick Win
+71.8%
Top vibes pick Place
+71.5%
Real record Mixed
+39.4%
Random pick Place
+20.9%
Random pick≈ the track’s 15% cut Win
−15.0%
Favourite Place
−20.4%
Convergence Place
−26.1%
Convergence Win
−27.8%
Favourite Win
−32.9%

Did the review help? Not measurably. The first nine race days returned 50% on 733€. The fifteen after the first review returned 29% on 775€. The rulebook ran for a single race day, which happened to be the best of the series, but 13 bets prove nothing.

The real record still finished 594€ up on 1,508€. Only 27% of that came from the single best bet. For the single-horse strategies the share was 92 to 100%.

Why there is no edge

The odds already know

German racetrack odds come from the pool of bets. Every punter’s knowledge, every tip and every rumour is already in the price. The track then keeps about 15% of the pool. Picking at random should lose roughly that much, and it did.

~15%kept by the track from the win pool
−15.0%return on random win bets, 177 races

The mystery

Four taps or more, and the horse starts winning

One pattern held up across the whole study, and there is no clear explanation for it.

How a tap happened

The personal rule behind each category. Half are close to random.

  • Coat colourGrey, chestnut or black. Never bay.taste
  • NameWhatever sounded good.random
  • SilksWhatever looked good.random
  • Lucky numberUsually odd, usually above 5.habit
  • JockeyWomen only. No amateurs.rule
  • TrainerOnly if fairly sure she is a woman.rule
  • OwnerOnly if fairly sure she is a woman.rule

Win rate by number of taps

Every runner in every race, 1,441 in all. The black mark is the chance the odds gave it.

0 taps
9.1%n=186
1 tap
13.2%n=461
2 taps
11.9%n=436
3 taps
10.0%n=250
4+ taps
20.4%n=108

What the 108 four-tap horses had

Silks
79%
Name
69%
Lucky number
67%
Owner
64%
Trainer
55%
Coat colour
54%
Jockey
41%

From zero to three taps, horses won less often than their odds implied, which is what the track’s cut predicts. At four taps or more the line jumps: 108 horses, 20% winners against 14% expected, and 45% finished in the top three.

No single category explains it. Silks and names appear most often among the four-tap horses, and they were picked close to at random. Women jockeys and trainers showed no edge on their own; women-owned stables a small one.

It may still be luck: at this sample size, a gap this large turns up by chance roughly one time in thirteen. Or the taps are catching something the price misses. The next 100 races would tell.

What happened next

The better it worked, the less fun it was

Once the rulebook existed, a race day meant applying it. No hunches, no tapping, no game. At that point the betting could run without a person at all, and the obvious next step would have been to automate it.

That step was not taken, for reasons the bank account will appreciate. The finding stands without it: a strategy built to remove judgement also removes the reason a casual punter goes to the races.

The app is still live. Play a demo race, best on a phone. Part two of the story, what happened when ten first-timers tried it, is a different kind of finding.

Recognise the problem?

Most projects start with a thirty-minute conversation. Bring the problem; the scoping comes after.

Book a chat All case studies