gaming - How to calculate odds of roulette “Strategy”

I know that this strategy shouldn't work, but I can't seem to get the math to work to make it fail, and when I model it; it succeeds. I'm obviously missing something, but can't see what.

In American roulette, you can place a bet that the ball lands:

• Between 1 and 12 (inclusive)
• Between 13 and 24 (inclusive)
• Between 25 and 36 (inclusive)

Winning one of these bets pays 2:1 (e.g. I spend 5, I win 15; I profit 10).

The strategy goes like this:

1. Place 5 dollars on the 1st 12 and 5 dollars on the 2nd 12.
2. If you win, you make 5 dollars (the most you ever make with this "strategy"), and start over at step 1.
3. If you lose, double down until you win or you hit the table limit (6 unsuccessful bets). If you come this far without winning, you lose 630 dollars.

If my math's right, the odds that you lose 6 times in a row is $(14/38)^6$ and the odds of winning at least once is $1 - (14/38)^6$. Multiplying each by their payout and I get:

Winning = $5 * (1 - (14/38)^6) = 4.987$

Losing = $630 * (14/38)^6 = 1.575$

I model this in Excel and in javaScript and both appear to be profitable. What am I missing?

edit: code

// Keep track of our win count, loss count,
// How much money we have to play with
var hsh = {
win: 0,
lose: 0,
balance: 1000
},
// Way to track how many times we've lost
// We can't lose more than 6 times in a row
tracker = 0,
// These are the odds that we don't win our spin
odds = 14 / 38;

// Lets roll 10,000 Spins
for(var i = 0; i < 10000; i++){
// Pick a random number between 0 - 1.
// If the number is greater than our odds
// then we win Five Whole Dollars!
if(Math.random() > odds){
// add 1 to our win count and $5 to our balance hsh.win++; hsh.balance += 5; // Reset the tracker tracker = 0; } else { // LOST THE SPIN // add 1 to the tracker tracker++; // Since we can only go 6 spins without // reaching the table limit, our double-down // strategy...fails :( if(tracker === 6){ // Reset the tracker tracker = 0; // Add another one to the loss column hsh.lose++; // Deduct$630 from our balance...ouch :(
hsh.balance -= 630;
}
// We can't play anymore if we don't have
// Any money
if(hsh.balance <= 10){
break;
}
}
}

// Calculate our win ratio
hsh.odds = hsh.win / (hsh.win + hsh.lose);
// Write out
console.log(hsh);

• Please explain how you calculate \$630. – vadim123 May 21 '15 at 20:51 • 630 = 10 (initial bet), 20 dollars (2nd bet) 40 dollars (3rd bet), 80 dollars (4th bet), 160 dollars (5th bet), 320 dollars (6th and final bet). 10 + 20 + 40 + 80 + 160 + 320 = 630. – JWally May 21 '15 at 20:53 • Okay, now suppose you win in the 2nd round. You triple one of your \$10 bets, to make \$30. But you've already put in \$30. So you don't win \$5, you just break even. Later rounds are similarly incorrectly computed. – vadim123 May 21 '15 at 20:54 • If you win, you start over. I'll edit the question. – JWally May 21 '15 at 20:56 • It's hard to say why your code gives a profit without seeing it but this is basically the classical martingale system and is shown by Optional Stopping Theorem to have expectation 0 – Slug Pue May 21 '15 at 21:14 1 Answer I'm just formulating vadim123's comment as an answer: Your analysis went wrong by saying that you win$5\ with a probability of $1-(14/38)^6$.

This is not true. For example, suppose that you lose the first game ($-10\$ $) and win the second (+$20\$/2$) this means that you didn't make any profit.

Silimarly, if you lose the 2 first games ($-10 \$ $and$ - 20\) and win the third ($+40\$/2 $) you lose$10\. If you do the simulations correctly, you will see that on average you lose money playing this (or any other) strategy

• I see it now. Knew that I was missing something, just couldn't figure out what! – JWally May 21 '15 at 22:16
• So profitability = $15 * 2^{(x-1)} - \sum\limits_{i=0}^{x-1} 10*2^i$ – JWally May 21 '15 at 22:38