It would be nice to start making some money at some point. Today we discuss a low-yield but pleasantly workable strategy suitable for different betting exchanges, that is currently projected to yield between £1-2k this year. This is not life-changing, but it requires minimal capital allocation, is risk-free-ish (the ish relating to general issues involved in trading any assets), and will pay for a couple of VPSs needed to run other strategies we discover along the way.
We know, and like betting exchanges for our strategies. But like any exchange it’s worth delving into some of the quirks of the environment so we know exactly what we’re working with:
The Players
Exchanges, are exchanges. We enjoy all the same constraints common to exchanges in general, with the chief one being liquidity. Most exchanges give us a snippet of the odds ladder and available liquidity on each price in their UI, and the rest is available via API calls.

No liquidity = no trade, irregardless of how fair our bid/ask is. But who’s providing this liquidity?
Technically anyone who wants a piece of the action. There’s nothing stopping us in the example above from posting a lay offer on Croatia at 11.5 and joining the back of the queue. However, most liquidity is provided by market making groups, related parties to the exchange owners (auditors love it), syndicates and professional trading bots.
The Commission
Commission rates vary between exchanges, with some charging additional fees on top if your account is particularly successful. Unlike Kalshi/Polymarket, there are no maker rebates to enjoy.
But what is interesting is (again, for most exchanges) that winnings are charged on net P&L per market. Not the specific line.
Say we’ve worked the exchange effectively in our example and now hold a back bet on Croatia at odds of 14 (with the fair odds in the above being somewhere between 11.5/12). We have two options:
Hold to maturity - the likelihood is that we lose, even given the fact we are beating the fair odds, and if we win we’re clobbered by commission.
Cash out by betting on legs to ensure an even payout. Volatility is heavily reduced, and depending on commission and how tight the markets are this can actually produce more P&L on average as well.
So the takeaway is that the commission structure incentivises cashing out on other legs, and that this should reduce volatility, although this does depend on how the market currently prices our positions. Indeed this is often referred to as greening up.
The Grid
All exchanges have a set ‘grid’, which defines the minimum gaps between offers allowed on the exchange. A typical European stock might have a 1¢ tick. No matter how effective your pricing algorithms are, how confident you become that you could make the market inside a 1 cent band; the exchange will enforce rigid price ladders at 1 cent bands (barring some exceptions like penny stocks).
Most betting exchanges operate a similar structure with the following price levels.
The variable tick size is what makes it interesting. As we move up to a higher tick size on the grid, one tick can suddenly become worth a much more significant jump in implied odds.
That is to say that in situations where the makers quote one tick further in, the relative movement is significant, which is certainly something to consider when finding strategies on the exchange.
The Overrounds
What are the implications of all of the above? Well, readers will recall a lot of talk of overrrounds in the previous pieces. The overround is the effective margin on our market. As exchanges are peer-to-peer there’s no direct incentive from the exchange to have high overrounds, and the most liquid markets are brutally tight, with the back market often hovering within 0.5% of flat.
Savvy modellers will wonder, if commission is 2-5%, how can a market be offered at that tight of an overrround. But this is an incentive of having the commission structure be per-market rather than per-leg; makers don’t have to beat commission on each leg and can keep the spreads tight and efficient if they expect to be able to green up like in the example before.
The Strategy
Here we discuss a strategy based on identifying whether we can find risk-free arbs across the set of markets offered by exchanges on football matches, with the value being found on occasions where market quotes become out of sync with one another, possibly due to latency, tick sizes or a combination of the two.
Almost all football matches will finish somewhere between (0,0) and (6,6), where we define the final score as (home_goals, away_goals). This is our ‘state space’, where we consider every market as a payoff function mapped over this space, with the payoffs corresponding to the specifics of the market and the different scores.
We then take each market offered by the exchange and map our projected payout for both the back and lay variants (easily done as these are symmetric directionally, though prices of course differ). It is quite simple to define rules for each market.
Home team to win: home_goals > away_goals
BTTS: home_goals > 0 and away_goals>0
Total goals > 2.5: home_goals + away_goals > 2.5
Handicap lines: a bit more messy
We now have a payoff matrix P that measures, for each score from (0,0) to (6,6), the projected pre-commission payoff for every market offered by the exchange.
Each row of P is a final score. Each column is a bet we could place, such as backing Croatia at 11.5 or laying Croatia at 12. The entry is what that bet pays per £1 staked if the match ends on that score. Backing at odds q returns (q − 1) if it wins and loses the stake if it doesn’t, and a lay is the reverse. If x is the amount we stake on each bet, with no negative stakes, then Px is our profit on every scoreline. An arbitrage is any x where every entry of Px is positive. That is a linear program (LP), and because pretty much the whole of modern life runs on matrices, Python can smash through it in milliseconds. There is one complication. If a solution exists, doubling every stake doubles the profit, so the problem has no upper limit until we cap each stake at the size available at that price. With the caps in place, we ask the solver to maximise the profit on the worst score. If the best it finds is zero, there is no arbitrage. That is the usual result of course, otherwise we would not be referring to this strategy as low-yield.
Factor in expected commission in each state, remembering that in the same market commission is only on net P&L. Commission also kills a significant number of arb candidates.
Place bets and handle all the complications that come with that, which as mentioned at the bottom is quite a lot.
For reference, here is a tidied up matrix on Rayo Vallecano and Getafe (note no quotes on half-time markets as the payoff doesn’t depend on just the final score):
Do I particularly recommend this strategy? I think it’s a decent beginning, but its main use is the build-out of the infrastructure that will be useful for other strategies, such as the matrix above. For reference I’ve staked over £100k on this strategy and net profit is around £100 over 4 weeks, so I’ve not quit the day-job just yet.
Also, non-directional strategies rely on excellent exception handling when things go wrong. If you’re trading something directional you can throw some slippage and fees into your backtest and be done with it. Because here the payoffs on certain legs are meant to balance out, one failed match leaves an enormous unhedged exposure on a particular set of scorelines, which you need to be confident your program will handle correctly. These instances tend to involve rebalancing at lower prices, which takes an already small edge and makes it more difficult to be profitable.
However, the proof of concept is positive and we’re making a good yield given the existing bankroll is quite low. Before the quarter end we’ll discuss some more strategies using similar approaches to what we’ve seen here, and hopefully build some interesting bottom-up strategies as well. Until then, thanks for reading.
The Alternative Desk
Still a going concern





