Hace algunos años, Van K. Tharp desarrolló una fórmula para evaluar el rendimiento y calidad de estrategias inversoras, en ocasiones, muy distintas: El ratio SQN. Posteriormente, han surgido algunas variantes y usos de la fórmula original que considero muy interesantes; en particular para obtener juegos de parámetros óptimos que maximicen simultáneamente el tamaño medio de la operación y la desviación estándar de resultados en un espacio muestral de N operaciones.
Por ejemplo, si utilizamos un stop fijo de 700$ y obtenemos un resultado de 1400$, el valor del múltiplo de R será de 2 para esa operación.
Si mantenemos dicho stop en la siguiente secuencia N = -300$, 2200$, -900$, 1500$; el múltiplo R de la serie es de 3,5 (Beneficio medio / R)
El problema es que, en la mayoría de los casos, no contamos con un stop fijo que permita calcular de manera constante el riesgo de cada operación; por lo que tendremos que emplear otro estimador de R.
Cuando disponemos de una serie larga de operaciones, podemos inferir que el valor de R es aproximadamente igual a la desviación estándar del total de las operaciones. Por lo que, en definitiva, volvemos a nuestro ya conocido estimador básico RSS (Ratio de Sharpe simplificado) = media / desviación.
Por otro lado, y para garantizar que los resultados serán comparables en series que involucran marcos temporales muy grandes, la media y la desviación deberán calcularse como series profit/loss porcentuales. Así pues, en una serie larga, el RSS puede definiese como el promedio de todas las operaciones, donde cada una de ellas se expresa como porcentaje del tamaño de la cuenta (o, alternativamente, del mercado) dividido por la desviación estándar de todas las operaciones en porcentaje.
Pero aún así, tenemos otro problema: Al ir aumentando el número de operaciones, la media y la desviación no evolucionan de manera proporcional, por lo que conviene normalizar el RSS multiplicándolo por la raíz cuadrada del número de operaciones. De este modo, la fórmula resultante para una serie estadísticamente significativa sería:
SQN = (Beneficio medio / desv.) * Raíz de N.
Según Tharp, valores por encima de 2 darán lugar a sistemas robustos y, superiores a 3, a sistemas excelentes. Por ejemplo: Si somos capaces de obtener en una serie de 400 ops., de manera consistente, Un RSS = 0,15 entonces tenemos un sistema claramente robusto: SQN = 3. Pero si, por un casual, ese mismo RSS se obtuviese en una serie de 900 ops. el su valor se dispararía hasta 4,5, con lo que -sobre el papel (y con las obvias salvedades)- tendríamos una auténtica máquina de ganar dinero.
Ni que decir tiene que, lo expuesto hasta aquí, es aplicable a operaciones conseguidas a la derecha de los gráficos. La magia de la optimización intensiva posiblemente dará lugar a ratios SQN descomunales, pero, obviamente, esto es "humo" hasta que no se demuestre lo contrario.
Bien, pues una vez expuesta la teoría, vamos al caso que nos ocupa: Aplicar el estimador SQN como criterio de optimización de parámetros.
La mayoría de las plataformas de trading ofrecen un amplia gama de criterios de optimización que tratan de encontrar combinaciones óptimas de parámetros que maximizan, por ejemplo, el net profit, el beneficio medio, el Ratio beneficio/DD, el profit factor, etc. No todas son apropiadas para conseguir soluciones robustas y fiables, por lo que, en función de las características de nuestro sistema, nivel de aversión al riesgo y capital disponible, en ocasiones, serán más adecuadas unas que otras.
Como un estudio en profundidad llevaría muchas páginas y nos apartaría de presente tema, dejaré aparcada, por ahora, la cuestión hasta que termine un amplio dossier que estoy realizando sobre optimización de sistemas y carteras. Posiblemente publique este trabajo en forma de e-book dentro de unos meses. Por ahora, vamos a centrarnos en algo más sencillo: ¿Cómo conseguir aumentar el SQN de la mejor manera posible?
Salta a la vista que tenemos tres alternativas posibles:
1) Mejorar el beneficio medio. Para ello sólo hay un camino: Aplicarse el lema "pocas operaciones y de calidad". ¿Cómo? Filtrando las entradas de tal manera que obtengamos una solución Pareto-óptima en todo el espacio muestral. (Sobre este asunto, aconsejo repasar mi artículo: "Principio de Pareto y distribución de resultados") Si conseguimos que la relación 80:20 mejore, por el procedimiento de reducir el número de operaciones a cambio de un mayor tamaño medio, habremos matado dos pájaros de un tiro: Gastaremos menos en comisiones y el impacto relativo del slippage será menor.
Evidentemente, -y sin cambiar las reglas del algoritmo- también podemos "enredar" con los valores paramétricos un rato; no sea que, por un casual, logramos aumentar el avg. trade sin perjudicar demasiado otros ratios fundamentales. ¡Quien sabe! "Tal vez el caballo cante..."
2) Obtener una distribución de resultados lo más ceñida posible. Aquí estamos en una situación inversa. Quizá, la solución más fácil será ajustar los stops de perdidas y profit targets, de tal manera que, en el histograma, los resultados se agrupen al máximo en torno a la media. De otra forma: El objetivo será recortar las colas de la distribución. Pero claro, no siempre esto es posible -ni deseable-, entre otras cosas porque, en conformidad con Pareto, acabaremos privando al sistema de las mejores operaciones.
3) Más y más operaciones, más y más histórico... para conseguir un número "N" lo más grande posible. Con esto se obtienen básicamente tres cosas: (a) Robustez: Las estadísticas de un sistema sólo son fiables cuando están avaladas por una serie larga de operaciones. (b) Suavidad: Un perfil de la curva de beneficios más fino y continuo. (c) Mejor conocimiento del comportamiento de la estrategia en diferentes marcoépocas. Por ello, es lógico que un estimador de calidad, como el SQN que sirva para comparar sistemas pondere positivamente a aquellos que cuentan con un historial más prolongado.
Hace unos días, casualmente encontré en el foro de Ninja Trader una interesante propuesta de dos de sus miembros -a quienes felicito desde aquí por su valiosa aportación- consistente en integrar el SQN entre los "ratios diana" de la herramienta de optimización de esta plataforma. Incidentalmente, pienso que esta es otra de las grandes ventajas de emplear software, hasta cierto punto, abierto a la incorporación de código que permite mejorar -o adaptar a las necesidades de cada usuario- algunas de sus funcionalidades. Si tienes una novedosa idea, siempre puedes incorporarla tú mismo o hacer que alguien te la programe; mucho más allá del consabido lenguaje de scrips que sólo sirve generar indicadores y sistemas, a menudo de forma bastante limitada y precaria.
La idea es brillante porque permite que el algoritmo de optimización trabaje directamente en la búsqueda de soluciones paramétricas que satisfagan el criterio de maximizar el SQN que, aunque no es la panacea (ni resulta conveniente para algunos sistemas intradiarios en los que interesará, por ejemplo, preservar el tamaño medio de la operación a toda costa para minimizar el devastador efecto del splippage, incluso sacrificando buena parte del beneficio potencial en el esfuerzo) sí es un procedimiento de optimización mucho más elegante y consistente que el puro ejercicio de "onanismo improductivo" de ver elevarse el equity curve hasta desafiar las leyes de la gravedad.
Con todo, y para terminar, cualquier estrategia de optimización deberá acomodarse al siguiente esquema de trabajo:
1) Acotamiento de rangos paramétricos en valores razonables y consecuentes con el sistema que se está evaluando. La estrategia tiene que ser robusta, incluso antes de optimizar parámetros.
2) Pruebas de back-test de amplio espectro, en diferentes time frames y productos. Como ya he dicho varias veces, las soluciones de caso único no funcionan.
3) Selección de los valores empleando mapas de optimización. Hoy por hoy, es la mejor herramienta que conozco para determinar la consistencia de los parámetros en un amplio espacio muestral. En la mayoría de los casos no hará falta recurrir a software complejo y caro. Ya hemos visto en otros artículos que con una simple hoja Excel es suficiente.
4) Realización de pruebas out-sample y random-walk. En el primer caso, reservando regiones del histórico sin optimizar y, en el segundo, construyendo series pseudo-aleatorias de precios que conserven las propiedades fundamentales del mercado de referencia. El método "Data Scrambling" descrito por T. Chande es muy bueno para esto.
5) "Incubadora": Nunca se debe ir de la mesa de diseño a la operativa real. Hay que probar el sistema en la plataforma de trading durante semanas o meses antes de certificar de manera concluyente que todo funciona según lo previsto. De esto saben mucho, al parecer, los ingenieros de la NASA, cuando incorporan tercamente en sus misiones espaciales circuitos y otros elementos críticos ya casi obsoletos: Su inestimable ventaja es que todos ellos están muy, pero que muy probados.
En definitiva, optimizar consiste, básicamente, en evitar que quede en nuestro sistema el más mínimo resto de improvisación.
Andrés A. García.
© Tradingsys.org, 2008