Estudio del motor · Rendimiento del bot

Comparativa de Open Sage frente a eXtreme Gammon

Una comparación cuantitativa del motor de evaluación Open Sage — el que impulsa Backgammon Sage Pro — frente al motor de eXtreme Gammon (XG).

Resumen

Comparamos el motor Open Sage con eXtreme Gammon (XG) a niveles de evaluación equiparados: evaluación directa de la red neuronal, búsqueda multi-ply y rollouts truncados. Como XG no expone ninguna interfaz programática, lo puntuamos a través de su función de análisis por lotes (Batch Analysis). Empleamos tres métodos complementarios. El primero construye un conjunto escalonado de evaluaciones de referencia — confiando en las evaluaciones rápidas cuando la elección es clara y escalando las decisiones ajustadas hasta rollouts completos — y puntúa cada motor como un Performance Rating (PR, índice de rendimiento) frente a esa referencia, tanto en 500 partidas ilimitadas (17 535 decisiones) como en 130 matches a cinco puntos (18 292 decisiones). Para las partidas ilimitadas reconstruimos después toda la comparación tomando como referencia el propio análisis escalonado de XG — el espejo exacto — y el rollout truncado de Sage sigue por delante incluso juzgado con los números del propio XG. El segundo método aísla las posiciones de partidas ilimitadas en las que Sage 3T y XG Roller++ discrepan de verdad y adjudica cada una frente a los rollouts completos de ambos motores. En los dos métodos los motores quedan muy cerca, con Sage modestamente por delante en los niveles de rollout truncado equiparados que la mayoría de los usuarios utiliza. El tercer método invierte la pregunta: sobre 290 matches reales de torneo ya analizados en XG, volvemos a analizar cada uno en Sage y comparamos el Performance Rating que los dos motores asignan a cada jugador — y la diferencia media resulta estadísticamente indistinguible de cero.

01
Introducción

¿Por qué medirse con XG?

eXtreme Gammon (XG) es la referencia habitual del análisis computacional del backgammon, y su motor de evaluación se considera ampliamente uno de los más fuertes que existen. Cualquier motor nuevo que aspire a tomarse en serio tiene que responder a una pregunta sencilla: ¿cómo se compara con XG? Este estudio se propone responderla cuantitativamente para Open Sage, el motor de redes neuronales que hay detrás de Backgammon Sage Pro.

Nuestro objetivo era comparar las evaluaciones de Open Sage con las de XG a niveles de esfuerzo comparables. El experimento natural — hacer que los dos motores jueguen muchos miles de partidas entre sí y contar el resultado — no es práctico: la aplicación de escritorio de XG no expone ninguna interfaz programática, así que pasar posiciones y jugadas de un motor al otro es un proceso manual, a golpe de clic. Alcanzar una muestra lo bastante grande para resolver las pequeñas diferencias entre dos motores fuertes llevaría demasiado tiempo.

En su lugar usamos la función Batch Analysis (análisis por lotes) de XG, capaz de puntuar cientos de partidas transcritas en una sola pasada desatendida. Open Sage juega ambos lados de muchas partidas; cada partida se exporta en un formato de texto estándar que XG puede importar; XG analiza el conjunto; y nosotros extraemos sus veredictos. Sobre esa base común aplicamos dos métodos distintos, descritos en la sección 3 y la sección 4. Un tercer estudio (sección 5) deja de lado las simulaciones por completo y parte de matches reales de torneo analizados en XG.

02
Contexto

Niveles de evaluación

Ambos motores pueden evaluar una posición a distintas profundidades, cambiando precisión por velocidad. Entender estos niveles es esencial para leer los resultados, porque la comparación se hace siempre entre niveles equiparados de los dos motores.

Evaluación directa (1-ply). La salida en bruto de la red neuronal para una posición, sin búsqueda hacia delante. Es el ajuste más rápido y la base sobre la que se construye cada nivel más profundo. (Seguimos la convención de XG, en la que 1-ply designa la evaluación en bruto de la red.)

Búsqueda multi-ply (2-, 3-, 4-ply). El motor mira varios turnos hacia delante, considerando las respuestas del oponente y promediando sobre las posibles tiradas en cada paso, con una evaluación en bruto de la red al final de cada línea. Cada ply adicional es más preciso y bastante más costoso.

Rollouts truncados (1T, 2T, 3T). En lugar de buscar hasta una profundidad fija, el motor juega muchas partidas simuladas cortas, las trunca tras unos pocos turnos y evalúa la posición resultante con búsqueda multi-ply. La reducción de varianza cancela buena parte de la suerte de los dados muestreados. Son los ajustes “Roller” de XG, y son más fuertes que la búsqueda a profundidad fija sin dejar de ser mucho más baratos que un rollout completo.

Rollout completo. Muchas partidas simuladas jugadas hasta el final. Ejecutado con suficiente volumen y reducción de varianza, un rollout completo es lo más parecido a la verdad que un motor de backgammon puede producir, y lo usamos como estándar de referencia a lo largo de todo este estudio.

Niveles equiparados: Sage y XG

Familia Sage Equivalente en XG Qué hace
Directa 1-ply 1-ply (evaluación en bruto) Una única evaluación de la posición con la red neuronal, sin búsqueda hacia delante.
Multi-ply 2P · 3P · 4P 2-ply · 3-ply · 4-ply Explora las respuestas del oponente varios turnos en profundidad, promediando sobre los dados.
Rollout truncado 1T · 2T · 3T Roller · Roller+ · Roller++ Muchas partidas simuladas cortas, truncadas tras 5–7 turnos y evaluadas con multi-ply, con reducción de varianza. 3T/Roller++ usan decisiones a 3-ply; 2T/Roller+ a 2-ply; 1T/Roller a 1-ply.
Rollout completo Rollout Rollout Partidas simuladas jugadas hasta el final: la “verdad” de referencia en este estudio.
Performance Rating (PR). En todo el estudio, la precisión de un motor se resume como PR (índice de rendimiento): el error medio de equidad por decisión, multiplicado por 500, medido frente a la referencia obtenida por rollout. Un PR de 0 significa acuerdo perfecto con la verdad; cuanto más bajo, mejor.
03
Método uno

PR de rollout

El primer método puntúa cada motor frente a un conjunto fijo de decisiones cuya “verdadera” mejor jugada hemos establecido con la mayor precisión posible. Sigue el mismo enfoque del conocido estudio de XG de 2012 que comparó XG con varios otros bots.

Empezamos simulando 500 partidas ilimitadas de Sage 3P jugando contra sí mismo. Un nivel moderadamente fuerte como 3P produce una distribución realista de posiciones en todos los planes de juego — carrera, ataque, bloqueo, anclaje — que es exactamente la variedad contra la que queremos probar. Después repetimos el estudio completo con 130 matches a cinco puntos, donde el marcador cambia el valor de cada decisión; los resultados de ambos aparecen más abajo.

Construir la verdad de referencia

Establecer la verdadera mejor jugada de cada decisión mediante rollout completo sería enormemente costoso — e innecesario, porque la mayoría de las decisiones no son ajustadas. Por eso construimos la referencia en tres pasadas escalonadas, gastando esfuerzo de rollout solo donde la elección está realmente en duda. La misma receta se aplica a los dos conjuntos de datos; cada pasada resuelve las decisiones que puede zanjar con confianza y pasa el resto a la siguiente:

Pasada 1 · Sage 3P

Confiar en 3-ply cuando la elección es clara

Cada decisión se evalúa a 3-ply. Cuando la mejor jugada supera a la siguiente por más de 0,05 de equidad, el veredicto de 3P se acepta como verdad y la decisión queda resuelta.

0.05
margen de equidad para resolver
Las decisiones más ajustadas (dentro de 0,05) pasan a la pasada 2
Pasada 2 · Sage 3T

Revisar las decisiones ajustadas con un rollout truncado

Las decisiones restantes se reevalúan a 3T. Cuando el margen supera ahora 0,02 de equidad, el veredicto de 3T se acepta como verdad.

0.02
margen de equidad para resolver
Todo lo que siga dentro de 0,02 pasa a la pasada 3
Pasada 3 · Rollout completo

Hacer rollout de las decisiones más difíciles

Todo lo que sigue dentro de 0,02 se resuelve con un rollout completo de Sage: decisiones a 3P tanto para el juego de fichas como para las acciones del cubo, ejecutado en lotes de 1296 caminos hasta que la banda de confianza del 95 % sobre la equidad baja de 0,005 — o se alcanza un tope de 20 736 caminos (16 × 1296). Las posiciones de back game más lentas tardaron bastante más de una hora cada una.

0.005
banda del 95 % objetivo

El resultado es una referencia escalonada en la que cada decisión se resuelve exactamente a la profundidad que su dificultad exige. Aplicamos esta misma receta de tres pasadas a los dos conjuntos de datos — las 500 partidas ilimitadas y los 130 matches a cinco puntos — y la composición de niveles resultante se muestra junto a los resultados de cada conjunto más abajo.

Puntuar un motor

Con un conjunto escalonado de evaluaciones fiables en la mano, puntuar cualquier motor es sencillo: le presentamos cada decisión del benchmark, registramos el error de equidad de la jugada o acción del cubo que elige respecto a la verdad, e informamos el error medio × 500 como PR. El mismo total se desglosa en PR de fichas y PR de cubo, y además por plan de juego.

Puntuar a XG exigió el paso adicional descrito en la introducción. Como XG no tiene API, ejecutamos su Batch Analysis sobre las transcripciones de las 500 partidas ilimitadas y los 130 matches con un nivel personalizado — decisiones a 3-ply, subiendo al nivel bajo prueba allí donde discrepaba — y extrajimos la decisión preferida de XG para cada posición de los archivos .xg que produce, puntuándolas frente a las mismas equidades de referencia.

Partidas ilimitadas — composición de la referencia

En las 500 partidas ilimitadas, las tres pasadas resolvieron 16 889 posiciones (17 535 decisiones) así:

Resueltas a 3P  7652 Resueltas a 3T  3260 Con rollout  5977 Partidas ilimitadas  16 889 posiciones · 17 535 decisiones

Partidas ilimitadas — cara a cara

Los cinco niveles equiparados, puntuados sobre esas 17 535 decisiones. Cuanto más bajo el PR, mejor; en cada pareja se resalta el motor más fuerte.

Sage 3T
Rollout truncado · decisiones a 3-ply · truncado a 7 turnos
0.21
vs
0.32
XG Roller++
Rollout truncado · decisiones a 3-ply · truncado a 7 turnos
Sage 3T aventaja por 0,11 PR
Sage 2T
Rollout truncado · decisiones a 2-ply
0.26
vs
0.41
XG Roller+
Rollout truncado · decisiones a 2-ply
Sage 2T aventaja por 0,15 PR
Sage 1T
Rollout truncado · decisiones a 1-ply · truncado a 5 turnos · 72 caminos
0.50
vs
0.53
XG Roller
Rollout truncado · decisiones a 1-ply · truncado a 5 turnos · 42 caminos
Sage 1T aventaja por 0,03 PR
Sage 4P
Búsqueda a 4-ply
0.41
vs
0.46
XG 4-ply
Búsqueda a 4-ply
Sage 4P aventaja por 0,05 PR
Sage 3P
Búsqueda a 3-ply
0.58
vs
0.57
XG 3-ply
Búsqueda a 3-ply
Prácticamente empate — XG 3-ply por delante por 0,01 PR

Partidas ilimitadas — desglose completo

PR de cada motor y nivel probado, desglosado por tipo de decisión y plan de juego. Cuanto más bajo, mejor.

Motor PR Fichas Cubo Carrera pura Carrera Ataque Bloqueo Anclaje
Sage 3T 0.210.180.360.020.240.170.310.28
XG Roller++ 0.320.310.380.040.400.240.410.44
Sage 2T 0.260.230.440.020.320.210.390.30
XG Roller+ 0.410.410.390.050.590.310.470.54
Sage 1T 0.500.520.400.040.570.430.590.73
XG Roller 0.530.540.480.050.630.440.710.66
Sage 4P 0.410.390.500.070.510.370.450.53
XG 4-ply 0.460.450.520.060.580.400.570.58
Sage 3P 0.580.580.570.140.720.520.630.74
XG 3-ply 0.570.570.580.050.710.480.730.71
Sage 2P 1.641.392.880.401.771.831.861.71
Sage 1P 2.592.483.200.782.602.793.102.89
Open Sage eXtreme Gammon Sage 2P y 1P no tienen equivalente de XG en esta ejecución y se muestran como referencia.
Las evaluaciones de Sage son más fuertes que la evaluación equivalente de XG en todos los niveles equiparados salvo 3-ply, donde XG se adelanta por 0,01 PR — una diferencia muy dentro del ruido. Los dos motores están muy cerca, y en los niveles de rollout truncado que la mayoría de los usuarios utiliza, Sage mantiene una ventaja consistente.

Partidas ilimitadas — puntuadas frente a la propia referencia de XG

Todos los números anteriores califican a los motores frente a la referencia escalonada de Sage. La objeción obvia es que Sage juega en casa: se le está midiendo contra sus propios rollouts. Así que construimos el espejo exacto: las mismas 500 partidas y las mismas decisiones, pero con el propio análisis de XG como verdad en cada nivel. XG 3-ply resuelve las decisiones del nivel 3P, XG Roller++ las del nivel 3T y el rollout completo del propio XG las decisiones con rollout — el análogo nivel a nivel, en XG, de la referencia de Sage. Después se vuelve a puntuar cada motor frente a ella.

Motor PR Fichas Cubo Carrera pura Carrera Ataque Bloqueo Anclaje
Sage 3T 0.260.250.330.020.370.200.300.36
XG Roller++ 0.330.350.230.040.500.200.390.47
Sage 2T 0.310.300.350.020.410.270.360.37
XG Roller+ 0.380.400.230.040.580.260.390.54
Sage 1T 0.460.480.370.030.580.400.500.64
XG Roller 0.470.490.350.120.610.350.540.62
Sage 4P 0.370.360.420.060.530.340.400.39
XG 4-ply 0.450.460.400.130.600.360.480.59
Sage 3P 0.490.480.520.080.660.460.540.55
XG 3-ply 0.470.490.400.120.630.370.540.61
Sage 2P 1.351.142.400.311.501.481.521.41
Sage 1P 2.242.142.760.742.212.442.692.39
Open Sage eXtreme Gammon Referencia: XG 3-ply (nivel 3P) · XG Roller++ (nivel 3T) · rollout completo de XG (nivel rollout).
El veredicto sobrevive al cambio de verdad. Medido frente al propio análisis de XG, Sage sigue siendo el motor más cercano en los niveles de rollout truncado — 3T 0,26 vs Roller++ 0,33, y 2T 0,31 vs Roller+ 0,38 — y a 4-ply. De hecho, 4-ply es la prueba más limpia de todas: es el único nivel del que no se construye la referencia de ninguno de los dos motores, así que ninguna fila se puntúa contra sí misma, y Sage gana 0,37 a 0,45. En el resto, la comparación favorece a XG más que a Sage — XG Roller++ es la referencia del nivel 3T y XG 3-ply la del nivel 3P, así que esas filas puntúan casi cero exactamente donde definen la verdad. La ventaja de Sage queda aquí, si acaso, subestimada. La única columna en la que la propia referencia de XG favorece a XG es la del cubo.
Dos referencias, una conclusión. Sea cual sea el motor cuyo análisis se tome como verdad, Sage 3T queda por delante de XG Roller++ — 0,21 vs 0,32 con la referencia de Sage, 0,26 vs 0,33 con la de XG — y los niveles de rollout truncado conservan su ventaja. La única duda real sobre la primera tabla — que la vara de medir eran los propios rollouts de Sage — es precisamente lo que este espejo elimina.

Modalidad match — composición de la referencia

El conjunto de matches ejecuta las mismas tres pasadas, con un añadido: el marcador away de cada jugador y la marca de Crawford se propagan por todas las evaluaciones, de modo que la verdad se calcula en el espacio de equidad de match (MWC) frente al marcador correcto. En los 130 matches a cinco puntos, las pasadas resolvieron 17 892 posiciones (18 292 decisiones) así:

Resueltas a 3P  7522 Resueltas a 3T  3460 Con rollout  6910 Modalidad match  17 892 posiciones · 18 292 decisiones

Modalidad match — cara a cara

Los cinco niveles equiparados, puntuados sobre esas 18 292 decisiones. Cuanto más bajo el PR, mejor; en cada pareja se resalta el motor más fuerte.

Sage 3T
Rollout truncado · decisiones a 3-ply · truncado a 7 turnos
0.19
vs
0.35
XG Roller++
Rollout truncado · decisiones a 3-ply · truncado a 7 turnos
Sage 3T aventaja por 0,16 PR
Sage 2T
Rollout truncado · decisiones a 2-ply
0.26
vs
0.44
XG Roller+
Rollout truncado · decisiones a 2-ply
Sage 2T aventaja por 0,18 PR
Sage 1T
Rollout truncado · decisiones a 1-ply · truncado a 5 turnos · 72 caminos
0.49
vs
0.51
XG Roller
Rollout truncado · decisiones a 1-ply · truncado a 5 turnos · 42 caminos
Sage 1T aventaja por 0,02 PR
Sage 4P
Búsqueda a 4-ply
0.42
vs
0.46
XG 4-ply
Búsqueda a 4-ply
Sage 4P aventaja por 0,04 PR
Sage 3P
Búsqueda a 3-ply
0.57
vs
0.54
XG 3-ply
Búsqueda a 3-ply
Prácticamente empate — XG 3-ply por delante por 0,03 PR

Modalidad match — desglose completo

PR de cada motor y nivel probado en el conjunto de matches a 5 puntos, desglosado por tipo de decisión y plan de juego. Cuanto más bajo, mejor.

Motor PR Fichas Cubo Carrera pura Carrera Ataque Bloqueo Anclaje
Sage 3T 0.190.160.400.010.170.180.250.26
XG Roller++ 0.350.350.410.080.440.320.330.45
Sage 2T 0.260.240.440.020.360.180.340.33
XG Roller+ 0.440.440.410.090.550.440.400.52
Sage 1T 0.490.490.520.050.570.440.570.63
XG Roller 0.510.510.540.090.640.500.510.62
Sage 4P 0.420.420.480.050.520.380.450.55
XG 4-ply 0.460.450.560.090.600.440.420.56
Sage 3P 0.570.560.670.050.740.560.580.68
XG 3-ply 0.540.530.610.090.690.530.520.65
Sage 2P 1.301.261.600.391.591.231.501.41
Sage 1P 2.302.292.310.692.482.432.472.56
Open Sage eXtreme Gammon Sage 2P y 1P no tienen equivalente de XG en esta ejecución y se muestran como referencia.
Los resultados en matches repiten los del estudio de partidas ilimitadas: Sage es más fuerte que la evaluación equivalente de XG en todos los niveles equiparados salvo 3-ply, donde XG se adelanta por 0,03 PR — muy dentro del ruido. La ventaja más clara de Sage vuelve a estar en los niveles de rollout truncado (3T y 2T) que la mayoría de los usuarios utiliza.
04
Método dos

Posiciones en disputa

El método del PR de rollout puntúa a ambos motores frente a una referencia compartida. Una pregunta más aguda y directa es esta: en juego realista, ¿dónde discrepan realmente los dos motores sobre la mejor jugada — y, cuando lo hacen, cuál tiene razón?

La respondemos sobre las decisiones más difíciles de partidas ilimitadas del método uno — las posiciones con rollout, cada una de las cuales lleva ahora tanto un rollout completo de Sage como un rollout completo de XG. Entre ellas buscamos cada decisión en la que Sage 3T y XG Roller++ eligieron distinto, y preguntamos qué elección prefirió cada rollout. Tener ambos rollouts es la clave: cada discrepancia se juzga frente al rollout de Sage y al del propio XG, de modo que la respuesta nunca depende de confiar en la verdad de un solo motor.

  • Partir del benchmark de partidas ilimitadas con rollout — las decisiones más difíciles, cada una resuelta con un rollout completo de Sage.
  • Hacer que XG produzca su propio rollout completo de las mismas posiciones (su Batch Rollout): una segunda verdad de referencia independiente.
  • Quedarse con las decisiones en las que Sage 3T y XG Roller++ discrepan, y puntuar la elección de cada motor frente a la mejor jugada o acción del cubo de cada rollout.
  • Informar sobre el conjunto común — discrepancias en las que las elecciones de ambos motores fueron evaluadas por ambos rollouts — para que las dos comparaciones cubran posiciones idénticas.

Resultados

En las posiciones de partidas ilimitadas con rollout — las decisiones más difíciles del estudio — los dos motores discrepan en 1488 jugadas de fichas y 69 decisiones de cubo. Cada panel muestra con qué frecuencia cada motor coincidió con la mejor decisión del rollout — puntuado frente al propio rollout de XG y frente al rollout de Sage, por turno.

Juego de fichas

Donde Sage 3T y XG Roller++ eligieron jugadas distintas
5,687
decisiones de fichas con rollout
1,488
discrepancias
1,357
puntuadas (conjunto común)
Coincidió con la mejor jugada — según el propio rollout de XG
Error medio de equidad — Sage 3T 0,0027 · XG Roller++ 0,0048  (PR 1,34 vs 2,39)
Coincidió con la mejor jugada — según el rollout de Sage
Error medio de equidad — Sage 3T 0,0019 · XG Roller++ 0,0059  (PR 0,97 vs 2,95)
Sage 3T XG Roller++ Ninguno

Decisiones de cubo

Donde Sage 3T y XG Roller++ eligieron acciones del cubo distintas
282
decisiones de cubo con rollout
69
discrepancias
Coincidió con la mejor acción — según el propio rollout de XG
Error medio de equidad — Sage 3T 0,0079 · XG Roller++ 0,0086  (PR 3,96 vs 4,30)
Coincidió con la mejor acción — según el rollout de Sage
Error medio de equidad — Sage 3T 0,0041 · XG Roller++ 0,0118  (PR 2,06 vs 5,88)
Sage 3T XG Roller++
Solo 69 discrepancias de cubo en total — una muestra pequeña, así que lee este panel como indicativo más que como concluyente.
En el juego de fichas — la gran mayoría de las discrepancias — Sage 3T es el motor más cercano a ambos rollouts, incluido el del propio XG: coincidió con la mejor jugada del rollout más a menudo (44,4 % frente a 39,3 % según el rollout de XG, 56,2 % frente a 27,7 % según el de Sage) y acumuló aproximadamente la mitad del error medio. Las discrepancias de cubo son mucho más raras y están más igualadas — Sage 3T está claramente más cerca del rollout de Sage, y también ligeramente más cerca frente al propio rollout de XG.
Por qué importan dos rollouts. Un resultado con una sola referencia siempre invita a la pregunta “¿la verdad de quién?”. Aquí los dos rollouts proceden de motores independientes y, en las discrepancias de fichas, apuntan en la misma dirección: Sage 3T está más cerca incluso del propio rollout de XG. Ninguno de los dos rollouts es una verdad de referencia perfecta, pero su acuerdo es exactamente lo que una sola referencia no puede mostrar por sí sola.
05
Método tres

Acuerdo en matches reales

Los dos primeros métodos preguntan qué motor es más fuerte. Una tercera pregunta es igual de importante para quien usa un motor para estudiar su propio juego: si analizas un match real en XG, anotas tu Performance Rating y luego analizas exactamente el mismo match en Sage, ¿cuánto se parecen los dos índices? Un jugador que ha pasado años construyendo una intuición de lo que significa un PR dado en XG debería obtener esencialmente el mismo número de Sage.

Para comprobarlo directamente, tomamos una gran colección de matches reales de torneo que ya habían sido analizados en XG, volvimos a analizar cada uno desde cero en Sage y comparamos el Performance Rating que cada motor asignó a cada jugador.

Los matches

Los archivos de los matches proceden de tres torneos de 2026, todos matches a 7 puntos, cedidos generosamente por Máté Fehér — ya analizados en eXtreme Gammon, exactamente como un jugador de competición estudiaría sus propias partidas.

UBC Texas 2026
100
matches analizados
UBC Istanbul 2026
146
matches analizados
UBC Japan 2026
44
matches analizados

290 matches y 580 índices individuales de jugador en total. Un match más se dejó fuera por tratarse de una transcripción corrupta.

Ajustes de evaluación equiparados

Cada match se volvió a analizar en Sage con una base a 3-ply y una pasada experta a 3T — un rollout truncado de 360 caminos — aplicada a las decisiones en las que la jugada real del jugador discrepaba de la mejor a 3-ply. Esto refleja un análisis fuerte de XG (un ply base para las decisiones claras, escalando a un rollout truncado para las ajustadas), a fuerza equiparada: Sage 3P ≈ XG 3-ply y Sage 3T ≈ XG Roller++ (ver la sección 2). Cada motor calcula después un PR por jugador a partir de sus propias evaluaciones — el número que un usuario ve en cada app.

Resultados

Agrupando los 580 índices de jugador, los dos motores coinciden casi exactamente. La diferencia media es estadísticamente indistinguible de cero, y la dispersión de esa diferencia es pequeña frente a la dispersión del propio PR.

+0.002
Diferencia media (PR)
Estadísticamente indistinguible de cero — intervalo de confianza del 95 % ±0,03, p = 0,90.
0.37
Desv. estándar de la diferencia
Pequeña frente a la dispersión de 2,08 del propio PR: la discrepancia en cualquier índice individual es menor en relación con cuánto varía el PR.
0.98
Correlación de los índices (r)
Sage y XG califican a los mismos jugadores casi de forma idéntica.
Performance Rating por jugador XG Sage DiferenciaSage − XG
Media 4.36 4.36 +0.002
Desviación estándar 2.08 2.10 0.37
Rango del 95 % 1.52 – 9.36 1.44 – 9.67 −0.76 – +0.74
En la práctica, un jugador que analice un match en Sage verá — en la gran mayoría de los casos — esencialmente el mismo Performance Rating que le daría XG. Como medida de lo bien que se jugó un match, los dos motores son intercambiables.
06
Conclusión

Dos motores fuertes, muy parejos

En los dos estudios de fuerza, Open Sage 3T y XG Roller++ son aproximadamente comparables — dos de las evaluaciones de backgammon más fuertes que existen, y muy cercanas entre sí. El estudio de PR de rollout — realizado tanto en modalidad ilimitada como en matches a 5 puntos — encuentra a Sage más fuerte en todos los niveles equiparados salvo 3-ply, donde los dos motores están dentro del ruido el uno del otro; y en las partidas ilimitadas se sostiene incluso cuando la referencia se cambia por el propio análisis escalonado de XG. El estudio de posiciones en disputa, que examina las posiciones en las que los dos motores discrepan al nivel de evaluación más fuerte (Sage 3T y XG Roller++) y las puntúa frente a los rollouts de ambos motores, encuentra a Sage 3T como el motor más cercano en las discrepancias de fichas frente a cualquiera de los dos rollouts, mientras que las discrepancias de cubo son demasiado raras y están demasiado repartidas para decidir.

Hay, por tanto, cierta evidencia de que Sage 3T es ligeramente más fuerte que XG Roller++. La objeción más natural — que la ventaja es un artefacto de calificar a Sage frente a sus propios rollouts — queda respondida allí donde podemos comprobarlo: puntuados frente a la propia referencia de XG, los niveles truncados de Sage siguen por delante. Las diferencias son, en cualquier caso, pequeñas, y el resumen honesto es que los dos motores juegan a un nivel muy similar y muy alto — que es precisamente el listón que nos propusimos alcanzar.

Y el tercer estudio responde a la pregunta que un usuario de Sage se plantea de verdad: en 290 matches reales de torneo ya calificados por XG, Sage produce esencialmente el mismo Performance Rating — la diferencia media entre el índice de Sage y el de XG para un jugador es estadísticamente indistinguible de cero, y la dispersión de esa diferencia es pequeña frente a la dispersión del propio PR. Ya sea la prueba la fuerza frente a una verdad obtenida por rollout o el simple acuerdo sobre cómo se jugó una partida real, Open Sage y XG llegan al mismo sitio.

Probar Backgammon Sage Pro Volver al inicio
A
Apéndice

Reproducir estos resultados

Open Sage se publica como código abierto, y el pipeline completo detrás de ambos métodos se incluye en el repositorio del motor. Todo lo que sigue se ejecuta únicamente con el paquete bgsage y una compilación local de su motor — no se requieren servicios externos, conjuntos de datos ni infraestructura. La única dependencia manual es el propio eXtreme Gammon, usado para regenerar las columnas de XG, ya que XG no tiene interfaz programática.

github.com/markbgsage/bgsage Motor Open Sage · MPL-2.0 · ejecuta todos los scripts desde la raíz del repositorio
Requisitos previos. Compila el motor bgsage (la extensión bgbot_cpp ) siguiendo las instrucciones del repositorio para tu plataforma. Reproducir cualquier columna de XG requiere además eXtreme Gammon (Windows) para su paso de Batch Analysis. Cada script resuelve sus rutas dentro del repositorio, así que ejecútalos desde la raíz de bgsage/ .

Reproducirlo con Claude Code

No hace falta que manejes el pipeline a mano. Claude Code — la herramienta agéntica de programación en línea de comandos de Anthropic — puede compilar el motor y ejecutar los benchmarks por ti. Apúntala a una copia del repositorio y describe lo que quieres; recorre los mismos pasos que se detallan a continuación:

“Compila este motor y luego puntúa Sage 3T y Sage 3P frente al benchmark incluido y muéstrame el PR, el PR de fichas y el PR de cubo de cada uno.”
“Reproduce la tabla de PR de rollout: puntúa cada nivel de Sage — de 1-ply a 4-ply, más 1T, 2T y 3T — frente a data/money_benchmark/benchmark.json.gz e imprímela como una tabla que pueda comparar con el estudio.”
“Reconstruye desde cero el benchmark de referencia con las tres pasadas de construcción y luego puntúa Sage 3T frente a él.”
“Tengo mi propio bot en ./mybot — para cada decisión del benchmark incluido, evalúala con mi bot y calcula su PR frente a las equidades de referencia.”

Método uno — PR de rollout

El benchmark — el conjunto escalonado de evaluaciones fiables — se construye y se puntúa con un único script, scripts/benchmark_money.py. Hay dos formas de entrar.

A

Puntuar frente al conjunto de datos incluido

Sin reconstrucción · validar la tabla o puntuar un motor nuevo

El repositorio incluye el benchmark ensamblado como data/money_benchmark/benchmark.json.gz (el JSON sin comprimir supera el límite de tamaño de archivo de GitHub; los scripts leen el gzip de forma transparente). Puntuar cualquier nivel de Sage reproduce su fila de la tabla de la sección 3:

# lower PR is better
python scripts/benchmark_money.py score --level 3ply        # Sage 3P
python scripts/benchmark_money.py score --level truncated3  # Sage 3T
# --level: 1ply 2ply 3ply 4ply | truncated1/2/3 | rollout

Para puntuar un motor completamente distinto, aplica la misma regla que el script usa internamente: para cada decisión del conjunto de datos, toma la elección de tu motor y compara su equidad con la equidad de referencia (“rollout”) almacenada — el error medio × 500 es su PR.

B

Reconstruir la verdad de referencia desde cero

Volver a derivar cada decisión · con semilla, así que se reproduce

Tres pasadas adaptativas recrean el conjunto de datos. Las partidas llevan semilla (500 partidas desde la semilla 1), así que las decisiones y las equidades de referencia salen iguales:

# 1. simulate 500 Sage-3P self-play games (+ XG transcripts)
python scripts/benchmark_money.py build --stages pass1 --n-games 500 --workers 6
# 2. re-evaluate every decision within 0.05 at 3T
python scripts/benchmark_money.py build --stages pass2 --n-threads 16
# 3. roll out every decision still within 0.02
python scripts/benchmark_money.py build --stages pass3 --n-threads 16

La pasada 3 escribe data/money_benchmark/benchmark.json (y su .gz); puntúalo exactamente como en la opción A. Omitir --stages ejecuta las tres pasadas en orden.

Reproducir las columnas de XG

XG no tiene API, así que sus resultados salen del Batch Analysis de XG. La pasada 1 escribe transcripciones importables en XG en data/money_benchmark/xg/ — no se incluyen, así que regenéralas con la pasada 1 si partiste solo del conjunto de datos.

  1. En XG, analiza por lotes (Batch Analyze) la carpeta xg/ con un nivel personalizado — decisiones a 3-ply, subiendo al nivel bajo prueba en las discrepancias — con Save Games after analyze marcado. XG escribe un .xg por partida.
  2. Ejecuta python scripts/benchmark_pr_xg.py, que lee la decisión principal de XG por posición de los archivos .xg y la puntúa frente a las mismas equidades de referencia, imprimiendo el mismo desglose de PR.

La tabla de partidas ilimitadas con referencia XG de la sección 3 — y el estudio de posiciones en disputa — necesitan en cambio los rollouts de XG de las posiciones más difíciles. Ejecuta el Batch Rollout de XG sobre esas posiciones (con Save Games marcado) y después python scripts/xg_benchmark_report.py los analiza e imprime tanto la tabla de niveles con referencia XG como el informe de posiciones en disputa. Ver el método dos más abajo.

Modalidad match

El estudio de matches a 5 puntos se reproduce del mismo modo con scripts/benchmark_match.py, el gemelo para matches de benchmark_money.py — la longitud del match y el número de matches son argumentos, y el marcador del match se propaga por todas las evaluaciones. Su verdad de referencia se incluye como data/match_benchmark/5pt/benchmark.json.gz.

# score against the shipped match dataset (no rebuild)
python scripts/benchmark_match.py score --match-length 5 --level truncated3
# or rebuild: 130 seeded 5-pt matches, three adaptive passes
python scripts/benchmark_match.py build --match-length 5 --n-matches 130 --stages pass1 --workers 6
python scripts/benchmark_match.py build --match-length 5 --n-matches 130 --stages pass2 --n-threads 16
python scripts/benchmark_match.py build --match-length 5 --n-matches 130 --stages pass3 --n-threads 16
# XG columns: batch-analyze data/match_benchmark/5pt/xg/, then
python scripts/benchmark_pr_xg_match.py --match-length 5

Método dos — Posiciones en disputa

El estudio de discrepancias parte del mismo benchmark de partidas ilimitadas construido para el método uno, cruzado con el rollout completo del propio XG de las posiciones más difíciles. La única dependencia manual es el Batch Rollout de XG; un único script hace el resto.

Partidas ilimitadas

  1. Construye el benchmark de partidas ilimitadas (método uno, opción B). La pasada 1 también escribe las transcripciones importables en XG en data/money_benchmark/xg/.
  2. En XG, ejecuta el Batch Rollout de esas posiciones con Save Games after analyze marcado, para que cada decisión con rollout lleve las equidades del propio rollout de XG en los archivos .xg correspondientes.
  3. Recolecta e informa:
python scripts/xg_benchmark_report.py

Convierte los rollouts de XG en data/money_benchmark/xg_results/rollout.jsonl, luego imprime tanto el PR por nivel de evaluación frente al rollout de XG (la segunda referencia de la sección 3) como el informe de posiciones en disputa — cada discrepancia puntuada frente a los rollouts de Sage y XG por turno.

La modalidad match aún no está cubierta por este método: requiere un rollout completo de XG de las posiciones de los matches, que no hemos ejecutado. La fuerza en matches queda cubierta, en cambio, por el estudio de PR de rollout (sección 3) y el estudio de acuerdo en matches reales (sección 5).

Open Sage se distribuye bajo licencia MPL-2.0. El benchmark incluido es la referencia exacta que hay detrás de las tablas de la sección 3; tanto la comparación con referencia XG como los resultados de posiciones en disputa se regeneran a partir de él una vez que el Batch Rollout de XG ha producido los archivos .xg correspondientes.