The numbers get more interesting when you look at where O'Keeffe does his best work. On slightly soft ground — the kind of conditions you get after a day or two of autumn rain, when the track has a bit of give underfoot — his horses win at a striking rate: 7 wins from 30 races, which is nearly 1 in every 4. That is more than double his overall average, and it suggests O'Keeffe either targets those conditions deliberately or trains horses that genuinely thrive when the ground tests them a little. Either way, when the forecast turns damp, his runners are worth a second look.
His most reliable ally in the saddle is jockey Jack Garritty, who has partnered O'Keeffe's horses to 6 wins from 60 rides together — 1 in every 10. That kind of established routine between a trainer and jockey tends to build into something productive: Garritty knows how the yard operates, O'Keeffe knows what he is getting. It is not a flashy headline partnership, but 60 rides together in a relatively short training career tells you there is real trust on both sides.
The most personal thread in O'Keeffe's record is his partnership with a horse called Ip Up — 2 wins from 21 races together. That might not look like much on paper, but 21 races is a long and loyal relationship between a trainer and a single horse. It speaks to patience, to belief in an animal that does not always reward it, and to the kind of stubborn optimism that the training game requires in large doses. O'Keeffe is four years in, the winners are coming more regularly, and the direction of travel is clear.
| Course | Races | Wins | Win rate |
|---|---|---|---|
| Newcastle | 33 | 4 | 12.1% |
| Southwell | 12 | 1 | 8.3% |
| Haydock Park | 10 | 0 | 0% |
| Beverley | 9 | 1 | 11.1% |
| Wetherby | 7 | 0 | 0% |
| Catterick Bridge | 6 | 2 | 33.3% |
| Carlisle | 6 | 1 | 16.7% |
| Ayr | 6 | 1 | 16.7% |
| Thirsk | 6 | 0 | 0% |
| Pontefract | 5 | 2 | 40% |
| York | 5 | 1 | 20% |
| Redcar | 5 | 0 | 0% |
| Market Rasen | 4 | 0 | 0% |
| Ripon | 3 | 1 | 33.3% |
| Nottingham | 3 | 1 | 33.3% |
| Musselburgh | 3 | 0 | 0% |
| Uttoxeter | 3 | 0 | 0% |
| Kelso | 3 | 0 | 0% |
| Leicester | 3 | 0 | 0% |
| Ffos Las | 2 | 1 | 50% |
| Hexham | 2 | 1 | 50% |
| Fakenham | 2 | 0 | 0% |
| Bath | 2 | 0 | 0% |
| Stratford-on-Avon | 2 | 0 | 0% |
| Doncaster | 2 | 0 | 0% |
| hereford | 1 | 1 | 100% |
| Newmarket | 1 | 0 | 0% |
| Ludlow | 1 | 0 | 0% |
| Worcester | 1 | 0 | 0% |
| Bangor-on-Dee | 1 | 0 | 0% |
| Newbury | 1 | 0 | 0% |
| Aintree | 1 | 0 | 0% |
| Kempton Park | 1 | 0 | 0% |
| Hamilton Park | 1 | 0 | 0% |
| Newton Abbot | 1 | 0 | 0% |
| Goodwood | 1 | 0 | 0% |
| Wolverhampton | 1 | 0 | 0% |
| Epsom Downs | 1 | 0 | 0% |
| Plumpton | 1 | 0 | 0% |