The headline achievement is his record at the very top level. Keatley has won four Class 1 races — the elite tier of British racing — in just four years, at prestigious venues including Doncaster, Kempton Park and York. Two of those came in 2025 alone: York in May and Ayr in September. For context, plenty of trainers work their entire careers without tasting success at that level. Reaching it four times before your fifth anniversary as a trainer is genuinely remarkable.
One of the more intriguing details in Keatley's record is what happens when the weather turns nasty. On very wet, muddy ground — conditions plenty of trainers dread — his horses win 3 from 10 races, a 30% hit rate, meaning nearly 1 in every 3 runners wins. That is almost double his already-strong overall average, and it suggests he either has horses bred to handle the conditions or is exceptionally good at reading when the ground suits his string.
Catterick Bridge is another place where his numbers stand out: 3 winners from just 7 runners there. Small sample, yes, but winning nearly half your runners at a track tells you something — either he targets it intelligently, or his horses simply take to the course.
The partnership with jockey Oisin McSweeney is worth watching. Sixteen wins from 92 rides together, again at that 1-in-6 rate, means the two have developed a genuine working rhythm. In racing, a stable jockey who truly understands how a yard's horses are prepared can be the difference between a good yard and a great one. With the numbers still climbing and the big-race wins already on the board, Keatley looks like a trainer firmly on the rise.
| Course | Races | Wins | Win rate |
|---|---|---|---|
| Newcastle | 31 | 9 | 29.0% |
| York | 27 | 0 | 0% |
| Ayr | 21 | 5 | 23.8% |
| Southwell | 13 | 4 | 30.8% |
| Wolverhampton | 12 | 0 | 0% |
| Hamilton Park | 11 | 1 | 9.1% |
| Doncaster | 10 | 0 | 0% |
| Chester | 9 | 0 | 0% |
| Thirsk | 8 | 0 | 0% |
| Catterick Bridge | 7 | 3 | 42.9% |
| Musselburgh | 7 | 1 | 14.3% |
| Beverley | 7 | 1 | 14.3% |
| Ripon | 6 | 2 | 33.3% |
| Pontefract | 6 | 1 | 16.7% |
| Kempton Park | 6 | 0 | 0% |
| Ascot | 6 | 0 | 0% |
| Market Rasen | 5 | 2 | 40% |
| Uttoxeter | 5 | 1 | 20% |
| Carlisle | 5 | 0 | 0% |
| Perth | 4 | 1 | 25% |
| Wetherby | 4 | 1 | 25% |
| Lingfield Park | 4 | 1 | 25% |
| meydan | 4 | 0 | 0% |
| Warwick | 3 | 3 | 100% |
| Hexham | 3 | 2 | 66.7% |
| Kelso | 3 | 0 | 0% |
| Newmarket | 3 | 0 | 0% |
| Chepstow | 2 | 1 | 50% |
| Haydock Park | 2 | 1 | 50% |
| Cheltenham | 2 | 0 | 0% |
| Nottingham | 2 | 0 | 0% |
| Redcar | 2 | 0 | 0% |
| chelmsford | 2 | 0 | 0% |
| Epsom Downs | 2 | 0 | 0% |
| Goodwood | 1 | 1 | 100% |
| Sedgefield | 1 | 1 | 100% |
| Brighton | 1 | 1 | 100% |
| Aintree | 1 | 0 | 0% |
| Huntingdon | 1 | 0 | 0% |
| The Curragh | 1 | 0 | 0% |
| Naas | 1 | 0 | 0% |
| Galway | 1 | 0 | 0% |
| Newbury | 1 | 0 | 0% |
| Stratford-on-Avon | 1 | 0 | 0% |