統計は冷酷だ

ポーカー、ゲーム、サッカーなどについて考えていきたい。自分の為にもブログを更新していこうと思う。

レイズされない時のベットサイジング

こんにちは

今回は「The Mathematics of Poker」P.151のExample14.3の[0,1]gameについて書いていきます。

OOPが強制check、raiseなしで、eff stackが無限であるときのGTOです。

この内容「The Mathematics of Poker」の中でも一番理解するのに時間がかかるところの一つだと思います。


状況は
X: [0,1]の一様乱数
Y: [0,1]の一様乱数
pot: 1, eff stack: infinity

X(OOP)が強制check
Y(IP)は自由なベットサイズを選択できる

XはYのベットに対してcall or foldする。raiseをすることはできない。
ショウダウンになったら数字が小さい(大きいでも同義)方が勝ちという仮定の元でのgameを考えたものです。


この条件の元でのGTOについて考えていきます。
ちなみに0がEquityが100%のハンド、1がEquityが0%のハンドだとして考えています。


まずYのベット額tに対してXのcallとfoldの境界をx(t)とします。
つまり、どんな小さなベットに対してもfoldする境目がx(0)です。
このx(0)の値をx_0とします。


Xの戦略に関して

XはYのブラフハンドyでのベット額sのベットに対してブラフハンド最上位のハンドでのcheckとEVが同じになるようにdefenceします 。



\begin{eqnarray*}
y - x(s) - sx(s) &=& k\  \   ~ (kは定数)\\
x(s) &=& \frac{(y-k)}{(1+s)}\\
\end{eqnarray*}


y-x(s)はブラフ成功によるもの、-sx(s)はブラフ失敗によるものです。
この式を最初にみたときしっくりこなかったので、こちらのnoteに自分なりにわかりやすく書いてみました。

note.com




ブラフの最上位のハンドの利益は0なので、 y - k = x_0
従って、 x(s)  = \frac{x_0}{(1+s)}とかけます。

この結果をみてもわかるように、XはYのブラフの最上位のハンドがブラフとcheckのEVを同じになるようにdefenceすればいいということになっています。

Yの戦略に関して

Yのvalue betの利得関数f(s)を考えて、x(s)のコールレンジに対してバリューハンドyでどのくらいバリューベットすれば一番利得が得られるかを求めていきます。


\begin{eqnarray*}
f(s) &=& y(-s) + (x(s) -y)s\\
f(s) &=& sx(s) - 2sy\\
\end{eqnarray*}



y(-s)はさらに強いハンドにコールされてしまう場合、(x(s)-y)sはバリューが取れた場合について考えています。


f(s)s微分すると
f’(s) = sx’(s) + x(s) - 2y


 f’(s) = 0 になる時がf(s)が極大であり、その時のy
       y(s) = \frac{x_0}{2(1+s)^2}
と求められます。


なぜs微分するかですが、Yの特定のハンドyに対して利得関数を求めており、その特定のハンドyに対して最適なベット額を求めているからです。


Xはベット額sによってYのバリューハンドが何かわかるという状態です。(ここはもしかしたら語弊があるかもしれません)


   y(s) =  \frac{x_0}{2(1+s)^2}          より
     dy =  \frac{ x_0}{(1+s)^3 }  ds


ベット額sの変化に対してバリューハンドyがどれくらい変化するかがわかりました。

またYはXがbluff catcherのハンドでcallしてもfoldしても同じEVになるようにするので、
Yのブラフレンジはバリューに比べて  \frac{s}{1+s}  の割合あります。


従ってYのブラフレンジの割合は

  \int ^{\infty} _0 \frac{sx_0}{(1+s)^4} ds      で求められます。


この積分を求めて
    \int ^\infty_0   \frac{sx_0}{(1+s)^4} ds =\frac{1}{6} x_0



従って、    1-x_0 = \frac{1}{6} x_0     なので x_0 = \frac{6}{7}


以上より、
\begin{eqnarray*}
x_0 &=& \frac{6}{7}\\
x(s) &=& \frac{6}{7(1+s)}\\
y(s) &=& \frac{3}{7(1+s)^2}\\
\end{eqnarray*}

であり、



GTO
XはYのベット額sのベットに対して[0,x(s)]でcallして、    [x(s),1 ]でfoldする
Yは      [0,\frac{3}{7} ]のハンドを y(s) に従った額でバリューベット
 [\frac{6}{7},1 ]のハンドをブラフレンジとしてベット額 s に合わせた割合ベット

となります。


これは本には書いてませんが、
ベットサイズを任意に決められることでのIPの利得は


\begin{eqnarray*}
\int ^\infty _0 s (x(s) - 2y(s)) \frac{dy}{ds} ds + \frac{1}{7}  \frac{1}{7}  \frac{1}{2}
&=& \frac{36}{49} \int ^\infty _0 \frac{s^2 } {(1+s)^5} ds + \frac{1}{98}\\
&=& \frac{1}{14}\\
\end{eqnarray*}


です。
第一項はバリューによる利益、第二項はブラフによる利益です。


ポットサイズベットに限定されている時は利益が \frac{1}{18}だったので、任意のベットサイズを選択できることにより得られる利益が増加したことがわかります。



実際piosolverで計算しても似たような結果になります。

f:id:takoagemat:20200406190224p:plain




もちろん有限個の有限なベットサイズしか選択できませんが、下位\frac{6}{44}のハンドはブラフをした方がよく、上位 \frac{17}{44}のハンドは 15%potまでしか入れてませんがバリューベットした方がいいとでています。

IPの利得も\frac{6.89}{100}\frac{1}{14} = 0.0714より少し小さいです。

f:id:takoagemat:20200406190230p:plain

以上です。


もちろん実際のポーカーではOOPはレイズすることが可能です。
もしOOPにレイズされない状況で、お互いのレンジが連続的な同じ分布になってれば、強いハンドは大きく、弱いハンドは小さくベットすることが得になります。

なにか間違っていることや感想などあれば反応いただけると助かります。