2012年1月19日木曜日

ベットパターンについて考えてみる~その1~vs Level 0 Thinking~

フロップ以降のベットパターンについて考えてみよう。

簡単なために、4つの条件を設定する。
  1. フロップを開いた時点でハンドは確定し、強さ1~8(1 < 2 < ... < 7 < 8)の8段階に等確率で分類されるものとする。
  2. 同じ段階の強さのハンド同士はチョップになるものとする
  3. フロップを開いた時点でのポットサイズは2とする
  4. ベット額はフロップ1、ターン以降は2とする(FLのイメージ)
  5. 1BETでCAPするものとする(相手がベットすれば、自分はコールかフォルドしか選択できない)
  6. 相手が常に先手で、自分は後手とする
以上の条件下において、まずは最初のレベルとして、相手がLevel 0 Thinkingの場合を考える。例として、以下の4パターンとする。
  1. 常にベットする
  2. 常にチェックフォルドする
  3. 常にチェックコールする
  4. 1/3の確率でベットし、1/3の確率でチェックコールし、1/3の確率でチェックフォルドする
まず、1のパターンの場合

相手はハンドの強さに関係なくベットしてき、コールするかフォルドするかの選択しかできないため、フォルドエクイティは一切存在しない。そのために、勝つには純粋なハンドの強さでショウダウン勝負になる。
  • ショウダウンに持ち込んで勝った場合 : 2(現在のポット)+1(フロップ)+2(ターン)+2(リバー) = +7
  • ショウダウンに持ち込んで負けた場合 : -1(フロップ)-2(ターン)-2(リバー) = -5
  • ショウダウンに持ち込んでチョップした場合 : +1(現在のポットの半分)
  • フォルドした場合 : 0
チョップになる確率は仮定から常に1/8である。勝つ確率をx、負ける確率を(7/8 - x)とすると、ショウダウンに持ち込んだ場合の期待値は 7 * x + 1 * 1/8 - 5 * (7/8 - x) = 12 * x - 34 / 8 となる。よって、x > 17 / 48 であれば、フォルドするよりもショウダウンに持ち込んだ方が期待値がよくなる。ちなみに、各ハンドの勝率は強さ1から順に0/8, 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8となるので、強さが4以上で条件を満たす。

以上のことから、1のパターンに対する最適戦略は、強さ3以下であればフォルドし、4以上であればコールダウンすることである。
この結論は、あほみたいにベットしまくる相手に対して、トップペアや下手をするとセカンドペアでもヒットしてしまったら降りられないし、降りるべきでもないという経験則に合致するだろう。

次に、2のパターンの場合

相手はハンドの強さに関係なくチェックし、ベットすればフォルドするので、考えるまでもなく常にベットすればいいということになるが、一応計算してみよう。
  • ベットした場合 : +2(現在のポット)
  • チェックしてショウダウンに持ち込み勝った場合 : +2(現在のポット)
  • チェックしてショウダウンに持ち込み負けた場合 : 0
  • チェックしてショウダウンに持ち込みチョップした場合 : +1(現在のポットの半分)
チェックショウダウンした場合の期待値は、上記同様勝つ確率をx、負ける確率を(7/8 - x)とすると、 2 * x + 1 * 1/8 - 0 * (7/8 - x) = 2 * x + 1/8 となるが、xは最高でも強さ8のハンドの7/8なので、ベットした場合の2を超えることはない。

以上のことから、2のパターンに対する最適戦略は、常にベットしポットを盗ることである。
この結論は、ガチガチなロック、ニットに対しては、自分のハンドの強さに関係無く、ベットしてポットを盗みにいけばいいというアグレッシブな戦略の基本と合致するだろう。

次に、3のパターンの場合

相手はハンドの強さに関係なくチェックし、ベットしても常にコールするので、1のパターン同様にフォルドエクイティは一切存在せず、勝つには純粋なハンドの強さでショウダウン勝負になる。
  • フロップ/ターン/リバーとベットし続けて勝った場合 :  2(現在のポット)+1(フロップ)+2(ターン)+2(リバー) = +7
  • ベットし続けて負けた場合 : -1(フロップ)-2(ターン)-2(リバー) = -5
  • チェックし続けて勝った場合 : +2(現在のポット)
  • チェックし続けて負けた場合 : 0
  • ベット/チェックし続けてチョップした場合 : +1(現在のポットの半分)
上記同様勝つ確率をx、負ける確率を(7/8 - x)とすると、ベットし続けた場合の期待値は 7 * x + 1 * 1/8 - 5 * (7/8 - x) = 12 * x - 34 / 8 で、チェックし続けた場合の期待値は 2 * x + 1 * 1/8 - 0 * (7/8 - x) = 2 * x + 1/8 となる。
なお、中途半端にベット/チェックを混ぜるプレイに優位性は存在しないことは明らかである。
12 * x - 34/8 > 2 * x + 1/8となるxは x > 35/80 = 7/16 なので、強さ5以上で条件を満たす。

以上のことから、3のパターンに対する最適戦略は、強さ5以上のハンドであればバリューベットし、強さ4以下のハンドであればチェックしてチープショウダウンを目指すことである。
この結論は、コーリングステーション相手にはブラフをしてはならず、勝っていると思える時のバリューベットのみに注力すべきである、ということを示している。

フィッシュ相手にブラフ失敗して嘆いている人はよく考えるべきだろう。相手は確かに全く考えておらず、コールボタンを押しているだけである。考えているあなたが勝つべきだと思うかもしれない。だが、振り返って眺めてみると、あなたは1のパターンの何も考えずにベットしている相手と同じ事をしているのだ。そして、その場合、コールする側は強さ4以上で利益が出るが、ベットする側は強さ5以上でないと利益が出ないのだ。ハンドはランダムに配られるので、長い目で見るとベットする側が損をしていくだろう。なので、ブラフせずにバリューベットのみに注力すべきなのだ。

最後に、4のパターンの場合

相手はハンドの強さに関係なく、ランダムなアクションをとる。非常にパターンが多く煩雑になるので、結論をまず書こう。一番下に付録として計算を記述しておくので、興味がある方はどうぞ。

フロップ/ターンの最適戦略は、 ベットに対しては常にコール(弱いハンドではフローティング、強いハンドではブラフキャッチ)し、チェックしてくれば常にベットしてポットスティールを狙う ことである。この結論は、「相手のハンドの強さを一切読まずに自分のハンドによらず適当にCBを打ち、適当な場面で諦めるような機械的な多面プレイヤー」や「TP程度ではポットが膨らむと簡単にフォルドするニット」に対して、とりあえずフロップCBに対してレイズしたりフロートしたりするだけで利益がでるということを意味している。相手によっては、TPで突っ込む勇気も必要だし、何も考えずにCBを打ってレイズされて困るようなプレイはやめたほうがいい(何も考えずにCBを打つというプレイはLevel 0 Thinkingをしているのと同じ、フィッシュになっちゃうよ!)。
リバーの最適戦略は、ベットに対しては強さ2以上でブラフキャッチコールし、チェックしてくれば常にベットし、ポットスティールを狙うことである。この結論は、ポットが膨らんでしまった場合、相手がブラフをしている可能性があり、ブラフに勝てる強さのハンドを持っていれば、リバーでポットコミットしてしまい、コールすることが必然となることを意味し、ブラフにすら勝てないハンドであれば、ポットコミットしていないのでフォルドできるということである。いくらコミットしてるといっても、最低限Aハイは無いとコールしちゃだめってことかなぁ。

ここまで、Level 0 Thinkingを相手にした場合なので、ありえない状況だと思うかもしれないが、PokerStarsの0.1/0.25 NLHE ~ 1/2 NLHEぐらいなら、ほとんど何も考えずに機械的に打っているプレイヤーも存在する。それに気づいたならば、コーリングステーションに対して、弱いハンドでのCBを省いたり、フィッシュに対する無駄なブラフを無くす、マニアックに対してある一定以上のハンドの強さでコールダウンしてみる、など改善点は見つかるのではないだろうか?

--- 以下、付録 ---

まず、各ラウンドでのポットサイズを考えよう。フロップ時点ではポットサイズは2で固定である。ベットされた場合はコールするので、ターンでは4になり、チェックしてきた場合も半分がフォルドするので、ベットする方が期待値プラスになるので、ベットし、コールされた場合、ターンで4になる。チェックしてポットサイズ2のままターンに進むのは非合理なので考えない。同じことがターンでも発生し、リバーのポットは8になる。

リバーでのポットは8である。上記同様勝つ確率をx、負ける確率を(7/8 - x)とすると、
  • ベットされ、コールした場合 : +10(勝った場合) * x + 4(チョップした場合) * 1/8 - 2(負けた場合) *  (7/8 - x) = 12 * x - 10/8
  • ベットされ、フォルドした場合 : 0
  • 相手がチェックし、チェックショウダウンした場合 :  +8(勝った場合) * x + 4(チョップした場合) * 1/8 - 0(負けた場合) *  (7/8 - x) = 8 * x + 1/2
  • 相手がチェックし、こちらからベットし、相手がフォルドした場合 : +8
  • 相手がチェックし、こちらからベットし、コールされた場合 :  +10(勝った場合) * x + 4(チョップした場合) * 1/8 - 2(負けた場合) *  (7/8 - x) = 12 * x - 10/8
よって、相手がチェックした場合にこちらからベットした時、仮定より1/2でフォルドしてくれるので、期待値は 8 * 1/2 + (12 * x - 10/8) * 1/2 = 6 * x + 29/8 となり、常にベットしなかった場合を上回る。また、ベットされた場合は x > 5 / 48 であれば期待値がプラスになるので、強さ2以上のハンドであればコールすべきである。

以上のことから、リバーの最適戦略は、ベットに対しては強さ2以上でブラフキャッチコールし、チェックしてくれば常にベットし、ポットスティールを狙うことである。そして、リバーの期待値は、1/3でベットし、2/3でチェックするので、 
  • 強さ1の場合の期待値 : 1/3 * 0(ベットされればフォルドする) + 2/3 * (6 * x + 29/8) = 29/12
  • 強さ2以上の場合の期待値 : 1/3 * (12 * x - 10/8) + 2/3 * (6 * x + 29/8) = 4 * x - 10/24 + 4 * x + 29/12 = 8 * x + 2
これをふまえて、ターンを考えると、ターンでのポットは4であるので、
  • 強さ1のハンドでベットされ、コールした場合 : 29/12(リバーでの期待値) - 2(コール分) = 7/12
  • ベットされ、フォルドした場合 : 0
  • 強さ2以上のハンドでベットされ、コールした場合 :  (8 * x + 2)(リバーでの期待値) - 2 = 8 * x
  • 相手がチェックし、こちらのベットに対してフォルドした場合 : +4
  • 相手がチェックし、強さ1のハンドでベットし、コールされた場合 :  29/12(リバーでの期待値) - 2(コール分) = 7/12
  • 相手がチェックし、 強さ2以上のハンドで ベットし、コールされた場合 : (8 * x + 2)(リバーでの期待値) - 2 = 8 * x
  • 相手がチェックし、強さ1のハンドでチェックした場合 : ベットより劣ることが明らかなため無視
  • 相手がチェックし、強さ2のハンドでチェックした場合 : ベットより劣ることが明らかなため無視
以上のことから、ターンの最適戦略は、ベットに対しては常にコール(弱いハンドではフローティング、強いハンドではブラフキャッチ)し、チェックしてくれば常にベットしてポットスティールを狙うことである。よって、各ハンドの期待値を計算すると
  • 強さ1のハンドの期待値 : 1/3 * 7/12 + 1/3 * 4 + 1/3 * 7/12 = 31/18
  • 強さ2のハンドの期待値 : 1/3 * 8 * x + 1/3 * 4 + 1/3 * 8 * x = 16/3 * x + 4/3
ようやくフロップまで戻って考えると、フロップでのポットは2なので、
  • 強さ1のハンドでベットされ、コールした場合 : 31/18(ターンでの期待値) - 1(コール分) = 13/18
  • ベットされ、フォルドした場合 : 0
  • 強さ2以上のハンドでベットされ、コールした場合 : (16/3 * x + 4/3)(ターンでの期待値) - 1 = 16/3 * x + 1/3
  • 相手がチェックし、こちらのベットに対してフォルドした場合 : +2
  • 相手がチェックし、強さ1のハンドでベットし、コールされた場合 : 31/18(ターンでの期待値) - 1(コール分) = 13/18
  • 相手がチェックし、 強さ2以上のハンドで ベットし、コールされた場合 : (16/3 * x + 4/3)(ターンでの期待値) - 1 = 16/3 * x + 1/3
  • 相手がチェックし、強さ1のハンドでチェックした場合 : ベットより劣ることが明らかなため無視
  • 相手がチェックし、強さ2のハンドでチェックした場合 : ベットより劣ることが明らかなため無視
    よって、フロップもターンと同じ戦略をとることが最適になる。

    0 件のコメント:

    コメントを投稿