The most telling sign of his current trajectory is what has happened in the last two weeks. Three winners from 16 runners — that is almost 1 in every 5, more than double his seasonal average. Whether that reflects a yard that has found its rhythm or a string of horses peaking at the right moment, it is exactly the kind of run that gets people paying attention.
His partnership with jockey Joe Williamson is the engine that drives much of this. Across 106 rides together they have combined for 14 wins — wins at a rate of roughly 1 in every 8, which is noticeably better than Kirby's overall numbers. When a trainer and jockey consistently outperform together, it usually means they understand each other; when to be patient, when to push, when a horse needs space to find its stride.
Kirby's record on wet or muddy ground is another calling card worth filing away. Eight wins from 49 races in those conditions — roughly 1 in every 6 — tells you he knows how to prepare a horse that handles the mud. That is a skill, not an accident. Some trainers dread a soggy forecast; Kirby seems to quietly welcome it.
And then there is Wolverhampton. Eight winners from just 33 runners at that track is a remarkable conversion — almost 1 in every 4. For context, that is more than twice his season-wide average. Whether it is the surface, the shape of the track, or simply a deep familiarity with what works there, Wolverhampton has become a stronghold. His standout individual partnership is with the horse Asa, who has won 5 of their 29 races together — a reliable, consistent contributor to a yard that, four years in, looks like it still has a lot of its story left to tell.
| Course | Races | Wins | Win rate |
|---|---|---|---|
| Newcastle | 82 | 6 | 7.3% |
| Catterick Bridge | 38 | 5 | 13.2% |
| Wolverhampton | 33 | 8 | 24.2% |
| Southwell | 33 | 2 | 6.1% |
| Sedgefield | 25 | 5 | 20% |
| Carlisle | 18 | 1 | 5.6% |
| Wetherby | 15 | 0 | 0% |
| Kelso | 12 | 1 | 8.3% |
| Doncaster | 12 | 0 | 0% |
| Haydock Park | 12 | 0 | 0% |
| Market Rasen | 11 | 2 | 18.2% |
| Musselburgh | 11 | 2 | 18.2% |
| Thirsk | 10 | 0 | 0% |
| Hexham | 8 | 0 | 0% |
| York | 7 | 0 | 0% |
| Redcar | 7 | 0 | 0% |
| Beverley | 6 | 0 | 0% |
| Ayr | 6 | 0 | 0% |
| Cartmel | 5 | 0 | 0% |
| Ripon | 4 | 0 | 0% |
| Uttoxeter | 4 | 0 | 0% |
| Nottingham | 3 | 1 | 33.3% |
| Aintree | 3 | 0 | 0% |
| Pontefract | 3 | 0 | 0% |
| Huntingdon | 3 | 0 | 0% |
| Fakenham | 3 | 0 | 0% |
| Bangor-on-Dee | 2 | 1 | 50% |
| Hamilton Park | 2 | 0 | 0% |
| hereford | 2 | 0 | 0% |
| Worcester | 1 | 0 | 0% |
| Warwick | 1 | 0 | 0% |
| Newmarket | 1 | 0 | 0% |
| Lingfield Park | 1 | 0 | 0% |
| Ludlow | 1 | 0 | 0% |
| Leicester | 1 | 0 | 0% |