597 / 736BT

Backtesting

Prueba histórica de una estrategia

Backtesting simula reglas definidas de antemano sobre datos históricos. El resultado depende de cuándo estuvo disponible la información, la selección de datos, el modelo de ejecución y los costes. Un beneficio histórico no es una operación realmente ejecutada ni una garantía de rentabilidad futura.

Backtesting es una simulación histórica de reglas de negociación o decisión con datos, orden temporal y supuestos de ejecución explícitamente definidos. Permite examinar el comportamiento de una regla en una muestra pasada, pero su valor informativo depende del diseño de toda la prueba.

Backtesting reproduce reglas sobre datos históricos y calcula el resultado que habrían obtenido bajo los supuestos elegidos. Bailey y sus coautores lo describen como una simulación histórica de una estrategia algorítmica y advierten del riesgo de falsos descubrimientos. Nuestro límite editorial es que el resultado corresponde a una versión concreta de las reglas, los datos y el modelo de ejecución. No demuestra que alguien realizara esas operaciones. Un cálculo reproducible puede revelar un error o una idea inadecuada, pero por sí solo no convierte el pasado en una previsión fiable. [1]

QuantConnect describe el sesgo que aparece cuando una simulación usa información futura, como datos contables antes de su publicación o sus revisiones posteriores. Nuestro propio contrato temporal exige registrar cuándo estuvo disponible cada dato de entrada, no solo la fecha del periodo al que corresponde. Sin un supuesto adicional, una señal de una vela cerrada no puede obtener una operación a un precio que ya no estaba disponible. En nuestro ejemplo, los precios de cierre anteriores se utilizan únicamente para el periodo siguiente y el modelo determina explícitamente su ejecución de apertura. [2]

QuantConnect advierte sobre probar únicamente valores que sobrevivieron hasta el final del periodo y aplicar retrospectivamente la composición actual de un índice. Nuestra pregunta más general es si el conjunto histórico conserva también instrumentos disponibles entonces que después desaparecieron. Deben documentarse los datos ausentes, los cambios metodológicos y la selección de mercados. En una simulación de Bitcoin, no puede suponerse automáticamente que el precio de un servicio fuera alcanzable en otro. La limpieza de datos significa trazabilidad de las correcciones, no eliminación de resultados incómodos. [2]

La documentación de QuantConnect separa la señal y la orden del modelo que determina el precio y la cantidad ejecutados. También señala la diferencia entre las ejecuciones parciales en la negociación real y el supuesto de ejecución completa de los modelos predefinidos. Nuestro requisito es describir cuándo puede ejecutarse una orden, qué ocurre si no hay suficiente liquidez y cómo se tratan los precios desactualizados. Que los datos históricos toquen un nivel de precio no demuestra por sí solo que hubiera una contraparte disponible para una orden de tamaño arbitrario. El resultado del modelo de ejecución sigue siendo un supuesto de la simulación. [3]

QuantConnect describe Slippage como la diferencia entre el precio de ejecución esperado y el real, y señala la influencia de los retrasos, la conexión y las condiciones del mercado; la desviación puede ser favorable o desfavorable. Nuestra comprobación de costes separa las comisiones, el precio de ejecución y otros posibles costes de mantenimiento o financiación. Un coste ya incorporado al precio de ejecución no debe deducirse otra vez. Un valor cero es un supuesto concreto del modelo, no una prueba de un mercado sin costes. La sensibilidad a costes peores ayuda a determinar si un pequeño beneficio histórico depende de una configuración optimista. [4]

La documentación de TimeSeriesSplit explica la división cronológica para evitar entrenar un modelo con el futuro y evaluarlo con el pasado. Nuestro requisito metodológico es fijar un periodo para diseñar las reglas y otro para validarlas después, antes de mirar los resultados. Si tras un fracaso se vuelven a ajustar las reglas según el periodo de validación, ese periodo ya ha influido en el desarrollo. La división cronológica por sí sola no resuelve las filtraciones de información del preprocesamiento, los objetivos solapados ni la selección repetida de variantes. Deben describirse tanto el procedimiento como los límites de los datos. [5]

Bailey y sus coautores muestran que buscar repetidamente la mejor configuración con los mismos datos aumenta el riesgo de falsos descubrimientos y de ajustarse al ruido del pasado. Nuestra regla para el informe es mostrar el historial de intentos, no solo la curva ganadora. Esto incluye cambios de parámetros, periodos y selección de instrumentos. Un resultado elegido después de muchas pruebas no tiene el mismo valor informativo que una regla predefinida y sin cambios. Su método para estimar la probabilidad de sobreajuste no se aplica en nuestro ejemplo sencillo ni se sustituye por una única división de los datos. [1]

NFA advierte que los resultados hipotéticos no reflejan operaciones reales, pueden aprovechar la retrospectiva y modelar de forma imperfecta la liquidez, el deslizamiento o el comportamiento ante una pérdida real. Por eso, nuestro informe debe conservar las versiones de datos y código, las reglas, los supuestos de ejecución, los costes incluidos y la lista completa de operaciones simuladas. La rentabilidad total necesita contexto de riesgo y una comparación en condiciones idénticas; no basta un gráfico atractivo seleccionado. Ni siquiera una implementación impecable de la prueba histórica garantiza su viabilidad o rentabilidad en un mercado futuro. [6]

EjemploEJEMPLO · BT

Señal del periodo anterior, ejecución en el siguiente

Nuestro ejemplo ficticio utiliza cuatro periodos de igual duración A, B, C y D. El efectivo inicial es de 1000 USD, sin posiciones abiertas, deuda, depósitos ni retiradas. Los dos precios de cierre anteriores al periodo A son [100, 100] USD/BTC. Los precios de apertura de los periodos A a D son [101, 103, 102, 105] USD/BTC y los de cierre [102, 101, 104, 103] USD/BTC. La regla predefinida compra 1 BTC al principio del periodo solo si el último precio de cierre completado supera al cierre completado anterior; vende todo al final del mismo periodo. Por tanto, las señales son [0, 1, 0, 1], donde 1 significa operación y 0 inactividad. El modelo supone ejecuciones completas exactamente a los precios de apertura y cierre indicados, spread y Slippage nulos, sin otros costes salvo una comisión de 0.1 USD por cada compra o venta. En B compra a 103 USD y vende a 101 USD; en D, a 105 USD y 103 USD. Los resultados brutos de los periodos son [0, -2, 0, -2] USD. Las cuatro ejecuciones de compra o venta cuestan en total 0.4 USD y los resultados netos son [0, -2.2, 0, -2.2] USD. El total bruto es -4 USD, el neto -4.4 USD y el efectivo final 995.6 USD. El gráfico muestra las contribuciones netas de cada periodo, no el saldo de la cuenta ni una probabilidad. Es una simulación del orden temporal y la contabilidad verificable a mano, no datos reales de mercado, una optimización ni una prueba de rendimiento futuro.

Para obtener la imagen más completa, lee esta entrada junto con Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. También enlazan con esta entrada Technical analysis, OHLCV, Timeframe, Candlestick chart.

01¿Un backtest rentable demuestra que la estrategia ganará dinero?

No. El resultado puede depender de datos concretos, costes, el modelo de ejecución o la selección de la mejor variante. Hay que verificar la corrección temporal, los supuestos y el proceso de selección; aun así, no existe una garantía de rentabilidad futura.

02¿Basta con deducir las comisiones del beneficio final?

Solo si ese procedimiento corresponde exactamente al modelo y no afecta al capital disponible ni a decisiones posteriores. Normalmente hay que contabilizar los costes en los eventos correspondientes, distinguir el precio de ejecución de las comisiones y evitar deducciones duplicadas.

DOC · 001Bailey et al. — The Probability of Backtest OverfittingFuente primaria DOC · 002QuantConnect — Research GuideDocumentación DOC · 003QuantConnect — Trade Fills: Key ConceptsDocumentación DOC · 004QuantConnect — Slippage: Key ConceptsDocumentación DOC · 005scikit-learn — TimeSeriesSplitDocumentación DOC · 006NFA — Use of Promotional Material Containing Hypothetical Performance ResultsDocumentación
Revisado: Fuentes primero · No es asesoramiento financiero