martes, 22 de mayo de 2018

La distribución LOGNORMAL de los precios

Supongamos una acción muy volátil, del mercado americano, cuyo precio es de 20 dólares y cuya desviación estándar anual es de 30 dólares.


En un año si va bien podríamos esperar que tuviera un precio de 50 dólares (20 + 30) con una probabilidad del 68%; que es la probabilidad asociada a una desviación estándar.

Pero la distribución normal (gaussiana) es simétrica, así que según ese modelo con la misma probabilidad si la acción va mal se pondría a un precio de -10 (20 - 30). 




Pero el precio de una acción no puede ser negativo. Es evidente que el modelo normal (gaussiano) no es correcto para los precios de los activos.

viernes, 11 de mayo de 2018

El ratio de Sharpe pero de la curva de capital, no de las operaciones

Amibroker calcula el ratio de Sharpe. Pero de las operaciones, no de la curva de capital. 


Esta métrica es muy utilizada en la industria del trading. Los mejores gestores superan el nivel 1.0 pero no todos los años. En realidad es difícil conseguir rentabilidades por encima de la volatilidad.




Sharpe = rentabilidad_anualizada / volatilidad_anualizada

La fórmula original incluye la tasa libre de riesgo en el numerador, pero eso hoy en día es prácticamente nulo. Dicho de otra forma: sin riesgo, no dan nada por el dinero. A mí me gusta obviar esta parte (tasa libre de riesgo = 0) y así puedo comparar mejor los sistemas independientemente de cómo esté la renta fija ese año.

Para calcular el Sharpe simplificado hay que sacar los retornos diarios y sobre ellos calcular la desviación estándar. Anualizamos multiplicando por 16 ( más o menos la raíz de los días de trading que tiene un año). Calculamos la media de los retornos diarios y anualizamos, multiplicando por 252 días de trading. El cociente es el ratio de Sharpe.

Lo de hacer la raíz cuadrada con la volatilidad pero no con los rendimientos es porque la volatilidad crece como la raíz cuadrada del tiempo mientras que los rendimientos crecen proporcionalmente al tiempo. Por ejemplo, si alguien consigue un 0.1% diario de ganancia media, con una desviación de los retornos del 1% entonces su ratio de sharpe es:

Sh = 0.1*252 / (1*16) = 1.57

He trabajado sobre el código que puse en el post sobre la volatilidad anualizada de la curva de capital y he incluido la media y el cociente de ambos para llegar al ratio de sharpe. 


sábado, 5 de mayo de 2018

5 del 5, se inaugura oficialmente el Blog de Notas Técnicas de Onda4



Este Blog está pensado para que sea un sitio muy técnico donde no habrá sitio para opiniones de mercado, noticias, etc. Solo código y pantallazos de lo que hace ese código. Y hojas Excel con simulaciones de Montecarlo, algoritmos de Gestión de Capital… etc.

En el blog habrá mucho código amibroker, que es la plataforma que más utilizo y con la que me siento más a gusto ya que es muy potente. Cuando salió era la única que permitía simular una cartera de mercados. Con el tiempo ha ido mejorando incluso más y ahora hace maravillas como Walk Forward automático, análisis de Montecarlo en el backtest, y muchas otras cosas que a los raritos de la programación de sistemas nos encantan.

Lo que se hace con el código: resultados, conclusiones, etc seguirá en la parte de los INFORMES de Onda4.

LA IDEA ES QUE EL BLOG SEA EL SITIO DONDE ENCONTRAR EL CÓDIGO NECESARIO PARA CREAR SISTEMAS DE TRADING, INDICADORES, ALGORITMOS O CUALQUIER COSA RELACIONADA CON TRADING CUANTITATIVO.

Oscar G. Cagigas

jueves, 3 de mayo de 2018

Calcular correlaciones para muchos mercados

Cómo calcular correlaciones



A la hora de ver las correlaciones entre los distintos mercados es importante darse cuenta que deben ser calculadas con los retornos diarios y no con el precio de los activos. El cálculo de correlaciones es muy tedioso si son muchos mercados ya que debe hacerse "todos con todos" y por tanto se necesita la potencia de un lenguaje de programación orientado a manejar gran volumen de datos, como es Python y en especial la librería Pandas.

Haremos lo siguiente:

1. Desde amibroker exportamos los datos a una carpeta "Quotes" de nuestro disco duro. Podemos usar el siguiente código:

Estadísticas de la curva de capital

A continuación se muestra el código Python que lee una curva de capital (exportada de Amibroker y almacenada como CSV en la carpeta "Quotes") y genera las estadísticas de media, desviación estándar y ratio Sharpe de la curva de capital.

En la imagen se ve la curva que tiene una volatilidad anualizada del 20.52% y una ganancia media del 19.54%. Eso resulta en un Sharpe de 0.95.

En el código he puesto que pinte el letrero en marzo de 2008 porque la curva de capital empieza en el año 2008. Pero eso refleja mi poca experiencia en Python. Quizás alguien quiera corregirlo y decirme como ajustar el letrero de forma relativa a la esquina superior izquierda :)




Volatilidad anualizada de la curva de capital

El siguiente código Amibroker añade una métrica nueva con la volatilidad anualizada de la curva de capital. Muy útil para el tema de riesgos.

Esta es una métrica que Amibroker no incluye y que es un estándar en los fondos y en el ambiente de brokers, etc para saber si una cartera es tranquila o arriesgada. Por encima del 20% de volatilidad anual se considera que la cartera es arriesgada.

Aquí se ha utilizado el modelo LogNormal de los precios. Es la línea que empieza por "volat" en la que se hace el logaritmo neperiano del cierre de hoy dividido por el de ayer.


ENTRADAS POPULARES