El artículo de hoy tiene dos objetivos. Por un lado, analizar un sistema de trading con ETFs apalancados y, por el otro, comenzar a meter mi nariz en Quantopian para ver qué tal funciona su herramienta de backtesting.
Sistema de distribución dinámica entre activos
Este es un sistema que combina renta fija y renta variable a partir de una distribución dinámica con ETFs apalancadComo habíamos analizado en este artículo, combinar posiciones en un ETF de renta fija con posiciones un ETF de renta variable es una estrategia que a largo plazo tiene sentido. ¿Pero qué pasa si a esta combinación le añadimos asignaciones variables y leverage?
Pues esta es la idea del sistema «Hell on Fire»
Vamos a ello…
Hell on fire, o «infierno en llamas» para los que prefieran la traducción en español, es el nombre de un sistema de trading que opera con ETFs apalancados.
Por lo que he podido investigar parece ser que la idea original viene de Logical Invest (ver aquí), luego hay una versión programada en R aquí, y la que intento probar hoy está en Quantopian en este hilo del foro.
Sistema de trading con ETFs apalancados: Reglas del sistema
El sistema opera de forma mensual y utiliza únicamente 2 ETFs:
- SPXL (Direxion Daily S&P 500 index Bull 3X Shares ETF): Busca replicar el rendimiento diario del índice SP500 multiplicado x3.
- TMF (Direxion Daily 30-Year Treasury Bull 3x Shares ETF): Busca replicar x3 el rendimiento diario del ICE U.S. Treasury 20+ Year Bond Index.
Nota: SPXL comienza en noviembre 2008 y TMF en abril 2009 por lo que no tendremos los resultados durante la última gran crisis.
En los links anteriores puedes ver versiones de backtests más extendidos utilizando datos sintéticos.
Asignación dinámica entre activos
¿Y qué quiere decir concretamente esto de distribución dinámica o adaptativa?
Por ejemplo en este caso del capital total se invierte un % en cada ETF. Cada mes se rebalancean y se ajustan estos porcentajes. La atribución pueden ir entre 0% al 100% del capital atribuidos a SPXL y TMF.
¿Cómo se calcula qué porcentaje del capital atribuir cada mes?
Para saberlo se analiza cuál es la combinación de porcentajes que ha obtenido el máximo ratio de Sharpe para un periodo determinado.
Aclaración: el sistema opera de forma mensual pero se basa en las cotizaciones diarias para asignar el peso a cada ETF.
El ratio de Sharpe que se utiliza está modificado para tener en cuenta la volatilidad. Su cálculo nos quedaría así: Sharpe = rendimiento / desviación estándar ^ f.
Siendo f el factor de volatilidad.Podemos intuir que si f es igual a 1 la volatilidad no tendría ningún peso (estaríamos utilizando el ratio de Sharpe simplificado y nada más), y a medida que f aumenta, mayor es el peso que atribuimos a la volatilidad.
Con este tipo de distribución no trabajamos con porcentajes fijos.
Cada mes el sistema rebalancea los porcentajes asignados a cada activo de acuerdo a cuál haya sido la mejor combinación entre rentabilidad y riesgo (medida por el ratio de Sharpe).
Con este rebalanceo mensual de posiciones se busca adaptarse mejor a las condiciones del mercado en cada momento .
Bien. Hasta aquí las reglas generales. Ahora entremos un poco más en los detalles.
En este sistema hay dos parámetros que pueden optimizarse:
- El periodo del cálculo para el ratio de Sharpe. ¿Sobre cuánto tiempo lo calculamos? ¿El ratio de Sharpe de un año? ¿3 meses? ¿80 días?
- La importancia que le damos a la volatilidad (la f de la formula anterior para modificar el ratio de Sharpe).
Además de estos parámetros, también podemos hacer pruebas rebalanceando la cartera a fin de mes vs a principios de mes, ajustando las comisiones y deslizamientos, etc
Backtest en Quantopian
Este es mi primer post probando Quantopian y la idea es compartir estas pruebas. De momento voy tanteando cómo funciona, hay algunas cosas que me parecen interesantes y otras que aún no tengo muy claras. En fin, que me queda mucho por mejorar y aprender.
Aclarado este punto, vamos con el backtest:
Parámetros del programa
- En el sistema que vamos a testear es una versión modificada del algoritmo compartido en este post.
- En mi backtest f ( el peso de la volatilidad) es igual a 2.5 y el lookback para calcular el ratio de Sharpe es de 84 cierres diarios.
- Se rebalancean las operaciones el último día operativo de cada mes, 15 minutos antes del cierre.
- He modificado el código para evitar que me queden órdenes sin ejecutar quitando el slippage que viene por defecto.
- También he añadido comisiones de 0.05 por título y min de 1.25USD por trade.
- El periodo del backtest es enero 2010 a fin agosto 2017.
(nota: Ya sé que la forma correcta de hacer un backtest es separar los periodos dejando un tramo fuera de muestra. Pero en este caso he tomado todos los datos).
- Para los interesados, he colgado el código aquí.
Resultados del backtest
Los resultados del backtest no son iguales a los de la fuente original (ver resultados fuente LI arriba en links).
Aunque la rentabilidad total es similar, mis resultados son más extremos (tengo meses con pérdidas más importantes y meses con mayores ganancias).
¿Por qué?
Bueno, por un lado no tengo los detalles de los parámetros exactos que utilizan en cada momento. Según la documentación, puedo saber que los van actualizando cada x tiempo con el fin adaptarse la volatilidad y las condiciones del mercado.
Por este motivo, pienso que la importancia de la volatilidad se debe de ir adaptando con un método de walk-forwad. El tema es que aún no he descubierto como aplicar el método de walk-forward en Quantopian
En fin, vamos a los resultados del backtest.
Primero una vista global: la curva de capital del sistema comparada con el SPY y también las distintas distribuciones entre los dos ETFs.
En los resultados del backtest podemos ver que la rentabilidad total es de 1083,3% para un drawdown máximo de 42,74%.
Es lo que tiene el apalancamiento, en sistemas de trading con ETFs apalancados podemos tener rentabilidades elevadas, pero MDD elevados también.
Rentabilidad
Miremos más de cerca la rentabilidad.
Analizamos los resultados de cada mes y especialmente su distribución.
Drawdown
Primero podemos ver la curva de capital con los periodos donde sufrimos drawdown.
También podemos ver el gráfico con el drawdown expresado en porcentage y su evolución.
Nota respecto al cálculo del Drawdown: En el cálculo del MDD, Quantopian toma en cuenta la fluctuación del capital durante las operaciones abiertas. Es lo que llamaríamos MAE o max adverse excursion.
En este caso lo calcula a diario, aunque estemos trabajando con una operativa mensual.
¿Qué te parece este sistema?
Personalmente hay muchos puntos que me interesan y otros que me gustaría poder pulir un poco. Pienso en la similitud con la cocina. Tenemos la receta básica, pero en este caso el secreto del cocinero parece estar en la salsa y esto es lo que hay que trabajar.¿Tienes ideas para mejorar esta receta?
Hola Duc2:
Puse un comentario y veo que no ha salido…
Hola Jesús,
Lo siento, yo tampoco lo encuentro…
Hola Duk2:
Una parte de la estrategia se basa en que la volatilidad del mes m predice la volatilidad del mes m+1.
Prueba a comparar los resultados calculando el reparto medio entre SPXL y TMF en B&H y comparalo, a modo de benchmarck, con esta estrategia. Quizás no merezca la pena tanta operativa.
El parámetro f ( el peso de la volatilidad) igual a 2.5 y el lookback para calcular el ratio de Sharpe de 84 cierres diarios, parece sobreoptimización. Prueba valores próximos y analiza los cambios en CARG y caída máxima.
También estoy en SPXL y TMF en una estrategia similar y me pregunto si los backtest son trasladable al futuro. Una parte de la estrategia se basa en la correlación negativa entre ambos ETF. Las tasas de interés llevan cayendo 30 años y están prácticamente a cero. Pienso que si empiezan a subir, los bonos caerán, se harán más atractivos para una parte de inversores que están en renta variable con lo que puede pasar que al final la correlación negativa entre SPXL y TMF se convierta en positiva.
Hola Jesús,
he estado pensando sobre utilizar el reparto medio entre SPXL y TMF en B&H como tú comentabas. El tema es que pienso que usar el valor medio ( dependiendo de la ventana que utilice puedo estar en un 70-30 o en un 60-40 típico) no permitiría adaptarse a las condiciones del mercado. Y creo que esa atribución dinámica de activos es uno de los puntos fuertes de este sistema. Rotar ( o cambiar los % de atribución) me parece mejor que simplemente diversificar en activos con correlaciones negativas.
Respecto a la evolución de la correlación que comentas: Estoy de acuerdo. Yo he analizado antes la correlacion utilizando los ETFs sin apalacar y pude ver que esta correlación no es estable y se dan meses en los que ambos ETFs evolucionan en la misma dirección ( post:https://estrategiastrading.com/equilibrio-renta-fija-con-renta-variable/). Creo que ya habíamos comentado este post ). Una posible solución ( a modo de «botón del pánico» sería incorprar cash en la relación y cuando ambos ETFs están positivamente correlacionados y bajistas pasar a cash).
Hola Duk2:
Al final, la estrategia se basa en que la volatidad de un mes predice la volatilidad de mes siguiente, lo que habría que comprobar si realmente ocurre.