O que é GTO no poker? Uma explicação prática
Introdução ao poker ótimo pela teoria dos jogos, ranges, ações mistas e aos limites de um exemplo com parâmetros definidos.
Sumário
GTO significa game theory optimal, ou ótimo pela teoria dos jogos. No poker, descreve uma estratégia feita para um modelo de jogo específico, de forma que um adversário não consiga ganhar muito explorando-a. Não é a promessa de que um gráfico, uma mão ou uma tela de solver seja a melhor resposta em toda situação.
Posições, stack efetivo, ranges, rake, board, tamanhos de aposta e regra de parada mudam a resposta. Em jogos de informação imperfeita, métodos como minimização de arrependimento contrafactual buscam um equilíbrio aproximado do modelo declarado; não tornam todo no-limit hold'em real “resolvido”. Zinkevich et al. (2007) e Bowling et al. (2015) dão o contexto: a conclusão de Bowling et al. de que o jogo foi resolvido se refere a um modelo heads-up limit especificado, não a todo o NLHE.
Pense em ranges, não em uma mão isolada
Um range reúne as mãos plausíveis de um jogador e seus pesos. Uma estratégia pode combinar ações porque cada uma precisa ser sustentada por um range bem construído; isso não significa alternar as ações por intuição. Leia os pressupostos antes e trate cada frequência como instrução para o modelo e nó identificados.
Para visualizar os ranges pré-flop no produto, veja Ranges. Para conhecer as interfaces de API do produto hospedado, consulte o guia da API do solver GTO. O glossário define termos como EV, range e isomorfismo sem transformar este artigo em documentação da API.
Um exemplo de nó raiz com parâmetros definidos
O exemplo usa um registro real do Direct calculado com CPU e ranges GG200NL de 100 bb: cash 6-max, CO abre para 2.5 bb, BB paga e o flop é Qs Th 2d. O pote raiz é 5.5 bb e o stack restante é 97.5 bb; BB está fora de posição e CO está em posição. A configuração mantém os pesos mistos de classe dos dados de origem; é uma entrada de exemplo, não uma alegação de range pré-flop único nem de equilíbrio completo com rake GG.
Para a classe KQs na raiz BB, a comparação usa médias por classe do CSV nativo. A frequência é a média aritmética das combinações KQs sobreviventes; o EV de cada ação é a média de classe por ação em bb. Não são um resultado ponderado de todo o range, nem o EV de cada combinação, nem a equidade, nem o peso pré-flop original de KQs. O peso de entrada é 0.913 e InRange 0.7500 é a fração de cobertura de combinações sobreviventes.
Frequência KQs
Comparação de frequência de ações KQs do CSV capturado da raiz BB.; Ação raiz; Frequência da classe
EV de cada ação 3.8028 bb
EV de cada ação 3.7597 bb
EV de cada ação -0.7566 bb
A exibição do CSV arredonda esta ação para 0,00%; isso não afirma que sua probabilidade seja estritamente zero.
| Ação raiz | Frequência KQs |
|---|---|
| Check | 0.3978 |
| Apostar 3 bb | 0.6022 |
| Apostar 97 bb | 0 |
A exportação de estratégia nativa abaixo foi produzida pelo aplicativo para esse nó raiz BB. Não é uma captura de tela de desktop nem a fonte dos valores acima.

A captura completa da interface do Direct está em inglês e fornece evidência visual independente do mesmo cálculo vinculado ao CSV. Ela mostra a interface de resultados; os números não foram extraídos dos pixels.

O que este exemplo diz — e o que não diz
A configuração define uma aposta de 50% do pote: 2.75 bb nessa raiz. O arredondamento nativo de 1 bb faz a ação real ser BET 3.000000. A raiz também mantém CHECK e BET 97.000000, portanto não é uma árvore de duas ações. A frequência arredondada da terceira ação não deve ser reescrita como “nunca apostar”.
O cálculo usou CPU, customExact, FP32, maxIteration 100, alvo configurado de precisão de 0.5% do pote e isomorfismo. Sua árvore postflop local não deduz rake e não afirma reproduzir o rake GG original. Não há contagem final de iterações nem explorabilidade medida. Os 98.509 segundos observados são limite superior, não medida exata de tempo de resolução; assim, não há alegação de alvo atingido, equilíbrio completo ou conselho geral para outro jogo.
Fluxo de estudo útil
- Declare o spot: posições, stacks, ranges, board, tratamento do rake e ações disponíveis.
- Identifique nó e estatística: frequência, EV de cada ação, equidade e EV ponderado respondem a perguntas diferentes.
- Preserve ações pequenas mesmo quando a tela arredondada mostra zero.
- Mude uma hipótese por vez; um novo board ou range é um novo modelo, não uma continuação deste resultado.
- Use solver para estudo e prática, nunca como assistência em tempo real em mesas reais.
Entradas e resultados
Este exemplo não é uma recomendação de estratégia. É NLHE 6-max, BB OOP e CO IP, ambos com 100 bb; CO abre 2.5 bb, BB paga e o flop é Qs Th 2d, com pote raiz de 5.5 bb e 97.5 bb restantes. O arquivo JSON de entrada disponível para download mantém os ranges mistos completos: 98 classes BB e 73 classes CO; classes não listadas têm peso 0.
Downloads
- Baixar o CSV do resultado de nó raiz — 8,495 bytes; 98 classes BB com frequências de raiz (frações 0–1) e EV de cada ação (bb), não uma árvore completa nem resultado por combinação.
- Baixar a configuração de entrada completa em JSON — 3,946 bytes; a configuração exata utilizada.
- Baixar MelaGTO Direct v1.1 (10).
| Configuração | Valor usado |
|---|---|
| Solver | CPU, FP32, customExact |
| Tamanhos de aposta | 50% do pote para os dois jogadores no flop, turn e river; com arredondamento em unidades de 1 bb, a aposta de meio pote no flop passa a ser de 3 bb |
| Árvore de jogo | raiseLimit 1; allinThreshold 0.67; isomorfismo ativado |
| Condições de parada | maxIteration 100; alvo de 0.5% do pote; número de threads automático (-1) |
O alvo é uma configuração, não uma prova de convergência. O registro não informa o número final de iterações nem a explorabilidade medida. A raiz conserva CHECK, BET 3.000000 e BET 97.000000; o CSV arredonda a frequência da terceira ação para 0.0000, mas isso não significa que ela seja impossível.
Ranges usados
Estes são os ranges completos de pesos mistos da configuração de entrada salva, formatados para os campos Bulk edit do Direct. As classes e os pesos são preservados com três casas decimais; classes não listadas têm peso 0.
BB fora de posição (98 classes)
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 em posição (73 classes)
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
Use o JSON como referência completa dos parâmetros: no Direct, crie um Custom spot com os valores acima, cole os ranges completos com Bulk edit, escolha a resolução por CPU e compare a saída do nó raiz com o CSV baixado. A versão, o hardware e as condições de parada podem afetar uma repetição exata.