ギャンブルにおけるマーチンゲール法って、皆さんご存じですか?理論上負けないとも、必勝法とも言われている有名な手法です。
マーチンゲール法を使ったら儲かるのか?気になったので、Pythonでコードを書き、シミュレートしてみました。
マーチンゲール法とは?
マーチンゲール法とはギャンブルの資金管理術の1つで、たとえ何連敗していても、1回勝てば、連敗した時の損失をすべて取り返せるというものです。
- 勝ってる間は掛け金を変えない
- 負けたら掛け金を2倍にする
- 連敗中に勝ったら掛け金をリセット
マーチンゲール法の条件設定とPythonの環境
- 勝率: 47.5%
- 資金: 1000
- 掛け金: 1
Pythonの実行環境
- OS: Windows10 64bit
- Python: 3.9.6
- matplotlib: 3.4.3
以上の条件でマーチンゲール法を使った場合、どの位稼げるのか検証してきます。
マーチンゲール法をPythonで記述したコード
from random import randint
import matplotlib.pyplot as plt # グラフを書くライブラリ
import matplotlib.ticker as ticker
def martingale(balance, times, initial_bet=1, lose_cut_times=None):
"""
martingale(残高, 回数, 掛け金, 損切りする回数を設定)
"""
serial_loss = 0 # 連敗数
bet = initial_bet
global bankrupcy
x = []
y = []
for i in range(1, times+1):
if balance < bet: # 破産
# グラフの数値を追加
x.append(i)
y.append(balance)
bankrupcy += 1
break
balance -= bet
result = randint(0, 10000)
if result >= 5250:# 勝ち
balance += (bet*2)
bet = initial_bet
serial_loss = 0
else:# 負け
serial_loss += 1
bet *= 2
# 一定回数の連敗でリセット
if lose_cut_times and serial_loss == lose_cut_times:
bet = initial_bet
# グラフの数値を追加
x.append(i)
y.append(balance)
# グラフの出力
plt.plot(x, y)
plt.xlabel("times")# x軸の名前
# # X軸の数字をオフセット表示を無効化
plt.gca().get_yaxis().get_major_formatter().set_useOffset(False)
plt.ylabel("balance")# y軸の名前
plt.show()
if __name__ == "__main__":
bankrupcy = 0
trials = 1
for j in range(trials):
martingale(10000, 1000)
print(f'{trials}回中、破産{bankrupcy}回')
今回はFreeBitcoinのハイローでマーチンゲール法を使った時を想定してプログラムを記述しました。
(フリービットコイン)とは、ビットコインが無料でもらえるフォーセットサイトです。
1時間に1回ルーレットを回すと最大200ドル分のビットコインを受け取れます。
0から10,000の中からランダムで数字を生成し、数字が5250以上の時を勝ち、とします。
balance -= bet
result = randint(0, 10000) # 0から10,000の中からランダムに生成
if result >= 5250:# 勝ち
bet = initial_bet # 掛け金のリセット
serial_loss = 0
else:# 負け
bet *= 2 # 掛け金を2倍
処理の最後に資金の増減確認のため、matplotlibというグラフ描画ライブラリを使ってグラフを出力します。
import matplotlib.pyplot as plt # グラフを書くライブラリ
import matplotlib.ticker as ticker
Pythonでマーチンゲール法をシミュレートしてみた結果
試行回数100回
[1回目]
試行回数1,000回
[2回目]
試行回数10,000回
[3回目]
実行してみると試行回数が多ければ多いほど、順調に資金が多くなっていきますね。
途中で負けがあっても掛け金を増やすことで見事に損失を取り戻しており、マーチンゲール法の良さがでています。
しかし3度目のシミュレーションでは、途中の連敗に耐えきれなくなり破産してしまいました。
マーチンゲール法の危険性
必勝法なんて言われているマーチンゲール法ですが、確かに破産する人はいます。
なぜ破産するのか、それは上で破産したシミュレーションの通り、連敗の途中で資金が耐えきれなくなるからです。
ベット数が倍々で増えていくこの手法の性質上、連敗が続くほど掛け金は膨れ上がっていきます。
勝率50%で10連敗したときの掛け金と起こる確率 | |||
連敗数 |
掛け金 |
合計損失 |
起こる確率 |
1連敗 |
¥100 |
¥100 |
50.00% |
2連敗 |
¥200 |
¥300 |
25.00% |
3連敗 |
¥400 |
¥700 |
12.50% |
4連敗 |
¥800 |
¥1,500 |
6.25% |
5連敗 |
¥1,600 |
¥3,100 |
3.13% |
6連敗 |
¥3,200 |
¥6,300 |
1.56% |
7連敗 |
¥6,400 |
¥12,700 |
0.78% |
8連敗 |
¥12,800 |
¥25,500 |
0.39% |
9連敗 |
¥25,600 |
¥51,100 |
0.20% |
10連敗 |
¥51,200 |
¥102,300 |
0.10% |
仮に10万円の資金、掛け金100円でマーチンゲール法を行ったとき、10連敗、合計:102,300円の損失で破産しゲームが続行できなくなります。
10連敗は確率上では0.1%ですが油断してはいけません。
実際に、1913年にモナコのカジノでルーレットの「黒」が26連続出たという記録があります。
この時、掛け金100円で26連敗したとして計算すると、なんと67億円の損失にものぼります。確率は6660万分の1。こんな低い確率でも実際に起こり得るのです。
破産のリスクを減らすために検証してみる
- 所持金を増やす
- 一定回数でリセット
ここからはどうしたらマーチンゲール法の破産のリスクを減らせるのか、検証していきます。
簡単に行える方法として、上の2つの方法を試していきます。
- 検証で得られた結果はあくまで確率で起こったこと。この条件でやった場合に同じ結果になるわけではないことに注意してください。
- あくまで目安として捉えてください。
破産のリスクの比較は各シミュレーションを100セットを行い、100セット中に破産した回数で判断していきます。
ちなみに上の条件(試行回数1,000回)でやった時は100回中、52回破産になりました。
資金を増やしてみる
資金を増やしたらどうなるか?
単純に考えると多ければ多いほど破産しにくくなるはずですが。どうなるでしょうか。
資金を先ほど試したときより10倍と100倍多くした、1万と10万で検証していきます。
1万の資金で検証した場合
1万:1,000回 100回中8回破産
10万の資金で検証した場合
10万:1,000回 100回中1回破産
結果は予想通り、資金は多ければ多くなるほど如実に破産する回数が減っています。
一定回数でリセットしてみる
負けが一定回数続いた時に、損切り、つまり掛け金のリセットを行い、破産のリスクを減らせるか検証していきます。
途中で損切りをすることで損失を抑え、より長く生き残れるようにするというわけです。
損切りは、8回連続(0.39%の確率)で負けたときに行います。普通に考えて0.39%を引くのは相当運が悪いということですから、8連敗したら潔く諦めるといった感じです。
1万の資金、損切りありで検証した場合
1万:損切りあり1,000回 100回中0回破産
10万の資金、損切りありで検証した場合
10万損切りあり:1,000回 100回中0回破産
グラフで見ると連敗が続いた時に損切りを行っており、うまく破産させずに最後まで完走できてるようですが、損切りが続いた結果、元の資金より減った状態で終わるようにもなっていますね。
検証のまとめ
100回中破産した回数 | |||
100回 |
1,000回 |
10,000回 | |
通常(所持金1000) |
14 |
52 |
94 |
1万に増やす |
1 |
8 |
69 |
10万に増やす |
0 |
1 |
12 |
8連敗でリセット |
0 |
0 |
3 |
8連敗でリセット |
0 |
0 |
1 |
検証の結果、所持金が多い且つ、損切りをすると一気に破産リスクが低くなりました。
ただ、損切りを行うと破産リスクは一気に下がりますが、その分、資金がマイナスになってしまうという欠点も出てきました。
まとめ:Pythonでマーチンゲール法で稼げるか検証してみた
- 資金が少ない状態でマーチンゲール法をやると破産のリスクが高い
- 資金:掛け金 の比がを10,000:1になると破産のする確率がぐっと低くなる
- 損切りを行うと資金がマイナスになることがあるが、生き残りやすくなる
今回は必勝法といわれているマーチンゲール法をPythonでシミュレートしました。
このマーチンゲール法は「一度でも勝てば損失をチャラにできる」というとても魅力ある手法ですが検証の結果、そのままこの手法をやると破産する危険性が高いとわかりました。
コメント