Encontremos al diferente... (Detectando Anomalías)
Introducción
¡Saludos! Te doy la bienvenida a una nueva entrega del viejo Quant. En estos días, me encuentro en el proceso de renovar el bot de señales de nuestro grupo en Telegram. Este proceso me ha llevado a profundizar en un tema ampliamente utilizado en el campo de la ciencia de datos: la detección de anomalías.
Considerando su relevancia, he decidido dedicar este artículo para explorar y desglosar este concepto desde mi perspectiva. En las siguientes líneas, compartiré contigo lo que comprendo como anomalías, cómo podemos identificarlas y su crucial importancia tanto en el ámbito del trading como en la resolución de problemáticas relacionadas con la ciencia de datos.
¿Qué son las Anomalías?
En el campo de la ciencia de datos, una "anomalía" se refiere a un patrón que destaca notablemente dentro de un conjunto de datos o una población, ocurriendo con una frecuencia considerablemente baja. Este tipo de observaciones son significativas precisamente debido a su rareza; al identificar una anomalía, podemos anticipar con mayor certeza que los próximos datos seguirán la tendencia general, lo que no incluye a la anomalía recién identificada.
Lo realmente fascinante de las anomalías es que, a pesar de ser eventos atípicos, tienen un considerable impacto en el sistema que estamos analizando. Identificarlas no solo nos permite comprender mejor el comportamiento general de un sistema, sino que también nos brinda una oportunidad única para tomar decisiones informadas y actuar en consecuencia cuando se presentan.
Tomemos, por ejemplo, el escenario en el trading donde se presentan días de notables retornos negativos de forma consecutiva. Estos fenómenos son a menudo etiquetados como "cisnes negros" o "flash crashes". Históricamente, estos eventos críticos son seguidos por una reversion a la norma; es decir, observamos que las "velas" siguientes tienden a regresar a patrones más estándar, delineando así oportunidades para recuperaciones extraordinarias en el mercado financiero.
No obstante, es vital mencionar que estas recuperaciones no solo son fruto de una tendencia natural del mercado a autocorregirse. Muchas veces, intervenciones externas, como estímulos gubernamentales, juegan un papel crucial en la facilitación de estas recuperaciones. Asimismo, las anomalías pueden catalizar una serie de respuestas económicas y sociales que, conjuntamente, laboran hacia la estabilización del mercado, dejando un margen muy estrecho para la incertidumbre.
En este sentido, es plausible afirmar que estas situaciones de anomalía pueden convertirse en auténticos caldos de cultivo para oportunidades inigualables de inversión. Para los traders con una estrategia bien definida y un profundo entendimiento de las dinámicas del mercado, los periodos de recuperación tras un "cisne negro" pueden representar la ventana perfecta para capitalizar y obtener ganancias significativas del mercado.
Cómo Detectar Días con Retornos Superiores a la Media
Identificar días con retornos superiores a la media es una habilidad crucial en el trading, especialmente para detectar oportunidades únicas de inversión. Uno de los enfoques más eficaces para hacer esto es mediante la aplicación de principios de probabilidad y estadística; en particular, haciendo uso del teorema del límite central. Este teorema nos indica que el 95% de los datos estarán concentrados dentro de un rango definido por dos desviaciones estándar de la media.
Así, los fenómenos que nos interesan —como los movimientos abruptos de “pump and dump”— se encontrarán fuera de este rango, es decir, más allá de las dos desviaciones estándar. Estos eventos, aunque no ocurren con frecuencia, suelen representar oportunidades de alta rentabilidad.
Aquí es donde entra en juego nuestro innovador bot en el canal de Telegram. Este bot está diseñado para alertarte en tiempo real cuando estos raros eventos estén ocurriendo. Funciona mediante un análisis constante de los datos del mercado, y si identifica una anomalía —un evento demasiado inusual para ser normal—, enviará un reporte detallado al grupo. Lo extraordinario de este sistema es su capacidad para monitorizar cientos de monedas simultáneamente, proporcionándote así un flujo constante de oportunidades potencialmente lucrativas que puedes capitalizar.
Manos a la Obra: Calculando Retornos Logarítmicos
Para comenzar nuestro análisis, es fundamental normalizar los datos que tenemos a mano. Una estrategia eficaz para lograrlo es a través del cálculo de los retornos logarítmicos del mercado. Esta técnica no solo nos permite estabilizar la varianza, sino que también facilita la identificación de patrones significativos en los datos, usamos datos diarios de bitcoin y tomamos como referencia el precio de cierre.
df['log_returns'] = np.log(df['close'] / df['close'].shift(1))
En el fragmento de código anterior, estamos utilizando Python para calcular los retornos logarítmicos. Utilizamos la función `np.log` de la biblioteca NumPy para obtener el logaritmo natural de la división del precio de cierre actual por el precio de cierre anterior. Este cálculo se realiza para cada fila del DataFrame, creando así una nueva columna que contiene todos los retornos logarítmicos, y lo graficamos vamos a obtener algo de este tipo.
Una vez calculados los retornos logarítmicos, el siguiente paso es identificar las anomalías en nuestro conjunto de datos. Para hacer esto, primero calcularemos el promedio y la desviación estándar de los retornos logarítmicos. Posteriormente, estableceremos un criterio para identificar las anomalías: cualquier valor que sea mayor que dos desviaciones estándar por encima del promedio o menor que dos desviaciones estándar por debajo del promedio será considerado una anomalía.
mean_returns = df['log_returns'].mean()
std_returns = df['log_returns'].std()
df['log_returns_signal'] = np.where(df['log_returns'] > mean_returns + 2*std_returns, 1, 0)
df['log_returns_signal'] = np.where(df['log_returns'] < mean_returns - 2*std_returns, -1, df['log_returns_signal'])
En el código anterior, hemos definido dos nuevas columnas en nuestro DataFrame: una que identifica las anomalías positivas (donde el retorno logarítmico es significativamente mayor que el promedio) asignándoles un valor de 1, y otra que identifica las anomalías negativas (donde el retorno logarítmico es significativamente menor que el promedio) asignándoles un valor de -1. Este enfoque nos permite aislar rápidamente los días que presentan retornos extremadamente altos o bajos.
Luego de identificar las anomalías, es hora de visualizar nuestros hallazgos. Una buena práctica es graficar los retornos logarítmicos junto con las señales de compra y venta derivadas de las anomalías identificadas. Para hacerlo, utilizaremos la librería matplotlib para crear un gráfico que nos permita visualizar claramente dónde se sitúan estas anomalías en relación con los retornos logarítmicos a lo largo del tiempo.
import matplotlib.pyplot as plt
mean_returns = df['log_returns'].mean()
std_returns = df['log_returns'].std()
df['log_returns_signal'] = np.where(df['log_returns'] > mean_returns + 2*std_returns, 1, 0)
df['log_returns_signal'] = np.where(df['log_returns'] < mean_returns - 2*std_returns, -1, df['log_returns_signal'])
plt.plot(df['log_returns'])
plt.scatter(df[df['log_returns_signal'] == 1].index, df[df['log_returns_signal'] == 1]['log_returns'], color='red', label='Sell')
plt.scatter(df[df['log_returns_signal'] == -1].index, df[df['log_returns_signal'] == -1]['log_returns'], color='green', label='Buy')
plt.axhline(mean_returns, color='red', linestyle='dashed', linewidth=1)
plt.axhline(mean_returns + 2*std_returns, color='orange', linestyle='dashed', linewidth=1)
plt.axhline(mean_returns - 2*std_returns, color='orange', linestyle='dashed', linewidth=1)
plt.legend()
plt.show()
En el gráfico resultante, las líneas horizontales punteadas representan la media de los retornos y las bandas de dos desviaciones estándar por encima y por debajo de la media. Los puntos rojos indican oportunidades de venta (anomalías positivas), mientras que los puntos verdes señalan oportunidades de compra (anomalías negativas). Así, nos brinda una visión clara de los momentos óptimos para comprar o vender basándonos en la detección de anomalías.
Para proporcionar una representación más detallada y contextual de cómo se manifiestan estas anomalías en una serie temporal, a continuación presentaremos un gráfico de candlesticks con una resolución de 15 minutos. Esta resolución nos permite monitorear de cerca los fenómenos de "pump and dump" que suelen ser bastante comunes en los mercados cripto.
Los gráficos de candlesticks no solo revelan el precio de cierre y apertura de un activo en un periodo determinado, sino que también nos muestran los puntos más altos y más bajos alcanzados en ese intervalo de tiempo. Así, al marcar las anomalías identificadas anteriormente en este gráfico, podemos visualizar claramente los momentos exactos en los que ocurrieron estas fluctuaciones significativas y tomar decisiones informadas para nuestras estrategias de trading.
A continuación, mostraremos un ejemplo de cómo se ve este gráfico con las anomalías marcadas:
Conclusión
A lo largo de este artículo, hemos explorado el fascinante mundo de la detección de anomalías, una técnica fundamental en la ciencia de datos y, especialmente, en el ámbito financiero. A través del uso de Python y bibliotecas específicas, logramos desarrollar una estrategia para identificar días con retornos significativamente superiores a la media en los mercados de criptomonedas.
Mediante la identificación de estas anomalías, nos equipamos con una herramienta potente para monitorizar las oscilaciones del mercado y posiblemente capitalizar las oportunidades que estas fluctuaciones pueden presentar. Los análisis realizados y las visualizaciones proporcionadas ofrecen una ventana única hacia los movimientos más significativos del mercado, facilitando una toma de decisiones más informada y estratégica.
Si te interesa recibir notificaciones en tiempo real sobre estas anomalías y muchas otras insights del mundo cripto, te invitamos a unirte a nuestro grupo de Telegram donde nuestro bot está siempre atento a los movimientos del mercado para ayudarte a estar un paso adelante.
Esperamos que este artículo te haya proporcionado una nueva perspectiva y herramientas útiles para tu viaje en el mundo del trading cripto. ¡Gracias por leer y hasta la próxima!
Comentarios
Publicar un comentario