Since starting out in 2021, Ryan has built a career total of 56 winners, and the highlight reel is genuinely striking. Two top-level wins came in the space of a few weeks in autumn 2022 — first at Doncaster in September, then at Ascot in October — and he added a third at Doncaster in October 2024. Ascot and Doncaster are two of the most prestigious venues in Britain, and landing Class 1 races at both of them before your fourth anniversary as a trainer is the kind of thing that makes other professionals take notice.
The current season tells a slightly more complicated story. Ryan is finding the winner's enclosure roughly once every 12 races — 11 wins from 134 runners — which is down from last year, when he was winning at closer to 1 in every 8. That dip is worth keeping an eye on, though a single quiet spell rarely defines a career, and his underlying record suggests the ability is still there. One place where it clearly shows up is on normal ground conditions, where he wins 8 races in every 59 — a 14% rate that puts him comfortably ahead of his seasonal average and suggests his horses are best seen when the track is riding at its most straightforward.
His most regular jockey partnership is with Darragh Keenan, who has ridden for the yard 33 times and come home in front twice. At roughly 1 win in every 16 rides together, that combination has not yet clicked as consistently as Ryan might like, but 33 rides is enough to show this is a working relationship with genuine mileage on it. Ryan is still a young trainer by the standards of a profession where experience counts for almost everything, and the fact that he has already sat in the winner's spot at Ascot and Doncaster twice over suggests his best years are very likely still ahead of him.
| Course | Races | Wins | Win rate |
|---|---|---|---|
| Lingfield Park | 41 | 3 | 7.3% |
| Great Yarmouth | 21 | 2 | 9.5% |
| Newmarket | 15 | 1 | 6.7% |
| chelmsford | 8 | 2 | 25% |
| Kempton Park | 8 | 0 | 0% |
| Southwell | 7 | 2 | 28.6% |
| Brighton | 6 | 0 | 0% |
| Newcastle | 5 | 1 | 20% |
| Ascot | 4 | 0 | 0% |
| Musselburgh | 3 | 0 | 0% |
| Wolverhampton | 3 | 0 | 0% |
| York | 2 | 0 | 0% |
| Nottingham | 2 | 0 | 0% |
| Newbury | 2 | 0 | 0% |
| Hamilton Park | 1 | 0 | 0% |
| Haydock Park | 1 | 0 | 0% |
| Sandown Park | 1 | 0 | 0% |
| Ripon | 1 | 0 | 0% |
| Windsor | 1 | 0 | 0% |
| Doncaster | 1 | 0 | 0% |
| Bath | 1 | 0 | 0% |