#1
Algoritmo funcional basado en datos COT
Hola, hoy quiero presentaros mi algoritmo basado en datos COT.
¿Que son los datos COT? Actualmente todos los actores del mercado dejan reflejado en el mercado sus posiciones abiertas, y todos los martes deben rendir cuentas sobre dichas posiciones. Estos informes se pueden descargar de https://www.cftc.gov/MarketReports/CommitmentsofTraders/index.htm y se publican todos los viernes a última hora del día.
¿Por qué programar un algoritmo basado en datos de posiciones de otros actores?
En el pasado he desarrollado diversos algoritmos basados patrones de precio, patrones de volumen, análisis fundamental, etc. y al final llegas a la conclusión que estudiando el comportamiento del pasado puedes programar un conjunto de reglas que descifrando los datos del pasado puedas obtener rendimientos. Un patrón es un comportamiento que se repite cada cierto tiempo y permite estudiar la probabilidad de éxito en el pasado. ¿pero qué pasa con el futuro? ¿se comporta de la misma manera?
Depende del fundamento de tu algoritmo el resultado será robusto o no en el futuro. Por ejemplo: un algoritmo basado en el movimiento del precio pretende estudiar patrones o figuras de sus movimientos en el pasado. Se pueden buscar comportamientos de velas japonesas, estudiar la rapidez de estos movimientos, el número de velas consecutivas creciendo o decreciendo, figuras charsistas, etc. pero al final y al cabo son movimientos del precio, y el precio es lo último en moverse. Antes de que el precio se mueva pasan cosas muy interesantes, como por ejemplo se podría estudiar la oferta y demanda del mercado, la volatilidad implícita de las opciones del subyacente, etc.
El fundamento de un algoritmo que estudia los datos COT se basa en la cantidad de posiciones que los distintos actores del mercado tienen actualmente, creo que hay pocas cosas que influyan más que esto. Si un institucional no para de comprar contratos ampliando su Open Interest podría estar interesado en comprar más contratos y eso hace que el precio suba, pero que suba no implica que vaya a subir más, sólo dependerá de si compran más o no, y sobretodo de quién lo compra.
Por ejemplo, a veces el precio sube y las grandes cuentas están saliendo del mercado, claro que puede seguir subiendo pero lo lógico sería salir del activo. Digamos que el precio siempre puede hacer lo que quiera, y a veces, hace cosas ilógicas, pero al fin y al cabo el precio manda y debemos tener en cuenta que a veces podemos tener desviaciones en las previsiones, lo importante es saber interpretar lo que está ocurriendo.
Una vez explicado el motivo de por qué elegir este tipo de análisis hay que dar un paso más. Ahora nos debemos centrar en el comportamiento del dinero y no del precio, el precio sólo nos dirá lo que hemos ganado o perdido, pero nada más. ¿Qué actores influyen en un activo? Cuando se realiza una operación es porque alguien está comprando y alguien está vendiendo, pero cómo saber quién compra o quién vende. En los ficheros COT descargados nos podemos encontrar con:
Los Dealer: son conocidos como proporcionadores de liquidez. Normalmente ellos toman las posiciones contrarias al resto con el único objetivo de proporcionar liquidez, ellos juegan con instrumentos estructurados, opciones, futuros, etc. Éstos no suelen mover el mercado.
Comerciales: el objetivo mayoritario de este grupo es cubrirse ante movimientos adversos del precio con respecto al subyacente. Por ejemplo, un productor de oro se puede cubrir con futuros con la única intención de que si el precio se mueve en contra poder vender el oro al precio actual en el futuro. No cuentan con ganar en los mercados financieros, básicamente lo usan como seguro.
Institucionales: son los grandes especuladores, y los que tienen la capacidad para mover el mercado.
Otros especuladores obligados a declarar: son especuladores, normalmente con menos capital que los institucionales, y van siguiendo el precio del mercado.
No obligados a declarar: son el resto de los mortales, con poco capital. Especuladores sin poder alguno en los mercados, y muchas veces desinformados.
Basándose en estas premisas la gran pregunta es si podremos encontrar un algoritmo capaz de estudiar el comportamiento de estos actores para predecir el precio.
Para las pruebas debemos tener claro que un algoritmo basado en el dinero debería de funcionar en la mayoría de los activos, ya que no se está estudiando un activo en concreto, y no se buscan patrones del precio ni de volumen en el pasado. Se pretende estudiar el comportamiento de estos actores y cómo ha influido en el precio futuro, una vez ellos han tomado sus posiciones.
Lo primero es descargar los datos históricos de los datos COT, que se encuentran en el enlace indicado arriba. Lo segundo es descargar los precios históricos de varios activos. Lo tercero es intentar buscar patrones de comportamiento de las posiciones con respecto al precio, para esto ayudaría tener una representación visual de los precios y datos COT, porque de otra manera podría ser muy difícil.
Lo deseado sería obtener una herramienta para evaluar dichos comportamientos simulando aperturas y cierres de operación. Además esta ayudaría una herramienta para la búsqueda de patrones del dinero.
Una vez encontramos un algoritmo que parezca funcionar, habría que evaluar sus puntos fuertes y débiles. Para evaluar si un algoritmo es de calidad hay que tener varios conceptos claros:
- Beneficio Neto: beneficio neto en la moneda base.
- DrawDown: máxima pérdida consecutiva.
- Recovery Factor: beneficio entre máxima pérdida consecutiva.
- Porcentaje de operaciones ganadoras: importante tener un algoritmo con más operaciones ganadoras que perdedoras. Hay algoritmos que tienen más operaciones perdedoras, pero en las que se gana lo hace con mucha más ganancia, pero personalmente a mi no me gusta pues, hay que tener en cuenta que para la obtención de un algoritmo se suele estudiar, optimizar, etc. y si aun así no se consigue un buen porcentaje puede que en la realidad nos encontremos con una racha de operaciones perdedoras que se inaguantable.
- Número de operaciones: está claro que cuantas más operaciones más preciso será el estudio, pero hay que tener en cuenta que en este caso sale un dato cada semana, si tenemos en cuenta que hay 52 semanas al año, haciendo una simulación de 10 años tendremos únicamente sobre los 500 datos a estudiar sobre un mismo activo. Por lo que tendrá menos ocasiones de realizar operaciones si lo comparamos con un algoritmo que evalúe 10 horas a velas de minuto: 60 minutos por 10H = 600 velas de minuto
- Ganancia potencial: máxima ganancia posible desde que se abrió la operación hasta que se cerró. No es la ganancia realizada, es la mejor ganancia en el caso que se hubiera cerrado en el momento más óptimo.
- Exposición al mercado: tiempo que tienes posiciones en el mercado.
Y más indicadores...
Voy a dejar un ejemplo de simulación de algoritmos sobre el Crudo.
El periodo simulado son 10 años y se combinan 5 algoritmos distintos sobre el mismo activo al mismo tiempo. Cada algoritmo podrá abrir como máximo 1 futuro, es decir, 1000 barriles de crudo. Es difícil que varios algoritmos abran al mismo tiempo, pero se puede dar el caso por lo que hay que contar con el capital suficiente.
En la gráfica se puede apreciar que el beneficio es de 282.776 $ en los 10 años. Quitando la mejor operación de cada algoritmo el beneficio se quedaría en 249.840 $.
La máxima pérdida es de 17.370 $
160 operaciones de las cuales 124 son ganadoras y 36 son perdedoras.
Duración media de cada operación: 1.34 semanas (no llega a semana y media)
¿Qué se necesita para llevar a cabo esta inversión? A pesar de tener una máxima pérdida de 17.370$, yo no empezaría con un capital inferior a 25.000$. Además contaría con el beneficio estimado, es decir, sobre los 250.000$ a los 10 años. Por lo que de media salen un 100% de beneficio estimado.
Parece una brutalidad pensar que un algoritmo puede dar estos rendimientos, pero debemos tener en cuenta que podemos tener un periodo de 1 año prácticamente sin ganar y no todo el mundo está dispuesto a estar pendiente todas las semanas de los datos para no tener un rendimiento en el corto plazo.
¿Seríais capaces de aguantar la ejecución de un algoritmo de estas características?
Saludos
¿Que son los datos COT? Actualmente todos los actores del mercado dejan reflejado en el mercado sus posiciones abiertas, y todos los martes deben rendir cuentas sobre dichas posiciones. Estos informes se pueden descargar de https://www.cftc.gov/MarketReports/CommitmentsofTraders/index.htm y se publican todos los viernes a última hora del día.
¿Por qué programar un algoritmo basado en datos de posiciones de otros actores?
En el pasado he desarrollado diversos algoritmos basados patrones de precio, patrones de volumen, análisis fundamental, etc. y al final llegas a la conclusión que estudiando el comportamiento del pasado puedes programar un conjunto de reglas que descifrando los datos del pasado puedas obtener rendimientos. Un patrón es un comportamiento que se repite cada cierto tiempo y permite estudiar la probabilidad de éxito en el pasado. ¿pero qué pasa con el futuro? ¿se comporta de la misma manera?
Depende del fundamento de tu algoritmo el resultado será robusto o no en el futuro. Por ejemplo: un algoritmo basado en el movimiento del precio pretende estudiar patrones o figuras de sus movimientos en el pasado. Se pueden buscar comportamientos de velas japonesas, estudiar la rapidez de estos movimientos, el número de velas consecutivas creciendo o decreciendo, figuras charsistas, etc. pero al final y al cabo son movimientos del precio, y el precio es lo último en moverse. Antes de que el precio se mueva pasan cosas muy interesantes, como por ejemplo se podría estudiar la oferta y demanda del mercado, la volatilidad implícita de las opciones del subyacente, etc.
El fundamento de un algoritmo que estudia los datos COT se basa en la cantidad de posiciones que los distintos actores del mercado tienen actualmente, creo que hay pocas cosas que influyan más que esto. Si un institucional no para de comprar contratos ampliando su Open Interest podría estar interesado en comprar más contratos y eso hace que el precio suba, pero que suba no implica que vaya a subir más, sólo dependerá de si compran más o no, y sobretodo de quién lo compra.
Por ejemplo, a veces el precio sube y las grandes cuentas están saliendo del mercado, claro que puede seguir subiendo pero lo lógico sería salir del activo. Digamos que el precio siempre puede hacer lo que quiera, y a veces, hace cosas ilógicas, pero al fin y al cabo el precio manda y debemos tener en cuenta que a veces podemos tener desviaciones en las previsiones, lo importante es saber interpretar lo que está ocurriendo.
Una vez explicado el motivo de por qué elegir este tipo de análisis hay que dar un paso más. Ahora nos debemos centrar en el comportamiento del dinero y no del precio, el precio sólo nos dirá lo que hemos ganado o perdido, pero nada más. ¿Qué actores influyen en un activo? Cuando se realiza una operación es porque alguien está comprando y alguien está vendiendo, pero cómo saber quién compra o quién vende. En los ficheros COT descargados nos podemos encontrar con:
Los Dealer: son conocidos como proporcionadores de liquidez. Normalmente ellos toman las posiciones contrarias al resto con el único objetivo de proporcionar liquidez, ellos juegan con instrumentos estructurados, opciones, futuros, etc. Éstos no suelen mover el mercado.
Comerciales: el objetivo mayoritario de este grupo es cubrirse ante movimientos adversos del precio con respecto al subyacente. Por ejemplo, un productor de oro se puede cubrir con futuros con la única intención de que si el precio se mueve en contra poder vender el oro al precio actual en el futuro. No cuentan con ganar en los mercados financieros, básicamente lo usan como seguro.
Institucionales: son los grandes especuladores, y los que tienen la capacidad para mover el mercado.
Otros especuladores obligados a declarar: son especuladores, normalmente con menos capital que los institucionales, y van siguiendo el precio del mercado.
No obligados a declarar: son el resto de los mortales, con poco capital. Especuladores sin poder alguno en los mercados, y muchas veces desinformados.
Basándose en estas premisas la gran pregunta es si podremos encontrar un algoritmo capaz de estudiar el comportamiento de estos actores para predecir el precio.
Para las pruebas debemos tener claro que un algoritmo basado en el dinero debería de funcionar en la mayoría de los activos, ya que no se está estudiando un activo en concreto, y no se buscan patrones del precio ni de volumen en el pasado. Se pretende estudiar el comportamiento de estos actores y cómo ha influido en el precio futuro, una vez ellos han tomado sus posiciones.
Lo primero es descargar los datos históricos de los datos COT, que se encuentran en el enlace indicado arriba. Lo segundo es descargar los precios históricos de varios activos. Lo tercero es intentar buscar patrones de comportamiento de las posiciones con respecto al precio, para esto ayudaría tener una representación visual de los precios y datos COT, porque de otra manera podría ser muy difícil.
Lo deseado sería obtener una herramienta para evaluar dichos comportamientos simulando aperturas y cierres de operación. Además esta ayudaría una herramienta para la búsqueda de patrones del dinero.
Una vez encontramos un algoritmo que parezca funcionar, habría que evaluar sus puntos fuertes y débiles. Para evaluar si un algoritmo es de calidad hay que tener varios conceptos claros:
- Beneficio Neto: beneficio neto en la moneda base.
- DrawDown: máxima pérdida consecutiva.
- Recovery Factor: beneficio entre máxima pérdida consecutiva.
- Porcentaje de operaciones ganadoras: importante tener un algoritmo con más operaciones ganadoras que perdedoras. Hay algoritmos que tienen más operaciones perdedoras, pero en las que se gana lo hace con mucha más ganancia, pero personalmente a mi no me gusta pues, hay que tener en cuenta que para la obtención de un algoritmo se suele estudiar, optimizar, etc. y si aun así no se consigue un buen porcentaje puede que en la realidad nos encontremos con una racha de operaciones perdedoras que se inaguantable.
- Número de operaciones: está claro que cuantas más operaciones más preciso será el estudio, pero hay que tener en cuenta que en este caso sale un dato cada semana, si tenemos en cuenta que hay 52 semanas al año, haciendo una simulación de 10 años tendremos únicamente sobre los 500 datos a estudiar sobre un mismo activo. Por lo que tendrá menos ocasiones de realizar operaciones si lo comparamos con un algoritmo que evalúe 10 horas a velas de minuto: 60 minutos por 10H = 600 velas de minuto
- Ganancia potencial: máxima ganancia posible desde que se abrió la operación hasta que se cerró. No es la ganancia realizada, es la mejor ganancia en el caso que se hubiera cerrado en el momento más óptimo.
- Exposición al mercado: tiempo que tienes posiciones en el mercado.
Y más indicadores...
Voy a dejar un ejemplo de simulación de algoritmos sobre el Crudo.
El periodo simulado son 10 años y se combinan 5 algoritmos distintos sobre el mismo activo al mismo tiempo. Cada algoritmo podrá abrir como máximo 1 futuro, es decir, 1000 barriles de crudo. Es difícil que varios algoritmos abran al mismo tiempo, pero se puede dar el caso por lo que hay que contar con el capital suficiente.
En la gráfica se puede apreciar que el beneficio es de 282.776 $ en los 10 años. Quitando la mejor operación de cada algoritmo el beneficio se quedaría en 249.840 $.
La máxima pérdida es de 17.370 $
160 operaciones de las cuales 124 son ganadoras y 36 son perdedoras.
Duración media de cada operación: 1.34 semanas (no llega a semana y media)
¿Qué se necesita para llevar a cabo esta inversión? A pesar de tener una máxima pérdida de 17.370$, yo no empezaría con un capital inferior a 25.000$. Además contaría con el beneficio estimado, es decir, sobre los 250.000$ a los 10 años. Por lo que de media salen un 100% de beneficio estimado.
Parece una brutalidad pensar que un algoritmo puede dar estos rendimientos, pero debemos tener en cuenta que podemos tener un periodo de 1 año prácticamente sin ganar y no todo el mundo está dispuesto a estar pendiente todas las semanas de los datos para no tener un rendimiento en el corto plazo.
¿Seríais capaces de aguantar la ejecución de un algoritmo de estas características?
Saludos