ae^((-(x-b)^2)/(2c^2)) Profile picture
Profe @UCEMA_edu, empresario pyme, programador, matemático, ingeniero UTN FRBA, Autor de libros: Python para finanzas Quant. ♥ @belo_app

Nov 9, 2021, 12 tweets

Hice modelito de machine learning para predecir "Alt Season" próximos 30 días (cuando baja fuerte la dominancia de #BTC y se vuelan las small cap crypto)

Pero el 🧵es para manijear #python y no crypto así que si les interesa hay que leer hasta el final para ver el resultado

A pesar de lo rústico del modelo, tiene un % de aciertos alto, tanto cuando predice que se dará la Alt season, como cuando predice que no

Esto se ve en la llamada "matriz de confusión" que se arma sometiendo al modelo a predecir con datos con los que no fue entrenado

Arranco tomando datos de dominancia de CoinmarketCap y los históricos de precio y volumen de Coingecko, el código python para ambas cosas son un par de líneas como ven

Luego preparo los "features" (que serían los inputs con los que el modelo se entrenará para encontrar la mejor alternativa de esquema de reglas para predecir)

Y el "TARGET" que es el label binario del evento futuro a predecir, en mi caso si la dominancia de #BTC baja un 5% o mas

Como ven es bastante básico, uso simplemente de inputs datos pasados de #BTC de:

- Su dominancia
- Cambios de precio
- El volumen
- La volatilidad
- El ratio μ/σ

Y los calculo con una ventana semanal y mensual

Luego viene el Over Sampling
¿quejeso?

El tema es que quiero predecir si la dominancia va a caer mas del 5% en un mes, y eso no pasa muy seguido, o sea mi muestra de datos está desbalanceada, si entreno el modelo así, va a tener un sesgo a predecir que no habrá nunca Alt Season

Como se imaginarán en #python esto es cuestión de un par de líneas de código nomás y problema resuelto, genero datos con inputs similares a los que tuvieron esa alt season que son los menos (16.54%) para que quede balanceado para entrenar

Y ya tenemos todo casi listo para entrenar un modelo de machine learning

Antes separo primero los datos de entrenamiento de los de validación (los de validación son los datos con los que voy a chequear si se entrenó bien o manda cualquier fruta)

Y ya, entreno mi modelo

El algoritmo que elegí fue "Random Forest" que genera una especie de Arbol de decisiones (pregunta primero por un feature, luego por otro y así hasta terminar decidiendo si es mas probable que haya o no una alt season con esos features)

Osea, encuentra reglas para predecir

Todo esto explicado (resumido) para un hilo de twitter obvio

Bueno, cuestión, ahora que ya el algoritmo generó "las reglas" o preguntas para decidir, lo que hago es pasarle los datos actuales a ver que predice

Entonces? bueno, reflexionemos:

1- Solo el 16.54% de los días pasados había una alt season el mes siguiente

2- El algoritmo acierta el 88% de las veces que predice que habrá alt season

3- Los ultimos 30 días, incluido ayer predijo que habrá alt season mas del 50% de los días

Disclaimer: Es un modelo medio "básico" hay mucho por trabajarle, mi idea era manijear #Python y no manijear crypto small caps, pero seguro capté mas la atención con esto aplicado a algo real

Así que bueno, dejo acá el código para todes
colab.research.google.com/drive/1IC836Ly…

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling