VPIPとハンドレンジ

確率論

VPIP

 テキサスホールデムにおけるVPIP(Voluntarily Put in Pot)はプリフロップにおいて、コールであれレイズであれ自発的にチップをポットに投入する比率であり、ゲームへの参加率を表す。(BB以外は)最初のベッティングでフォールドを選択しない限りは参加ということになる。この比率が低いプレイヤーはタイトということになるし、この比率が高いプレイヤーはルースということになるだろう。

 現実には対戦相手の行動戦略にも依存する(例えば、常にオールインしてくるプレイヤーと対戦する場合と、常にリンプインしかしないプレイヤーと対戦する場合ではVPIPは同じプレイヤーでも異なるだろう)ため、個々のプレイヤーの手札の選択だけでは説明できないのであるが、本稿ではプレイヤーの手札の選択基準にのみ依存して決定するものと仮定して、VPIPが異なるプレイヤーのハンドレンジがどのようなものになるか考察しよう。

 同程度のVPIPであっても、高ランクの手札(AやKが含まれる手札)を好むプレイヤーやスーティッドを好むプレイヤーなど種類があるかもしれないが、基本的に合理的なプレイヤーであれば勝利確率が高い手札を多く参加し、低い手札をフォールドするという選択を行うだろう。そのため、指定したVPIPに一致するように勝利確率が高い順にエントリーする手札を決定するという方法には一定の合理性を見出すことができる。例えば、VPIPが5,10,15,20,25,30,40,50,60~70%の場合にどのようなハンドレンジになるかを求めてみよう。勝利確率はプレイヤーが2人である場合と6人である場合について計算した。前者は高ランクの手札を好むプレイヤー、後者はスーティッドを好むプレイヤーと見ることができるかもしれない。現実にはSBやBBの場合はハンドレンジが広くなるしポジションごとにハンドレンジは異なるだろうが、ポジションによる差異は本稿では無視することにする。

プレイヤーが2人の場合の勝率テーブルを使う場合

  • VPIP=5%
  • VPIP=10%
  • VPIP=15%
  • VPIP=20%
  • VPIP=25%
  • VPIP=30%
  • VPIP=40%
  • VPIP=50%
  • VPIP=66.66% (2/3)

プレイヤーが6人の場合の勝率テーブルを使う場合

  • VPIP=5%
  • VPIP=10%
  • VPIP=15%
  • VPIP=20%
  • VPIP=25%
  • VPIP=30%
  • VPIP=40%
  • VPIP=50%
  • VPIP=66.66% (2/3)

プリフロップにおけるプレイヤーの行動モデル

 そんな表作ってどうするんだよという話であるが、コンピュータによるプレイヤーのプリフロップにおける行動モデルを作る際に、なるべく少ないパラメータで様々な行動を表現したいというモチベーションがある。これをVPIPと勝利確率として何人のテーブルを使うかという2つのパラメータで結構な範囲の行動モデルを表現できるのではないかということである。もちろん、個別の手札について行動を定義できるようにすることで表現力は広がるが、一々すべての手札に行動パターンを割り当てるのは面倒くさいためである。

 プリフロップにおけるプレイヤーの行動のモデルを考える場合、以下のそれぞれについてハンドレンジを定める必要があるだろう。スタックが100bb程度と仮定して、自発的にレイズするまでのベット数と受動的にコールするベット数の組み合わせで以下のような組み合わせになる。

  1. 5ベット/5ベット・・・オールインまでレイズし、受動的にもオールインまでコール
  2. 4ベット/5ベット・・・4ベットまでレイズし、受動的にはオールインまでコール
  3. 4ベット/4ベット・・・4ベットまでレイズし、受動的には4ベットまでコール
  4. 3ベット/4ベット・・・3ベットまでレイズし、受動的には4ベットまでコール
  5. 3ベット/3ベット・・・3ベットまでレイズし、受動的には3ベットまでコール
  6. 2ベット/3ベット・・・2ベットまでレイズし、受動的には3ベットまでコール
  7. 2ベット/2ベット・・・2ベットまでレイズし、受動的には2ベットまでコール
  8. 1ベット/2ベット・・・リンプインし、受動的には2ベットまでコール
  9. 1ベット/1ベット・・・リンプインし、レイズされた場合はフォールド
  10. フォールド

現実には、3ベットする手札はオールインまでコールするだろ、リンプインなんかしねえよというのであれば、以下の項目まで簡素化することができる。

  1. 3ベット・・・3ベットまでレイズし、受動的にはオールインまでコール
  2. 2ベット/3ベット・・・2ベットまでレイズし、受動的には3ベットまでコール
  3. 2ベット/2ベット・・・2ベットまでレイズし、受動的には2ベットまでコール
  4. フォールド

理屈上は3ベット/5ベットや2ベット/4ベットなども考えられるが、あまり合理的な戦略には見えないので省略してもよいだろう。

設定例

 一つの設定例を考えてみよう。おそらく、VPIP20%ぐらいのプレイヤーが採用しがちなハンドレンジではないだろうか。

  1. 5ベット/5ベット・・・KK
  2. 4ベット/5ベット・・・AA,QQ,JJ
  3. 3ベット/4ベット・・・VPIP5%,2人テーブルのレンジで上記に含まれない手札
  4. 3ベット/3ベット・・・VPIP10%,2人テーブルのレンジで上記に含まれない手札
  5. 2ベット/3ベット・・・VPIP15%,2人テーブルのレンジで上記に含まれない手札
  6. 2ベット/2ベット・・・VPIP20%,2人テーブルのレンジで上記に含まれない手札
  7. フォールド・・・残りの手札

KKがAAより上なのは、KKの場合プリフロップで対戦相手をフォールドさせても良いと考えるためである。Aを持っているハンドにコールされるとリスクがあるため、降ろせるなら降ろしてもよいということになる(AAがいる場合は悲しい結果になることが多いけど)。一方で、AAの場合はどちらかと言えば他のプレイヤーもオールインまで連れていきたいため、不用意にプリフロップでオールインしない方がいいかもしれない。これぐらいまでレンジを絞ると強いかどうかは別にして、真面目にやっている感は出るかもしれない。

 ちなみに、筆者は初心者プレイヤー感が全開なレンジを採用していて、上記のイメージに加えて

  1. 1ベット/2ベット・・・VPIP50%,6人テーブルのレンジで上記に含まれない手札、Suited,Connected全部

というイメージに近く、VPIPは60%ぐらいになっている(対戦相手も50~70%ぐらいの場合が多い)。初心者っぽいプレイヤーが多いゲームでは、本当は3ベット以上打つ手札でも3ベットを打たないプレイヤーが多いため、多くの手札でフロップのカードを見ることができる。2/3ぐらいはリンプインであるが、比較的快適にプレイできるレンジな気がしている。これらの手札では、フロップを見て即フォールドな場合も多いが、フロップで化けた場合は対戦相手の強い手札を刺すことができるし、その時は大きめのポットを奪うことができる。もちろん、リンパーキラーぽいプレイヤーがいる場合やトーナメントではやらないけど・・・対戦相手が強くなるにつれて最終的には8.は消えていく方向だろうか。

プリフロップでブラフする場合

 あらかじめ決めている手札の戦略の他に、プリフロップにおいても対戦相手をフォールドさせる目的で本当は3ベットしない手札である場合でも、一定の確率で3ベットするということもあるだろう。3ベットしたプレイヤーの手札が72oだったということもしばしば見かけることがある。まあ、これはやりすぎかもしれないが、2ベット/3ベットの手札で一定の確率で3ベット、4ベットする比率をパラメータとして与えることでプリフロップにおけるブラフを表現できるかもしれない。

 また、相手の手札が中途半端に強そう(3ベットまではコールするけどオールインは降りるぐらい)だと判断した場合にブラフでオールインすることで他のプレイヤーのベットを奪うという戦略を用いるプレイヤーも少なからずいる。QQやJJは前節の設定例ではオールインすると必ず不利になる(KK以外プリフロップでオールインしてこない)ため、5ベットにコールすべきでないということになるが、ブラフオールインをキャッチしやすい手札という意味で5ベットでもコールした方が良いというイメージになるだろう。2ベットあたりからのオールインはブラフが混じっている確率が相応にあるため、現実にはもう少しランクの低いポケットペアでもコールするプレイヤーも少なくない印象を受ける。

 最後に、BNやSBのプレイヤーまですべてのプレイヤーがフォールドした場合に、BBを降ろす目的で本来はフォールドする手札をあえてレイズする場合もある。ブラインド・スティールと言われるが、これもブラフの一形態だろう。BBのプレイヤーもブラフと見た場合、ディフェンスのため弱い手札でもリレイズして返す(スクイーズという)などというプレイがしばしば行われる。ただ、これはアルゴリズムで記述しづらい操作であり、当座の間は無視する方が良いかもしれない。

 各レイヤー毎に、ブラフレイズする確率やブラフオールインする確率をパラメータとして与えることでこれらの行動をモデリングすればよいだろう。

まとめ

 VPIPに応じたハンドレンジを計算できるようにしたり、プリフロップにおけるプレイヤーの行動モデルを構築することで以下のようなことを試すことができるかもしれない。

  1. フロップ以降の戦略について仮定を置いて、様々なプリフロップ戦略のうちどのタイプのプレイヤーが優位性があるかをプログラムで試す。アンティがある場合や他のプレイヤーのタイプがバラバラの場合にどういった戦略が良いかを確認できるかもしれない。
  2. 前回の投稿でプリフロップオールインのときに対戦相手が手札を選ばないことを仮定したが、これを一定のVPIPで絞った場合にどのような戦略を採用した方がよいかを検証する。

もちろん、ゲームの対戦相手としてNPCの行動モデルを構築することが主な目的であるが、こういった実験もブログ上で試せるようにしていこうかと思っている。

追記:おまけ

おまけとして第2節と第3節で表示した表を指定したVPIPと勝率テーブルで表示できるようにした。