ポーカーのGTOとは?実践的な解説
GTOの考え方、レンジ、混合戦略を解説します。条件を明示したソルバーの実例から、結果の読み方と限界を学びます。
目次
GTO は game theory optimal(ゲーム理論最適)の略です。ポーカーでは、特定のゲームモデルで、相手に弱点を突かれても大きな利益を与えにくい戦略を指します。1枚のチャート、1ハンド、1つのソルバー画面があらゆる状況で最善だという約束ではありません。
ポジション、有効スタック、レンジ、レーキ、ボード、ベットサイズ、計算の停止条件によって答えは変わります。不完全情報ゲームでは、反実仮想後悔最小化(CFR)などの手法を用いて、指定したゲームモデルの近似均衡を探します。実際のノーリミット・ホールデムのあらゆる局面が「解決済み」になるわけではありません。Zinkevich et al. (2007) と Bowling et al. (2015) はその背景となる研究です。後者の「解決済み」という結論は、特定のヘッズアップ・リミット・ホールデムのモデルについて述べたものです。
単一ハンドではなくレンジで考える
レンジはプレイヤーが持ち得るハンドとその重みの集合です。混合戦略は、各アクションを適切に構成したレンジで支えるためのもので、感覚で行動を交互に選ぶ意味ではありません。まず仮定を読み、各頻度を指定モデル・指定ノードの値として扱います。
プリフロップレンジを製品上で確認するには、レンジを参照してください。ホスト型製品の API については、GTOソルバー API ガイドをご覧ください。用語集では EV、レンジ、同型性などを説明しており、この記事自体を API ドキュメントにする必要はありません。
条件を明示したルートノードの例
この例は GG200NL 100 bb レンジを用いた実際の Direct CPU の記録です。6人卓キャッシュで CO が 2.5 bb にオープンし、BB がコール、フロップは Qs Th 2d です。ルートノードのポットは 5.5 bb、残りスタックは 97.5 bb。BB はアウト・オブ・ポジション(OOP)、CO はイン・ポジション(IP)です。元のレンジに含まれる各ハンドクラスの重みを保った例示入力であり、唯一正しいプリフロップレンジや GG のレーキを含む完全な均衡を主張しません。
BB ルートの KQs ハンドクラスは、ネイティブ CSV のクラス別平均を比較します。頻度は残った KQs コンボの算術平均、各アクションの期待値(EV)はアクション別クラス平均(bb)です。これらは全レンジの加重結果でも、コンボごとの EV でも、元のプリフロップ KQs ウェイトでも、エクイティでもありません。入力 KQs ウェイトは 0.913、CSV の InRange 0.7500 は残存コンボのカバー率です。
KQs 頻度
記録した BB ルート CSV による KQs アクション頻度の比較。; ルートアクション; クラス頻度
各アクションの期待値(EV) 3.8028 bb
各アクションの期待値(EV) 3.7597 bb
各アクションの期待値(EV) -0.7566 bb
CSV表示ではこのアクションは0.00%に丸められていますが、確率が厳密にゼロという意味ではありません。
| ルートアクション | KQs 頻度 |
|---|---|
| チェック | 0.3978 |
| 3 bb ベット | 0.6022 |
| 97 bb ベット | 0 |
次のネイティブ戦略エクスポートは、この BB ルートノード用にアプリが作成したものです。デスクトップのスクリーンショットでも、上記値の情報源でもありません。

完全な Direct UI スクリーンショットは英語のままですが、同じ CSV に結び付いた記録の独立した表示証拠であり、ピクセルから数値を転記するものではありません。

この例が示すこと、示さないこと
設定は 50% ポットベットを指定し、このルートでは 2.75 bb です。ネイティブの 1 bb 丸めにより実際のアクションは BET 3.000000 になります。ルートには CHECK と BET 97.000000 も残るため、2アクションのツリーではありません。3番目のアクションの CSV 上の丸めた頻度を「絶対にベットしない」と書き換えてはいけません。
記録は CPU、customExact、FP32、maxIteration 100、設定上の 0.5% ポット精度目標、同型性を使用しました。ポストフロップのツリーはローカルのレーキ控除なしモデルで、元の GG のレーキモデルの再現を主張しません。今回の記録には、最終反復回数も、実測したエクスプロイト可能性も含まれていません。観測された 98.509 秒は上限であり、正確な計算時間ではありません。したがって目標達成、完全均衡、別ゲームへの一般的助言を主張しません。
学習の手順
- 推奨アクションを見る前に、ポジション、スタック、レンジ、ボード、レーキの扱い、選択できるアクションを確認します。
- ノードと統計の種類を区別します。頻度、各アクションの EV、エクイティ、レンジ全体の加重 EV は、それぞれ別の問いに答える指標です。
- 丸めた表示がゼロでも、ごく低頻度のアクションを削除しません。
- 比較するときは条件を1つずつ変えます。ボードやレンジを変えれば、別のゲームモデルになります。
- ソルバーの結果は学習と練習に使い、実際のプレイ中にリアルタイムの支援として利用しません。
入力と結果
この例は、そのまま従うべき戦略を示すものではありません。条件は6人卓のノーリミット・ホールデムで、BB が OOP、CO が IP、開始時のスタックは双方 100 bb です。CO が 2.5 bb にオープンして BB がコールした後、フロップは Qs Th 2d、ルートノードのポットは 5.5 bb、残りスタックは 97.5 bb になります。
ダウンロード
- ルートノードの結果を CSV でダウンロード — 8,495 バイト。BB の98ハンドクラスについて、ルートノードでの頻度(0–1の割合)と各アクションの EV(bb)を収録しています。ツリー全体やコンボごとの結果ではありません。
- 保存した入力設定を JSON でダウンロード — 3,946 バイト。この例で実際に使用した設定です。
- MelaGTO Direct v1.1 (10) をダウンロード。
| 設定 | 使用値 |
|---|---|
| ソルバー | CPU、FP32、customExact |
| ベットサイズ | フロップ、ターン、リバーとも、両プレイヤーがポットの50%をベット。1 bb単位の丸めにより、フロップのハーフポットベットは3 bbになります |
| ゲームツリー | raiseLimit 1、allinThreshold 0.67、同型性を有効化 |
| 停止条件 | maxIteration 100、ポットの0.5%という精度目標、スレッド数は自動(-1) |
精度目標は設定値であり、実際にその精度まで収束したことを示す証拠ではありません。今回の記録には最終反復回数も実測したエクスプロイト可能性も含まれていません。ルートノードには CHECK、BET 3.000000、BET 97.000000 が残っています。CSV では3番目のアクションの頻度が 0.0000 に丸められていますが、そのアクションが起こり得ないという意味ではありません。
使用したレンジ
以下は保存済み入力に含まれる完全な混合ウェイトのレンジで、Direct の Bulk edit フィールド用に整形しています。ハンドクラスとウェイトは小数点以下3桁まで保持し、記載のないクラスのウェイトは0です。
BB OOP(98クラス)
22:1.000, 33:1.000, 44:1.000, 55:1.000, 66:0.900, 77:0.965, 88:0.956, 99:0.920, 32s:0.431, 42s:1.000, 43s:0.804, 52s:1.000, 53s:0.873, 54s:0.727, 63s:1.000, 64s:0.711, 65o:0.060, 65s:0.706, 74s:1.000, 75s:0.871, 76o:0.176, 76s:0.665, 84s:0.309, 85s:0.949, 86s:0.916, 87o:0.163, 87s:0.746, 95s:0.387, 96s:0.927, 97s:0.928, 98o:0.271, 98s:0.823, A2s:0.711, A3s:0.735, A4o:0.289, A4s:0.754, A5o:0.815, A5s:0.540, A6s:1.000, A7o:0.849, A7s:1.000, A8o:0.928, A8s:1.000, A9o:0.996, A9s:0.998, AJo:0.937, AJs:0.785, AQo:0.912, ATo:0.951, ATs:0.883, J3s:0.828, J4s:0.885, J5s:0.936, J6s:0.875, J7s:0.731, J8s:0.747, J9o:0.482, J9s:0.334, JJ:0.224, JTo:1.000, JTs:0.384, K2s:0.912, K3s:0.652, K4s:0.747, K5s:0.882, K6o:0.083, K6s:0.921, K7s:0.856, K8o:0.101, K8s:0.995, K9o:0.980, K9s:0.814, KJo:0.779, KJs:0.527, KQo:0.700, KQs:0.913, KTo:0.856, KTs:0.772, Q2s:0.815, Q3s:0.818, Q4s:0.805, Q5s:0.701, Q6s:0.622, Q7s:0.997, Q8s:0.611, Q9o:0.452, Q9s:0.499, QJo:0.906, QJs:0.145, QTo:0.926, QTs:0.577, T6s:0.829, T7s:0.915, T8o:0.057, T8s:0.910, T9o:0.839, T9s:0.265, TT:0.808
CO IP(73クラス)
22:0.417, 33:0.407, 44:1.000, 55:1.000, 66:1.000, 77:1.000, 88:1.000, 99:1.000, 54s:0.302, 65s:0.401, 76s:0.357, 87s:0.566, 97s:0.623, 98s:1.000, A2s:1.000, A3s:1.000, A4s:1.000, A5o:0.926, A5s:1.000, A6s:1.000, A7o:0.464, A7s:1.000, A8o:1.000, A8s:1.000, A9o:1.000, A9s:1.000, AA:1.000, AJo:1.000, AJs:1.000, AKo:1.000, AKs:1.000, AQo:1.000, AQs:1.000, ATo:1.000, ATs:1.000, J7s:1.000, J8s:1.000, J9o:0.305, J9s:1.000, JJ:1.000, JTo:1.000, JTs:1.000, K3s:1.000, K4s:1.000, K5s:1.000, K6s:1.000, K7s:1.000, K8s:1.000, K9o:0.677, K9s:1.000, KJo:1.000, KJs:1.000, KK:1.000, KQo:1.000, KQs:1.000, KTo:1.000, KTs:1.000, Q5s:1.000, Q6s:1.000, Q7s:1.000, Q8s:1.000, Q9o:0.213, Q9s:1.000, QJo:1.000, QJs:1.000, QQ:1.000, QTo:1.000, QTs:1.000, T7s:0.670, T8s:1.000, T9o:0.160, T9s:1.000, TT:1.000
JSON を完全なパラメータ参照として使ってください。Direct で上記の値による Custom spot を作成し、Bulk edit で完全なレンジを貼り付け、CPUでの解析を選び、ルートノードの出力をダウンロードした CSV と比較します。バージョン、ハードウェア、停止条件は厳密な再実行に影響します。