En la carga de los recursos... Cargando...

La correlación entre el aumento y la caída de las monedas y Bitcoin

El autor:FMZ~Lydia, Creado: 2023-11-17 11:01:56, Actualizado: 2024-01-01 12:21:55

img

En artículos anteriores, discutimos un fenómeno común en el mercado de divisas digitales: la mayoría de las monedas digitales, especialmente las que siguen las fluctuaciones de precios de Bitcoin y Ethereum, a menudo muestran una tendencia de subir y bajar juntos. Este fenómeno revela su alta correlación con las monedas convencionales. Sin embargo, el grado de correlación entre diferentes monedas digitales también varía. Entonces, ¿cómo afecta esta diferencia en la correlación al rendimiento del mercado de cada moneda?

El origen sincrónico del mercado de moneda digital

El mercado de divisas digitales es conocido por su volatilidad e incertidumbre. Bitcoin y Ethereum, como los dos gigantes del mercado, a menudo desempeñan un papel destacado en las tendencias de precios. La mayoría de las monedas digitales pequeñas o emergentes, con el fin de mantener la competitividad del mercado y la actividad comercial, a menudo mantienen un cierto grado de sincronización de precios con estas monedas convencionales, especialmente las monedas hechas por las partes del proyecto. Esta sincronicidad refleja las expectativas psicológicas y las estrategias comerciales de los participantes del mercado, que son consideraciones importantes en el diseño de estrategias comerciales cuantitativas.

Fórmula y método de cálculo de la correlación

En el campo del comercio cuantitativo, la medición de la correlación se logra a través de métodos estadísticos. La medida más comúnmente utilizada es el coeficiente de correlación de Pearson, que mide el grado de correlación lineal entre dos variables.

El rango del coeficiente de correlación de Pearson (denotado como r) es de -1 a +1, donde +1 indica una correlación positiva perfecta, -1 indica una correlación negativa perfecta y 0 indica que no hay relación lineal.

img

Entre ellos,imgyimgson los valores observados de dos variables aleatorias,imgyimgEn el caso de las variables aleatorias, los valores promedio de estas dos variables aleatorias son los valores promedio de estas dos variables aleatorias respectivamente.

Recopilación de datos

Este artículo ha recopilado los datos de la línea K de 4h para todo el año de 2023 de Binance, seleccionando 144 monedas que fueron listadas el 1 de enero.

import requests
from datetime import date,datetime
import time
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

ticker = requests.get('https://fapi.binance.com/fapi/v1/ticker/24hr')
ticker = ticker.json()
sort_symbols = [k['symbol'][:-4] for k in sorted(ticker, key=lambda x :-float(x['quoteVolume'])) if k['symbol'][-4:] == 'USDT']

def GetKlines(symbol='BTCUSDT',start='2020-8-10',end='2023-8-10',period='1h',base='fapi',v = 'v1'):
    Klines = []
    start_time = int(time.mktime(datetime.strptime(start, "%Y-%m-%d").timetuple()))*1000 + 8*60*60*1000
    end_time =  min(int(time.mktime(datetime.strptime(end, "%Y-%m-%d").timetuple()))*1000 + 8*60*60*1000,time.time()*1000)
    intervel_map = {'m':60*1000,'h':60*60*1000,'d':24*60*60*1000}
    while start_time < end_time:
        time.sleep(0.5)
        mid_time = start_time+1000*int(period[:-1])*intervel_map[period[-1]]
        url = 'https://'+base+'.binance.com/'+base+'/'+v+'/klines?symbol=%s&interval=%s&startTime=%s&endTime=%s&limit=1000'%(symbol,period,start_time,mid_time)
        res = requests.get(url)
        res_list = res.json()
        if type(res_list) == list and len(res_list) > 0:
            start_time = res_list[-1][0]+int(period[:-1])*intervel_map[period[-1]]
            Klines += res_list
        if type(res_list) == list and len(res_list) == 0:
            start_time = start_time+1000*int(period[:-1])*intervel_map[period[-1]]
        if mid_time >= end_time:
            break
    df = pd.DataFrame(Klines,columns=['time','open','high','low','close','amount','end_time','volume','count','buy_amount','buy_volume','null']).astype('float')
    df.index = pd.to_datetime(df.time,unit='ms')
    return df

start_date = '2023-01-01'
end_date   = '2023-11-16'
period = '4h'
df_dict = {}

for symbol in sort_symbols:   
    print(symbol)
    df_s = GetKlines(symbol=symbol+'USDT',start=start_date,end=end_date,period=period)
    if not df_s.empty:
        df_dict[symbol] = df_s

df_close = pd.DataFrame(index=pd.date_range(start=start_date, end=end_date, freq=period),columns=df_dict.keys())
for symbol in symbols:
    df_s = df_dict[symbol]
    df_close[symbol] = df_s.close
df_close = df_close.dropna(how='any',axis=1)

Revisión del mercado

Después de normalizar los datos primero, calculamos el índice de fluctuaciones de precios promedio. Se puede ver que hay dos tendencias del mercado en 2023. Una es un aumento significativo a principios de año, y la otra es un aumento importante a partir de octubre. Actualmente, está básicamente en un punto alto en términos de índice.

df_norm = df_close/df_close.fillna(method='bfill').iloc[0] #Normalization
total_index = df_norm.mean(axis=1)
total_index.plot(figsize=(15,6),grid=True);

img

Análisis de correlación

Pandas viene con un cálculo de correlación incorporado. La correlación más débil con el precio de BTC se muestra en la siguiente figura. La mayoría de las monedas tienen una correlación positiva, lo que significa que siguen el precio de BTC. Sin embargo, algunas monedas tienen una correlación negativa, lo que se considera una anomalía en las tendencias del mercado de divisas digitales.

img

corr_symbols = df_norm.corrwith(df_norm.BTC).sort_values().index

Correlación y aumento de precios

Aquí, las monedas se dividen libremente en dos grupos. El primer grupo consta de 40 monedas más correlacionadas con el precio de BTC, y el segundo grupo incluye las menos relacionadas con el precio de BTC. Al restar el índice del segundo grupo del primero, representa ir largo en el primer grupo mientras se corta el segundo. De esta manera podemos calcular una relación entre las fluctuaciones de precios y la correlación de BTC. Aquí está cómo lo haces junto con los resultados:

(df_norm[corr_symbols[-40:]].mean(axis=1)-df_norm[corr_symbols[:40]].mean(axis=1)).plot(figsize=(15,6),grid=True);

img

Los resultados muestran que las monedas con una correlación más fuerte con el precio de BTC tienen mejores aumentos, y el cortocircuito de monedas con una baja correlación también desempeñó un buen papel de cobertura. La imprecisión aquí es que se utilizaron datos futuros al calcular la correlación. A continuación, dividimos los datos en dos grupos: un grupo calcula la correlación y otro calcula el rendimiento después de la cobertura. El resultado se muestra en la siguiente figura y la conclusión permanece sin cambios.

Bitcoin y Ethereum como líderes del mercado a menudo tienen un gran impacto en las tendencias generales del mercado. Cuando estas criptomonedas suben en precio, el sentimiento del mercado generalmente se vuelve optimista y muchos inversores tienden a seguir esta tendencia. Los inversores pueden ver esto como una señal de un aumento general del mercado y comenzar a comprar otras monedas. Debido al comportamiento colectivo de los participantes del mercado, las monedas altamente correlacionadas con las corrientes principales pueden experimentar aumentos de precios similares. En tales momentos, las expectativas sobre las tendencias de precios a veces pueden convertirse en profecías autocumplidas. Por el contrario, las monedas negativamente correlacionadas con Bitcoin son únicas; sus fundamentos pueden estar deteriorándose o ya no estar a la vista de la corriente principal - incluso podría existir la situación sangrienta de Bitcoin donde los inversores abandonan los mercados persiguiéndolos por aquellos capaces de mantenerse al día con los precios crecientes.

corr_symbols = (df_norm.iloc[:1500].corrwith(df_norm.BTC.iloc[:1500])-df_norm.iloc[:1500].corrwith(total_index[:1500])).sort_values().index 

img

Resumen de las actividades

Este artículo analiza el coeficiente de correlación de Pearson, revelando el grado de correlación entre diferentes monedas. El artículo demuestra cómo obtener datos para calcular la correlación entre monedas y usar estos datos para evaluar las tendencias del mercado.

Hay muchas áreas en las que las ideas de este artículo pueden ampliarse, como calcular correlaciones rodantes, calcular por separado correlaciones durante subidas y bajadas, etc., lo que puede producir mucha información útil.


Más.