Contact me

Sports trading · Led

He knew tennis for thirty years and had no way to act on it. Now a script does.

A client who had spent his working life around tennis wanted to bet on it seriously and had no way to turn what he knew into decisions. We got the knowledge out of his head, put thirty years of results behind it, tested around three million combinations, and shipped a system that wins close to four bets in five.

Measured outcome

30 years
of match data behind the model
~3M
combinations testedTo find the version that still held when the data changed under it
78.9%
win rate, ATP171 bets backtested
+21.7%
best return, WTA with the language-model filterQuarter-Kelly staking, 140 bets, 36.2% maximum drawdown
Client
Confidential: sports trading client
Period
2025
Duration
2025
Engagement
Operating model
Reading time
4 min

Key achievement

Close to a 79% win rate across 322 backtested bets, built out of one man’s undocumented expertise and thirty years of match data.

Role clarity

Led

Everything. Extracted the client’s domain knowledge, assembled thirty years of match data, built and trained the models for both tours, ran the combination search, wrote the live point-by-point pricing and the exchange execution, and built the hedging, the controls and the paper account that runs beside the live one. The client brought the sport and the expertise. The build was mine.

01

Context

The client had spent thirty years around tennis. He knew the players, the surfaces, how a match turns, which patterns hold and which are stories people tell afterwards. He wanted to bet on it properly.

What he did not have was any way to act on it. It was all in his head — the kind of knowledge that produces a confident opinion about a match and nothing you can repeat, test, or hand to anybody else.

That is the problem in most of the businesses on this site, wearing different clothes. The expertise is real and it is trapped in one person.

02

Diagnosis

The instinct here is to write the rules down and automate them. That is usually where it dies. The rules are approximate, they contradict each other at the edges, and nobody can say which of them are actually carrying the result.

So the job was not to capture his system. It was to get every belief out of him — including the ones he could not justify — and then find out which of them survived contact with thirty years of results. Several did not. That is the useful part.

Two things also had to be true before any of it was worth building:

  • The edge had to be against a real price, not against a feeling. That meant pricing every position point by point during the match and comparing it to what the market was actually offering at that second.
  • It had to be readable while running. A system you cannot read is a system you cannot correct.
03

Decisions

Knowledge out first, model second. Everything he knew was extracted and written down before any modelling happened. This is the step most projects skip, and it decides whether the model has anything worth learning from.

Thirty years of match data behind it. Enough history to test the patterns across different eras, surfaces and generations of player, rather than fitting them to one good season.

Around three million combinations tested. Not one model with an opinion — a very large search for the version that still worked when the data changed underneath it. Almost all of those three million were thrown away. That is what the number is for.

Separate models for the men’s and women’s tours. They do not behave the same way, and one model pretending otherwise is how a system looks fine while quietly losing money on half its volume.

Priced live, point by point, against the real market. The system takes a position only where its own number and the market’s number disagree by enough to pay for the risk.

A paper account running beside the live one, so results can always be read against something rather than judged on memory.

04

Results

Backtested across 322 bets, both tours.

| | ATP | WTA | WTA with the language-model filter | | --- | --- | --- | --- | | Bets | 171 | 151 | 140 | | Win rate | 78.9% | 78.8% | 75.7% | | Return, flat staking | +12.4% | +11.7% | — | | Return, quarter-Kelly | +17.5% | +19.3% | +21.7% | | Maximum drawdown | 47.5% | 33.8% | 36.2% |

The most useful column is the last one, and it is counterintuitive. Adding a language model as a filter on the women’s tour made the system take eleven fewer bets. The win rate went down by three points. The return went up by more than two.

It was not trying to be right more often. It was declining the positions that looked fine and paid badly, and keeping the ones the market had mispriced.

That is the same argument this practice makes everywhere else — the cheapest lead can cost the most, and every account has a number that looks excellent and is quietly the problem. Here it is demonstrated in a market that settles every position within hours and does not let anyone tell a story about it afterwards.

The drawdown figures are published on purpose. A system that shows you 21.7% and not the 36% it went through to get there has not been described honestly.

05

What was different about this one

I built this one myself. On every other engagement on this site the client’s team does the hands-on work, because they do it every day and they cost less than me — and because that is the only version where the change survives me leaving.

Here there was no team. There was one man with thirty years in his head and nobody to hand it to. So the build was mine: the models, the data, the search, the live pricing, the execution, the hedging.

Worth saying plainly, because it is the exception rather than the rule, and because the distinction matters when you are deciding what to ask me for.