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
rojoperdemos. Doblamos la apuestabet. - ⚫ Si se gana
negroganamos. 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.