Ir al contenido principal

Tu primera estrategia cuantitativa

Desde que los holandeses implementaron el primer mercado de valores en 1611, los analistas han tratado de crear estrategias que sistematicen la agregación de información. El fin póstumo es adelantarse al consenso generalizado, el cual siempre está mal debido a que llegan tarde o derechamente está mal. Su mantra siempre ha sido y será comprar miedo para luego vender codicia, ya que de esa manera se logra materializar las ganancias de capital (en largo o en corto).

Dicho lo anterior, los marcos de referencia han evolucionado en conjunto a la tecnología disponible en cada estadio cultural. Desde los clásico “chartistas” que descubren las zonas de liquidez en base a fractales de otros mercados e instrumentos y los replican en el instrumento analizado, hasta los tiempos mas recientes donde se enfoca en parametrizar el agregamiento de información exógena en los precios. El último enfoque se conoce como “Quant” o Cuantitativo. El método se basa en utilizar las herramientas de las ciencias exactas, y desde ese punto extraer los factores que dirigen los retornos en los mercados.

¿Cómo se aborda tal enfoque? La respuesta radica en el siempre asertivo Julio Cesar, el cual nos dejó el refrán "divide y vencerás".

Fuente: Steemit

En este articulo desarrollaré mi método para desplegar estrategias cuantitativas, más un ejemplo de una. Ocuparé Python para su ejecución y análisis. Los datos vendrán de la API EOD Historical Data. Podrás encontrar el cliente que desarrollé para la API en su repositorio en GitHub. Terminaré el artículo con una conclusión del trabajo realizado y las características deseadas que deberás explorar al momento de implementar o crear alguna estrategia cuantitativa de manera profesional (en tu trabajo diario o con tu patrimonio).

Estrategia

Los promedios móviles tienen dos importantes características: Primero, suavizan el ruido que se encuentran en los precios; Segundo, van retrasados con respecto a la acción del precio mas reciente. Entre mas larga la ventana de tiempo que se analice, mayor será el retraso asociado al promedio movil. En un intento de reducir esté efecto, se aplican los promedios exponenciales. Sin embargo, dado que el factor de suavizamiento es fijo, los promedios móviles exponenciales no se pueden adaptar a la volatilidad del mercado. Durante periodos de ausencia de tendencia secular o mercados lateralizados, ni los promedios móviles simples ni exponenciales eliminan el potencial de una larga lista de falsos positivos o aleteos (“whipsaws”), los cuales erosionan el capital.

Dicho lo anterior y en un intento de adaptación a la volatilidad del mercado se presenta el promedio movil adaptativo. La mayoría de las técnicas de promedios adaptativos utilizan alguna medida de volatilidad, la cual tiene el fin de producir un promedio exponencial modificado. El promedio adaptativo de Perry Kaufman’s (KAMA, por sus siglas en ingles) usa la suma absoluta de los cambios en los precios como una medida de volatilidad. John Elters (dimensión fractal y entropía) y Tushar Chande (desviación estándar) han desarrollado otros filtros ampliamente ocupados por los traders o analistas. El factor común denominador de estas técnicas es la alteración del largo efectivo de la ventana de datos para un promedio exponencial, el cual responde a cambios en los precios.

Enfocaré el problema desde una perspectiva diferente. Emplearé el concepto estadístico de la regresión lineal para desarrollar un promedio movil adaptativo (RAMA, Regression Adaptative Moving Averge). 

Para el desarrollo de la estrategia, utilizaré el marco de referencia propuesto por Quantconnect. En conjunto a los conceptos de cada etapa, añadiré el código en Python y ejemplificación en base a la estrategia propuesta.

  • Universo:  En este primer paso se seleccionan los instrumentos o activos que se comercializarán. El filtro puede ser dinámico (basado en fundamentos económicos o financieros) o una canasta fija. Dado que es el primer articulo con respecto a una estrategia cuantitativa, me avocaré a la segunda opción. En artículos posteriores escribiré concerniente a este punto, pero por el momento, es mejor la simplicidad. Expresado lo anterior, ejemplificare mi estrategia con el ETF (Exchange traded fund) del S&P 500. Este instrumento sigue el indice en el cual cotizan las 500 empresas con mayor capitalización bursátil de Estados Unidos.
  • Alpha: Este paso se ocupa principalmente de predecir las tendencias del mercado y señalar los mejores momentos para invertir basado en las reglas del algoritmo. Las predicciones o señales tienen las siguientes características: tipo (hallazgo de precio o volatilidad), dirección (alza, baja o mantenerse), periodo (tiempo de duración), magnitud (nivel de ganancia esperado), confianza y peso (si hay múltiples señales, cuanto vale en porcentaje). Las señales deben generarse en un conjunto definido de activos proporcionados por el universo y solo deben emitirse cuando cambian (de compra a venta y viceversa). En la siguiente sección comentaré en detalle el Alpha de RAMA.
  • Portafolio: Aquí se calcula la distribución del capital con respecto al universo elegido, es decir, se computa el numero de instrumentos a comprar. Existen varias metodologías para calcular la distribución óptima, tales como Markowitz, Black Litterman, Hierarchical Risk Parity, VaR, etc. Por el momento no ahondaré en estas metodologías ya que asumen una canasta amplia de instrumentos a invertir. En artículos futuros ahondare en especifico en cada una de ellas.
  • Ejecución: Un aspecto a veces olvidado por los traders es la forma en que entran a las posiciones. Normalmente asumen ejecución inmediata, lo cual puede ser un poco irrealista. En la practica, los grandes operadores de algoritmos de alta frecuencia utilizan órdenes limite, VWAP o emiten órdenes basados en la desviación estándar de los precios. En este articulo prefiero la simplicidad, así que asumiré ejecución instantánea.
  • Administración del riesgo: En simple, este último paso considera cuanto estas dispuesto a perder por posición antes de cerrarla, y de esa manera cortar las pérdidas de manera temprana. En rigor, este paso es una prolongación de la ejecución, pero se desarrolla de manera independiente, debido a que existe todo un abanico de opciones. Entre las más comunes se encuentran: Trailing Stop, Option Hedging, Exposición máximo a algún sector, Detección de crisis flash, máxima perdida, VaR, etc. Por el momento, el algoritmo asumirá que las reglas de venta descritas en Alpha corresponderán a la administración del riesgo. En artículos futuros expandiré en detalle este tema.

Ejecución estrategia

He expresado que mi universo será el ETF del S&P500 (AMEX:SPY), no habrá distribución óptima del capital (ya que es un solo instrumento), la ejecución se asumirá instantánea y la administración del riesgo estará basada en las reglas de salida del Alpha ¿Pero cual es el Alpha de RAMA?

RAMA es un estimador de los precios de cierre basado en una regresión ajustada a la volatilidad. Cuando la volatilidad es alta, RAMA sigue de cerca al precio actual y se mantiene por sobre algún promedio movil de referencia (el tamaño de la ventana de ambos debe ser igual para ser comparables, e.g. promedio movil de 25 periodos en ambos). Cuando la volatilidad es baja, RAMA se mueve por debajo del promedio movil y se mueve pro sobre el precio actual. Esta adaptabilidad reduce tu riesgo durante periodos de alta volatilidad, y al mismo tiempo, reduce la probabilidad de tocar tu stop-loss durante periodos de alza en los precios y baja volatilidad.

Formalmente las reglas son las siguientes: Cuando los precios se mueven por encima de RAMA y RAMA está por debajo el promedio movil simple, se indica una señal de compra. Cuando los precios estan por debajo de RAMA y RAMA está por sobre el promedio movil simple, se indica una señal de venta. El pseudo algoritmo para calcular RAMA es el siguiente:

  1. Importar los datos y seleccionar una ventana de tiempo.
  2. Calcular el promedio movil simple para compararlo con las reglas (utilizando la ventana de tiempo anterior).
  3. Calcular el error estándar de una regresión lineal de los precios de cierre del instrumento (el rango de datos corresponde a la ventana de tiempo elegida).
  4. Calcular el percentil del error estándar actual versus el conjunto de la ventana de tiempo.
  5. Pronosticar o predecir el precio de cierre utilizando el ajuste de volatilidad.
  6. Comparar si el precio se ajusta a las reglas de compra o venta.
  7. Repetir el proceso para cada dato nuevo.

Implementación y Backtesting

Para la implementación del código utilizaré el enfoque de programación funcional, el cual no es mas que dividir el proceso en pequeñas partes para luego unirlo en una función que engloba todo el proceso. Dicho eso, el código en Python para el pseudo código anterior es el siguiente:

  • Importar los datos y seleccionar una ventana de tiempo (25 días).
  • Calcular el promedio movil simple para compararlo con las reglas (utilizando la ventana de tiempo anterior).
  • Calcular el error estándar de una regresión lineal de los precios de cierre del instrumento (el rango de datos corresponde a la ventana de tiempo elegida).
  • Calcular el percentil del error estándar actual versus el conjunto de la ventana de tiempo.
se adjuntara a la función que une todo.
  • Pronosticar o predecir el precio de cierre utilizando el ajuste de volatilidad.
  • Comparar si el precio se ajusta a las reglas de compra o venta.
  • Unir todas las funciones.

Con nuestra implementación completa veamos los resultados para el SPY. Acortando los datos (por temas visuales) desde mayo de 2019 hasta la fecha de publicación de este articulo, la evolución de precios del SPY es la siguiente:


Como se puede apreciar, la masiva corrección durante marzo de 2020 nos puede dar potenciales entradas para rentabilizar. Gráficamente, la estrategia se visualiza de la siguiente manera:


Naturalmente al ojo humano no es evidente donde se encuentran las entradas y las salidas, es por eso que marque con color verde las entradas y con rojo los eventos de salida. Su código y visualización es la siguiente:


Ahora que es más claro donde se encuentran las entradas y las salidas, se puede apreciar que la estrategia ha encontrado de manera bastante eficiente y eficaz puntos de compra y venta sistemáticos. Expandiendo este comportamiento a la incepción de SPY, su rentabilidad promedio por cada año es la siguiente:


Como se puede apreciar, la estrategia no es capaz de explotar el SPY de manera exorbitante ¿Se mantendrá el mismo comportamiento para otros tipos de ETFs? Veamos:


Ahora bien ¿es 25 días la ventana óptima para el proceso? ¿Se podrá ocupar para otro tipo de instrumentos, tales como divisas y precios de bonos? Para responder a esas preguntas te recomiendo implementar una simulación de Montecarlo usando como función de generadora de retornos un kernel gaussiano basado en los parámetros de los retornos históricos del instrumentos. Luego promedias los resultados y obtienes tu respuesta. Se que suena complicado, pero en realidad, la pronunciación es mas difícil que su implementación. En mis próximos artículos abordare este tema.

Conclusión

El promedio movil adaptativo basado en regresiones lineales (RAMA) es un enfoque novedoso al problema de incorporar la volatilidad del mercado en los promedios móviles. Se ocupa el concepto de regresión lineal del precio versus el tiempo y es relativamente fácil de implementar en Python. Usando el error estándar de la línea de regresión como una medición de la volatilidad, se produce un promedio movil que filtra señales de potenciales bajas en el mercado. Al mismo tiempo permite la detección temprana de alzas en los precios cuando la volatilidad es baja, sin la interferencia de salidas subóptimas.

Comentarios

Entradas más populares de este blog

BCCh en pausa: ¿Esperar una disminución de las tasas en la economía chilena?

La inversión de la curva de tasas, que implica la desincentivación del flujo de crédito por parte de los Bancos Centrales, conduce a una estrangulación económica y desaceleraciones pronunciadas. En el caso del mercado de bonos chileno, esta situación es indicativa de un debilitamiento económico futuro, atribuible a diversos factores como la caída en los márgenes operacionales, el decrecimiento de las ganancias y el incremento en las tasas de interés. El spread 2y10y en el mercado de bonos chileno ha alcanzado mínimos históricos, considerablemente más pronunciados que previamente a la crisis subprime. Además, la curva de bonos tipo BCP ha estado completamente invertida durante más de un trimestre. Estos hallazgos sugieren que los inversionistas perciben una compresión significativa en los márgenes operacionales y un crecimiento de las ganancias menor al aumento en las tasas de interés de los préstamos adquiridos. También revelan la desconfianza en la narrativa propuesta por el Banco Cen

Outlook sector Retail Chileno

A continuación te comentaré mi tesis con respecto al sector del retail chileno . Para aquello tomo elementos de la macroeconomía, fundamentos de la industria y un análisis técnico (usando ondas de Elliott) de los retailers con mayor capitalización bursátil. Esto te permitirá tener una visión externa y diferente de lo que está ocurriendo en el sector, lo que en definitiva te ayudará a generar perspectiva y contrastarlo contra tu propia tesis de inversión .