13. Anexo: Modelo de estadísticas — alineación XG / gnuBG / blunderDB

Esta página describe cómo blunderDB calcula el PR (Performance Rate), el Snowie Error Rate y la pérdida de MWC, y cómo estas métricas están alineadas con eXtreme Gammon (XG) y gnuBG (referencia abierta).

13.1. Definiciones formales

13.1.1. PR (Performance Rate)

El PR (también llamado «error rate per decision» en gnuBG) mide el error medio en milésimas de punto de equity (millipuntos, mpt) por decisión contabilizada.

\[\mathrm{PR} = \frac{\sum_i |\mathrm{error}_i|}{\mathrm{N_{contado}}} \times 500\]
  • El numerador es la suma absoluta de los errores EMG (en equity cubeful) sobre todas las decisiones del ámbito.

  • El denominador \(N_\text{contado}\) es el número de decisiones contabilizadas (véase más abajo).

  • El factor 500 convierte la equity en millipuntos (1 punto = 1000 mpt, pero la escala es ×500 por convención XG/gnuBG — cf. gnubg/formatgs.c:399–409).

13.1.2. Snowie Error Rate

El Snowie ER usa el mismo numerador que el PR, pero el denominador es el número total de jugadas de ambos jugadores, jugadas forzadas incluidas (todas las decisiones, sin filtro):

\[\mathrm{SnowieER} = \frac{\sum_i |\mathrm{error}_i|}{N_\text{P1} + N_\text{P2}} \times 500\]

Referencia: gnubg/formatgs.c:415–424.

El Snowie ER es más estable entre herramientas porque su denominador no depende del filtro de decisiones forzadas/triviales. Sirve como métrica de contraste entre XG, gnuBG y blunderDB.

Nota

El Snowie ER de un jugador es normalmente alrededor de la mitad de su PR, porque el denominador incluye las jugadas de ambos jugadores mientras que el PR solo utiliza las decisiones de ese jugador.

13.1.3. Pérdida de MWC (Match Winning Chance)

La pérdida de MWC expresa en puntos porcentuales de probabilidad de ganar el match el efecto acumulado de los errores de un jugador. Para cada decisión, el error EMG se convierte en MWC mediante la tabla MET (Match Equity Table) al marcador actual:

\[\mathrm{MWCLoss} = \sum_i \mathrm{eq2mwc}(\mathrm{erreur}_i, \mathrm{score}_i)\]

Referencia: gnubg/analysis.c:1449–1464.

13.2. Decisiones contabilizadas en el denominador del PR

blunderDB sigue las mismas reglas de exclusión que XG y gnuBG.

13.2.1. Jugadas de fichas — decisiones contabilizadas

Solo se contabilizan las jugadas no forzadas:

  • Una jugada es forzada si los dados solo ofrecen una jugada legal (cMoves == 1 en gnubg/analysis.c:458).

  • Las jugadas forzadas tienen error nulo por definición: el jugador no tenía elección. Incluirlas en el denominador rebajaría artificialmente el PR.

13.2.2. Decisiones de cubo — decisiones contabilizadas

Solo se contabilizan las decisiones de cubo ajustadas:

  • Una decisión de cubo es ajustada si se sitúa dentro de la ventana de equity [-0.16, +0.16] en torno al punto de redoble (predicado isCloseCubedecision en gnubg/eval.c:5088–5100).

  • Un «No Double» trivial (equity muy negativa o muy positiva) no es una verdadera decisión estratégica; incluirlo inflaría el denominador y deprimiría el PR.

13.2.3. Resumen del filtro

Tipo de decisión

Incluido en \(N_\text{contado}\) (PR)

Jugada no forzada

Jugada forzada

No

Cubo ajustado

No Double trivial

No

Take / Pass

Siempre (son respuestas a un doble)

13.3. Correspondencia blunderDB ↔ XG ↔ gnuBG

Las métricas están alineadas dentro de los siguientes límites (medidas sobre 3 matches de referencia):

13.3.1. Comparación XG ↔ blunderDB (mismo motor de análisis)

Métrica

Diferencia típica

Decisiones totales

≤ 5

Jugadas no forzadas

≤ 7

PR

≤ 0.10

Pérdida de MWC

≤ 1.0 pp

Equity total (EMG)

≤ 0.05

13.3.2. Comparación gnuBG ↔ blunderDB (importación SGF — motores diferentes)

Métrica

Diferencia típica | Causa principal

PR (checker)

≤ 0.20

diferencias de equity entre motores

Pérdida de MWC

≤ 3.5 pp

datos de cubo ajustado incompletos en SGF

Snowie ER

≤ 0.50

jugadas forzadas sin análisis (SGF)

Nota

Los archivos SGF (gnuBG) no incluyen las alternativas para las jugadas forzadas, lo que significa que blunderDB no puede detectar todas las jugadas forzadas al importar SGF. Esto crea una diferencia estructural en el Snowie ER (denominador ligeramente distinto).

13.4. Validar sus propias cifras

Si sus valores de PR o MWC difieren de las cifras de XG, comprobar los siguientes puntos:

  1. Análisis completos — El PR solo puede calcularse sobre las posiciones que disponen de un análisis. Las posiciones sin análisis se cuentan como error cero pero no entran en \(N_\text{contado}\).

  2. Versión de XG — XG puede cambiar sus cálculos entre versiones. blunderDB se alinea con el comportamiento observado en las versiones recientes.

  3. Formato de importación — Los archivos SGF de gnuBG producen diferencias mayores en el cubo (véase la tabla anterior) porque el archivo no incluye los análisis completos para todas las decisiones de cubo.

  4. Migración de base de datos — Tras actualizar blunderDB, las bases de datos existentes se migran automáticamente. Hacer una copia de seguridad antes de abrir una base de datos con una nueva versión.

13.5. Referencia gnuBG

Las fórmulas se han verificado en los siguientes archivos de código fuente (repositorio gnuBG):

  • gnubg/formatgs.c:399–409 — PR («Error rate per decision»).

  • gnubg/formatgs.c:415–424 — Snowie Error Rate.

  • gnubg/analysis.c:458–462 — Acumulación de checker, exclusión de las jugadas forzadas (cMoves > 1).

  • gnubg/analysis.c:1430–1474 — Conversión EMG → MWC por decisión.

  • gnubg/analysis.c:1449–1464 — Acumulación de la pérdida de MWC (eq2mwc).

  • gnubg/eval.c:5088–5100 — Predicado isCloseCubedecision (umbral 0.16).