Roulette Money Machine
By: Matthew Bailey
Tags: Programming, Gambling, Python, Tutorial, Roulette

Spoiler Alert: It Doesn’t Exist.

During a lunch break at work many years ago, a coworker of mine came up with this brilliant money making strategy:

Travel to Atlantic City, NJ with a fistful of dollars Bet Red or Black on the roulette wheel If you lose, double your bet Eventually you will hit your color, maybe even on the first spin! Your inevitable win guarantees a profit equal to your original bet Repeat for INFINITE PROFIT

Now, you probably realize why this is silly. If it actually did work, someone would have already thought of it and casinos that offered roulette would be bankrupt. But if you think of it 6 steps at a time it almost… makes sense? Eventually you WILL hit your color. And by doubling your bet each time, you CAN guarantee a profit. So why can’t you just rinse and repeat? Where does this all go wrong? Let’s set up a simulation to see why this strategy will eventually fail.

The Game

If you’re not familiar with roulette, the basics are simple. A wheel containing 38 numbers rotates in place, and at the beginning of each round the dealer spins a small white ball around the edge. Players place bets one where they think the ball will land. The standard American version of the game has the numbers 1–36 along with 0 and 00. There are many combination bets you can make in the game (all evens, the first 12, split numbers) but for the purpose of this test we’re going to keep it simple and only focus on two bets:

Hitting a COLOR pays 1:1. Ex: If you bet $10 on Red and it hits, you get back $20 for a $10 profit.

Hitting a NUMBER pays 35:1 Ex: If you bet $10 on 7 and it hits, you get back $360 for a $350 profit.

As you can see in this simplified picture of the betting area, there is some nuance to how colors are assigned to numbers. The Red-Black pattern reverses three times, which you can see in the creation code below.

Setup

Now we have all the numbers and corresponding colors in a dictionary. Randomly returning an entry will represent spinning the wheel.

Before we even start running some tests, we know that both of these strategies are losers in the long run[1] just by using some basic math. Betting on a color will win ~47.37% of the time, while a number will win ~2.63% of the time. When we add the value of hitting each of these bets, we can see that with both strategies we can expect to recoup 94.74% of the amount that we wager over the long run.

[1] Heck, we know this to be true without doing any sort of calculation just based on that fact that roulette is offered in a casino.

Now, let’s write some functions that will help us run some tests.

Color Bet Strategy

Now let’s test the strategy we introduced in the beginning: The “Color Bet” strategy. We’ll stick with one color, and spin the wheel n times. We’ll start with an initial bet, and if we lose we’ll double it. Anytime we win, we’ll return to the initial bet on the next spin. Here’s the function we’ll use to keep track of the results:

Here’s what might happen if we use our color bet strategy on 10 consecutive spins:

A profit of $40! Nice. But Obviously there’s going to be a lot of variability in our results. Let’s run a bunch of iterations of the strategy and see what we can gather from it. Each trial will still be 10 spins, but we’ll run it 100,000 times instead of just once.

Long Run Findings

This array is what our cumulative profit looks like after each spin of the wheel. Each row is a different trial, with the end cumulative profit of each represented by the last column.

Let’s break down some stats about our test by passing the color_sim_arr to the findings() function:

So 81.75% of the time, our strategy resulted in a profit! That seems promising right? However, we know from earlier that we can’t beat the game in the long run. So what is happening? The next few stats tell the story. Our average loss is much higher than our average win, resulting in a long run average loss of almost $20 per trial. So when we do lose, we lose big! All it takes is a few losses in a row at the end of our trial for the losses to add up quickly.

BUT the fact remains that if we wanted to run the strategy just once, we could bank on the fact that 4 out 5 times we will see some sort of profit. However, are you O.K. with being down some money at some point in the 10 spins 84% of the time? How about when the average amount you are down is about $150 when you only stand to make $44 on an average winning trial? And what if the unthinkable happens and you lose all 10 spins! With a starting bet of $10 you could be looking at a loss of $10,230! Although, this would be quite rare:

Let’s Just Keep Spinning…

What if you didn’t stop at 10 spins in a trial? What do you think would happen? EVENTUALLY you’ll hit and your profits will continue to rise…but here’s what that might look like:

Here’s an example result. You can see that the profits do trend upwards. But as you do more and more spins, the probability of hitting a long losing streak becomes a statistical certainty. Would you be able to deal with being down over $8,000, which means your next bet would be $16,000? Barring the fact that there are maximum bets you can make at roulette tables, and that most people probably don’t have the liquid cash ready to throw down on something as silly as a roulette spin, eventually you will run into this problem and your money machine dreams will be kaput.

And this isn’t even the worst one. Look at this potential result:

Down $80,000!

The variability and conclusions we summarized earlier in our 10 spin tests all apply here, just at a greater scale. There are losing streaks even worse than this to be had!

Oh well. Maybe we should learn to count cards at the blackjack table instead…

Just kidding.