Roulette Strategy

While researching casino games I came across an interesting roulette strategy that piqued my interest. The strategy was simple:

  • Bet a unit of money in a 1:1 bet, such as Red or Black, or Odd or Even.
  • If you win, pocket the winnings and do it again.
  • However, if you lose, simply double the bet and try again.

At first the strategy seemed fail-proof. Given enough chances you were bound to win and, if you doubled your bet every time you lost, you would recover your original bet and win one unit of money in the process. For example:

I Bet $5 on Black, roll is 19 Red and I lose. Following the strategy, I double my bet and bet $10 on Black again, roll is 00 and I lose again. So far I have invested $15 in this streak ($5 + $10) and have won nothing. However, I persist and keep to the strategy. I bet $20 on Black again, roll is 17 Black and I win $20.

From the $20 I win I recover all of my original bets ($5 + $10) and I gain an extra $5 on top. This seems amazing: just rinse and repeat and collect free money, right? Well, not really as it turns out. Of course, casinos gave this seemingly profitable algorithm some thought when designing the game and developed a few tricks to keep it at bay:

  • The inclusion of 0 and 00 reduce the chance of winning a standard 1:1 bet from 50% to about 47.37%.
  • A maximum bet limit, typically 100x the minimum bet, keeps the exponential doubling of the original bet to a limit, effectively rendering the strategy in vain.
  • While not casino-developed, the bet may exceed the player’s limited budget which would also limit the doubling and end the strategy.

So, just like any other casino game, this strategy needed a little bit of luck in order to be profitable. So it got me thinking: if I set a threshold in winnings, such as $50 from a $100 playing budget, and quit while I was ahead instead of continuing indefinitely as the initial strategy would suggest, would I be able to reduce the risk and turn a profit? That’s what we’re about to find out.

Always being more of a realist than a theorist, I decided to write a script which would simulate thousands of roulette rolls as opposed to calculating the probability on a piece of paper. I booted up Sublime Text and wrote a simple Python function that would simulate 100 rolls and simply report whether or not it hit a predetermined winning threshold, or lost all of its money, while following the algorithm. I set the function to simulate a player with a $1,000 playing budget and a $5 minimum bet (and a $500 maximum bet as a result). Here it is:

def simulate_rolls(QUIT_LIMIT):
	money = 1000
	bet = 5

	for x in range(100):

		if (money - INIT_MONEY) > QUIT_LIMIT: break
		if bet > money: break
		if bet > 500: break

		money -= bet
		roll = random.randint(1, 38)

		if roll is 1 or roll is 38: #0 or 00
			bet *= 2

		elif (roll % 2) is 1: #Lose the bet
			bet *= 2

		elif (roll % 2) is 0: #Win the bet
			money += bet * 2
			bet = 5

	if (money - INIT_MONEY) > 0: #Won money
		return 1
	else: #Lost money
		return 0

I varied the winning threshold from $5 to $500 by multiples of $5 (I originally allowed the winning threshold up to $2,000, but after about $250 the chance of winning would stay about constant at 59%). For every winning threshold, I ran the simulation 1,000 times and averaged the results. As a whole, 10,000,000 rolls of roulette were “made”.

I also calculated the efficiency of each threshold. In essence, the efficiency of each threshold was defined to be the chance of each threshold winning times the profit from each threshold.

I ran the simulator, exported the results as a .csv, and uploaded them to Google Sheets to build a graph:

Chance of hitting threshold and efficiency of threshold

Wow! Following our original algorithm plus some self-control we were able to increase the winning chance from well- to reasonably-above the 50% “coin-flip” mark, depending on how greedy the winning threshold is set. Also, the efficiency of each threshold increased linearly since, while the chance of hitting the threshold settled at around 59%, the winning threshold increased.

While the chart above looks incredible, we haven’t beaten the casino just yet. The above scenario assumes a 1:200 bet-to-budget ratio that, while not unheard of, is not realistic. Also, the results above are in the long-run, 1,000 games of roulette in the long-run to be exact, which is also definitely not realistic.

In order to see how the chart would change when given reasonable parameters, I re-ran the simulation with a more realistic budget of $100 (a 1:20 bet-to-budget ratio) and a limit of three games per threshold. The results were way less satisfying:

Chance of hitting threshold and efficiency of threshold

The results reflect the statistical nightmare of having a small sample size: no clear pattern and incredibly high deviation. Moreover, they emphasize the randomness of casino games for practical purposes, especially since, as expected, the chart changes every time I run the simulation. There is no strategy or order in this chart, just luck.

So, in conclusion, if you want a realistic and sure-fire way to win money in the casino you better start looking for a four-leaved clover.

About these ads

2 thoughts on “Roulette Strategy

  1. Wow, this is pretty funny. Earlier this summer I was thinking about the same scenario. Except, I went a different way with the parameters of the simulation. I parameterized over the probability of winning each round (like you say in Roulette, 47.37%) and the “betting multiplier” (by what factor do you increase your bet after losing). Just as you concluded, you are bound to hit that maximum bet set by the casino. Four leaf clover indeed.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s