Obiecuje pewne zwycięstwo w teorii, ale poddajemy strategię obstawiania Martingale praktycznemu testowi. Czy podwajanie stawki działa? Recenzja z symulacjami i filmem.
Metoda Martingale powstała we Francji w XVIII wieku i do dziś pozostaje jedną z najbardziej znanych strategii zakładów. Jej popularność można przypisać trzem rzeczom:
Jak wiemy, w ruletce możemy obstawiać, czy kulka wyląduje w czerwonym czy czarnym polu. Jeśli zgadniemy, wygrywamy kwotę równą naszemu zakładowi, czyli jeśli zakład wynosi 100$, to wygrana również wynosi 100$ (wraz z zakładem otrzymujemy łącznie 200$).
Załóżmy, że obstawiamy 100$ na czerwone. Zgodnie ze strategią Martingale, jeśli przegramy zakład, podwajamy stawkę w następnej rundzie, czyli stawiamy 200$ na czerwone. To gwarantuje, że jeśli czerwone wygra, odzyskamy 100$ straconych w pierwszej rundzie, a także zyskamy dodatkowe 100$. Jeśli znowu wygrałoby czarne, ponownie podwoilibyśmy stawkę, stawiając 400$ na czerwone. W zasadzie podwajamy nasz zakład na czerwone, dopóki nie wygra. Gdy tak się stanie, możemy zacząć proces od nowa, przywracając podstawowy zakład do 100$.
W praktyce ta metoda jest głównie ograniczona przez dwa czynniki:
Aby pomóc Ci w zastosowaniu tej strategii, przygotowaliśmy arkusz kalkulacyjny Excel, w którym możesz wprowadzić wielkość swojego początkowego zakładu, a następnie dowiedzieć się, ile więcej musisz postawić w przypadku każdej przegranej. Możesz użyć tego narzędzia do gry w ruletkę lub inną podobną grę, w której możesz wygrać z powrotem podwójną stawkę. Podobnie możesz skorzystać z poniższej tabeli, która zakłada początkowy zakład w wysokości 100 dolarów. Tabela pokazuje również prawdopodobieństwo przegranej serii w ruletce europejskiej (takiej jak zakłady na czarno/czerwono).
Krok przegranej | Wymagany zakład | Szansa na wystąpienie |
---|---|---|
1 | 100 | 48.600000% |
2 | 200 | 23.6196000% |
3 | 400 | 11.4791256% |
4 | 800 | 5.5788550% |
5 | 1,600 | 2.7113236% |
6 | 3,200 | 1.3177032% |
7 | 6,400 | 0.6404038% |
8 | 12,800 | 0.3112362% |
9 | 25,600 | 0.1512608% |
10 | 51,200 | 0.0735128% |
11 | 102,400 | 0.0357272% |
12 | 204,800 | 0.0173634% |
13 | 409,600 | 0.0084386% |
14 | 819,200 | 0.0041012% |
15 | 1,638,400 | 0.0019932% |
16 | 3,276,800 | 0.0009687% |
17 | 6,553,600 | 0.0004708% |
18 | 13,107,200 | 0.0002288% |
19 | 26,214,400 | 0.0001112% |
20 | 52,428,800 | 0.0000540% |
Aby odpowiedzieć na to pytanie, stworzyliśmy program komputerowy, który symuluje 10 000 zakręceń ruletki i symulowanego gracza, który stosuje tę strategię. Kod źródłowy tej symulacji można również zobaczyć w tym artykule.
Przeprowadzając symulację, czyli 10 000 zakręceń ruletki, 100 razy, odkryliśmy, że ta strategia pozwoliła osiągnąć zysk tylko 11 razy. W tych przypadkach gracz zakończył grę z kwotą pomiędzy dwukrotnością a sześciokrotnością swojego początkowego kapitału. Jednak w większości przypadków, czyli pozostałych 89 razy, saldo graczy wyczerpywało się znacznie przed 10 000. rundą.
Ogólnie można powiedzieć, że ta strategia jest w stanie wygenerować dodatnie saldo w krótkim okresie. Jednak prędzej czy później gracz napotyka na serię pecha, co prowadzi do utraty całego kapitału.
Możesz uruchomić kod Python dla symulacji Martingale. Najlepiej nadaje się do uruchomienia w środowisku notatnika Jupyter, takim jak darmowy notatnik Google Colab.
import random
import seaborn as sns
import matplotlib.pyplot as plt
mpockets = ["Red"] * 18 + ["Black"] * 18 + ["Green"] * 1
mrolls = []
def makeRandomRolls():
global mrolls
mrolls = []
mi = 0
while mi < 10000000:
mi += 1
mrolls.append(random.choice(mpockets))
def always_red_Martingale(bankroll, maxspin):
bankroll = 100
bet = 1
currentSpin = -1
pockets = ["Red"] * 18 + ["Black"] * 18 + ["Green"] * 1
bankroll_history = []
roll_history = []
betTrigger = False
while (bankroll > 0) and (currentSpin < maxspin):
currentSpin = currentSpin + 1
roll = mrolls[currentSpin]
roll_history.append(roll)
if bet > bankroll:
bet = bankroll
#print('!!! BET Larger than bankrol. Setting max bet to: ' + str(bankroll))
if betTrigger == True:
if roll == "Red":
#print('!!! Bet placed and Won. Bet was: ' + str(bet))
bankroll += bet
bet = 1
betTrigger = False
else:
bankroll -= bet
bet *= 2
#print('!!! Bet placed and LOST. New bet is: ' + str(bet))
if (currentSpin > 2) and \
(roll_history[-1] == "Black") and \
(roll_history[-2] == "Red"):
betTrigger = True
bankroll_history.append(bankroll)
return bankroll_history
sns.set(rc={'figure.figsize':(18.7,8.27)})
MS = 10000
makeRandomRolls()
plt.plot(always_red_Martingale(bankroll=100,maxspin=MS), linewidth=2, label='Player using Martingale strategy, always bets on red (with 1 USD)')
plt.xlabel("Number of roulette spins", fontsize=18, fontweight="bold")
plt.ylabel("Balance (USD)", fontsize=18, fontweight="bold")
plt.xticks(fontsize=16, fontweight="bold")
plt.yticks(fontsize=16, fontweight="bold")
plt.title("How balance changes with each roulette spin (bet)", fontsize=22, fontweight="bold")
plt.legend(loc="upper left")