GTO Gecko GTO Gecko トレーニングを始める

相手のレンジはアクション後どう変わる?27コンボを頻度で更新

カテゴリー: 理論 | 日付: 2026年9月14日 | 著者: GTO Gecko
暗いポーカーテーブルで、多数の半透明なカードとチップが光るフィルターを通り、少数の重み付き候補へ絞り込まれる様子。

Read in English

アクションを観測した後は、「そのアクションを取り得るハンド」だけを残して等分してはいけません。スートまで特定した各コンボについて、アクション直前の重みに、そのコンボが観測したアクションを選ぶと仮定した頻度を掛けます。既知カードと重なるコンボを除外し、残った重みを正規化します。本記事の27コンボ例では、ポットサイズベットを見た後のブラフ比率は44.44%ではなく26.67%。コールEVは+33.33チップではなく−20チップです。

以下では、K♦ 9♣ 7♥ 4♣ 2♠のリバーで相手レンジを1コンボずつ並べ、宣言済みのベット頻度で全数更新します。さらに、自分のA♣Q♣が相手のブラフ候補を4コンボ消す場合も同じ手順で計算します。レンジと頻度は、計算ミスが見えるように作った合成データです。ソルバー出力、実戦母集団の推定値、推奨戦略ではありません。

更新式:ベット後の未正規化重み = 既知カードとの両立可否(両立なら1、重複なら0)× ベット直前の到達重み × P(ベット|そのコンボ)
最後に、残った重みの合計で各行を割ります。

以下では、頻度を掛ける前を「到達重み」、頻度を掛けた後の未正規化値を「ベット重み」、合計で割った後を「事後比率」と呼びます。

これはベイズの定理をレンジの言葉に置き換えたものです。アクション直前の重みが事前分布、ハンド別のベット頻度が尤度、正規化後の重みが事後分布に当たります。PioSOLVERの資料でも、アクション後のレンジは、アクション前のレンジにそのアクションの戦略頻度を掛けて求めると説明されています。式は一般的ですが、以下の数値は本記事のモデル内だけで有効です。

結論:この合成例では、ベット後の両ケースでコールがマイナスEVになる

まず自分のホールカードで、存在できない相手コンボを消します。次に、観測したベットの頻度で残りの重みを変えます。表の「誤った等分法」は、ベット頻度が0%でないコンボをすべて1票として数える方法です。

合成リバー例:ベット前ポット100、相手のベット100、コール額100
自分の手観測前の既知カードと重ならないコンボ観測前のミスドロー比率ベット後のミスドロー比率頻度で更新したコールEVコンボ等分(誤り)のコールEV
A♥Q♥27コンボ12/27 = 44.44%4.8/18 = 26.67%−20.00+33.33
A♣Q♣23コンボ8/23 = 34.78%2.2/15.4 = 14.29%−57.14+4.35

どちらもノーペアのAQで、完成役はAハイ(A-K-Q-9-7)です。表のミスドローすべてに勝ち、セットとツーペアすべてに負けます。本モデルでは、ベットしたミスドローをブラフ候補として集計します。ただしA♣Q♣は、相手のクラブのミスドローを4コンボ消します。そのため、同じノーペアのAQでもベット後のブラフ比率はさらに低くなります。完成したリバーなので、各相手ハンドに対する勝敗は0か1。裏でエクイティを近似しているわけではありません。

グラフ内の数値は直前の表にも記載しています。狭い画面では横にスクロールできます。

ハートのAQではミスドロー比率が44.44%から26.67%へ低下する。クラブのAQでは既知カードと重なる4コンボが除外され、34.78%から14.29%へ低下する。
ベットを見るとレンジが単に「狭くなる」のではありません。そのベットを高頻度で選ぶハンド側へ、確率の重心が移ります。

まず27コンボとベット頻度を定義する

相手は、次のハンドだけでリバーへ到達したと仮定します。各コンボのベット直前の重みは1、表にないコンボの重みは0です。「ベット100%」は、この合成モデル内での尤度が1という意味で、実在する相手の行動を断定するものではありません。

ボード K♦ 9♣ 7♥ 4♣ 2♠、到達重みはすべて1
グループ正確なコンボコンボ数ベット頻度ベット重み
99のセット9♠9♥、9♠9♦、9♥9♦3各100%3.0
77のセット7♠7♣、7♠7♦、7♣7♦3各100%3.0
K9のツーペアK♠/K♥/K♣ と 9♠/9♥/9♦ の組み合わせ9各80%7.2
クラブのミスドローA♣J♣、A♣T♣など12コンボ。全リストは次段落1210%〜80%4.8
A♥Q♥のときの合計2718.0

ミスドロー12コンボとベット頻度は、A♣J♣ 80%、A♣T♣ 70%、Q♣J♣ 60%、Q♣T♣ 50%、J♣T♣ 45%、J♣8♣ 40%、T♣8♣ 35%、8♣6♣ 30%、6♣5♣ 25%、5♣3♣ 20%、J♣6♣ 15%、T♣6♣ 10%です。4♣のターンで2枚のクラブを持つ各ハンドにフラッシュドローができ、2♠のリバーで外れます。ペアもストレートもできていません。

メイドハンド側のベット重みは 3×1 + 3×1 + 9×0.8 = 13.2。ミスドロー側のベット重みを足すと 4.8です。ベット重みは、頻度を掛けたコンボ重みの合計なので、整数である必要はありません。

ケース1:A♥Q♥ではミスドロー比率が44.44%から26.67%へ

A♥Q♥は、相手の27コンボと1枚も重なりません。ベットを見る前なら、ミスドローは27コンボ中12コンボで44.44%です。しかし、本モデルではメイドハンドのほうがベットを選びやすく設定されています。

メイドハンドのベット重み = 13.2
ミスドローのベット重み = 4.8
ベット重みの合計 = 18.0
ベット後のミスドロー比率 = 4.8 / 18 = 26.67%

個別の行を見ると、A♣J♣は重み1でリバーに届き、80%ベットするので、ベット後の未正規化重みは0.8です。T♣6♣も到達重みは1ですが、ベット頻度は10%なので0.1です。どちらも「ベットすることがある」という理由で1コンボずつ数えると、頻度列が持つ情報の大半を捨ててしまいます。

3つの分母を混同しない

この3つを混ぜるのが、レンジ表やスプレッドシートで起きやすい中心的な誤りです。事後分布のカテゴリ比率は、そのカテゴリの観測アクション後の重みを、既知カードと重ならないレンジ全体の観測アクション後の重みで割ります。

事後確率からポットサイズベットへのコールEVを計算する

相手のベット前のポットを100、相手のベットを100とします。自分のコール額も100です。判断時点から見れば、勝ったときの純増は、元のポット100と相手のベット100を合わせた+200。負けたときは−100です。ベット後のミスドロー比率を q とすると、

コールEV = q×200 − (1−q)×100 = 300q − 100
損益分岐点 q = 100 / 300 = 33.33%

正しい事後確率は q = 4/15なので、コールEVは 300×4/15 − 100 = −20チップです。コンボを等分する誤った方法では、観測前の q = 12/27 = 4/9をそのまま使い、+33.33と出ます。本例では、分母の取り違えだけで符号が逆転します。

これはリバーの現在地点から測った増分チップEVです。ハンド全体のEV、レーキ込みの値、金銭的な結果の予測、前提を置いていない相手への実戦助言ではありません。フォールドを判断時点の0としています。

ケース2:A♣Q♣は先にミスドロー4コンボを消す

ベット頻度を掛ける前に、既知カードとの重複を処理します。自分がA♣Q♣なら、相手はA♣J♣、A♣T♣、Q♣J♣、Q♣T♣を持てません。この4コンボのベット重みは 0.8+0.7+0.6+0.5 = 2.6。メイドハンド側は変わりません。

観測前に既知カードと重ならないレンジ = メイドハンド15 + ミスドロー8 = 23コンボ
ミスドローのベット重み = 4.8 − 2.6 = 2.2
ベット重みの合計 = 13.2 + 2.2 = 15.4
ベット後のミスドロー比率 = 2.2 / 15.4 = 1/7 = 14.29%
コールEV = 300×1/7 − 100 = −57.14チップ

等分法はここでも符号を誤ります。8/23 = 34.78%は損益分岐点33.33%を少し上回るため、+4.35チップと表示されます。ブロッカーが消すのは抽象的な「ハンド名」ではなく、スートまで特定した実コンボです。基礎の数え方はコンボの数え上げガイドで確認できます。

アクション後レンジを更新する5手順

  1. どの時点で条件付けるかを書く。「リバーで相手がベットする前のレンジ」と「ベットした後のレンジ」は別物です。ボード、これまでのアクション、ポジション、サイズ、スタック、レーキ設定を記録します。
  2. 正確なコンボへ展開する。ボードや既知のホールカードと重なる手を除外します。A♣x♣のようなクラスは1コンボではありません。
  3. 到達重みを保つ。あるコンボが重み0.4でそのノードへ届いたなら、1に戻さず0.4から始めます。複数回の意思決定を通った経路では、途中の各アクション頻度も掛けます。
  4. 観測したアクションの尤度を掛ける。残った各重みに、観測したアクションを、そのコンボが選ぶモデル上の頻度を掛けます。0%なら消え、小さな正の頻度なら小さなベット重みだけ残ります。
  5. 正規化して目的別に集計する。観測アクション後の重みの合計で各行を割り、知りたいカテゴリごとに事後比率を足します。その後で初めて、ポットオッズなどの利得モデルにつなげます。

たとえばチェックレイズ後の1コンボの経路上の未正規化重みは、開始時の重み × チェック頻度 × 後のノードでのレイズ頻度です。最後のレイズ列だけを見ても、チェックレイズ後のレンジを復元できないのはこのためです。

この単純なモデルが扱わない範囲

答えは入力モデルに条件付けられています。アクション頻度が推測なら、事後分布はその推測を透明に変換した結果であって、実測された事実ではありません。1回のショーダウンや1回のベットだけから、信頼できる母集団頻度を推定することはできません。ソルバー頻度も、開始レンジ、アクションツリー、サイズ、スタック、レーキ、抽象化に依存します。

今回は自分の手を1つに固定しているため、カード重複は0か1で処理できます。自分側も重み付きレンジなら、相手の各コンボの実現頻度は、カードが重ならない自分側コンボとのマッチアップ重みにも左右されます。PioSOLVERは、この違いをコンボ頻度と実現頻度(real frequency)として説明しています。関連する計算は、英語版のレンジ対レンジのエクイティ監査で全組み合わせを示しています。

本例はヘッズアップで、完成したリバーだけを扱います。マルチウェイでのプレイヤー間のレンジ相関、フォールド済みカードの情報、将来のランアウト、レーキ、トーナメント賞金、サイドポット、引き分けは含みません。扱うなら、その項目を定義したモデルを別途用意し、暗黙に0と置かないでください。

アプリ出力と本記事のモデルを区別する

日本向けApp Storeの現行掲載情報によると、GTO Geckoでは、プランで利用できる事前計算済みスポットについて、選択可能なアクション、混合戦略の頻度、EV推定値、レンジ構成、ハンドコンボ表示、アクション履歴を確認できます。これらの機能には有料プランが必要で、無料プランや無料コンテンツはなく、利用できるライブラリはプランによって異なると案内されています。本記事の27コンボ例は本記事用に作成した教材であり、アプリの出力ではありません。また、アプリが任意のカスタムレンジを更新する事後確率計算機や、本記事と同じカスタムノードを提供するという主張でもありません。

学習メモには、数値の出所と限界を一緒に残すと安全です。例:「利用可能な解析済みノードから、各コンボの重みとベット頻度を転記。自分の特定のホールカードと重ならないコンボだけで再計算。実在の相手が同じ頻度で動くとは仮定しない」。これなら、モデルを相手読みへすり替えずに再計算できます。

検証データ・再現手順・別実装での照合

公開データには、54行のコンボ台帳(自分のハンド2ケース × 候補27コンボ)、ケース別要約全前提と結果のJSON英語SVG日本語SVG決定論的ジェネレーター別実装のPython検証スクリプト英語の再現手順SHA-256マニフェストを収録しています。

検証スクリプトは、別に定義した短いフィクスチャから、既知カードと重ならないコンボと全ベット重みを再構成します。頻度で更新した場合とコンボを等分した場合の両方のEV、正規化後の全行、配布ファイルのハッシュを検査します。乱数やサンプリング結果は使いません。node generate.mjsの後に python verify.pyを実行してください。Pythonの最適化モードでも、同じ明示的チェックが動きます。

よくある質問

ベットを見ると、レンジは必ず強くなりますか?
いいえ。宣言したモデル内で、そのアクションを高頻度で選ぶハンド側へ重みが移ります。本例ではメイドハンドのベット頻度が高いので強くなりました。別の頻度表なら逆方向にも動きます。
ベット頻度10%のハンドも、ベット後レンジに残しますか?
残します。ただし、ベット直前の重みの10分の1だけです。「含まれる」と「他のコンボと同じ確率」は別です。
事後のブラフ比率は、そのままエクイティですか?
本記事のように、自分が全ミスドローに勝ち、全メイドハンドに負け、引き分けがない二値のリバー例に限れば一致します。通常のレンジでは、適合する各マッチアップのショーダウンエクイティを別に計算します。

出典