Advent of Alpha Idea 1: Bookmaking
Welcome to the first day of the Advent of Alpha.
I know a lot of people will see the title and think “Really? Not exactly innovative, is it?”. Using exchanges to make books might be “obvious”, but it’s devilishly hard, and the ideas you have to start thinking through are good foundations for other ideas.
The moment anybody who knows something about betting sees an exchange there are two thoughts that go through their mind: “these odds look a lot better than the ones I get to back at down the high street bookmaker”; and, “Wait, you can lay? You can become a bookmaker?”.
It’s the latter thought that got me into Betfair back in 2002. Being the house is a very attractive proposition. The highest paid woman in the UK runs a bookmaker. I’ve never met a skint bookie. A bit of digging suggests it is a sure-fire profitable method, and best of all, it doesn’t seem to require a lot of knowledge of the fundamentals of the sport you’re betting on, it’s just the maths are in the favour of the house, and on an exchange you can become the house.
On Betfair, the web interface provides clues about how you might go about this. The first thing people might try and do is “dutch” a book - backing to a common payout on an under-round book. I spent a year doing this before Betfair had an API, doing all the maths manually, with mixed success.

Note that to do this you hit “Back All”, then move the prices over the spread to make prices on the Lay side, then hit that little blue link “Stake”, and magic happen. The green P&L here is shown net of commission (always, always, work with numbers net of commission, especially when calculating if a strategy is profitable or not).
There are book percentages that suggest that laying prices on the back side of the book would be over-round, and backing on the lay side would be profitable.

Going the other way, and laying to a “Payout” for prices on the back side of the spread means you can look a profit that way.

And of course you can lay to a liability. This might seem like a daft thing to do, but a lot of bookmakers do it believing that there is more value in being red on a favourite like this is better value, because favourites are always poor value in their price. Is that true on Betfair? We’ll talk about that on another day when talking about calibration.
So which one should you do? Good question. First things first, is there more value in dutching, laying to a payout or laying to a liability? That’s an exercise for you. I would also ask you to consider what volume is available on both sides of the book - are counter-parties taking your prices more likekly to be backers or layers, or both?
There are also advantages to doing this via code than sitting in front of the browser or an app.
One thing that puts a lot of people off laying a book is that they don’t want to have to lay 500.0 chances with £499 of liability to win £1, just in case it all goes wrong. On football, this is less of an issue, but if you’re looking at a 30-runner hanidcap race in Ireland on a Sunday afternoon with a 1.8 favourite (yes, it happens all the time), those 500-1000 prices at the bottom of the edge could nerves of steel to lay. And if there are 10 of them at 1000, they add up to the 1% edge that might be making the book over-round: without them, you need one of them to win, even when laying to a payout.
Quick pop quiz: what’s the smallest bet you can have on Betfair?
If you answered £2, you’re laughably out of date. It’s been £1 on the web for a while. So to lay 1000 means you need a grand in your account. Ouch. Dutching doesn’t help, because 0.1% of your dutched total stake needs to be £1.
But on the API, as the documentation explains if the total payout is £10 or more, you can bet under that limit, all the way down to 1p at odds of 1000. There are even a couple of methods (not supported by flumine, I keep meaning to contribute code for this), to target a “BACKER_PROFIT” (a liability on the lay side), or “PAYOUT”, without doing the maths of bet sizing. If either is £10 or more, it goes through. So, we now have a way of keeping stakes small, and you can now lay those outsiders for much smaller sizes.
It’s worth noting that if you’re bookmaking, you should do so for an entire book of selections. You might be tempted to “just lay favourites”, but that assumes favourites are always poor value to the backer and great value to the layer, you’re making a claim about fundamentals that may or may not be true, so unless you have reason to do this, don’t do it.
What’s not to like? Why aren’t we all doing our best Victor Chandler impression and rolling in the proceeds?
Well, I’ll be straight: this is the idea I’ve spent the most time on, and think is the hardest.
The first barrier you’ll meet is price slippage, and the fact the price you make that gets matched might be subject to adverse selection: smarter money has decided that some of your prices are +EV to them, but not all, which means you’re no longer over-round.
That in itself might not be a killer as long as you’re staying broadly over-round, but on books that are 101% over-round where you are paying 2% commission on profits means you can’t just hope the edge wins out long-term.
Most of the work I’ve done in this space has been around identifying which parameters a strategy (or an individual bet), might need to take in order to be successful: should you enter the market when its early and illiquid, but the over-rounds are bigger?; how often should you go back into the market - when 100% of your bets are matched, when only some are matched, or even when none are matched?; should you lay to a liability or to a payout?; How should you size your bets? If you’re going into the market multiple times, your bet liability (or implied if laying to a payout), might not be your total liability, so how do you size that?; What do you want to happen to unmatched bets? You have choices on most markets: let them lapse, keep them (“PERSIST”, in API language), or enter the auction for BSP (“MARKET_ON_CLOSE” in coding terms), remembering that just because you have a payout of £10, doesn’t mean you have a liability of £10 - and without such a liability, you’ll LAPSE by default on a MARKET_ON_CLOSE bet.
This is just the start. This idea looks intoxicatingly simple to start with, but the parameter search space is huge (I’ve been at it on and off for 22 years now), and it’s hard to find something that shows consistent profit on most markets.
What should you do next, if you’re interested in this idea? To validate an approach you’ll need matched volume data, which isn’t free if you haven’t got it already, but you can collect your own data using the examples in the flumine repo. It’s then about parameter searching, figuring out how to test all these different options in a way that allows you to make a profit consistently.