Dedicado a Carlos Barredo, gracias por compartir conocimiento.


El pasado sábado celebramos la Kedada 19 de esta web y en la excelente ponencia realizada por Carlos Barredo, el ganador de la edición de Robotrader del año pasado (al cual entrevistamos aquí), en la que analizaba el Ciclo de Producción de Sistemas de Trading, nos sorprendió a todos señalando que utilizaba como función objetivo de las optimizaciones de sus sistemas el Ulcer Performance Index. Dado que el tema me llamó mucho la atención, he decidido profundizar un poco más en el tema, así que... ¡¡¡aquí tenéis toda la información!!! ;)


Esto del Ulcer me Suena…
Y a mí también :D. Lo cierto es que el Ulcer Index (UI) lleva bastante tiempo siendo usado en la industria financiera. En particular, esta métrica (aunque también se suele usar como indicador) fue creado a finales de la década de los ochenta por Peter Martin y Byron McCann, apareciendo por primera vez en el capítulo 6 de su libro The Investors Guide to Fidelity Funds (que por cierto está disponible de forma gratuita en la página del autor, http://www.tangotools.com/ui/fkbook.pdf).

¿Qué tiene de especial el UI? Básicamente es un método que nos permite medir el riesgo de una inversión considerando la preocupación que puede generar a un inversor, a diferencia de otras medidas del riesgo. Tal y como señalan sus creadores, "cuanto más alto es el Ulcer Index de una inversión, más posibilidades tendrá de provocar úlceras o insomnio cuando pongamos nuestro dinero en ella".

En particular, si analizamos la desviación típica como medida de riesgo, podemos ver que no es la mejor medida de riesgo ya que:

  • Tanto las variaciones al alza como a la baja del valor de nuestra cartera son consideradas para calcular la desviación típica. Sin embargo, a los inversores tan solo les interesa realmente el riesgo, el cual viene asociado a las variaciones a la baja. Las ganancias en nuestra equity producen beneficios, no riesgo.
  • Por otro lado, la desviación típica no considera las rachas de operaciones perdedoras, las cuales con las que generan los drawdowns de nuestra equity. Es decir, podemos encontrarnos con estrategias con un rendimiento similar pero una duración en los drawdowns muy diferentes a pesar de tener la misma desviación típica en sus resultados. En la hoja de cálculo que podéis descargar desde http://www.tangotools.com/ui/SD.xls podéis ver un ejemplo de esto que os acabo de comentar.
  • Por último, la desviación típica no nos informa de si se reduce el riesgo de nuestra estrategia evitando los movimientos en contra del mercado.

La desviación típica no es la única medida de riesgo que presenta defectos. Por ejemplo, el Máximo Drawdown o la Mayor Pérdida son tan solo una observación puntual en el tiempo lo cual no es significativo en términos estadísticos. Otras métricas como por ejemplo el Retroceso Máximo Promedio se basan en variaciones absolutas de los precios en lugar de porcentuales. Por último, la mayor parte de métricas de riesgo no pueden utilizarse para comparar diferentes estrategias entre sí (por ejemplo, no podemos comparar una estrategia cualquiera con un Buy & Hold, ya que este último no tiene operaciones).

¿Cómo resuelve todos estos problemas el Ulcer Index? Sencillamente midiendo tanto la profundidad como la duración de los drawdowns de una inversión. Matemáticamente se calcula como:

Formula Calculo Ulcer Index

Donde:

  • N es el número total de datos.
  • Ri es el porcentaje de retroceso desde el mayor máximo que se haya producido en la equity hasta el momento. El Máximo Drawdown de la estrategia sería el mayor Ri de la serie.

Si analizamos la fórmula anterior vemos que el Ulcer Index incorpora cada drawdown producido a lo largo del tiempo, logrando de esta forma tener un estadístico que resume toda la información y que se va actualizando a medida que nos llegan nuevos datos.

El valor del Ulcer Index será mayor cuanto mayores sean los drawdowns y el tiempo que tarda una estrategia en recuperarse de ellos; es decir, penaliza a las estrategias que se ponen laterales o, lo que es mismo, que sufren períodos de stagnation. Si queréis cómo calcular el Ulcer Index en Excel, los autores tienen una hoja de cálculo disponible en http://www.tangotools.com/ui/UlcerIndex.xls.

Veamos lo diferente que puede llegar a ser la valoración de una estrategia en función de la métrica que elijamos gracias al siguiente ejemplo tomado de SystemTraderSuccess: en el siguiente gráfico se muestra el rendimiento de una cartera compuesta incialmente por un 60% de SPY y un 40% de AGG para el período comprendido entre 2004 y 2013. A lo largo de ese período se recalculan las ponderaciones de cada ETF en la cartera al principio de cada año. Junto a la verdadera equity de la cartera, se han incluido además la misma curva pero con los rendimientos invertidos, así como cinco curvas obtenidas realizando permutaciones aleatorias de los verdaderos rendimientos (una suerte de Monte Carlo :P). El gráfico de las diferentes equities es el siguiente:

Diferentes curvas de beneficios

Las métricas de riesgo obtenidas para cada curva son las siguientes:

Metricas Curvas Beneficio Rangos

Como podemos ver, solo el Ulcer Index nos permite diferenciar entre las estrategias, siendo el resto de las métricas muy similares entre las diferentes estrategias. Incluso en aquellos casos en los que el máximo drawdown es casi idéntico, el Ulcer Index marca claramente la diferencia.

A la vista de este ejemplo, está claro que usar el Ulcer Index como medida para comparar estrategias (incluso aunque sean de Buy and Hold) es una buena idea.


Ulcer Index no es lo Mismo que Ulcer Performance Index
Como decíamos al comienzo del artículo, casi todo el mundo ha oído hablar del Ulcer Index pero casi nadie conoce el Ulcer Performance Index (incluso a veces por error se confunden).

Para obtener el Ulcer Performance Index, basta con tomar como referencia la fórmula del ratio de Sharpe:

Ratio Sharpe = (Rendimiento total – Tasa del Activo Libre de Riesgo) / Desv. Típica Rendimientos

Y sustituir la desviación típica por el Ulcer Index, obteniendo así el Ulcer Performance Index (UPI):

UPI = (Rendimiento total – Tasa del Activo Libre de Riesgo) / Ulcer Index

Aquí el único problema es determinar el valor para la tasa del activo libre de riesgo, que generalmente suele equipararse con la rentabilidad de las Letras a 3 o 6 meses (ahora mismo en torno al 2.3%).

En todo caso, para no confundirse conviene tener en mente que a mayor Ulcer Index, peor será nuestra estrategia, mientras que las mejores estrategias serán aquellas que tengan un Ulcer Performance Index elevado. De ahí que el Ulcer Performance Index sea una buena función objetivo para optimizar estrategias, por cuanto es fácilmente interpretable y además permite incorporar las ventajas del Ulcer Index como métrica.


¿Dónde Encuentro el UPI?
Por lo que he estado viendo, el UPI como función objetivo no está disponible en casi ninguna plataforma. Así, TradeStation no admite funciones objetivo externas; en NinjaTrader y MultiCharts no viene pero se puede programar; por su parte, me ha sorprendido encontrarla de serie en Neuroshell.

Para Metatrader tenemos el indicador Ulcer Index para Metatrader 5 (haciendo un simple cambio de extensión de ese indicador también podéis usarlo en Metatrader 4, podéis descargarlo desde el Foro). A partir de este indicador con un poquito de programación podemos crear nuestro propio UPI para Metatrader e incorporarlo a los criterios de optimización (sobre esto tengo pendiente haceros un tutorial).

Por último, para AmiBroker las últimas versiones incluyen el UPI de serie (gracias @Rupertacho por el apunte) pero por si tenéis una versión antigua del "Amigo" podéis programaros la función del UPI en base a la siguiente fórmula:

// ----------------------------------- UPI Code ---------------------------------------
// Retracements from the Highest High Current Draw Down.

Cdd = (HHV(C, Period) - C)/HHV(C, Period);

// Max drawdown
MaxDD = HHV(CDD, Period);

// Sum of all retracements squared
R2 = (Sum(Cdd*Cdd, Period))/(Period-1);

// Ulcer Index -Cumulative downside volatility of an equity
UI = sqrt(R2);

// Annual compound percentage rate of return
TR = Close/Ref(Close, -Period); // Total Return for 1 year
ANN = (exp(log(TR))-1); // Annual compounded rate of return

// Ulcer performance index - risk adjusted performance of an investment.
UPI = (ANN - irate(2.4)/100)/UI;


Conclusión
El Ulcer Index, y su derivado Ulcer Performance Index, nos permiten medir mejor el riesgo de una estrategia y comparar diferentes estrategias entre sí de manera fiable. Eso sí, los creadores de estos indicadores señalan que, para que las conclusiones extraídas a partir de estos indicadores sean válidas, conviene utilizar un amplio período histórico que debe incluir tanto mercados alcistas como bajistas. Por supuesto, no creo que haga falta insistir en que si comparamos diferentes estrategias, estas deben haber sido aplicadas al mismo período. De lo contrario, cualquier resultado basado en el UI o el UPI no será realmente válido.


Saludos,
X-Trader