En
esta nueva entrega hablaremos de los métodos de validación de estrategias,
desde los más sencillos, que toman como base una única secuencia de datos
históricos, hasta los más sofisticados enfoques multi-hilo que buscan evaluar las estrategias en un conjunto de
escenarios alternativos simulados desde la variabilidad del propio sistema o
construyendo series sintéticas de datos.
Vaya por delante que no es lo
mismo “validar” que “evaluar”. Validar consiste en comparar la coherencia de
los resultados obtenidos fuera de muestra (OS) con los obtenidos durante los
procesos de construcción y entrenamiento de la estrategia (IS). Mientras que
“evaluar” es un concepto mucho más amplio que puede hacerse de manera cualitativa
o cuantitativa, interna o externa. Por ejemplo, podemos evaluar la performance de nuestro portfolio
conforme a un índice de referencia (evaluación externa) o su adaptabilidad a un
determinado perfil inversor (evaluación cualitativa). La validación es un tipo
de evaluación interna y cuantitativa cuyo objeto es acreditar la robustez de un
modelo inversor cuando se aplica en series de precios o activos distintos a
aquellos en los que ha sido construido y entrenado.
Validar una estrategia implica obtener respuesta a las siguientes preguntas:
En el primer caso, queremos saber
si la estrategia es flexible o se trata de un conjunto de reglas y parámetros diseñados
para maximizar la función objetivo en un conjunto específico de datos. En otras
palabras, nos interesa saber cuánto proyecta el sistema.
La segunda pregunta tiene que ver
con la estabilidad de la estrategia ante pequeñas variaciones de precios. A
veces una estrategia, aparentemente bien diseñada, tiene un comportamiento
errático o improductivo en un determinado rango de precios o umbral de
volatilidad. Cuando se produce un cambio de marcoépoca muchas estrategias dejan
de funcionar, eso es inevitable. Pero otras veces observamos una degradación
continua a medida que nos alejamos en el tiempo de los datos en los que ha sido
construida. Este progresivo desajuste o pérdida de sensibilidad puede estimarse
mediante técnicas adecuadas de validación.
La tercera cuestión tiene que ver
con la calidad inherente a la lógica. Idealmente nos interesa que un conjunto
de reglas sea capaz de generar alpha
en un amplio rango de configuraciones paramétricas. Si el rendimiento, aunque
sea extraordinaria, se concentra en un pequeño número de valores paramétricos,
o peor aún, en combinaciones aisladas o de caso único, entonces la estrategia
no es robusta y debe ser rechazada por inconsistente.
Existen numeras técnicas de validación aplicables a los sistemas de trading. Algunas vienen empleándose desde hace décadas y están incluidas en muchas plataformas; principalmente las que pertenecen a la categoría de simulaciones históricas de escenario único. Otras, basadas en escenarios múltiples, son quizá menos conocidas, pero han sido objeto de numerosas investigaciones académicas y ya empiezan a desarrollarse para ellas concreciones prácticas y algoritmos específicos. Sobre todo en el ámbito del machine learning. Seguidamente, y sin ánimo de ser exhaustivos, realizamos una clasificación de las principales técnicas:
VALIDACIÓN DE ESCENARIO ÚNICO
Aquella que se basa en una única secuencia histórica datos para para las regiones IS y OS. Los modelos más simples utilizan un único hilo, o corte del histórico, para optimizar y otro para validar (validación lineal y variantes del WF), mientras que los modelos basados en las distintas variantes del método K-fold utilizan varios hilos o subconjuntos datos para optimar y una única región del histórico para validar. Esto permite una simulación parcial de escenarios alternativos que puede ser útil para someter la estrategia a stress-tests.
a) Validación lineal simple.
En este tipo de validación se
divide la serie histórica en dos regiones de tamaño diferente. La de mayor
tamaño se utiliza para el entrenamiento y la otra para la validación. Suele ser
frecuente una 3:1, aunque el porcentaje de datos IS/OS es, en realidad, un
hiperparámetro del modelo.
Un esquema de este modelo sería:
La región de entrenamiento es
estática y abarca un corte lineal de datos históricos cronológicamente anterior
a la región de validación. Entre ambas se deja una pequeña separación, de
tamaño variable según el modelo a evaluar, para evitar el overlapping o solapamiento.
Éste se produce cuando utilizamos para entrenar datos que son necesarios para
el cálculo de las primeras operaciones del OS. Pongamos un ejemplo: Supongamos
el típico sistema de cruce de medias que utiliza una media larga de 40 sesiones
y otra corta de 10. En tal situación en el cálculo de la primera operación del
OS intervienen datos que se remontan 40 días atrás. Por tanto, para evitar el
solapamiento de las regiones IS y OS debemos dejar una separación mínima de 40
días entre ambas.
En mi opinión este tipo de validación es apropiado para hacer una evaluación rápida del potencial de una estrategia, pero, en ningún caso, debe utilizarse como método riguroso de evaluación ya que tiene los siguientes inconvenientes:
b) Walk-forward con anclaje.
Muy similar a la validación simple, pero con la diferencia de que permite definir una ventana deslizante de validación a través de la región del histórico reservada para el OS. Este método está presente en algunas plataformas de trading, como Amibroker, aunque actualmente está en desuso. Su esquema sería:
Tiene algunas ventajas sobre el modelo anterior:
Sin embargo, todos los inconvenientes mencionados en la validación lineal simple también son aplicables al WF con anclaje.
c) Walk-forward sin anclaje.
Esta es la forma de validación
más empleada en el trading de sistemas. La mayoría de las plataformas la incorporan
por defecto y permiten automatizar total o parcialmente el proceso de WF. En
este tipo de validación tenemos dos ventanas deslizantes: IS y OS. Lo que
implica incorporar un hiperparámetro para el tamaño de cada una. A diferencia del WF con anclaje este método
parte de la premisa de que los datos próximos son más relevantes para el
entrenamiento del sistema que los antiguos, por lo que estos últimos se
eliminan progresivamente en cada iteración.
El esquema de este modelo sería:
El WF tiene algunas ventajas
innegables:
Sin embargo muestra algunas desventajas obvias:
d) Clustering walk-forward.
Los términos “Clustering WF”,
“Matrix WF” y “Constant WF” hacen referencia a un proceso iterativo en el que
se realizan numerosos análisis WF variando el tamaño de las ventanas IS y OS
para intentar responder a estas dos cuestiones:
También se intentan buscar
pruebas adicionales de robustez al comparar
los múltiples resultados WF con diferentes combinaciones paramétricas y configuraciones
de las ventanas IS/OS. Adviértase que se trata de un proceso selectivo no
exento de riesgos ya que, en la práctica, estamos haciendo una optimización de
la optimización. Es decir, buscamos combinaciones paramétricas e
hiperparamétricas de máximo rendimiento una vez construida la matriz multidimensional
de resultados.
Esta matriz es simplemente un conjunto de optimizaciones WF agrupadas por periodos y %OS diferentes. En la imagen inferior podemos ver los resultados de una validación de este tipo realizada con StrategyQuant:
Y la combinación de tamaño IS/OS sugerida por la aplicación:
Fíjense en la recomendación
final:
IS = 1023 días
OS = 114 días
Según SQ esos serían los tamaños
de ventana idóneos para optimizar el sistema. Salta a la vista que hemos
incurrido en una sobreoptimización por el simple expediente de clasificar los
resultados de la estrategia en función de dos hiperparámetros: tamaños del IS y
OS. Muy pocos traders profesionales se tomarían en serio una recomendación como
esta.
Entonces, ¿para qué sirve el clustering WF? En nuestra opinión es
útil como stress-test o prueba
adicional de robustez. Si somos capaces de probar que la estrategia funciona
adecuadamente con independencia del tamaño de las ventanas de optimización,
entonces mejor que mejor.
e) Validación cruzada K-fold.
Esta técnica de validación
consiste en dividir el total de datos en varios subconjuntos de prueba y
entrenamiento que van cambiando a lo
largo de las sucesivas k iteraciones.
De este modo se aprovecha todo el histórico ya que cada subconjunto de datos se
utiliza en el total de las iteraciones al menos una vez para validar y otra
para optimizar. Finalizado el proceso iterativo se calculan la precisión y el
error, así como el promedio de los K
escenarios alternativos de entrenamiento, de los cuales solo uno de ellos sigue
la secuencia histórica original.
Vemos el esquema de este método en la versión con anclaje:
Como podemos ver, solo la primera
iteración respeta el orden histórico de la serie de datos. En las siguientes se
combinan datos de entrenamiento pasados y futuros. Por ello, este modelo no
tiene una fácil interpretación histórica y es más útil para analizar los resultados
de forma global y evaluar en varios escenarios de entrenamiento. Los segmentos
a derecha e izquierda son las zonas de solapamiento a evitar.
Veamos ahora una versión sin anclaje.- Suponiendo 3 años de entrenamiento y 1 de prueba, tendríamos C6x3=20 combinaciones sin repetición. Y los escenarios posibles de entrenamiento para el OS de 2018 serían:
En este modelo cada año del OS
tendría 20 escenarios de optimización posibles. Por lo que estaríamos ante un
enfoque multiescenario parcial, solo desde el lado del entrenamiento.
A nuestro juicio, las dos principales ventajas de la validación K-fold son:
Así mismo, podemos señalar las siguientes desventajas:
VALIDACIÓN EN MÚLTIPLES ESCENARIOS
Este tipo de validación, a la que
nosotros denominamos enfoque multi-hilo,
tiene por objeto simular diferentes escenarios para el OS que darán lugar a un
conjunto de curvas del equity con sus
respectivos ratios. Con estos escenarios, o recorridos posibles, tratamos de
simular el comportamiento de la estrategia en un amplio rango configuraciones
de los mercados o de mercados alternativos.
a) Validación multimercado.
Se trata de una simulación en el
nivel de portfolio. El sistema se diseña y evalúa en uno o varios activos que
no formarán parte de la cartera pero que tienen un comportamiento similar al
resto en términos de volatilidad y tendencia. Una vez obtenidos los parámetros
de trabajo la estrategia se implementa en los demás activos.
Este método puede tener sentido
en el contexto de grandes carteras de acciones y ETFs. Sin embargo su margen de
aplicabilidad es muy limitado; sirve para activos que pertenecen al mismo grupo
o sector. Pero cuando el nivel de correlación es muy alto se corre un alto
riesgo de acabar con un portfolio igualmente sobreoptimizado.
Su esquema seria:
El método multimercado aporta
estas dos principales ventajas:
Pero, en nuestra opinión, las
desventajas pesan mucho más que las posibles ventajas:
Así que nos movemos entre dos extremos: Activos muy similares no sirven y muy diferentes tampoco. Este es el verdadero Talón de Aquiles y lo que hace que este método tenga una aplicabilidad limitada.
b) Permutaciones paramétricas.
El objetivo de este método es
generar variabilidad mediante la combinación aleatoria de un rango específico
de valores paramétricos. Al realizar una optimización cada juego de valores
dará lugar a una curva de resultados diferente, simulando en conjunto, un
elevado número de hilos o escenarios
hipotéticos que, a efectos de evaluación, consideramos igualmente probables.
Adviértase que este método es, en realidad, una simulación de Montecarlo realizada
desde los parámetros. No sirve para decirnos cuál es la curva más probable ni
la mejor combinación de parámetros para el siguiente período, pero nos da una
idea bastante clara de lo que nos cabe esperar en el futuro operando una
determinada estrategia.
En nuestro artículo “Sobreoptimización
y ruptura de sistemas” (Mayo-2016) propusimos este enfoque multi-hilo como método para inferir el
retorno esperado de una estrategia y también para determinar cuándo se ha roto
un sistema. Sus orígenes se remontan al
trabajo de Dave Walton: “Know
Your System! – Turning Data Mining from Bias to Benefit through System
Parameter Permutation” (NAAIM, Feb. 2014), posteriormente muy comentado en
medios especializados en trading cuantitativo.
Walton propuso dos
procedimientos: SPP (System Parameter
Permutation) y SPR (System Parameter
Randomiztion). El primero explora todas las combinaciones paramétricas
dentro de un rango de valores máximos y mínimos especificados por el
desarrollador. Es viable cuando el número total de permutaciones no es muy
elevado. El segundo está más indicado para sistemas con muchos parámetros e
históricos muy largos en los que una optimización intensiva requiere un tiempo
prohibitivo. En tales casos basta con extraer una muestra aleatoria
estadísticamente representativa del conjunto de combinaciones posibles.
Las dos premisas en que se asienta este método son:
I) Al optimizar un sistema las combinaciones paramétricas de máximo rendimiento representan soluciones de caso único a una configuración específica de los mercados. Su valor predictivo es escaso o nulo debido a que la dinámica de los mercados y su naturaleza pseudoaleatoria hace poco probable que la combinación específica que ha funcionado mejor en el período T siga siendo idónea en el periodo T+1
II) La variabilidad generada por el conjunto de las simulaciones es suficiente para
obtener una distribución de resultados para cada métrica de interés que
describa de forma realista el comportamiento futuro del sistema.
Las permutaciones paramétricas
son similares a las técnicas de modelado estocástico que se utilizan en otros
ámbitos de la economía. En un modelo estocástico se estudia el efecto de
variables aleatorias sobre las series temporales e interesan las características
de una distribución de resultados que describen el comportamiento del modelo:
probabilidades, medias, varianzas, covarianzas, etc. En el caso de los sistemas
de trading nos interesa explorar la distribución
de los principales estimadores de retorno y riesgo ante las distintas
configuraciones de los mercados que puedan afectar al sistema. Ahora bien, ¿las
permutaciones paramétricas simulan adecuadamente estos cambios?
Una respuesta afirmativa equivale
a mantener que para cada movimiento de precios siempre hay una combinación
paramétrica de máximo rendimiento. Por lo que, en cierto modo, permutar los
parámetros sobre una serie histórica equivale a evaluar una única combinación
paramétrica sobre un conjunto de series sintéticas derivadas de la serie histórica.
Y, efectivamente, el resultado es muy similar. La única diferencia es que en
los sistemas basados en reglas hay un porcentaje del retorno debido a la
calidad de la lógica y otro debido a la elección de los parámetros. Este modelo
solo sirve para generar una distribución de resultados desde las combinaciones
paramétricas pero no desde las reglas y sus posibles variantes. Con todo, en un
entorno de programación genética no sería difícil extender el
procedimiento tanto al repositorio de
reglas probadas durante el proceso de construcción como a las permutaciones
paramétricas.
El procedimiento SPP tiene este aspecto cuando trazamos sobre un gráfico el conjunto de curvas al que dan lugar las distintas combinaciones paramétrica:
Nos interesan sobre todo los
histogramas de la distribución del net
profit, PnL y DDm, así como el de la función objetivo o ratio diana (SQN,
Sortino, Calmar, etc.) empleado para optimizar. Walton propone considerar como
referencia la mediana de la distribución, de tal modo que podemos acreditar la
validez del sistema cuando descartamos la hipótesis nula (H0) en
términos blandos:
H0 = El sistema es incapaz de generar retorno (P.
Ej. Me BMO ≤
0, Me Sharpe ≤ 0, etc.)
O, en términos duros:
H0 = El sistema es
incapaz de generar alpha. Es decir
una rentabilidad superior a la del mercado ajustada por riesgo.
Nuevamente la plataforma StrategyQuant implementa una versión bastante completa de este procedimiento de validación multi-hilo:
Tanto la tabla de criterios como
los gráficos de distribución se pueden personalizar para que muestren los
ratios que consideremos más relevantes.
En resumen, el método de las permutaciones paramétricas (SPP) representa una forma muy potente de realizar una validación multi-hilo, pero no está exento de algunas limitaciones, como han señalado M. Harris (véase: “Limitations of Quantitative Claims About Trading Strategy Evaluation”, 2016) y otros autores. Las principales son:
1) El modelo requiere la determinación de unos rangos paramétricos previos al proceso de validación. Estos rangos de valores máximos, mínimos y de intervalo son establecidos por el desarrollador durante el proceso de construcción de la estrategia. El problema es que la elección de unas horquillas específicas de valores afecta en gran medida a los resultados, por lo que puede aducirse que el proceso está contaminado por el sesgo de selección (selection bias). En nuestra opinión esto no tiene por qué ser un problema, siempre y cuando la elección de los rangos no sea arbitraria sino que derive de la determinación de las zonas robustas siguiendo un protocolo riguroso de evaluación IS.
2) No es un método de validación universal. Solo es aplicable a los sistemas que incluyen parámetros en número suficiente como para garantizar una elevada diversidad de escenarios. Cuando no hay parámetros o el número de combinaciones es muy pequeño, este método es incapaz de emular desde los parámetros la variabilidad de los mercados. En tal caso es preferible recurrir a series sintéticas de precios para realizar análisis multi-hilo.
3) Dado que todos los tests están condicionados por la misma secuencia de datos históricos no hay garantía de que las permutaciones paramétricas repliquen cambios bruscos en la estructura de los mercados. De hecho los cambios de marcoépoca nos son solo un problema elección de parámetros sino que pueden invalidar por completo la lógica de base en que se asienta una estrategia.
4) El modelo SPP sirve para decirnos que R/R nos cabe esperar en promedio de un sistema, pero no tiene una fácil interpretación histórica (por ej. como una secuencia OS obtenida en un WF) ni nos dice qué paramentos de trabajo son apropiados para comenzar a operar el sistema. Esto último tenemos que determinarlo mediante procedimientos adicionales.
La importancia de las series
sintéticas radica en que permiten generar escenarios hipotéticos y simular
condiciones de la operativa para las que no existen series históricas o estas
son de una longitud inapropiada. Como ya hemos visto, los procesos de diseño y
validación de estrategias consumen muchísimos datos, más aún cuando estas se construyen
de manera automatizada. Precisamente el papel de los datos sintéticos en el machine learning cobra especial
importancia debido a que estos algoritmos deben ser entrenados y validados con
una ingente cantidad de datos que muchas veces desborda la disponibilidad de
datos reales.
El uso de datos sintéticos en el ámbito del trading cuantitativo tiene las siguientes aplicaciones:
No es fácil obtener series sintéticas de calidad ya que es necesario replicar cuidadosamente las propiedades de los datos originales. En las series temporales de datos financieros encontramos propiedades empíricas de cuatro tipos:
En general podemos agruparlos en estas dos categorías:
a) Datos completamente sintéticos.- Aquellos que no contienen ningún dato original, sino que se generan a partir de las propiedades estadísticas de la distribución o construyendo un modelo computacional basado en agentes (Agent-based Modelling). En esta categoría también entran todas las variantes del método ecuaciones diferenciales estocásticas (EDE), las obtenidas con los métodos de la familia ARCH-GARCH y las más sofisticadas técnicas de análisis multivariado de alta dimensionalidad (o análisis de componentes principales PCA).
b) Datos parcialmente sintéticos.- Aquellos que se obtienen modificando la serie original; bien aleatoriazando el lugar que ocupan los datos en la cadena (técnicas de remuestreo o bootstrapping), bien alterando cada uno de sus elementos individuales (por ej. cierres, máximos y mínimos de barra). Esta última alternativa es la que nos parece más prometedora y en la que nos centraremos en las siguientes líneas.
El método de expansión y contracción de barras (ECB) consiste en
generar pequeños cambios aleatorios en los valores máximos, mínimos y de
cierre, estableciendo un máximo porcentaje de cambio que está determinado por
la volatilidad inmediata. La volatilidad se desglosa en: Up Volatility (UV) (desde el cierre de la barra anterior al
máximo de la siguiente) y Down Volatility
(DV)” (desde el cierre de la barra anterior al mínimo de la siguiente) y se
calculan los valores promedio para n
barras.
Supongamos que en una barra dada
del futuro del SP500 el UV =7 ticks y
el DV = 5 ticks. Entonces el valor
para el máximo sintético es un número aleatorio entre -7 y +7 y para el mínimo
sintético entre -5,+5. Para los cierres también podemos aplicar el mismo
procedimiento a partir de la volatilidad entre cierres consecutivos. Gráficamente
una superposición de escenarios quedaría del siguiente modo:
El modelo admite dos variantes; con anclaje y
sin anclaje. En el primer caso las transformaciones son independientes y
afectan únicamente a cada barra y, en el segundo, los cambios son acumulativos.
La primera técnica es más fiel al escenario real, pero resulta mucho más
estática y solo es apropiada para realizar pruebas de stress-test. Por el contrario, la variante sin anclaje crea una
amplia gama de escenarios alternativos. Sin embargo, en históricos muy largos,
las divergencias con la serie original pueden ser excesivas. Pero esto tiene
fácil solución reseteando la deriva de precios cada cierto tiempo.
En la imagen inferior podemos ver la simulación sin anclaje de un conjunto de series basadas en el mismo histórico:
Para añadir más diversidad se puede completar el modelo ECB con un mecanismo adicional que denominamos translocación de barras. Consiste en intercambiar aleatoriamente las barras contiguas situadas en un clúster de tamaño variable en función del time frame elegido. Por ejemplo, para un TF = 15 min. el tamaño idóneo sería de 4 barras. Para TFs. Superiores a 1 hora no utilizamos este mecanismo, debido a que queremos garantizar el mantenimiento de las pautas horarias de intradía.
Otra cuestión importante que
actualmente estoy investigando con la inestimable ayuda de mi amigo e
informático José Luis Gil, es la implementación práctica de las series
sintéticas en una plataforma de trading. De nada nos sirve disponer de un buen
modelo teórico si, para evaluarlo, necesitamos construir en una hoja de cálculo
miles de series sintéticas de un activo y luego importarlas manualmente la
plataforma. Esto haría enormemente tedioso o directamente inviable el proceso
de validación multi-hilo.
En lugar de ello, estamos trabajando en la
generación dinámica de las series sintéticas a medida que se realiza en la
plataforma el backtest de un sistema.
Cada iteración da lugar a un backtest diferente en el que la estrategia es evaluada
en series distintas que se van construyendo barra a barra, a medida que avanza
el proceso. El resultado final es equivalente a evaluar una misma estrategia en
una cesta de cientos o miles de series alternativas.
En otras palabras, el proceso equivale a hacer
una simulación de Montecarlo desde los valores de los precios, en lugar de
hacerla desde las combinaciones paramétricas (método SPP) o, de manera mucho
más convencional, desde una secuencia dada de operaciones (método mono-hilo). En próximos artículos quizá
describamos con más detalle este nuevo procedimiento.
© Tradingsys.org, 2018.
Andrés A. García.