統計は冷酷だ

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

簡易化したリバーのGTOに関しての考察①

どうもこんにちは
ここではThe Mathematics of PokerのChapter11の[0,1]game#2についてpiosolverの解析を含めて考察していきます。
結構長くなっちゃいました。
自分はこれ理解するのにかなり10時間ぐらいかかった気がするので皆さんにはそれをできるだけ効率的に理解してもらえたらと思います笑

まず[0,1]gameとはお互いのハンドの強さを[0,1]の実数で表すpokerのモデル化です。
[0,1]は0以上1以下の実数の閉区間です。
0に近い実数ほど強いハンドだとします。

今回の考察するモデルはお互い同じレンジを持ってリバーにいき、OOPは強制check、IPがbetかcheckを選択でき、IPのbetに対してOOPはcall or foldのみができます。
OOPがcheck-raiseすることができません。
potの大きさをPとし、ベットサイズは1のみとします。

随分pokerに比べて簡素なゲームだなあと思うかもしれませんがこれだけでも初めてみると難しいと自分は感じました。

①数学的にGTOを解く
②piosolverでもGTOを解いてみる
③その結果について感覚と異なる点はどこか、この他の戦略はどのようにexploitされてしまうのかをpiosolverのnodelockの機能などを利用して検証する

ということをやってみようと思います。

今回は①についてです。

①数学的にGTOを解いてみる。

まずIPがベットするレンジ、OOPがIPのベットに対してコールするレンジを考えてみるとこのようになります。

f:id:takoagemat:20180817185644p:plain

The Mathematics of Pokerでは、違う形のレンジの構造を考えて矛盾が生じることによりこの構造を導いていますがここでは省略します。
OOPのコールレンジがIPのベットレンジより広いことはわかると思います。


この二つの戦略の閾値(y_0,y_1,x^*_1)はどちらの戦略でも期待値が変わらないはずなので

\begin{eqnarray*}-y_1 + (P+1)(1-y_0) &=& 0\\
y_1 &=& \frac{x^*_1}{2}\\
Py_0 - (P + 1)x^*_1 &=& 0\end{eqnarray*}

がわかります。

未知数が3つで異なる式が3つ得られたのでこれらの式を用いて(y_0,y_1,x^*_1)を解くことができます。

\alpha = \frac{1}{P+1}

とすると答えは

\begin{eqnarray*}y_1 &=& \frac{1-\alpha}{(2-\alpha)(\alpha+1)}\\
x^*_1 &=& \frac{2(1-\alpha)}{(2-\alpha)(\alpha+1)}\\
1-y_0 &=& \frac{\alpha(1-\alpha)}{(2-\alpha)(\alpha+1)}\end{eqnarray*}

と求められます。
P=1、つまりポットが1でリバーでポットベットのみを打つ場合に関して
f:id:takoagemat:20180817185644p:plain



IPベットレンジ[0,\frac{2}{9}]
IPブラフレンジ[\frac{8}{9},1]
OOPコールレンジ[0,\frac{4}{9}]

になります。

ちなみにEVはIPが1/18得する計算になります。
下の図の領域分IPが得します。

f:id:takoagemat:20180818015232p:plain

IPは強いハンドでバリューが取れた時、弱いハンドでブラフが成功した時に得することがわかります。

次回は、piosolverでこのモデルを解いてみます。