Horse player's review of season 25 majors
A review of the 12 majors of season 25 in PhotoFinish.LIve, the picks I made and the rationale behind them. Picks are a great part of the PFL ecosystem that doesn't require horse ownership and can be played as a standalone game.
ai_paddock
3/9/20259 min read


With season 25's PFL majors in the books, it's a good time to look at what happened in those races. This post is going to focus on the betting side of PFL, making picks and hopefully some Derby.
As discussed before here, betting is fairly straightforward in PFL. The system is parimutuel, which means the odds you get are based on the total weight of money bet on your horse versus the field. The more money staked on your preferred horse the lower your price.
Majors are difficult to win, but pay handsomely when you do. With 20 runners in the field, and a qualifying process that (largely) weeds out the chaff, the fields are competitive, and each race represents the best 3 year olds in the game. Unlike real life majors there are never any dominant favourites at short prices from a morning line perspective. Take for example next week's Cheltenham Gold Cup here in the UK, the favourite Galopin Des Champ is priced at 1-2, or 2-1 on, meaning it has an implied 67% chance of winning. It is rare for a major to have a horse priced below 10 or 11 in decimal odds on the morning line.
Majors are also the most juiced pots in PFL. There is more than 80k Derby added to the pot for these blue riband events. That should get a horse player's notice. It goes without saying, none of this article is betting advice, and I am not here to sell tips to anyone. I hope to provide some insight into my process which can help others understand more about the picks game.
The pick selection process
I use a predictive model, based on a couple of hundred derived features to tease out my own prices. For betting in PFL I am trying to determine which is the best horse in the race, for the conditions of the race. Whether that horse wins or not is another matter. You can't expect to win every race, but if you can consistently win at a decent rate at decent odds you can grind out some Derby.
For each race I calculate what I think are fair odds for each horse. The process involves using a binary classifier to predict the winner of a race. The score for each individual horse is divided by the total score, so that together the horses' odds add up to 100%. People sometimes say that binary classifiers discard too much signal, but I think its the best tool for the job. You can use custom loss functions to improve performance (to reflect real life) but I would try simpler models first. In real life custom loss functions are great because they can better represent market prices and find mispriced horses. In PFL, we have the parimutuel system and it doesn't work in the same way.
Here is an example of what I look at before each race.


This is the season 25 Third Time Championship Sprint. There are 20 runners, and this table gives me some information in addition to the model outputs. The rank columns gives me the order in which the model rates the horses and the final column is their implied odds. So Upper Echelon is my favourite and I price is as 9.3. Immediately there are two ways you can go with this handicapping process. You can just bet on the top predicted horse, or you can look for value. The text book approach is to always look for value. So you shouldn't bet on Upper Echelon, even if you think its the most likely to win, if the price is lower than 9.3 because that would be a negative value play. You also have to consider the size of your own stake and what that does to the price you will get in return. Finally you need to think about how long is left in the betting window, and how likely it is that the market might move against you. To be profitable you win rate x average price must be greater than 1. If you can't be certain about your average price - you must be more certain about the win rate.
Now, many talented horse players can divine out these ranks, or find the best horse without using machine learning, or needing to see all the stats. I wrote about this previously, and have given several tips on what to look for (preferred distance, non-podium rate, morning line, preference stars etc). I just happen to do it the geeky way.
In the details I look for here are a) is the favoured horse running off preference and does it like the conditions b) are there better performing horses my model doesn't rate. Under a) all horses are running on preference - but the cond_diff (condition difference) column looks at the gap between the horse's preference (fast or soft) and the conditions today. As you can see scores are either 0.25 (one step away from their preferred conditions) and 0.75 (three steps). This means the race is either soft or good, I don't care which - just the distance from the preference of the horses. Yielding will always be 0.5 (two steps). For b) Sovereign Bezos is top for a number of factors - roi, earning per race and win rate. I mentioned this to another owner at the time but didn't act on it and instead backed my model. So, congratulations to Sovereign Bezos and his owner on an obvious victor. Remember, just like the 76ers, you need to trust the process. Sovereign Bezos was ranked 11th by my model so I ignored my instincts.
Major picks and results
I made 12 single win bets across the 12 majors this season, and below are the results. I have converted the stakes to 1 to make the numbers simpler.


Across the 12 races there were 4 wins (33%) and almost +39 units of profit at an ROI of 3.25. As discussed early a 33% win rate at average odds >10 is always going to give you 3+ ROI. A probably more historically accurate assessment is around +0.5 for a healthy return. I was pretty fortunate here.
Keen eyed readers might notice that twice I picked the 3rd ranked horse. This is me not trusting the process. In the Harbor Classic Cup there were two massive bets on my top two favourites, so disheartened by the short odds I decided to go for the higher economic value bet (+ev) of the third ranked horse, Scattered Seeds, who came 5th. In the Twin Spires Gallop, I noticed that the top horses were LDF and the conditions were sloppy so I went for the top sloppy horse, Way of the Sword, who came 3rd. Neither of the top ranked horses won, so I didn't gain or lose anything by doing this (this time!).
In terms of self-analysis, there was a 2nd place, and two 3rds on the positive side and a 11th, 12th and 19th on the negative. If your model regularly hits shows and places - that is generally a good sign, not a bad one.
To improve you need to diagnose what happened in each race, to help with that here is a second table covering the winners and the favourites of each race.


Taking a look at the list of winners I can see that two second ranked horses won. Had I bet on every second ranked horse in addition to the first ranks, so 12 more bets, it would have returned just over 11 units of profit at +0.9 ROI. Something to consider for next time.
Both Twin Spires races delivered real rank outsiders. The model didn't rate them, the ML didn't rate them and the market didn't rate them but they both won a lot of Derby for their successful owners. Rikke is a 4.5 star horse, who came 4th four times in small field qualifying runs, and showed no previous ability to win at sloppy, and suddenly found a 2 second improvement in the final. That's hard for any model to predict.
Shining Benny came last in a 7.5k claimer earlier in season 25, before winning a qualifier and again finding a much better performance than previously seen in the final. Just goes to show you can find major winners in claimers. Shining Benny just didn't look like he was worth 7.5k, let alone 375k when he was in the claimer, so don't feel bad about missing him.
If we re-raced either of those races, I am not sure these two would rack up many wins, so I am not overly concerned the model missed them. Lady luck was on their side.
True to form, the Kentucky Derby, the final race of the meet, following two random lucky outsiders, the best horses, Sunwhisper and Muzzy Ben, came 1 and 2. Muzzy Ben went off the favourite, but my model had a very rare 5.9 odds prediction for Sunwhisper, and the 2nd favourite did the goods. The only thing I don't like about Muzzy Ben, with his 2.1 ROI and 81% of rivals beaten (both great values) is his 5.5 preference stars. LD is not as star crazy as RD, but at the end of the day with two great horses it can be these margins that make the difference. The odds were 7.7 for Sunwhisper, well above her fair odds.
In the Harbor Classic Cup, Dial in for the Hour and Lisa of the Dance were heavily backed, which is why I went with the third ranked horse. In the end Dial in for the Hour won, and Lisa of the Dance came 11th.
If we look at the favourite columns we can see that only one favourite won, Spine Tingler, with 3 more podiums. Backing each favourite would have lost you money, and in 5 out of the 12 races the favourite finished in the bottom half. Don't assume all money is smart money. Sometimes it's the own backing their horse, sometimes people see something you don't. Either way its good to have action, because it helps to lengthen your odds when you are not on the favourite. In review I can see that my model co-incided with the favourite on 3 occasions - which is a fairly low hit rate - and means that I am getting value elsewhere. You don't want your model to converge with the betting market, you want horses others under value for bigger returns. If someone sells you a pick tipping service, and it works, it would become more popular, until the prices available on the tips would reduce to a level which made the tipping service unprofitable, which would make everyone leave, which in turn would make the tips more profitable again. Kind of like the fox and rabbit population chart. In a parimutuel system, selling tips works until it becomes popular, then it doesn't work as everyone piles on the same pick.
Wrapping up season 25 majors
Just like most seasons, the best horse won sometimes, most of the time it didn't. Some rank outsiders won. I wouldn't necessarily go racing to the breeding barn to breed with them. They just got lucky. Some call this the winning gene, but I am not sure a horse with <20% career win rate is blessed with some ability to win, it just got a good roll on the day.
Majors are great to bet on because they have the largest juiced pots and therefore really attractive odds. If you can pick 2 winners across the 12 races at above 10s, you can lock in 50% to 100% return.
If you are betting on races, you need a system, and the system needs to work in the long term by finding +ev situations to bet. You don't need machine learning, any system will do - just one that works for you. Don't get too up or down from win or losing streaks - these occur - its part of the game. You can't win every race, sometimes its just the luck of the day that prevails. Feed your data into an AI chatbot. It's not really doing any mathematical analysis - but it might give you a plausible narrative, and it might also win. The question is, is it profitable over time? You can download your pick history from the stable tab, and if you are serious about getting better at picks you should review your historical performance. Sometimes being profitable is just about avoiding the really bad bets you make.
Join the fun and put these insights into practice at PhotoFinish.Live and if you are considering starting your own stable please consider using my referral code: PADDOCK or just click on this link: https://signup.photofinish.live/?referralCode=PADDOCK
Please remember this is a web3 game where you spend your own money. Nothing I write about should be considered financial or investment advice.
Other blog posts:
Generating more wins: https://aipaddock.com/generating-more-wins
Breeding winners https://aipaddock.com/breeding-winners
Season 23 juvenile review https://aipaddock.com/reviewing-the-graduating-class-of-season-23-juvenile-horses
Finding good claimers https://aipaddock.com/how-to-find-good-claimers-in-pfl
Not gambling advice: https://aipaddock.com/getting-to-grips-with-betting-in-photofinishlive
Breeding in season 21: https://aipaddock.com/getting-ready-for-breeding-in-season-21
Saving the LTF archetype: https://aipaddock.com/there-is-gold-in-them-thar-hills-a-campaign-to-save-ltf
Season 19 retrospective: https://aipaddock.com/season-19-by-the-numbers
A race selection process flow: https://aipaddock.com/selecting-the-right-races-for-your-horses
How good is your new juvenile: https://aipaddock.com/how-good-is-my-new-juvenile-horse
Tips for breeding strategies: https://aipaddock.com/charting-the-uncharted-in-breeding-within-pfl
Know your odds of breeding success: https://aipaddock.com/know-your-odds-before-you-roll-the-dice
Further down the rabbit hole of ML: https://aipaddock.com/deeper-down-the-morning-line-rabbit-hole-we-go
What can ML prices tell us: https://aipaddock.com/skill-luck-and-morning-lines
Finding the optimal distance: https://aipaddock.com/understanding-optimal-distances
Understanding breeding: https://aipaddock.com/understanding-the-most-successful-breeding-horses-in-pfl
What are subgrades: https://aipaddock.com/what-are-subgrades-and-how-do-they-work
Fastest horses: https://aipaddock.com/who-are-the-fastest-horses-in-the-game
Racing profitability: https://aipaddock.com/how-much-profit-do-you-make-racing-horses
Trueskill pvp ratings: https://aipaddock.com/which-horse-is-the-goat-in-pfl
Breeding: https://aipaddock.com/trying-to-understand-breeding-in-pfl
Evaluating horses: https://aipaddock.com/how-good-is-my-horse
Understanding performance: https://aipaddock.com/understanding-the-true-performance-of-your-horse
Do stars matter: https://aipaddock.com/how-much-do-preferences-matter
FF Rating vs Finish Time: https://aipaddock.com/the-difference-between-ff-rating-and-finishing-time
Are horses getting faster: https://aipaddock.com/are-pfl-horses-getting-faster