見出し画像

No.15 GTO Wizard Blogの解釈記事【How to solve toy games】

本記事はGTO Wizard Blogを私なりに解釈し、友人に説明するならどのように書くかな?と再まとめしたものとなります。
今回の記事は「How to solve toy games」になります。

承認欲求を満たすために是非「♡」をお待ちしております。
X(Twitter)のフォローもお待ちしております。


今回の記事はトイゲームについて記載をしようと思う。トイゲームは、ゲーム理論をより理解するためにポーカーをより簡略化後、本質を理解していくものである。ポーカーは複雑なゲームであり、GTO をその場で計算することは不可能だ。これをトイゲームに落とし込むことで、より簡単に解くことができ、GTOの理解に役に立つだろう。

さぁ、休日も座学をしていこう。

■ 導入

トイゲームを理解するためにはMDF、ポットオッズ、EVの計算方法などが必要だ。そのため、軽く以下にておさらいをしよう。

  • MDF はベット側のブラフをインディファレントにするために、ディフェンス側の必要なコール頻度を示す。

    1. (筆:相手のブラフに利益を与えないようするための、コール頻度でしたね。相手のベット(ブラフ)をベットとチェックの間でインデファレントにする=混合戦略にする=同じEVにする。ってことですね。)

  • ポットオッズは、ディフェンス側がコールに必要なEQを示す。またポットオッズの値はベット側レンジのブラフ含有率の理論値である(ブラフ/バリュー比)。

全ての計算を素早くできるように、一覧表を再掲する。

数値一覧表


■ 1つ目のトイゲーム

【狙い】
本トイゲームは拡張性があり、派生トイゲームの原型となる。基礎中の基礎のトイゲームになるため、まずは本トイゲームをしっかり理解しよう。また、こんがらがってしまうことがよくあるため、これはどちらの視点に立って考えるべきなのか?を整理したうえで考えてほしい。

ポーラライズレンジ vs. ブラフキャッチャーレンジのトイゲームを考えていこう。一方のプレイヤーはナッツ/エアーのポーラライズされたレンジを持っていて、もう一方の相手プレイヤーはブラフキャッチャーのみのレンジを持っている。

  • プレイヤー1 (OOP):AA 50%, QQ 50%

  • プレイヤー2:KK 100%

  • ボード:22233

  • ポット:10

  • お互いのスタック:10

  • どちらのプレイヤーもAIするか、チェックができる。

トイゲームの状況

プレイヤー1は相手がKKを持っていることがわかっている。よって、自分が勝っているのか、負けているのかを知っているのである。
では、このトイゲームを実際に解いていこう。


STEP1:支配的な戦略の排除

支配的な戦略とは、シンプルに言えば取る意味のない戦略のことである。

(筆:例えば、リバーのIPでナッツを持っているのに、チェックをする。等が挙げられますね。)

今回の支配的な戦略は「KKは必ずチェックする。」というものである。なぜならば、KKがベットをした場合、勝っているQQにはフォールドされ、負けているAAにコールされるだけだからである。そのため、KKはリスクを負わず、チェックをしてQQから利益を頂こう。また、プレイヤー1がチェックをした場合はKKがチェックをするだけなため、ベットが必要だ。そのため、AAは全てベットし、相手がKKでコールをしてくれることを祈ろう。もし、相手がベットをしない戦略を取る場合はナッツをスロープレイする必要はない。


STEP2:ブラフとバリュー比を計算

(筆:【注】ベッター側の視点になります。)

STEP1にて、バリューであるAAは全てベットする。と決めた。では次はブラフの頻度を確認していこう。

どのくらいの頻度でブラフをすべきだろうか?ブラフをしすぎると、KKは常にコールして、エクスプロイトをしてくるだろう。

(筆:これはGTO観点ではなく、エクスプロイト観点になります。加えて、ディフェンス側の視点です。理論値よりも相手のブラフが多いのであれば、ブラフキャッチャーは常にコールをすべきになります。)

ブラフが少なすぎると、常にフォールドされるだろう。

(筆:なぜディフェンスをしないといけないのか?を改めて考えてみてください。それは相手のブラフで利益をあげさせないために適切な頻度でディフェンスをする必要があったからでした。相手にブラフが少ないのであれば、そもそも相手のブラフで利益が出ないため、ブラフキャッチャーでディフェンスはしなくてもいい。ということですね。)

従って、最適な戦略はKK がコールとフォールドの間で「インディファレント」になるようなベットすることである。

(筆:これは相手がコールするために必要なポットオッズ「丁度」を与えてあげると、コールしてもいいし、フォールドしてもいいし、どちらでもよくなりますね。)

ではポットオッズを計算しよう。本トイゲームのベットサイズはポットベットである。

ポットオッズ = (コール額) / (コール後のポット) = 1/3(33%)

従って、ベットレンジの 33%(2:1)をブラフにする必要がある。今回AAを全てベットし、バリューブラフ比は2:1であるため、半分のQQをブラフとしてベットすることとなる。そうすることで、相手がコールとフォールドの間でインデファレントとなる。


STEP3:KKがコールする頻度を計算

(筆:【注】コーラー側の視点になります。)

KK がフォールドしすぎる場合、ベッターは100%の頻度にてブラフをすることでエクスプロイトすることができる。 反対にKK があまりフォールドしない場合は、ブラフ頻度を0%にして、バリューベットをするだけで KK をエクスプロイトできる。従って、コーラー側のGTO戦略はベッターのブラフがベットとチェック(諦め)の間でインデファレントになるように、コールすることである。

上記を達成するためには、MDFに従ってコールをする必要がある。ではMDFを計算していこう。

MDF = pot / (bet + pot) = ½

従って、50%の頻度でコールする必要があることがわかった。

検討したGTO戦略を以下にまとめよう。

AAは常にベットし、QQ は半分の割合でベットとチェックの混合戦略を取る。 KK は半分の割合でコールとフォールドの混合戦略をとり、チェックされた場合は常にチェックダウンする。


STEP4:トイゲームを拡張する

これまで、ポットベットAIのみ&レンジを固定し、検討を行った。

もし

  • ベットサイズが違っていたらどうなるだろうか?

  • レンジ内にもっと多くのバリューやブラフがある場合はどうなるだろうか?

このトイゲームの場合、「解はベットサイズの関数」であるため、拡張していこう。このベットサイズの関数として「s」を導入する。

s = bet/pot
(筆:ポットは固定な数値、ベットが変数となる関数を表していますね。)

本トイゲームを再度まとめると以下の通りである。

  • 常にAAはベットする。

  • QQのブラフは相手に正しいポットオッズを与えるようにする。

  • MDFに従って、KKはコールする。

この中でベットサイズの変数が含まれている指標はポットオッズとMDFである。そのため、各種指標を「s」で書き換えてみよう。

MDF = pot /(bet + pot) = pot × (1/pot) / (bet + pot) × (1/pot) = 1 / [(bet/pot)+1] = 1/(s+1)

ポットオッズ = bet / (2bet + pot) = s/(2s+1)

ベットに直面する KK のEQ(ポットオッズ)はベットレンジ内のブラフの割合であることを思い出そう。そうすると、ポットオッズの式は以下のように表すことができる。

Bluffs / (Value + Bluffs) = s/(2s+1)

ではこの式を利用して、実際に計算をしてみよう。例えば、33%betを受けた場合はどうなるだろうか?

s = bet/pot = 0.33/1 = 0.33

MDF = 1/(s+1) = 1/(0.33 + 1) = 0.75
→ MDFの75%と一致。

ポットオッズ = s/(2s+1) = 0.33 / (2×0.33+1) = 0.2
→ ポットオッズの20%と一致。

次の例として、以下の状況にて、各プレイヤーのGTO戦略はどうなるだろうか?

Pot = 10、Bet = 7
プレイヤー1:AAは5コンボ、QQは6コンボ
プレイヤー2:KK

まずは「s」を計算しよう。

s = bet/pot = 7/10 = 0.7

次にMDFを計算しよう。

MDF = 1/(s+1) = 1/(0.7+1) = 0.59
→KKはレンジの59%をディフェンスする必要がある。

プレイヤー1のベット戦略はもちろんAAは100%の頻度でベットとなる。ではブラフはどれくらいの頻度でベットする必要があるだろうか?

Bluffs / (Value + Bluffs) = s/(2s+1)
Bluffs / (5 + Bluffs) = 0.7/(1.4+1)
Bluffs = 0.7× (5 + Bluffs) /(1.4+1) = 1.45 + 0.29Bluffs
Bluffs = 2.04
→QQ 6コンボの内、2コンボをブラフに回すことになる(QQの1/3はブラフとしてベットする)。

このように判断に何か足りないピースを計算することができる。
※今回の場合だと、ブラフの頻度を計算した。

(筆:じゃあポットベットだったら?バリューのコンボ数が少なくなったら?等、様々な場合を座学として計算をしておくことはとても有意義ですね。)


■ 2つ目のトイゲーム

【狙い】
1つ目のトイゲームを拡張したトイゲームとなる。1つの条件が追加されただけでポーカーがどれだけ複雑になるか。また基礎となるトイゲームにどのようにして条件を付与したらいいのか(より実践に近づけるための方法になる)。を学ぼう。

1つ目のトイゲームはポーラライズレンジ vs. ブラフキャッチャーレンジのトイゲームであった。では、もしブラフキャッチーレンジにトラップを追加したらどうなるだろうか?下記図のようなトイゲームを考えていこう。

トイゲームの状況

基本情報

リバーにてボードが33222の時、相手がチェックしてきた。相手のレンジは 90%がブラフキャッチャー、10%はトラップであることがわかっている。君は50%のバリューハンドと50%のブラフをレンジに有していて、ポジションはIPである。

相手のレンジ:90% QQ、10% AA
君のレンジ:50% KK、50% JJ
君は好きなサイズでベットすることができ、相手はコールか、フォールドしかできないものとする。

もし相手がトラップを持っていなかったら、君は相手に可能な限りの不利なオッズを与え、最大バリューを稼ぐためにただAIするだけで済む。

(筆:単純なナッツ/エアーであれば、ナッツに合わせてベットサイズが組まれましたね。そして、在りうる最大サイズのベットをし、適正なブラフを混ぜ込むことで最大限のバリューが取れることを思い出しましょう。)

しかし、本トイゲームの場合、君のバリューハンドはトラップに負ける可能性がある。そのため、ベットが大きすぎると、相手のトラップにペイオフすることになる。一方でベットが小さすぎると、相手のブラフキャッチャーから十分なバリューを引き出すことができなくなる。

このトイゲームが面白い部分はベットサイジング理論の基本原則を示しているからである。実際、最適なベットサイズはナッツアドバンテージに依存するのである。


トイゲームを解こう

以下の定義を設けることとする。

s = bet/pot
t = 相手レンジのトラップ割合
q = コールされた時の君のEQ
c = 相手がコールする割合

STEP1:相手のコールレンジを計算

君がベットする際、相手はMDFに従ってディフェンスをする。ただし、相手のトラップは決してフォールドしないため、少し修正を加えよう。

call% (c) = Max ( MDF, traps%) = Max (1/(1+s), 10%)

何を表しているかというと、相手は MDF を守るが、コール頻度はレンジ内のトラップ割合 (この例では 10%) を下回ることはない。ということである。相手はMDFに従ってディフェンスしているため、君のブラフは常に0EVになる。


STEP2:コールされた場合のバリューハンドのEQを計算

君のバリューハンドはトラップに負けるため、コールされた時のバリューハンドのEQを知り、EV方程式を作成する必要がある。

コールされた時のEQはベットサイズの関数である。ベットサイズが大きくなるほど、より多くのブラフキャッチャーがフォールドし、比例してより多くのトラップがコールレンジ内に残ることとなる。従って、バリューハンドのEQ (q) は、相手がコールするトラップに対するブラフキャッチャーの割合に等しくなる。

コールされた時のEQ = コールレンジ内のブラフキャッチャー% = (call% – trap%) / call%
q = ((c-t) / c)


STEP3:EVを計算

ベットする時のEVを表す方程式を見つける必要がある。最適なベットサイズはEVを最大化する。V相手がMDFに従ってコールするため、ブラフのEVは0ある (ベットサイズが大きすぎるとマイナスになる可能性があるが、それは無視する)。そのため、EVはバリューハンドから得られることになる。

EV (value bet) = call%(コールされた時のEV) + fold%(pot)
EV (value bet) = call%(win% * (pot + bet) – (lose% * bet)) + fold%pot

これは少し計算が面倒であるため、これを変数に置き換えよう。

  • Bet% = s

  • Pot = 1 (ポットを正規化した)

  • Call% = c

  • Win% と lose% = q と (1-q)

EV (value bet) = c(q(1+s) – s(1-q)) + (1-c)

これをさらに一歩進めて q に置き換えることもできる。

EV (value bet) = 1+s(c-2t) - t

(筆:式の導出なので意味不明な方は飛ばしてしまっても問題ないです。)

STEP4:ベットサイズ別EVのグラフ化

最適なベットサイズを見つける簡単な方法は、ベットサイズに対するEVをグラフ化し、グラフ上の最高点を選択することである。

ベットサイズによるEV

この関数をグラフ化すると、最適なベットサイズは 123% ポットであることがわかる。ただし、現実的には100%~150%の間であれば、ほぼ同じEVになる。

一応、これを数式化すると以下のとおりである。

数式

(筆:これをポーカー中に計算することは不可能です。自身で計算を予めしておいて、引き出しとして持っておけば良いと思います。また原理原則として、トイゲームを捉えておけばいいと思います。相手にトラップのレンジがないのであれば、最適バリューブラフ比でAIをする。トラップが含まれるのであれば、最適なベットサイズでベットをする。今後もいろいろなトイゲームを紹介できればと思います。)

この記事が気に入ったらサポートをしてみませんか?