An arbitrage opportunity in financial markets is a time when you can buy an asset on market A for price X and simultaneously sell the same asset on market B for some Y > X and make a guaranteed profit. Arbitrage opportunities generally don’t last long since the buying on market A will cause the price to rise and selling on market B will cause the price to fall until the prices are the same and the opportunity no longer exists.

Such opportunities also exist in betting markets such as PredictIt and Betfair. Today I discovered such an opportunity.

While many believe the 2020 US presidential election is all but settled and Joe Biden is president-elect, he only officially earns that title when the electoral college meet on December 14^{th} and until then the betting markets are still open and taking bets on the outcome of the election. In betting parlance, the election is still “in play”.

Whatever your political view, one thing is certain: Joe Biden will *be the next president or not be the next president*. That is certain. The probability of these two outcomes sum to 1.

The screenshot above is from PredictIt, a prediction markets site which specialises in political events. The way PredictIt works is users buy and sell virtual “shares” in a market, with the goal of buying low and selling high, just as in financial markets. Each share has a minimum price of $0.01 and a maximum of $1. When the event is finished and the outcome is known, the market is settled and the price of the shares of the outcome *that happened* go to $1 and the price of all other outcomes’ shares go to zero.

The higher the price of the shares in a particular outcome, the more probable that outcome. In fact, the price is also the probability. So Joe Biden’s $0.88 price as presidential election winner means he has an 0.88 probability of becoming the next president. Now let’s take a look at Betfair.

Betfair is primarily a sports betting site, but also offer markets on political events including the US presidential election. Betfair has more in common with traditional bookmakers than with PredictIt, but offers a feature many traditional sites do not: Laying. Laying allows a user to play the role of the bookmaker and take the other side of bets made by bettors who believe an event will happen. Laying allows one to *bet against* an outcome.

Betfair quotes all its market odds using the European style which normalises the stake to 1 and adds on any potential payout to give the odds. The potential winnings on any bet can be calculated by subtracting 1 from the odds and multiplying the result by the stake. For example, Joe Biden’s odds of becoming the next president at time of writing are 1.04, so if I were to bet €100, my payout if he won would be:

*(1.04 – 1.0) × €100 = €4*

Of course I would get my original €100 stake back too. European odds can be converted into their implied probabilities by simply taking their reciprocal. So Joe Biden’s odds of 1.04 imply a probability of:

*1 / 1.04 = 0.9615*

Or 96%. Recall the probability we saw on PredictIt for the same event: 0.88. A difference of 8%! So how can we exploit this difference through arbitrage? Take a look at the pink “Lay all” column on the Betfair screenshot. Joe Biden’s lay odds are 1.05. That means if somebody else wants to bet €1 on Biden becoming next president, and I am happy to take the other side of that bet, my liability if Biden wins is that bettor’s potential winnings: (1 – 1.04) = €0.04, plus a small lay commission of €0.01 which I need to pay, giving a total liability of €0.05. If the event does not happen i.e. if *Biden does not become president*, I get my €0.05 back plus the entire backer’s stake of €1. We can calculate the probability of Biden *not becoming next president* by taking the probability of him becoming next president and subtracting it from 1:

*1 – 0.9615* = 0.0385

Nearly 4%. As a rule of thumb, if you ever have the opportunity to bet on N outcomes of an event where one of the outcomes is guaranteed to happen, and the implied probabilities of the N payouts sum to a number less than 1, you are guaranteed to make money. Any such scenario is an arbitrage opportunity. Let’s analyse our current scenario and check if it’s an arbitrage opportunity. We can bet on Joe Biden becoming the next president with an implied probability of 0.88 on PredictIt and we can also bet on him not becoming the next president on Betfair with an implied probability of 0.0385.

*0.88 + 0.0385 = 0.9185*

One of these outcomes is guaranteed to happen – he either becomes president or does not become president – and 0.9185 is less than 1 so we do indeed have an arbitrage opportunity. So what if we were to buy one share on PredictIt at $0.88 and make one lay bet on Betfair with a backer’s stake of €1? We part ways with $0.88 to PredictIt and €0.05 to Betfair. Let’s assume $1 is equal to €1 to keep things super simple. After placing our initial share purchace and lay we’re down $0.93. If Biden wins, we lose our $0.05 liability on Betfair but our $0.88 share on PredictIt goes to $1 giving us a profit of $0.07:

*$1 – $0.93 = $0.07*

On the other hand if Mr. Biden does not win, our PredictIt share drops in value to $0, but we get to keep the backer’s stake on our Betfair lay as well as getting back our risked liability: $1 + $0.05 = $1.05. Total profit in this instance is:

*$1.05 – $0.93 = $0.12*

So we win 7 cents if Biden becomes president and 12 cents if he does not. This is an asymmetric payoff which may not be desirable, especially if you are somebody with no political knowledge or opinion, who simply wants to exploit the arb opportunity. What if we want to be guaranteed the same profit no matter what the outcome? Let’s have a look at the variables we have:

Bet | Lay |

o (Bet odds)_{1} | o (Lay odds)_{2} |

w (Stake) | y (Backer’s stake) |

x (Payout) | z (Liability) |

Essentially we have two bets on two different markets, with different [European] odds: **o _{1}** and

**o**. In the first bet we’re playing the role of the bettor, who stakes some money

_{2}**w**, and if successful wins a payout

**x**. Note that

*payout*does not include the stake, which the bettor also gets back if they win. In the second bet we’re playing the role of the bookmaker, taking bets from a bettor who bets

**y**, to whom we pay

**z**if they win. If they do not win, we get to keep

**y**. If we place a bet and a lay, we will either:

- Win x, losing z
- Win y, losing w

Let’s denote our desired profit to be **p**. Whatever the outcome, we want to make a profit of **p**. To achieve this we need to win **p** plus *whatever we lost in the losing bet*. So we set the payout and backer’s stake to **p** + **z** and **p** + **w** respectively.

Bet | Lay |

o (Bet odds)_{1} | o (Lay odds)_{2} |

w (Stake) | p + w (Backer’s stake) |

p + z (Payout) | z (Liability) |

Recall from our discussion on Betfair that the payout is a function of the stake and the odds:

The potential winnings on any bet can be calculated by subtracting 1 from the odds and multiplying the result by the stake.

So payout = (odds – 1) *×* stake. Turning that into two equations based on the “Bet” and “Lay” columns in the above table we get:

**p** + **z** = **w**(**o _{1}** – 1) [1]

**z** = (**p** + **w**)(**o _{2}** – 1) [2]

Essentially we need two equations which solve for **w** and **z** – this will allow us to know how much we need to bet on the two markets. I’ll spare you the messy algebra and just say that the equations we need are:

**w** = (**o _{2}**

**×****p**) / (

**o**–

_{1}**o**) [1]

_{2}**z** = (**p** + **w**)(**o _{2}** – 1) [2]

You may have noticed that the equation for **z** is unchanged. It can be written in terms of **o1**, **o2** and **p** but it’s more succinct to solve equation 1 for **w** and substitute the result into equation 2.

Getting back to our election example, let’s say we want to guarantee ourselves $1,000. We set **p** = 1,000 then calculate the European odds for the two markets. **o _{2}** is already done because Betfair uses European odds by default, so we have

**o**= 1.05. For PredictIt, to convert the implied probability of 0.88 to European odds we take the reciprocal:

_{2}*1 / 0.88 = 1.136*

We now have our three independent variables:

**o _{1}** = 1.136

**o _{2}** = 1.05

**p** = 1000

We can substitute these into equations [1] and [2] to get **w** and **z**:

* w = (1.05 × 1,000) / (1.136 – 1.05) = $*12,157.89

* z = (1,000 + 12,157.89)(1.05 – 1) = $*657.89

How do we know from this how many $0.88 shares to buy on PredictIt? We want our profit to be the same as if it were an exchange such as Betfair – that is: **p + z**. Our $1,000 target profit (**p**) plus some more profit to cover for the loss on Betfair (**z**). If we win, this can be formulated as a function of the buy (**b**) and sell (**s**) prices and the number of shares, **n**:

**p** + **z** = (**s ×** **n**) – (**b ×** **n**)

Re-arranging to be in terms of **n**, we get:

**n** = (**p** + **z**) / (**s** – **b**)

Plugging in our numbers:

**n** = ($1,000 + $657.89) / ($1 – $0.88)

**n** = *$*1,657.89 / $0.12

* n = *13,816

So we need to buy 13,816 shares.

OK, we’re about to start parting with money now, so let’s keep a running total of how much down (or up) we are. First we buy 13,816 Biden shares on PredictIt priced at $0.88 each, costing us:

*13,816 × $0.88 = $12,158.08*

So our P/L is currently:

*-$12,158.08*

Next, we stake our *$*657.89 liability on Betfair at odds of 1.05. So our P/L drops by a further *$*657.89 making it:

*-$12,815.97*

Now we wait for an outcome.

Let’s suppose President Biden wins. In this instance we get no money back from Betfair because the bettor who took the other side of bet we laid, won, meaning they get to keep our staked liability of *$*657.89. However we do have 13,816 shares on PredictIt which are now worth $1 each. If we sell all these shares we make $13,816 it brings our P/L up to:

*$1,000.02*

In the unlikely event President Biden *does not win*, then all 13,816 of our PredictIt shares are now worthless but we do get our staked $657.89 Betfair liability back, since the bettor who took the other side of that bet has now lost, and owe them nothing, bringing our P/L up to:

*-$12,158.08*

This is the cherry. Now for the Sundae: finally, we get to keep the entire backer’s stake, which, at odds of 1.05 is:

*$657.89 / (1.05 – 1) = $13,157.89*

Bringing our final P/L to:

*$999.80*

*Please note that the math presented here contains some rounding errors. I used about 7 digits of precision in most calculations. The errors in these kinds of calculations can get quite big due to dividing very large numbers by very small numbers. I recommend you use as many decimal places as possible.*