Martingala y apuestas con random
A continuación vemos como simular con numpy
la martingala. Esta es una estrategia de apuestas que se popularizó en la ruleta y tiene la siguiente estructura:
- 🎲 Se comienza con una apuesta inicial. Se apuesta siempre al ⚫.
- ⚫ Si se gana, se vuelve a la apuesta inicial.
- 🔴 Si se pierde, se dobla la apuesta.
La esencia de esta estrategia es que cuando perdemos, doblamos la siguiente apuesta para intentar recuperar la cantidad perdida. En la teoría, suena bien.
Podemos implementar esta estrategia de la siguiente forma. Se define una cantidad inicial
, una apuesta
, una probabilidad de ganar prob_ganar
y una cantidad objetivo
después de la cual se para la simulación.
import random
def martingala(inicial, apuesta, prob_ganar, objetivo):
balance = inicial
bet = apuesta
while balance > 0 and balance < inicial + objetivo:
rojo = random.random() < prob_ganar
if rojo:
balance -= bet
bet *= 2
else:
balance += bet
bet = apuesta
if bet > balance:
break
return balance
Como puedes ver el código usa random
para generar el evento. El while
hace que continuamente se apueste mientras haya balance y no hayamos llegado al objetivo. Puedes ver los dos escenarios claramente definidos:
- 🔴 Si sale
rojo
perdemos. Doblamos la apuestabet
. - ⚫ Si se gana
negro
ganamos. Volvemos a la apuesta inicial.
Ahora podemos usar nuestra función con unos parámetros concretos. Usamos un balance inicial de 1000
Euros, usando una apuesta inicial de 10
Euros, con una probabilidad de ganar del 48%
y un objetivo de 2000
Euros. Vemos el resultado.
print(martingala(inicial=1000,
apuesta=10,
prob_ganar=0.48,
objetivo=2000))
Como puedes comprobar ejecutando la simulación múltiples veces, en la mayoría de las ocasiones se pierde. Esto es debido a que una racha de mala suerte hace que la apuesta crezca exponencialmente, y llegue un punto donde no se puede afrontar.
✏️ Ejercicios:
- Modifica los valores para buscar una estrategia que reduzca el riesgo de bancarrota.