Esto le sonará a más de uno… seguro que habéis visto a alguien en grupos o internet, que ha hecho un robot, con un builder, y te muestra unos resultados espectaculares en el último año… con una curva que es más una recta apuntando al cielo… y luego pruebas ese robot (o a veces lo compras, que es peor…) y luego lo metes a funcionar, y falla más que una escopeta de feria… ¿Pero como puede ser? – exclama el incrédulo trader… pues muy fácil… ese robot, está simple y llanamente, SOBREOPTIMIZADO.
Esto significa, que lo que hemos hecho es ajustar los parámetros óptimos de las distintas variables en el robot, a aquella combinación que mejor se hubiera comportado en el pasado… y así, se puede ajustar infinitamente, dando efectivamente resultados espectaculares… Ya hablaremos más profundamente de qué es la sobreoptimización… pero para decirlo rápido, es el enemigo número 1 del trader cuantitativo y más a nivel algorítmico.
Hay muchos factores que pueden llevar a esa sobreoptimización y a sorpresas siempre desagradables en los resultados. Y también varios modos de luchar contra ella, y algunas muy muy básicas, como esta… que además es imprescindible. Y es el utilizar un periodo de entrenamiento, y un periodo de test distinto. Son el In Sample(OS), y el Out of Sample(OS)
El periodo In Sample es la etapa en la que se diseña y ajusta el algoritmo utilizando un conjunto de datos históricos. Durante este periodo, se optimiza el algoritmo para obtener los mejores resultados posibles en este conjunto de datos específico. Piensa en ello como entrenar a un atleta para una competición, utilizando una pista de entrenamiento específica. El objetivo es mejorar el rendimiento del atleta en esa pista de entrenamiento, ajustando su técnica y estrategia.
El periodo Out of Sample es la etapa en la que se prueba el algoritmo en un conjunto de datos diferente, que no se utilizó durante el periodo In Sample. Esta etapa es crucial para evaluar cuán bien el algoritmo se desempeña en condiciones desconocidas y si es capaz de generalizar su aprendizaje a nuevos escenarios. Volviendo al símil del atleta, el periodo Out of Sample sería como poner al atleta a competir en una pista diferente a la de entrenamiento para ver si su rendimiento se mantiene en diferentes condiciones, o si por el contrario sólo pudo dar rendimiento donde entrenó.
Al igual que un atleta que solo puede desempeñarse bien en su pista de entrenamiento, un algoritmo sobreajustado puede generar excelentes resultados en el periodo In Sample, pero fracasar en el periodo Out of Sample.
En resumen, el periodo In Sample es donde se entrena y ajusta el algoritmo, y el periodo Out of Sample es donde se evalúa su capacidad para adaptarse a nuevas situaciones. Ambos periodos son importantes para asegurar que el algoritmo de trading sea efectivo y robusto en diferentes condiciones del mercado.
Normalmente nosotros usamos los últimos 10 años para elaborar los robots, y de ellos entrenamos con datos de 7 años, y probamos los resultados en los otros 3, para comprobar si es algo robusto, o fruto de la sobreoptimización. Además de otras cosas…
Pero si te tienes que llevar de este post algo… quédate con que, si usas un builder, y optimizas una estrategia desde una fecha hasta hoy, tras hacerlo, puedes tirarla a la basura directamente y te ahorrarás sorpresas y disgustos a corto plazo. Tienes que optimizarla durante un periodo y probarla en otro. Normalmente los builders tendrán posibilidad de optimizar con IS y OS, y los que no lo tienen, se pueden hacer apaños para tenerlo. Te lo contaré cuando te hable del WalkForward, pero eso es tema para otro día…