マーチンゲール法のシミュレータを作成して可視化してみた
はじめまして、らいつんです。初投稿です。最近、ハイローオーストラリアのようなバイナリーオプションやルーレットの赤か黒のような勝率が50%(または限りなくそれに近い)のギャンブルにおいてマーチンゲール法を適用したらどれぐらい資金が増やせるかに興味が湧いたのでPythonを使ってシミュレートしてみようと思い立ったので記事に書いてみました。これからはしばらくギャンブル系、バイナリーオプションのような金が絡んだ遊びをハックしていくような記事を投稿し続けると思います。だって、稼ぎたいでしょ?ね?
・マーチンゲール法とは?
資金n円を最初に所持していたとする。負けたら次回の投資金額は2n円、勝ったらn円に投資金額を戻し、負け続けている間は勝つまで投資金額を2倍に増やしていく。そうすることにより、一度でも勝つと負け額を回収した上で資産もプラスになるといった方法である。しかし、これは資金がものを言う賭け方で、負けが重なって資金を倍にしていく過程で資金が尽きてしまうと成り立たなくなるので注意。想定はペイアウト2倍、勝率50%のギャンブルで、50%勝率のギャンブルにおいて10連敗する確率は1/2^10=1/1024で思っていたよりあり得る確率である。仮に初期投資額が1000円で10連敗すると1000+2000+4000+...+512000=1023000円も資金が必要になる。
・じゃあ、どれぐらいの勝率、資金が必要なの?
これが一番気になったのでじゃあ試行回数を増やして検証してみようと思い立ったのでマーチンゲール法で資金がどれぐらい増えるのか、どれぐらい資金が必要なのかを実際に検証するためマーチンゲール法を可視化してみるプログラムを作ってみよう!ってなりました。今回の条件設定は以下の通りです。
-勝率は50%、初期資金は1000円
-投資時点で資金が0を下回ったら破産したと判定し、その時点で終了
-資産は100,200,300万
-試行回数は1000回、10000回
-環境:Python3.7.1、可視化はmatplotlib
まずは初期パラメータの設定
import random
from matplotlib import pyplot as plt
//資金(100万〜300万)
money = 1000000
//初期投資金額
bet_ini = 1000
//勝率()
p = 0.5
//試行回数(ここを1000or100000に変える)
trial = 1000
//ペイアウト
payout = 2
//matplotlib用(x:試行回数y:総資産)
x = []
y = []
//投資金額をセット
bet = bet_ini
ここからマーチンゲール法のロジックを書いていきます
そのままfor文の中で勝った時はbetを初期化、負けた時はbetを2倍にしていきましょう。結果を可視化するためにx,yにそれぞれパラメータをappendします。乱数の生成は、
import random
random.random()
で取得できます。このままだと0.21862081853530146のような値が0~1の範囲内で出力されます。そしてこの値が閾値p以下になる確率がちょうどp%と表せるので、if文で場合分けをしましょう。
//試行回数trialの数だけ行う
for i in range(trial):
//ここでベットするので資金を減らします
money -= bet
//この時点で資金が尽きたらループを抜けてマーチンゲールは終わり
if(money < 0):
print("破産しました")
x.append(i)
y.append(money)
break
else:
print("%d円賭けます"%bet)
#乱数(0~1)生成
num = random.random()
//勝った時は初期投資に戻す
if(num < p):
money += bet*payout
bet = bet_ini
//負けた時は投資額を2倍にする
if(num >= p):
bet = bet*2
print("口座残高:%d"%money)
x.append(i)
y.append(money)
//可視化処理
plt.plot(x,y)
plt.show()
結果:
-money=1000000、trial=1000
-money=1000000、trial=10000
さすがマーチンゲールといったところでしょうか。1つ目の図で連敗が続き、総資産が10万を切ることがあっても1回の勝ちで全て取り戻し順調に増やしてフィニッシュです。1000回単位だと割と安定して勝てた印象です。しかし、試行回数を増やすとある時点で上のように一気に資産を溶かしかねませんね...
-money=2000000、trial=1000
-money=2000000、trial=10000
200万円の時もだいたい同じ挙動をしていますね。やっぱりこれぐらいの資金だと10連敗もしてしまうと一度に破産してしまうことがわかります。
-money=3000000、trial=1000
-money=3000000、trial=10000
なら300万はどうか?おもって試してみましたが6000回付近で惜しくも破産。それまでは順調に600万まで増えていただけにもったいないですね...
検証結果:300万あっても破産する
まとめ
マーチンゲール法を可視化して資金の変動を探ってどれぐらい増えるのか、どれぐらい資金が必要なのかを検証しました。実際は300万あっても足りないって言うオチでしたね。(もしこの記事を見てシミュレータを作ってみたあなたは資金のパラメータを色々触って検証してみるといいですね)巷では必勝法と言われて何も考えずに使ってしまいがちですが、確率の世界で試行回数を増やして実際にシミュレートして分析すると見えてくるものもありますね。マーチンゲール法は資金が限りなく無限に存在する事を前提としているとの話もありますので、もし適用される場合を気をつけて... 次回はマーチンゲール法に手を加えて破産する可能性をなるべく減らすようなロジックを作ってみます。お楽しみに!
この記事が気に入ったらサポートをしてみませんか?