D’Alembert simulation#
Created by a French mathematician in the 1800s, this strategy stands the test of time. It’s often likened to the Martingale strategy, only less risky.
from roulette import Roulette
from core import *
from simulations_core import *
from simulations_plots_core import *
roulette = Roulette()
def transformation_on_win(bet_history):
next_bet = bet_history[-1] - 1 if (bet_history[-1] - 1) > 0 else bet_history[-1]
return next_bet, bet_history
def transformation_on_loss(bet_history):
return bet_history[-1] + 1, bet_history
The D’Alembert strategy follows a simple structure that only works on even bets, like red or black. Before you play, decide on a set amount of money to act as a unit, for example $1. If you win the bet, decrease the next bet by one unit, and if you lose, increase the next bet by one unit.
def dalembert_betting(goal_money_won, bet = 1, money_limit = None):
return goal_money_betting_even_bet(roulette, goal_money_won, bet, transformation_on_loss,
transformation_on_win, money_limit)
money_goals = [10, 100, 500, 1000]
Starting bet = 1, Allowed money lost = -10#
bet = 1
money_histories = simulate_different_goal_money(
betting_type = dalembert_betting,
goal_money_list = money_goals,
number_histories = 10000,
start_bet= bet,
money_limit= -10*bet)
successful_histories = get_successful_histories(money_histories, money_goals)
for goal in money_goals:
print(f"For goal {goal} mean money won:")
print(get_mean_money_won(money_histories, goal))
print(f"For goal {goal} mean money lost:")
print(get_mean_money_lost(money_histories, goal))
For goal 10 mean money won:
10.323592441067602
For goal 10 mean money lost:
-13.281487569344565
For goal 100 mean money won:
101.08658008658008
For goal 100 mean money lost:
-14.070054797464275
For goal 500 mean money won:
502.969696969697
For goal 500 mean money lost:
-14.516609623515201
For goal 1000 mean money won:
1003.75
For goal 1000 mean money lost:
-14.584969939879759
Analysis when the goal is to win 10 units#
UNITS = 10
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Analysis when the goal is to win 100 units#
UNITS = 100
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Analysis when the goal is to win 500 units#
UNITS = 500
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Analysis when the goal is to win 1000 units#
UNITS = 1000
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Starting bet = goal, Allowed money lost = -10*goal#
money_histories = dict()
for goal in money_goals:
bet = goal
tmp_money_histories = simulate_different_goal_money(
betting_type = dalembert_betting,
goal_money_list = [goal],
number_histories = 10000,
start_bet= bet,
money_limit= -10*bet)
money_histories = money_histories | tmp_money_histories
successful_histories = get_successful_histories(money_histories, money_goals)
for goal in money_goals:
print(f"For goal {goal} mean money won:")
print(get_mean_money_won(money_histories, goal))
print(f"For goal {goal} mean money lost:")
print(get_mean_money_lost(money_histories, goal))
For goal 10 mean money won:
11.321283325802078
For goal 10 mean money lost:
-107.20731707317073
For goal 100 mean money won:
103.07509033423668
For goal 100 mean money lost:
-1033.479020979021
For goal 500 mean money won:
502.9665835976439
For goal 500 mean money lost:
-5045.529010238908
For goal 1000 mean money won:
1003.0391511575125
For goal 1000 mean money lost:
-10054.299663299664
Analysis when the goal is to win 10 units#
UNITS = 10
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Analysis when the goal is to win 100 units#
UNITS = 100
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Analysis when the goal is to win 500 units#
UNITS = 500
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Analysis when the goal is to win 1000 units#
UNITS = 1000
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Starting bet = goal, Allowed money lost = -20*goal#
money_histories = dict()
for goal in money_goals:
bet = goal
tmp_money_histories = simulate_different_goal_money(
betting_type = dalembert_betting,
goal_money_list = [goal],
number_histories = 10000,
start_bet= bet,
money_limit= -20*bet)
money_histories = money_histories | tmp_money_histories
successful_histories = get_successful_histories(money_histories, money_goals)
for goal in money_goals:
print(f"For goal {goal} mean money won:")
print(get_mean_money_won(money_histories, goal))
print(f"For goal {goal} mean money lost:")
print(get_mean_money_lost(money_histories, goal))
For goal 10 mean money won:
11.494012299061387
For goal 10 mean money lost:
-211.54172366621066
For goal 100 mean money won:
105.11465106198526
For goal 100 mean money lost:
-2047.300518134715
For goal 500 mean money won:
505.957669108143
For goal 500 mean money lost:
-10138.343575418994
For goal 1000 mean money won:
1006.0268624252311
For goal 1000 mean money lost:
-20148.766459627328
Analysis when the goal is to win 10 units#
UNITS = 10
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Analysis when the goal is to win 100 units#
UNITS = 100
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Analysis when the goal is to win 500 units#
UNITS = 500
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Analysis when the goal is to win 1000 units#
UNITS = 1000
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Starting bet = goal, Allowed money lost = -30*goal#
money_histories = dict()
for goal in money_goals:
bet = goal
tmp_money_histories = simulate_different_goal_money(
betting_type = dalembert_betting,
goal_money_list = [goal],
number_histories = 10000,
start_bet= bet,
money_limit= -30*bet)
money_histories = money_histories | tmp_money_histories
successful_histories = get_successful_histories(money_histories, money_goals)
for goal in money_goals:
print(f"For goal {goal} mean money won:")
print(get_mean_money_won(money_histories, goal))
print(f"For goal {goal} mean money lost:")
print(get_mean_money_lost(money_histories, goal))
For goal 10 mean money won:
11.576980093180856
For goal 10 mean money lost:
-313.58992805755395
For goal 100 mean money won:
105.50802997858672
For goal 100 mean money lost:
-3067.1954545454546
For goal 500 mean money won:
509.08187259512613
For goal 500 mean money lost:
-15306.826086956522
For goal 1000 mean money won:
1008.6657402458578
For goal 1000 mean money lost:
-30315.883720930233
Analysis when the goal is to win 10 units#
UNITS = 10
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Analysis when the goal is to win 100 units#
UNITS = 100
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Analysis when the goal is to win 500 units#
UNITS = 500
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)
Analysis when the goal is to win 1000 units#
UNITS = 1000
plot_successful_bets(money_histories[UNITS], UNITS, title=f"Successful bets for {UNITS}")
mean_money_list, std_money_list = get_mean_and_std_of_histories(successful_histories, UNITS)
plot_money_history(mean_money_list, std_dev=std_money_list, title=f'Successful simulations mean and std for {UNITS} units')
plot_money_histories(successful_histories, UNITS)