System Quality Number (SQN) y optimización de parámetros.
 
 
  • Usted está aquí:
  • Home
  • Optimización
  • System Quality Number (SQN) y optimización de parámetros.

System Quality Number (SQN) y optimización de parámetros.

 
TradingSys (AndG) - 2 Abr 2008
2 comentarios
 

tradingsys 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.

En el capítulo VI  de su obra, Tener éxito en trading (Valor, Barcelona, 2007), desarrolla el escurridizo concepto de la esperanza matemática en función de los "múltiplos de R", dónde ‘R' es una variable de contexto para medir el riesgo inicial de una operación; y su múltiplo = beneficio (en puntos) / riesgo inicial.

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.

  • Donde "N" = número de operaciones de la serie.

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

 

 

Comentarios

 

Merowingio -

Gran exposicion, vaya como casi siempre, peo me asalta una duda ( y no solo por este articulo) 
MI cuestion sin respnderME es : 
Sirve de tanto optimizar al maximo los parametros de un sistema en la parte izq del grafico ? 
AHora mismo casi estoy por contestarme que sirve con tener medianamente optimizados los parametros que utiliza tu sistema, y hacerle un seguimiento directo para ver que no se desvia demasiado de la curva de beneficios.

admin - Re: Merowingio

¡Caramba! Ya has respondido tú mismo a tu pregunta.... Efectivamente, una optimización intensiva, casi hasta quemar la CPU de tu equipo, prácticamente no vale para nada. Salvo para decirte lo maravillosos que fueron los parámetros “x”, “y”, “z” en el pasado.  
 
El diseño de cualquier estrategia debe ser, de suyo, robusto y consistente, incluso antes de empezar a optimizar: ¡Tendré que repetir esto hasta que se me seque la garganta!.  
 
Con todo, la elección de rangos paramétricos óptimos para un sistema / mercado requiere un fino ejercicio de prognosis: No hay que tener la vista puesta en lo ya ocurrió, sino en lo que de manera plausible (y débilmente aproximativa...) podría ocurrir en el futuro.  
 
Con razón el viejo Alexander Elder recomendaba, en su obra "Vivir del Trading", “desoptimizar” un sistema para someterle a todas las “perrerías” imaginables... 
 

Añadir comentario

 
Modificado por TradingSys (AndG) - 3 Abr 2008
 
 

Secciones

 
 

Entradas recientes

 
 

Enlaces