¿Qué es GTO en póker? Una explicación práctica
Introducción al póker óptimo según la teoría de juegos, los rangos, las acciones mixtas y los límites de un ejemplo de resolución con supuestos explícitos.
Contenido
GTO significa game theory optimal (óptimo según la teoría de juegos). En póker describe una estrategia diseñada para un modelo de juego concreto, de modo que el rival no pueda ganar mucho al explotarla. No promete que un gráfico, una mano o una pantalla de solver sea óptima en cualquier situación.
El modelo importa: posiciones, stacks, rangos, rake, board, tamaños de apuesta y regla de parada cambian la respuesta. En juegos de información imperfecta, métodos como la minimización de arrepentimiento contrafactual buscan un equilibrio aproximado del modelo declarado; no hacen que todo NLHE real esté «resuelto». Zinkevich et al. (2007) y Bowling et al. (2015) dan contexto: el segundo resultado corresponde a un modelo heads-up limit especificado, no a todo no-limit hold'em.
Piensa en rangos, no en una sola mano
Un rango reúne las manos plausibles y sus pesos. Una estrategia puede combinar acciones porque cada una necesita estar respaldada por un rango bien construido; no se trata de alternarlas por intuición. Lee primero los supuestos y después interpreta cada frecuencia para el modelo y nodo nombrados.
Para ver los rangos preflop en el producto, consulta Rangos. Para conocer las interfaces API del producto alojado, consulta la guía de la API del solver GTO. El glosario define términos como EV, rango e isomorfismo sin convertir este artículo en documentación de la API.
Un ejemplo de nodo raíz con supuestos explícitos
Este ejemplo usa un registro real de Direct calculado con CPU y rangos GG200NL de 100 bb: cash 6-max, CO abre a 2.5 bb, BB paga y el flop es Qs Th 2d. El bote raíz es 5.5 bb y el stack restante 97.5 bb; BB está fuera de posición y CO en posición. La configuración conserva pesos mixtos de clases de las fuentes; es una entrada de ejemplo, no una afirmación de rango preflop único ni de equilibrio completo con rake de GG.
Para la clase KQs en la raíz de BB, la comparación usa medias por clase del CSV nativo. La frecuencia es la media aritmética de combinaciones KQs supervivientes y el valor esperado (EV) de cada acción es la media correspondiente por clase en bb. No son un resultado ponderado de todo el rango, ni el EV de cada combinación, ni la equity, ni el peso preflop original de KQs. El peso de entrada KQs es 0.913 y InRange 0.7500 es cobertura de combinaciones supervivientes.
Frecuencia KQs
Comparación de frecuencia de acciones KQs del CSV capturado de raíz BB.; Acción raíz; Frecuencia de clase
Valor esperado (EV) de cada acción 3.8028 bb
Valor esperado (EV) de cada acción 3.7597 bb
Valor esperado (EV) de cada acción -0.7566 bb
La visualización CSV redondea esta acción a 0,00 %; no afirma que su probabilidad sea estrictamente cero.
| Acción raíz | Frecuencia KQs |
|---|---|
| Pasar | 0.3978 |
| Apostar 3 bb | 0.6022 |
| Apostar 97 bb | 0 |
La siguiente imagen de estrategia fue exportada por la aplicación para ese nodo raíz BB. No es una captura de escritorio ni la fuente de los valores anteriores.

La captura completa de la interfaz de Direct está en inglés y aporta evidencia visual independiente del mismo cálculo vinculado al CSV. Permite ver la interfaz de resultados; las cifras no se han extraído de los píxeles.

Lo que el ejemplo dice y lo que no dice
La configuración define una apuesta de 50% del bote: 2.75 bb en esta raíz. El redondeo nativo a 1 bb hace que la acción sea BET 3.000000. La raíz también conserva CHECK y BET 97.000000; no es un árbol de dos acciones. No se debe reescribir la frecuencia redondeada de la tercera acción como «nunca apostar».
El cálculo usó CPU, customExact, FP32, maxIteration 100, objetivo configurado de precisión de 0.5% del bote e isomorfismo. Su árbol postflop local no deduce rake y no pretende reproducir el modelo de rake GG original. El registro no incluye el número final de iteraciones ni explotabilidad medida. Los 98.509 segundos observados son un límite superior, no una medida exacta del tiempo de cálculo; por tanto no afirma que se alcanzara el objetivo, que sea un equilibrio completo ni consejo general para otro juego.
Flujo de estudio útil
- Declara el spot: posiciones, stacks, rangos, board, rake y acciones disponibles.
- Identifica nodo y estadístico; frecuencia, EV de cada acción, equity y EV ponderado responden preguntas distintas.
- Conserva acciones pequeñas aunque una pantalla redondeada muestre cero.
- Cambia un supuesto cada vez: un board o rango nuevo es un modelo nuevo, no una continuación de este resultado.
- Usa el solver para estudio y práctica, nunca como asistencia en tiempo real en mesas reales.
Entradas y resultados
Este ejemplo no prescribe una estrategia. Es NLHE 6-max, BB OOP y CO IP, ambos con 100 bb; CO abre 2.5 bb, BB paga y el flop es Qs Th 2d, con bote raíz 5.5 bb y 97.5 bb restantes. El archivo JSON de entrada descargable conserva los rangos mixtos completos: 98 clases BB y 73 clases CO; las no listadas pesan 0.
Descargas
- Descargar CSV del resultado de nodo raíz — 8,495 bytes; 98 clases BB con frecuencias raíz (fracciones 0–1) y EV de cada acción (bb), no un árbol completo ni resultado por combinación.
- Descargar la configuración de entrada completa en JSON — 3,946 bytes; la configuración exacta utilizada.
- Descargar MelaGTO Direct v1.1 (10).
| Ajuste | Valor usado |
|---|---|
| Solucionador | CPU, FP32, customExact |
| Tamaños de apuesta | 50% del bote para ambos jugadores en flop, turn y river; al redondear a unidades de 1 bb, la apuesta de medio bote en el flop pasa a ser de 3 bb |
| Árbol de juego | raiseLimit 1; allinThreshold 0.67; isomorfismo activado |
| Condiciones de parada | maxIteration 100; objetivo 0.5% del bote; número de hilos automático (-1) |
El objetivo es un ajuste, no una prueba de que se haya alcanzado la convergencia. El registro no incluye el número final de iteraciones ni una explotabilidad medida. La raíz conserva CHECK, BET 3.000000 y BET 97.000000; el CSV redondea la frecuencia de la tercera acción a 0.0000, pero eso no significa que sea imposible.
Rangos utilizados
Estos son los rangos completos con pesos mixtos de la configuración de entrada guardada, formateados para los campos Bulk edit de Direct. Las clases y los pesos se conservan a tres decimales; las clases no enumeradas tienen peso 0.
BB fuera de posición (98 clases)
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 en posición (73 clases)
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
Usa el JSON como referencia completa de parámetros: en Direct, crea un Custom spot con los valores anteriores, pega los rangos completos con Bulk edit, elige resolución por CPU y compara la salida del nodo raíz con el CSV descargado. La versión, el hardware y las condiciones de parada pueden afectar una repetición exacta.