_____________________________________________________________________________________
Inhalt....: Anhang Roulettestrategien
Kategorie.: Arbeitsblatt
Mathematik: Stochastik, Programmierung
MuPAD.....: 3.1.0
Datum.....: 2005-07-04
Autoren...: Thorsten Fraas <thorstenfraas@gmx.de>
Funktionen: contains, for, has, if, local, begin, proc, random, op
Funktionen: plot::Polygon2d, plot
_____________________________________________________________________________________
Empirische Untersuchung von Roulettestrategien V
Zur Einführung bitte die Einleitung in Notebook "roulette1.mnb" lesen.
Dieses Notebook beschäftigt sich (wie schon in den Notebooks "roulette1.mnb"
und "roulette2.mnb" angesprochen) mit der Programmierung der Einfachen
Martingalstrategie und der Supermartingalstrategie.
Es unterscheidet sich von Notebook "roulette2.mnb" darin, dass hier in die Pro-
zeduren der beiden Strategien eine Sonderregel für das Verhalten beim Erscheinen
der Null integriert wurde.
Der Spieler erhält beim Setzen auf die Einfachen Chancen nämlich die Hälfte seines
Einsatzes zurück, wenn die Null auftaucht.
Dem interessierten Leser bleibt es überlassen, diese Sonderregel in die Prozeduren
der übrigen Strategien zu integrieren, um das Roulettespiel 100%ig zu modellieren.
Aufbau dieses Notebooks:
1. Progressionsspiele
a) Einfache Martingalstrategie
b) Supermartingalstrategie
1. Progressionsspiele
a) Einfache Martingalstrategie
Es soll die bekannte Verdoppelungsstrategie beim Roulette - auch Einfache Martingalstrategie
genannt - empirisch untersucht werden. Die Strategie sieht folgendermaßen aus:
Der Spieler beginnt mit KG Euro und setzt m Euro auf die Einfachen Chancen (Rot oder Schwarz,
Gerade oder Ungerade, Manque (Zahlen 1-18) oder Passe (Zahlen 19-36)).
Beim Auftreten der Null gibt es eine Sonderregel: Der Spieler erhält die Hälfte seines Einsatzes
zurück. Wenn der Spieler gewinnt, legt er den gewonnen Euro zu seinem Kapital und spielt weiter.
Falls der Spieler verliert, setzt er den doppelten Betrag des vorhergehenden Einsatzes ein.
Damit hofft er, eine Verlustserie mit einem Gewinn auszugleichen und sogar noch einen Euro
zu gewinnen.
Ein möglicher Spielverlauf könnte also sein:
1. Spiel: 1 Euro gesetzt - verloren
2. Spiel: 2 Euro gesetzt - verloren
3. Spiel: 4 Euro gesetzt - verloren
4. Spiel: 8 Euro gesetzt - gewonnen.
Diese stufenweise Steigerung der Satzhöhe nennt man Progression. Da sich die Steigerung
immer auf das vorher verlorene Spiel bezieht, ist diese Art der Strategie eine Verlustprogression.
Die Steigerung endet mit einem gewonnen Spiel und beginnt dann wieder von vorne, d.h., dass
dann ein neuer Progressionslauf beginnt. In unserem Beispiel hatte der Spieler vor dem 4. Spiel
insgesamt 7 Euro verloren, nun gewinnt er nach dem 4. Spiel auf einen Schlag 8 Euro und hat
insgesamt einen Euro gewonnen. Dies hört sich gut an, doch in der Strategie verbergen sich
Gefahren. Diese Gefahren sollen deutlich gemacht werden.
Zuerst die Prozedur: Wir simulieren stellvertretend für alle Einfachen Chancen das Setzen
auf gerade Zahlen.
martingal:=proc(n,KG,m)
local K,S,i,Z,A,Kapital,l,Bild;
begin
K:=[KG, 0 $ n]://Gesamtkapital vor dem
//Spiel und jeweils nach j Spielen, j=1..n
S:=[m, 0 $ n-1]://Einsatz in den n Spielen
Z:=[0 $ n]://Zahlen, die in den n Spielen fallen
A:=[[0 $ 4] $ n]:
Z[1]:=random(0..36)():
if Z[1] mod 2=0 and Z[1]>0
then K[2]:=K[1]+S[1]: S[2]:=S[1]:
/*im Fall von Gewinn setzt man bei
dieser Strategie immer das gleiche
wie im vorangegangenen Spiel*/
elif Z[1] mod 2=1
then K[2]:=K[1]-S[1]: S[2]:=2*S[1]:
/*im Fall von Verlust setzt man immer
das Doppelte des Vorangegangenen*/
else K[2]:=K[1]-S[1]/2: S[2]:=S[1]/2:
/*im Fall der Null setzt man die Hälfte dessen, was man
vorher gesetzt hat*/
end_if:
for i from 2 to n-1 do
Z[i]:=random(0..36)():
if Z[i] mod 2=0 and Z[i]>0 then
K[i+1]:=K[i]+S[i]:
S[i+1]:=S[1]:
elif Z[i] mod 2=1 then
K[i+1]:=K[i]-S[i]:
S[i+1]:=2*S[i]:
else K[i+1]:=K[i]-S[i]/2: S[i+1]:=S[i]/2
end_if:
end_for:
Z[n]:=random(0..36)():
if Z[n] mod 2=0 and Z[n]>0 then K[n+1]:=K[n]+S[n]:
elif Z[n] mod 2=1 then K[n+1]:=K[n]-S[n]:
else K[n+1]:=K[n]-S[n]/2:
end_if:
return(K);
end_proc:
Nun gibt man an, wie viele Spiele man spielen und mit welchem Anfangsbetrag man starten will
Die folgende Liste gibt die Spielstände an, wenn 10 Spiele gemacht werden, der Spieler
mit 50 Euro beginnt und sein Starteinsatz immer 1 Euro ist.
martingal(10,50,1)
![]()
Die folgende Grafik verdeutlicht den Spielverlauf nach 100 Spielen mit einem Anfangsbetrag von
50 Euro anschaulich.
Man gewinnt auf Dauer ungefähr in jedem zweiten Spiel einen Euro, aber eine längere Verlustserie
ruiniert den Spieler (abhängig vom Starteinsatz).
Dazu im Folgenden mehr.
kurve1:=martingal(100,50,1):
Punkte1:=[n,kurve1[n]]$n=1..100:
plot(plot::Polygon2d([Punkte1],
AxesTitles=["Spiel","Kontostand"]));

Wir sehen an dem obigen Beispiel, dass man nach 100 Spielen mit einem Anfangsbetrag von
50 Euro ungefähr 100 Euro in der Tasche hat.
Nun ist es interessant zu betrachten, was geschieht, wenn das Tischminimum nicht 1 Euro,
sondern m Euro ist. Schließlich existieren in Deutschland Tische mit 2,5,10, 20 und auch
50 Euro Tischminimum.
Als Beispiel wählen wir einmal 5 Euro Minimum:
martingal(10,50,5)
![]()
Auch diese Werte wollen wir einmal graphisch veranschaulichen. Je größer das Tischminimum,
desto größer werden natürlich auch die Ausschläge der Kurve, weil durch das Verdoppeln die
Einsätze schneller anwachsen.
kurve2:=martingal(100,50,5):
Punkte2:=[n,kurve2[n]]$n=1..100:
plot(plot::Polygon2d([Punkte2],
AxesTitles=["Spiel","Kontostand"]));

Der Leser beachte die Ausschläge unter die x-Achse.
Das Spiel wäre natürlich bereits nach dem ersten Erreichen der x-Achse beendet, weil der
Spieler bankrott wäre.
b) Supermartingalstrategie
Die Supermartingalstrategie ist eine Abwandlung der Einfachen Martingalstrategie.
Das Progressionsschema der Supermartingale verläuft steiler als das der Einfachen
Martingale: 1-3-7-15-31-63-127-255-511-1023.
Der vorhergehende Einsatz wird verdoppelt und eine Satzeinheit wird noch addiert.
Ansonsten sind die Regeln die Gleichen, wie bei der Einfachen Martingalstrategie
Wir wollen diese Strategie gleich mit einem beliebigen Tischminimum m simulieren:
supermartingal:=proc(n,KG,m)
local K,S,Z,i;
begin
K:=[KG, 0 $ n]://Gesamtkapital vor dem Spiel
//und jeweils nach j Spielen, j=1..n
S:=[m, 0 $ n-1]://Einsatz in den n Spielen
Z:=[0 $ n]://Zahlen, die in den n Spielen fallen
Z[1]:=random(0..36)():
if Z[1] mod 2=0 and Z[1]>0
then K[2]:=K[1]+S[1]: S[2]:=S[1]:
/*im Fall von Gewinn setzt man bei
dieser Strategie immer das gleiche
wie im vorangegangenen Spiel*/
elif Z[1] mod 2=1
then K[2]:=K[1]-S[1]: S[2]:=2*S[1]+m:
/*im Fall von Verlust setzt man immer
das Doppelte des Vorangegangenen zuzüglich
einer Satzeinheit*/
else K[2]:=K[1]-S[1]/2: S[2]:=S[1]/2:
/*im Fall der Null setzt man die Hälfte dessen, was man
vorher gesetzt hat*/
end_if:
for i from 2 to n-1 do
Z[i]:=random(0..36)():
if Z[i] mod 2=0 and Z[i]>0 then
K[i+1]:=K[i]+S[i]: S[i+1]:=S[1]:
elif Z[i] mod 2=1 then
K[i+1]:=K[i]-S[i]: S[i+1]:=2*S[i]+m:
else K[i+1]:=K[i]-S[i]/2: S[i+1]:=S[i]/2
end_if:
if S[i+1]>=K[i+1] then print("Bankrott vor Spielende");
break:
end_if;
end_for:
Z[n]:=random(0..36)():
if Z[n] mod 2=0 and Z[n]>0 then K[n+1]:=K[n]+S[n]:
elif Z[n] mod 2=1 then K[n+1]:=K[n]-S[n]:
else K[n+1]:=K[n]-S[n]/2:
end_if:
return(K);
end_proc:
Bei der Programmierung haben wir dieses Mal berücksichtigt, dass der Spieler aufhören muss
zu spielen, wenn er kein Geld mehr hat, der Einsatz also größer als das Kapital wird.
supermartingal(10,50,2)
![]()
kurve3:=supermartingal(100,500,2):
Punkte3:=[n,kurve3[n]]$n=1..100:
plot(plot::Polygon2d([Punkte3],
AxesTitles=["Spiel","Kontostand"]));
"Bankrott vor Spielende"

Wir sehen: Die Kurve verläuft wesentlich steiler als bei der Einfachen Martingalstrategie. Der
Spieler kann im Schnitt pro Spiel mit 2 gewonnen Satzeinheiten rechnen, durch die hohen
Einsätze allerdings auch mit einer höheren Wahrscheinlichkeit für größere Verluste, die ihn
schneller in den Bankrott bringen können.
_______________________________________________________________
Anmerkungen:
1. Weitere Anregungen zum Einsatz von MuPAD in der Lehre finden Sie auf unserem WebPortal
MuPAD in Schule und Studium unter: http://schule.mupad.de bzw. http://studium.mupad.de.
2. Mathematische Formeln in diesem Notebook stammen aus der Examensarbeit
"Roulette - Theorie und Simulation eines Glücksspiels", die vom Autor im Rahmen
der Ersten Staatsprüfung für das Lehramt an Gymnasien im Jahr 2004 am
Institut für Mathematische Stochastik an der Georg-August Universität in
Göttingen angefertigt wurde. Die programmierten Roulettestrategien wurden im
Rahmen dieser Arbeit ebenfalls mathematisch untersucht.
Der interessierte Leser sei darauf verwiesen. Entsprechende Teile der Arbeit
können gerne auf Anfrage beim Autor angefordert werden.
_______________________________________________________________________________