Labouchereベッティングシステムの検証

Labouchere」といわれるベッティングシステムを検証してみました。
その検証結果を紹介します。
↓ ↓ ↓

Labouchereベッティングシステムとは

Labouchereベッティングシステムとは、以下のようなものです。

  1. まず紙に「1 1 1 1 1 1 1 1 1 1 1」と書きます。
    各番号は賭け単位(unit)を表します。
  2. 左の数字と右の数字の合計を賭け数とします(1つの数字だけ残っている場合はその数を賭け数とします)。
  3. 勝った場合は、両端の数字を消します。
  4. 負けた場合は、両端の数字を合計した数を右端に書き足します。
  5. すべての数字が消されるか(1セッション終了)、当初想定した最大損失に到達するまで、この手順を繰り返していきます。

マーチンゲールと比べて、連敗しても一気に賭け数が増えないシステムとなっています。

検証する際の設定値、検証方法

  • BASE_UNITS(最初のかけ数リスト):[1,1,1,1,1,1,1,1,1,1]
  • BASE_BANKROLL(当初資金):1000
  • 勝率:50%

※最初の賭け数はBASE_UNITSの左端と右端の数の合計(1+1=)2単位となります。

100回勝負を1000回繰り返し、その平均最終残高と損益合計を算出します。
なお、途中で資金が0以下になったら終了します。

検証結果1

20回分の検証結果が以下になります。(100回勝負×1000回テスト20回分の結果)
平均最終残高/損益合計

  1. 985.44/-1456(負)
  2. 814.97/-18503(負)
  3. 968.77/-3123(負)
  4. 964.57/-3543(負)
  5. 1094.39/9439(勝)
  6. 1037.04/3704(勝)
  7. 1091.32/9132(勝)
  8. 956.11/-4389(負)
  9. 923.84/-7616(負)
  10. 1089.63/8963(勝)
  11. 849.28/-15072(負)
  12. 1019.7/1970(勝)
  13. 1030.72/3072(勝)
  14. 945.7/-5430(負)
  15. 886.81/-11319(負)
  16. 891.75/-10825(負)
  17. 952.37/-4763(負)
  18. 967.09/-3291(負)
  19. 913.86/-8614(負)
  20. 1056.56/5656(勝)

当初資金より平均額が上回ったのは20回中7回と負けが込んでしまいました。

検証結果2

途中で資金が底を付いたのが原因かもしれないと考えて、
再度、当初資金(BASE_BANKROLL)を10倍の10000として20回のテストを行いました。

  1. 10174.56/17456(勝)
  2. 10093.4/9340(勝)
  3. 10014.7/1470(勝)
  4. 9955.02/-4498(負)
  5. 9713.67/-28633(負)
  6. 9886.62/-11338(負)
  7. 9764.79/-23521(負)
  8. 9959.07/-4093(負)
  9. 10361.7/36170(勝)
  10. 10021.91/2191(勝)
  11. 9704.66/-29534(負)
  12. 10061.14/6114(勝)
  13. 9966.68/-3332(負)
  14. 9990.49/-951(負)
  15. 9344.75/-65525(負)
  16. 10222.44/22244(勝)
  17. 10008.92/892(勝)
  18. 9520.13/-47987(負)
  19. 10402.8/40280(勝)
  20. 9824.36/-17564(負)
  21. 10241.15/24115(勝)

結果は、20回中勝ちが10回となり、若干良くなりました。
しかし、賭け数が最大6072になることもあったり、とても実用的ではありません。

検証結果3

最後に、当初資金を10000のまま、勝率を55%に上げて同様にテストしてみました。

  1. 10641.18/64118(勝)
  2. 10661.42/66142(勝)
  3. 10797.82/79782(勝)
  4. 10792.48/79248(勝)
  5. 10768.55/76855(勝)
  6. 10794.21/79421(勝)
  7. 10654.47/65447(勝)
  8. 10653.98/65398(勝)
  9. 10669.02/66902(勝)
  10. 10544.87/54487(勝)
  11. 10771.13/77113(勝)
  12. 10772.16/77216(勝)
  13. 10796.52/79652(勝)
  14. 10777.77/77777(勝)
  15. 10769.39/76939(勝)
  16. 10805.06/80506(勝)
  17. 10665.5/66550(勝)
  18. 10667.68/66768(勝)
  19. 10650.67/65067(勝)
  20. 10807.11/80711(勝)

全勝となりました。
しかし、この場合でも最大賭け数が2366にもなる場合があり、とても実用的とは言えません。

ちなみに勝率51%としても19勝1敗と好結果でした。
十分な資金と50%より若干でも勝率の高い手法(そんな手法が存在するならば)で回数をこなせばほぼ勝てると言えます。

検証コード配布

以下は検証に使ったコードです。(python)
詳細の説明は省きます。よければ参考にしてみてください。
何か新しい発見があれば、コメント欄に報告していただけるとありがたいです。

import random
import copy

num = 0
BASE_UNITS = [1,1,1,1,1,1,1,1,1,1]
units = copy.deepcopy(BASE_UNITS)
BASE_BANKROLL = 1000
maximum_unit = 1
BANKROLL_ALL = 0
GAIN = 0

times = 10
times2 = 1000
while num < times:
    num2 = 0
    BANKROLL=BASE_BANKROLL
    units = copy.deepcopy(BASE_UNITS)
    unit = units[0]+units[len(units)-1]
    max_unit = 1
    while num2 < times2:
        judge = random.randint(1,100)
        if judge>50:
            BANKROLL+=unit
            units.pop()
            if len(units)>0: units.pop(0)
            if len(units)<=0:
                units = copy.deepcopy(BASE_UNITS)
                unit = units[0]+units[len(units)-1]
        else:
            BANKROLL-=unit
            units.append(units[0]+units[len(units)-1])
            unit = units[0]+units[len(units)-1]
        if BANKROLL<=(BASE_BANKROLL-300):
            break
        max_unit = max(unit,max_unit)
        num2+=1
    maximum_unit = max(max_unit,maximum_unit)
    BANKROLL_ALL += BANKROLL
    GAIN += BANKROLL - BASE_BANKROLL
    num+=1
    print("BANKROLL    " + str(BANKROLL) +  "  " + str(max_unit) +  "  " + str(maximum_unit))

print(str(BANKROLL_ALL/times) +  "  " + str(GAIN))</code>

コメント

タイトルとURLをコピーしました