読者です 読者をやめる 読者になる 読者になる

雨上がりの放物線

究極の三日坊主が居場所を見つけるまでの物語

Starting hand rangeその2

 今んとこのraised potに対するハンドレンジ。考え方、算出方法は

(雑魚なりに)6-max、pre-flopを考える②raised pot篇 - 雨上がりの放物線

をご覧ください。

 

starting handの分布

 前回、ハンドの強さに対する分布についてテキトーな仮説を立てたので今回はそれを検証してみようと思います。

 

仮説

 ハンドの強さに対して存在確率は変動しない。

f:id:XiaoHeiX:20170507183213p:plain

 

結果

 結果としては一部正しいし、一部間違っています。

 

間違い:全てのハンドは同じ確率で出現するわけではない。

当然です。全てのハンドの中でAA(6通り)が出る確率は0.45 %だし、32o(12通り)が出る確率は0.9 %で一様ではありません。

 

正しい:ハンドの強さと存在確率に大きな相関はない。

 下図はハンドの強さランキングとそのハンドの出現確率の分布です。最も左はAA(0.45 %)を表しており、右の方は32o、42o、52o、62o、43oなど(0.9 %)のオフスートハンドを表しています。細かい上下はオフスートハンド(0.9 %)とスーテッドハンド(0.3 %)の確率の違いを表しています。仮にスーテッドとオフスートが一様に散らばっていれば命題を示す事になりますが、この図だけでは伝わりません。

 そこで用意したのがさらに下の図です。横軸は同様のハンドの強さランキングですが、縦軸が出現確率の足しあわせになっています。これを一次の近似式で表すと非常に良い精度(高い決定係数R2)で近似できている事がわかります。これが2次関数みたいな曲線になっていないので、ハンドの強さと出現確率に相関はないと言えそうです。

 

おまけ

 ハンドレンジとその勝率の関係。ペア(AA ~ 88)の勝率が有意に高いです。レンジを絞ったタイト戦略だとしてもAA ~ 88は入れるのが吉ですね。

 

 

open sizeに関する考察

 Open sizeはずっと3BBで特に考えずに来たのだが、これからポジションによって変えたりを考えようと思う。まだ何の為に変化させるのかがわからないので、まず3BB openがどういう意味なのか考え、それから変える必要があるのかを決めようと思う。

 

3BB openとはなんなのか?

 UTGから3BB openする事例を考える。今、ポットにはSBとBBより合わせて1.5BBが存在し、自分が意思決定をしたのちに5人(HJ、CO、BTN、SB、BB)が控えている。

 ここでポットに3BBぶっこむとはどういう意味なのか。

 ポット:1.5BB

 コスト:3BB

 与えられるオッズ:3 / (1.5 + 3) = 66.7 %

 求められるオッズが66.7 %という事は、自分の勝率が66.7%以上の時に参加して良いという事だ(実際には相手がfoldする確率があるのでもう少し低い時も、例えば60 %みたいな)。

 つまり、これは周りから見るとUTGからの3BB openというのは

 「あなたがた5人のランダムハンド全部に対して、私のハンドは66.7 %以上の勝率を持っています。」

という主張になる。

 この主張は一体どういう事を示すのか。COからBBまでの5人のランダムハンドのうち、最も強いハンドを持った一人(以下最強くん)がcallすると考える。最強くんのレンジは平均でいくらだろうか。

 ここで一つ大胆な仮定を一つ。ハンドの強さと、存在確率の分布が一様だとする。(実際にはまったく違う。本来は弱い手の方が存在確率が高くなっていると思われる。

f:id:XiaoHeiX:20170507183213p:plain

 すると、最強くんの平均レンジは1/(5+1) = 16.7 %となる。0 ~ 100 %までの分布を5つの柵を用いて平等に分けると、最も左側の柵は16.7 %の位置に来る為。

(ここらへん無茶苦茶わかり辛くてすいません、随時直していきます。)

 最強くんの平均レンジは16.7 %だとわかりました。UTGの主張は「レンジ16.7 %の最強くんに対して私には60 %の勝率があります」という事であるとわかります。

 では、UTGのレンジは幾つなのか?レンジ16.7 %に対して50 %の勝率の勝負をするには16.7 %のレンジが必要になります。勝率66.7 %を持つにはこれより低いレンジが必要になると考えられますね。

 

 16.7 × ( 0.5 / 0.667) = 12.5 %

 つまり、UTGにおいて3BB openするという事は

「自分は上位12.5 %のレンジです!!」

という主張である事がわかりました。

 

後考察

 上の計算はガバガバ過ぎました。まず、勝率を計算に使うのは間違い。「自分の方がレンジが高い確率」が正解。次に、式も間違い。これだと8.35%のレンジなら100%の確率で自分の方がいいレンジとなるが、明らかに間違い。

 

 

 しかし、

(雑魚なりに)6-max、pre-flopを考える①unraised pot篇 - 雨上がりの放物線

 によると、自分はUTGから13.3 %のレンジから参加する事がわかります。つまり、幾らかはブラフとなるわけです。自分のレンジと主張しているレンジに乖離があるので。具体的には参加のうち13.3 / 12.5 -1 = 6.7 %はブラフであるとわかります。

 同様に、他のポジションから参加も考えてみましょう。

f:id:XiaoHeiX:20170507185241p:plain

 これをみるとCOとBTNのみbluff率が非常に高い事がわかります。これは主張レンジと実際の参加レンジの乖離が大きい事を示しています。

 その原因は、実際レンジ計算に用いた「ポジションの優位性」の項が原因です。COとBTNはフロップ後に「後出しの権利」を持つ可能性が高いため、ルース目に参加するとしたのです。これのせいでbluff率が高くなってしまいました。

 こういう奴に対しては「COとBTNの参加に対しては3betをかます」戦略がもろに効いてしまいます。これを避ける為にopen sizeをポジションによって変えるのです。

 実際にopen sizeを2.5BB、2BBに変更してみましょう。

f:id:XiaoHeiX:20170507190132p:plain

 open sizeを下げることでbluff率が下がる事がわかります。これはopen size低下に際してオッズが低下し、これが主張レンジを引き下げる効果を持っている為です。

 出来れば自分のポジションに弱点を持ちたくないため、このbluff率を同じくらいにしましょう。極端な例を出します。以下の表ではUTG、HJ、SBにおいては3.5BB、COにおいては2.5BB、BTNにおいては2BBでopenしています。

f:id:XiaoHeiX:20170507190811p:plain

 このように、ポジションに対してopen sizeを変更する事でポジションによる情報優位性を活かしたまま、ポジションごとのブラフ率を平す事が出来るのです。

 でもこのbluff率調整はopen rangeの調整によっても可能なので、どちらを取るか考えていく必要があるでしょう。

 

 

改良点

 ・ハンドレンジに対する存在確率の分布調べる。

 ・情報優位性のきちんとした定量

 ・ハンドレンジ調整との擦り合わせ

 

(雑魚なりに)6-max、pre-flopを考える②raised pot篇

 自分の前にraiserが存在する場合、考えるべきは自分のレンジではなく、相手のレンジだと考えます。相手の想定レンジは前回の①参照

f:id:XiaoHeiX:20170507114018p:plain

 このrange列のように動くと考えます。つまり、相手UTGがraise openした場合、相手は上位13.3 %には入る手を持っていると想定します。

 

 では、自分はどのようなレンジで参加して良いのか。それには2つの基準で考えます。

①相手レンジの少し上で挑む。

 同じレンジで挑むと勝率50 %の戦いを挑むことになります。ただでさえ主導権(C-betの権利)がある相手に対して同じレンジで挑むのは賢いとは言えないと思います。よって、相手レンジの上位80 %程度を参加レンジとする。

 仮定:主導権の価値(1/0.8)

②ポジションの優位性

 主導権と同様に、情報量もまた武器になります。よって、raiserに対するポジションの存在によってレンジを1.2倍、あるいは1.2で割ります。

 仮定:情報の価値(1.2)

 

 この二つを掛け合わせ、参加レンジを絞り込みます。今回は自分のポジションではなく、original raiserのポジションにより分けます。3bet、4betに対するcall rangeについてはこれより説明します。

f:id:XiaoHeiX:20170507141346p:plain

 3betするということは相手に勝てる確率が50 %以上だと宣言する行為です。よって、相手レンジの上位50 %以上であれば3betを行います。これによって主導権もこちらに移すことができます。ただし、自分IPにおいては主導権を相手にもっておいてもらった方が相手のCBをみてから自分の行動を決定することが出来るため、3betよりcallがプレイし易いと考え、レンジを0.8倍しました。

 4betは自分のプレイしている5nlではほとんどプレミアムハンドであると言えます。経験上(こういう推測は好きではありませんが)。よって、4betはできるだけ狭く、相手想定レンジの1/8としました。

 非常に簡単にすると相手想定レンジと少し上でcall、上位50%で3bet、上位25%で4betに対するcall(あるいは5bet-all in)となります。

 詳細は別紙に。

 

(雑魚なりに)6-max、pre-flopを考える①unraised pot篇

 pre-flop戦略とは「参加するか、しないか」を決める戦略です。以下では2つの基準を元に参加するかを決めています。

*以下では参加レンジのみを考えており、bet sizeに関する話はありません。自分は今はどこでも3BB openです。ポジションによってsizeを変えるのも考えてはいますがまだ理解出来てないので導入していません。

 

①強い手ほど参加する

 ヘッズアップにおけるランダムハンドに対する勝率が高いほど参加する事とする。本当はランダムハンドに対する勝率50%のレンジ(皆が参加してくるであろうレンジ)、に対する勝率が高いほど参加にしたかったが、完璧な情報が見つからなかったandツール作ろうとしたが複雑すぎたのが原因。改良の余地あり。

ex) AAは必ず参加するし、32oはほとんど(全く)参加しない

②ポジションがあるほど参加する

 これは「後出しの権利」を有するため。自分の意思決定(check, bet, fold, raise)に相手の行動(check, bet)から来る情報を加味する事ができるため有利だと考える。

ポジション:UTG、HJ、CO、BTN、SB、BB

ex) BTNはHJより広いレンジで参加する

 

 この二つの基準を元に、ランダムハンドに対する勝率ランキングの上位何%まで参加するか、を決めるのがプリフロ戦略だとした。これは以下の式で表される。

 starting hand range = A(pos) × B(pos)

 posはポジションを表しており、上記のUTGからBBが入る(unraised potでは実際にはSBまで)。A(pos)、B(pos)はつまりposを変数とした関数であり、posが変化するとA, Bも変化する。そしてこれらはそれぞれ上の①手の強さ、②情報量の優位さ、を表している。一つ一つ見ていく。

 

 A(pos):自分の手が一番強い手である確率

 自分がUTGである時、自分を含めて6人が参加しうる。この内、自分の手が最強である確率は単純に1/6である。

 よってA(UTG) = 1/6

 同様に、例えばCOにおいてはUTG、HJはfold済みの為参加しうる人数は4人、A(CO) = 1/4のように求まる。

 この関数の意味するところはつまり「自分の手が一番強いっぽい時には参加しましょう」という事だ。

 

 B(pos):自分が有するポジションの優位性

 自分がBTNである場合、自分がもっとも後出しの権利を有する。自分がCOである場合、仮にBTNがfoldすればもっともポジションを持つ。UTGなら一番後ろになる確率は低いだろう。このようにそれぞれのポジションには優位性がある。これを仮定で決める。

 本当は「各ポジションにおけるポット獲得率」みたいなデータがあればよかったのだが、見つからないので今回は自分の完全なイメージだ。

 A(UTG) = 0.8

 A(HJ) = 0.8

 A(CO) =0.9

 A(BTN) = 1.0

 A(SB) = 0.8

 BTNの持つ情報の優位性を1とした時、他のポジションでは1以下になる。5nlは周りの参加率が高めだと思ったので最大値を1にした。最低値や平均を1にしてもいいと思う。これは周りのプレイヤーの統計が無いと決められないから仮定の値だ。

 

 これらの数字を元に計算する。すると以下の表が出てくる(右側の3bet以降はこれから解説します。)。

f:id:XiaoHeiX:20170507114018p:plain

 unraised potではUTG(13.3%)とSB(40.0%)と大きな参加レンジの開きがある事がわかる。

Poker Range | Poker Hand Range Calculator を用いて視覚化するとこんな感じになる。ありがとう他人のツール。僕は作れなかった。教えを乞いたい。

 

 3bet、4betに関しては考え方はシンプルだ。自分のbetに対して3betしてくるという事は相手は自分のレンジより高い、レンジの中の上位50%には入ってくるだろうという事。これにcallするには相手と同じくらいのレンジがあればいい、つまり自分のレンジの半分の値。そして、仮にcallして自分がin position(IP)になる場合、手の強さに加えて情報の優位性も扱えるので3bet-call rangeに1.2倍する。out of position(OOP)になる場合は相手に情報の優位性があるのでレンジを1.2で割る。

 4betするには相手の3bet range(自分のレンジの上位50%)のさらに半分(つまり上位25%)に入ればいい。また、5nlにおいて4betにcallするのは実質的にAll-in受け入れに近いと考えた。よって相手は非常に狭い手でしか受けてこないだろうと考えるとここにブラフのチャンスがあると考えたので1.2倍した。これが原因で4betが結構広めになっている。まあやりながら考えよう。

 それぞれのポジションにおけるレンジは別紙にあげます。長くなったんで。

収支報告(4ヶ月目、〜4/30)

 収支報告はやはり月末にした方がキリがいいと思ったので月末までのデータで行います。

 BRは$59.56という事で、今月も先月に引き続きマイナス(-$6.12)になってしまいました。新入社員になって研修や配属でバタバタしており、空き時間に無理やりポーカーやって勝ちを急いで少し負けた、といった感じです。

 正直、良くない。先月は心のせいにできたけど、連続で負けるというのは最早ミスではなく選択だと自分は思っているので、何かを変えねばならないと思います。今までの全体収支がプラスのうちに変えないとメンタルの調整はどんどん難しくなるし。

 という事で、数字を使って基準プレーを作る事にしました。これは「テーブル、相手の情報がない時」、「テキトーなプレーでは勝てない時(今みたいな)」、「何も考えずにやりたい時」などに行うプレーの事です。これを一ヶ月くらいかけて作っていこうと思います。

 プレフロップ戦略についてはもう考えてあるのですぐにご報告できると思います。ポストフロップは場合分けの数が多すぎるのでどうしよう、といったところです。excelとかpythonで何か面白いもの作れたらいいなー、って感じです。

 勝ちたい。何より勝ちたい、けどテキトーにやって勝ちたくない。これが自分のモチベーションです、FXはテキトーにやってテキトーにちょっとだけ勝ってしまってつまらなくなりました。ポーカーはそうではないといいです。

 あと、ソフトウェアの導入を近い将来に考えています。数理的戦略を組み立てるのには2種類の数字が必要です。

①ゲームのルールにより決定される数字

(フロップフラッシュ形成の確率、ランダムハンドに対する勝率のランキングなど)

②相手の戦略に関する数字

(5nlキャッシュにおける相手のプリフロレンジ、フォールド率など)

 

 このうち②は計算では求めようがなく、統計をとっていくしかないので、ソフトウェアやネット上の情報を用いて戦略を改良していこうと考えています。あと、自分が戦略を正しく実行できているのか、戦略に穴は無いかも評価したいですし。