Algorithmic Trading
Un backtest deja cientos de operaciones. Reducirlas a un veredicto exige un puñado de métricas —cada una responde una pregunta distinta: cuánto gana, con cuánto riesgo, qué tan mal se pone en el peor tramo y si se puede sobrevivir a él. Ninguna sola alcanza; leerlas juntas es lo que evita engañarse.
Dos métricas hermanas: una es un cociente (proporción entre lo ganado y lo perdido), la otra un valor esperado en dinero por operación.
Concepto general. Cuánto se ganó por cada unidad perdida. Es la suma de todas las ganancias dividida por la suma de todas las pérdidas (en valor absoluto). PF > 1 es rentable, PF = 1 es punto de equilibrio, PF < 1 pierde.
Cómo lo calculamosLo capeamos en 10 y exponemos una bandera (pf_capped): sin cap, una muestra sin pérdidas daría "infinito" y ensuciaría cualquier comparación. Y al agregar entre folds (walk-forward) pooleamos —sumamos todas las ganancias y todas las pérdidas de todos los folds y recién ahí dividimos—, no promediamos los PF de cada fold. Promediar cocientes puede invertir la conclusión: un caso real dio PF pooleado de 0.84 (perdedor) reportado como promedio 5.42 (ganador).
Concepto general. El resultado promedio de una operación cualquiera, ponderando probabilidad de acierto y tamaño típico de ganancia y pérdida. Responde: "si repito este trade muchas veces, ¿cuánto espero ganar por vez?"
Cómo lo calculamosEs simplemente el promedio del PnL sobre todas las operaciones — algebraicamente idéntico a la fórmula de win rate × ganancia media. Un win rate alto no garantiza esperanza positiva: muchas ganancias chicas y pocas pérdidas grandes pueden dar E < 0. Por eso el PF y la esperanza se leen juntos, nunca el win rate solo.
No alcanza con cuánto se gana: importa cuánta volatilidad hubo que tolerar. Estas dos métricas dividen el retorno por una medida de riesgo.
Concepto general. Retorno por unidad de riesgo total. Toma el retorno promedio (por encima de una tasa libre de riesgo) y lo divide por su desvío estándar; luego se anualiza. Mide cuán "parejo" fue el crecimiento.
Cómo lo calculamosSobre los retornos diarios de la curva de capital, con r_f = 0 (sin tasa libre de riesgo, apropiado para retail) y anualizado por √252 (días de mercado). Si la muestra es muy chica o el desvío es cero, devolvemos 0.0 en vez de un número inventado. Su punto débil: el desvío castiga por igual la volatilidad al alza y a la baja — y a nadie le molesta ganar de más.
Concepto general. Igual que Sharpe, pero solo penaliza la volatilidad a la baja (la que duele). Reemplaza el desvío total por la downside deviation: la dispersión de los retornos por debajo de un mínimo aceptable (MAR).
Cómo lo calculamosCon MAR = 0 y el denominador dividido por N total de observaciones (no solo las negativas) — así queda garantizado el invariante Sortino ≥ Sharpe cuando μ > 0. Cuando no hay ningún retorno negativo devolvemos None ("no calculable honestamente"), en vez del sharpe × 1.5 sin fundamento que usaba la versión vieja.
Las métricas anteriores promedian. Estas miran el peor momento: la caída máxima desde un pico, y la relación entre lo ganado y esa caída.
Concepto general. La mayor caída desde un máximo previo hasta el siguiente valle en la curva de capital. Es la pérdida psicológica y financiera que hubo que aguantar en el peor tramo — a menudo lo que decide si una estrategia es "operable" en la práctica.
Cómo lo calculamosSobre la equity barra a barra (más granular que diaria), en unidades de capital y como fracción del pico. Lo complementamos con el Ulcer Index (raíz cuadrática media de los drawdowns por barra): dos estrategias con el mismo Max DD no son iguales si una tardó cinco barras en recuperarse y la otra cincuenta — el Ulcer penaliza esa duración, no solo la profundidad.
Concepto general. Cuánto retorno se obtuvo por cada unidad de drawdown asumido. Pone la ganancia total en relación con el peor pozo: un retorno alto con un drawdown enorme "vale" menos que el mismo retorno con caídas suaves.
Cómo lo calculamosGanancia total dividida por el drawdown máximo (absoluto); None cuando no hubo drawdown. Es una lectura simple ("gané 3 veces mi peor caída"), pero ignora el tiempo: no distingue si esa ganancia tardó uno o diez años. Para eso está el Calmar.
Concepto general. El mismo espíritu que Recovery, pero anualizado: pone el retorno anual compuesto (CAGR) sobre el drawdown máximo porcentual. Responde "¿cuánto rindo por año, por cada punto de caída máxima que tuve que aguantar?" — la forma estándar de comparar estrategias de distinta duración.
Cómo lo calculamosCon CAGR real (compuesto), no el atajo lineal r/años que infla el resultado en períodos largos o con retornos altos. Detalle de convención: el CAGR se anualiza sobre tiempo calendario (÷365, el capital está expuesto también los fines de semana), mientras que Sharpe y Sortino usan ÷252 (frecuencia de observaciones). Son dimensiones distintas y por eso no se unifican.
Todas las métricas anteriores asumen que llegamos vivos al final. El riesgo de ruina cuestiona ese supuesto: es la probabilidad de que la cuenta caiga hasta un nivel desde el cual ya no se pueda seguir operando.
Concepto general. "Ruina" es el nivel que uno define como el final: quedarse sin margen para operar, romper el límite de una cuenta financiada, o superar el drawdown máximo tolerable. Si una cuenta arranca en 100.000 y decidís parar al caer a 70.000, el capital en juego hasta la ruina no son 100.000 — son 30.000.
Una estrategia puede tener ventaja y aun así arruinarte, si el tamaño de cada apuesta es tan grande que unas pocas pérdidas seguidas te dejan fuera antes de que la ventaja se manifieste. La esperanza responde "¿hay ventaja?"; el riesgo de ruina responde la otra pregunta, la que decide si sobrevivís: "¿aguanto lo suficiente para explotarla?"
Con una ventaja normalizada del 20% (por ejemplo, 60% de aciertos a 1:1 → E = 2·0.60 − 1) y 12 unidades de riesgo hasta la ruina, el modelo da:
La ventaja es idéntica; lo único que cambió fue arriesgar el doble por operación (la mitad de unidades hasta la ruina). El riesgo no se duplicó: se multiplicó por más de 11. Esa no-linealidad es el corazón de la gestión de capital — y la razón por la que el sizing prudente vale más que un edge marginalmente mayor.
No lo reportamos como un número mágico —el modelo simplificado asume un edge estable y pérdidas acotadas, y la realidad rara vez coopera—, pero su lógica está incrustada en el motor. El backtester define un piso de bancarrota: si el capital cae por debajo del 1% del inicial, rechaza el trade, marca el run como insolvente (bankrupt) y detiene nuevas entradas — en vez de "recuperarse" mágicamente desde capital negativo y esconder el problema. Ese piso es el punto de ruina operativo.
Y la palanca sobre C es el tamaño por operación: cuanto menor el riesgo por trade, más unidades hasta la ruina y —por la no-linealidad de arriba— menor la probabilidad de quedar eliminado. Es la misma pregunta que plantea el criterio de Kelly desde el otro lado: cuánto arriesgar para crecer sin arruinarse.
Un PF alto con un Max DD brutal, un Sharpe lindo sostenido por un solo mes excepcional, una esperanza positiva con un tamaño que invita a la ruina: cada métrica tiene una forma de mentir por separado. El criterio es cruzarlas —rentabilidad, riesgo ajustado, caída máxima y supervivencia— y siempre sobre datos que la estrategia no vio (walk-forward y out-of-sample). Son una herramienta más para decidir, no el veredicto.