12 de septiembre de 2026 · riesgo

5 reglas de dimensionamiento, 1 señal: qué parte de tu backtest hace el verdadero trabajo

5 reglas de dimensionamiento, 1 señal: qué parte de tu backtest hace el verdadero trabajo

Es probable que la señal de entrada sea lo menos importante de tu backtest. Puedo tomar una regla de momentum mediocre, dejar intactas todas las marcas de tiempo de entrada y salida, cambiar únicamente la función que decide cuántos contratos mantener y mover el Sharpe neto de 0.41 a 0.71 y el drawdown máximo de 31% a 13%. Las mismas operaciones. Las mismas ejecuciones. Una estrategia distinta.

Esa afirmación irrita a la gente, y con razón, porque implica que la mayor parte del tiempo dedicado a ajustar periodos retrospectivos y umbrales de filtros se invierte en el término menos importante. Así que voy a mostrar los resultados reales y después daré la razón a quienes me critican, porque hay una versión equivocada de este argumento y conviene saber cuál estoy planteando.

Una señal, 6 formas de mantener la posición

La señal: contrato perpetuo ETHUSDT en Binance USDⓈ-M, velas de 1 hora, posición larga cuando la EMA de 12 horas está por encima de la EMA de 96 horas, posición plana en caso contrario, sin posiciones cortas. De julio de 2022 a junio de 2026. 431 operaciones completas. Comisiones taker en ambos lados de 5.0 bps, funding pagado o recibido cada 8 horas según la posición real, deslizamiento modelado a partir de la profundidad del mejor precio de compra y de venta. Es una señal deliberadamente aburrida: la elegí porque nadie saldría a defenderla, lo que la convierte en una buena base para una prueba limpia.

Todas las filas siguientes tienen marcas de tiempo idénticas para las velas de entrada y salida. La única diferencia es la función de dimensionamiento.

Regla de dimensionamientoSharpe netoDD máx.Valor nominal negociado/año (× posición media)Costes como % del PnL brutoApalancamiento máximo
Valor nominal fijo de $10k0.4118.2%246×14%1.0×
Fracción fija, 100% del capital0.4430.8%251×15%1.0×
Volatilidad realizada inversa a 20 días0.6814.1%690×29%4.4×
Objetivo de volatilidad anualizada de 20%, reajuste cada hora, sin límite0.7112.9%1,180×41%6.3×
Objetivo de volatilidad de 20%, banda de no operación de 20%, límite de apalancamiento de 3×0.6615.3%402×19%3.0×
Media varianza móvil a 60 días con medio Kelly0.5224.6%830×33%8.1×
0.41 → 0.71Sharpe neto, entradas idénticas
41%del PnL bruto se lo lleva el reajuste horario
6.3×apalancamiento máximo que usó discretamente la ejecución con mejor Sharpe

Fíjate en la diferencia. Entre las filas con los resultados más bajos y más altos hay una diferencia relativa de 73% en Sharpe y un factor de 2.4 en drawdown. Ahora busca en este conjunto de datos un parámetro de la señal de entrada que mueva el Sharpe en 0.30 sin que eso también parezca un sobreajuste evidente. Ya lo he intentado. La longitud del par de EMA lo mueve alrededor de 0.12 en toda la cuadrícula de valores plausibles, y la mayor parte de ese movimiento es ruido que no se sostiene fuera de muestra.

Por qué la volatilidad inversa da tan buenos resultados y cuánto hay de real

El mecanismo no es ningún misterio. Con un valor nominal fijo, el tamaño de tu posición no está correlacionado con la volatilidad realizada, lo que significa que tu riesgo en dólares por operación es proporcional a la volatilidad que haya esa semana. En ETH durante este periodo, la volatilidad realizada a 20 días osciló entre 31% y 118% anualizado. La ejecución con valor nominal fijo asumió 3.8× más riesgo en dólares en marzo de 2024 que en julio de 2023, no porque la señal tuviera más confianza, sino porque el mercado estaba más agitado. Casi todo su drawdown se concentra en el quintil de volatilidad más alto. El dimensionamiento inverso a la volatilidad elimina ese vínculo, y eso mejora de verdad la forma de la serie de rendimientos.

Pero parte de la mejora del Sharpe es un artefacto de medición, y si no separas ambas cosas, tomarás malas decisiones después. El Sharpe divide por la desviación estándar de los rendimientos. El objetivo de volatilidad, por definición, es una operación que estabiliza la desviación estándar de los rendimientos. Estás optimizando directamente el denominador. Una regla que escala las posiciones para alcanzar una volatilidad ex ante constante mejorará el Sharpe en casi cualquier serie de rendimientos con agrupamiento de volatilidad, incluso en series sin ventaja alguna. Lo he verificado con señales mezcladas aleatoriamente: aleatoriza las marcas de tiempo de entrada, conserva la capa de objetivo de volatilidad y el Sharpe aun así mejora aproximadamente 0.06 frente al valor nominal fijo sobre una base de media cero. Es poco, pero no es cero, y se debe puramente a la mecánica.

Por eso, cuando comparo reglas de dimensionamiento internamente, el Sharpe nunca es la única cifra de la hoja. Quiero Calmar, quiero PnL neto por unidad de valor nominal medio desplegado y quiero el desglose de bruto a neto, porque esas 3 métricas juntas son mucho más difíciles de manipular con un truco del denominador.

La estimación de volatilidad es un modelo, y filtra datos como tal

La forma más común de que un buen resultado de dimensionamiento resulte ser falso: la estimación de volatilidad usa información de la misma vela para la que calcula el tamaño. Si tu serie de volatilidad se calcula con una ventana centrada, o con `rolling().std()` por defecto de pandas después de una remuestra que incluye la vela parcial actual, o a partir de una estandarización sobre toda la muestra, tienes filtración de datos. Es sutil porque la volatilidad persiste, así que la filtración es pequeña en cada fila y la curva de capital sigue pareciendo plausible. Solo se ve un poco demasiado lisa justo en las semanas que importan.

Nuestros agentes comprueban 4 cosas en cada regla de dimensionamiento antes de que un resultado pase a la cola de paper trading:

  1. Disponibilidad en el momento de tomar la decisión. El tamaño usado en la vela que abre a las 14:00 debe poder calcularse con datos cuya marca de tiempo de cierre sea ≤ 13:59:59.999. Lo comprobamos recalculando la serie de tamaños con un marco truncado en una muestra aleatoria de 200 puntos de decisión y comparando las diferencias.
  2. El periodo retrospectivo del estimador es un parámetro real. Una ventana de volatilidad de 20 días y otra de 60 días son 2 estrategias distintas. El periodo retrospectivo se incluye en la cuadrícula de walk-forward junto con todo lo demás y, si el resultado solo funciona con una duración de ventana, eso revela fragilidad.
  3. La trayectoria del apalancamiento, no solo su máximo. Muestra la distribución completa del apalancamiento bruto. La ejecución con objetivo de volatilidad sin límite de arriba pasó 4% de sus horas por encima de 5×, algo que nunca aparece en una tabla resumen y que determina por completo si la estrategia se puede implementar.
  4. Sensibilidad del dimensionamiento como prueba de robustez. Si el Sharpe se desploma cuando cambias el objetivo de volatilidad de 20% a 25%, la estrategia no está ajustada a un objetivo de volatilidad: está ajustada al apalancamiento, y has encontrado tu ventaja eligiendo un número.

El límite de apalancamiento no es un adorno de gestión de riesgo; forma parte de la definición de la estrategia. Los niveles de ETHUSDT de Binance reducen el apalancamiento máximo a medida que aumenta el valor nominal de la posición, y la tasa de margen de mantenimiento sube con él. Un backtest que deja que la regla de objetivo de volatilidad llegue a 6.3× con un valor nominal de $400k describe una posición que la plataforma no te permitirá mantener con ese margen. La fila con límite cuesta 0.05 de Sharpe y es la única de las 2 que describe algo real.

El dinero se va en los reajustes

Fíjate en la columna de costes. El reajuste horario para alcanzar un objetivo de volatilidad dio el mejor Sharpe de portada y también entregó 41% del PnL bruto a la plataforma. Eso equivale a negociar cada año un valor nominal de 1,180× la posición media, pagando 5 bps por lado más el spread y el impacto. La solución ingenua es reajustar menos a menudo, siguiendo un calendario. La solución mejor es una banda de no operación: reajustar solo cuando la posición actual se desvíe del objetivo más allá de cierto umbral.

Una banda de 20% redujo el valor nominal anual negociado de 1,180× a 402×, una reducción de 66%, y costó 0.05 de Sharpe. Ya lo he probado con 8 señales y el patrón se repite: las bandas entre 15% y 25% recuperan la mayor parte del beneficio de control del riesgo con un tercio de la rotación, y cualquier valor inferior a 10% equivale a pagar comisiones por una precisión cosmética en una cantidad que, de todos modos, estás estimando con una ventana de 20 días. No puedes reajustar hasta 3 decimales frente a una cifra cuyo error estándar es de 15%.

En febrero tuvimos una ejecución en la que el informe redactado por un agente atribuyó una mejora de 0.22 en Sharpe al «filtro de entrada mejorado». El diff era una línea en el módulo de dimensionamiento. El filtro no había cambiado. Ahora hago que el informe muestre al principio el hash de la configuración de dimensionamiento, porque atribuir los resultados exige disciplina y los modelos están tan dispuestos como cualquiera a contar una historia ordenada.

Qué le hace el paper trading a tu regla de dimensionamiento

Aquí es donde más se abre la brecha entre el backtest y el paper, y casi todo se reduce a la aritmética. El dimensionamiento sensible a la volatilidad hace que el tamaño de tu posición oscile por un factor de 4 a 8 a lo largo de la muestra. Ambos extremos de ese rango chocan con límites de la plataforma que el backtest nunca modeló.

En el extremo pequeño: incremento de cantidad y valor nominal mínimo. El contrato perpetuo ETHUSDT tiene un incremento de cantidad de 0.001 y un mínimo de $5. Si el tamaño de tu posición en un régimen de baja volatilidad es 0.0004 ETH, el backtest la mantiene y el paper no mantiene nada. Parece un caso límite hasta que te das cuenta de que una regla de objetivo de volatilidad sitúa sus tamaños más pequeños en los mercados más tranquilos, que en una señal de tendencia suele ser justo donde aparecen las buenas entradas. En el extremo grande: límites de posición, niveles de margen y el hecho de que una posición de 6× exige una disciplina de margen aislado para la que no probaste un modelo de liquidación.

Detectamos un caso en que la curva de capital del paper siguió la del backtest con una diferencia de menos de 3% durante 6 semanas y luego se desvió bruscamente. La causa fue el redondeo: truncamiento con `int()` en vez de redondeo al incremento de cantidad en el calculador de tamaño de las órdenes, aplicado a posiciones que promediaban 1.4 incrementos. El backtest calculaba el tamaño en un espacio continuo, y el calculador de tamaño en producción perdía 20-30% de la posición prevista en cada operación pequeña. Nada de modelos de ejecución exóticos ni historias sobre latencia. Truncamiento.

En qué tienen razón quienes critican el enfoque

Hay 3 objeciones válidas, y no quiero exagerar el argumento ignorándolas.

Primera y más importante: el dimensionamiento asigna una ventaja, no puede crearla. Si la expectativa bruta de tu señal es igual o inferior a cero después de contar comisiones y funding realistas, todas las reglas de esa tabla pierden dinero; las más sofisticadas solo lo pierden con un perfil de varianza más atractivo. Elegí una señal con una ventaja neta pequeña pero positiva en este periodo. Ejecuta las mismas 6 reglas con una señal cuyo resultado neto sea −1.2 bps por operación y se conservará el orden, aunque el capital final de todas quede por debajo del inicial. El dimensionamiento multiplica algo. Ese algo sigue haciendo falta.

Segunda: el objetivo de volatilidad tiene un modo de fallo real y bien documentado: reduce el apalancamiento durante la fase más profunda de una venta masiva rápida y vuelve a aumentarlo después del rebote. En una V pronunciada, el valor nominal fijo gana, a veces por mucho. La caída de marzo de 2020 en la renta variable y el desplome cripto de agosto de 2024 castigaron ambas el dimensionamiento sensible a la volatilidad durante la recuperación. Mi periodo de 4 años en ETH contiene por casualidad más volatilidad agrupada y movimiento gradual que sacudidas en V, lo que favorece las filas de volatilidad inversa. Con otro periodo, parte del orden se invierte y, si hubiera empezado con una tabla de 2020, mi argumento habría sido más débil.

Tercera: la regla de dimensionamiento puede sufrir tanto sobreajuste como cualquier otra cosa. El medio Kelly con estimaciones móviles es el ejemplo en mi tabla: parece sofisticado, tiene una motivación teórica y produjo el segundo peor drawdown porque la estimación móvil de la media de una serie de rendimientos ruidosa es basura, y Kelly es extremadamente sensible a ella. Toda regla de dimensionamiento que use como entrada una estimación del rendimiento esperado hereda el error de esa estimación, amplificado. Las reglas que solo usan una estimación de la varianza se comportan mucho mejor, porque la varianza es el único momento que realmente puedes estimar con 4 años de datos horarios.

Lo que me quedaría de todo esto: cuando un resultado de backtest te sorprenda, revisa el módulo de dimensionamiento antes de buscar algo ingenioso en la señal. Y cuando informes un Sharpe, muestra al lado la trayectoria del apalancamiento y el desglose de costes, porque una cifra que depende tanto de una decisión de dimensionamiento no es una propiedad de la señal en absoluto.

dimensionamiento de posicionesobjetivo de volatilidadratio de Sharpegestión del riesgobacktesting
← Todos los artículos