En un artículo anterior, abordamos un fenómeno general en el mercado de las monedas digitales: la mayoría de las monedas digitales, especialmente aquellas que siguen las fluctuaciones de precios de Bitcoin y Ethereum, suelen mostrar una tendencia a la caída y a la convergencia. Este fenómeno revela su alta correlación con las monedas tradicionales, pero también los diferentes grados de correlación entre las diferentes monedas digitales. Entonces, ¿cómo afecta esta diferencia de correlación al rendimiento del mercado de las diferentes monedas?
El mercado de las monedas digitales es conocido por su volatilidad e incertidumbre. Bitcoin y Ethereum, los dos gigantes del mercado, suelen tomar el liderazgo en los movimientos de los precios. La mayoría de las monedas digitales pequeñas o emergentes, para mantener la competitividad del mercado y la vitalidad de las transacciones, suelen mantener un cierto grado de sincronización de precios con estas monedas principales, especialmente las monedas que operan en el mercado por proyecto.
En el campo de las transacciones cuantitativas, la medición de la correlación se realiza mediante métodos estadísticos. El método de medición más comúnmente utilizado es el coeficiente de correlación de Pearson, que mide la correlación lineal entre dos variables.
Los coeficientes de Pearson (denominados como $r$) se encuentran en un rango de -1 a +1, donde +1 indica una correlación totalmente positiva, -1 una correlación totalmente negativa y 0 una correlación no lineal. La fórmula de cálculo del coeficiente es la siguiente:
$r = \frac{\sum_{i=1}^{n} (X_i - \bar{X}) ((Y_i - \bar{Y})}{\sqrt{\sum_{i=1}^{n} (X_i - \bar{X}) ^2} \sqrt{\sum_{i=1}^{n} (Y_i - \bar{Y}) ^2}}$
En este caso, $X_i$ y $Y_i$ son los valores observados de dos variables aleatorias, y $\bar{X}$ y $\bar{Y}$ son los valores medios de las dos variables aleatorias respectivamente.
Este artículo recopila los datos de la línea 4hK para todo el año 2023, seleccionando 144 monedas que se lanzarán 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)
Primero, después de analizar los datos y calcular el índice de caída de los precios promedio, se puede ver que en 2023 hay dos oleadas de mercado, una de las cuales es una ola de crecimiento al comienzo del año, y otra que comenzó en octubre, que actualmente está básicamente en el punto más alto del índice.
df_norm = df_close/df_close.fillna(method='bfill').iloc[0] #归一化
total_index = df_norm.mean(axis=1)
total_index.plot(figsize=(15,6),grid=True);
El cálculo de la correlación de pandas, con la correlación de precios de BTC y el más débil, se muestra a continuación. La correlación de la mayoría de las monedas es positiva, lo que significa que siguen el precio de BTC, y también hay una correlación de monedas negativa, lo que es una anomalía en el mercado de monedas digitales.
corr_symbols = df_norm.corrwith(df_norm.BTC).sort_values().index
Aquí se divide la moneda en dos grupos, el primer grupo de 40 monedas más relevantes para el precio de BTC, y el segundo grupo de monedas menos relevantes para el precio de BTC, utilizando el índice de precio del primer grupo menos el índice del segundo grupo, representando un promedio de más del primer grupo y el segundo grupo vacío, se puede calcular la relación entre la caída del precio y la relación con BTC.
(df_norm[corr_symbols[-40:]].mean(axis=1)-df_norm[corr_symbols[:40]].mean(axis=1)).plot(figsize=(15,6),grid=True);
Los resultados muestran que las monedas más fuertemente correlacionadas con el precio de BTC crecen mejor, y las monedas con una baja correlación al vacío también desempeñan un buen efecto de cobertura. Lo que no es riguroso aquí es que se utilizan datos futuros para calcular la correlación, y luego se dividen en dos grupos, un grupo para calcular la correlación y otro para calcular la ganancia después de la cobertura, y el resultado sigue siendo el mismo, como se muestra en la siguiente figura.
Bitcoin y Ethereum son los líderes del mercado, y sus movimientos de precios a menudo tienen una gran influencia en el mercado en general. Cuando estos bitcoins suben, el sentimiento del mercado generalmente se vuelve optimista, y muchos inversores tienden a seguir la tendencia del mercado. Los inversores pueden ver esto como una señal de que el mercado en general sube y comenzar a comprar otras monedas. Debido al comportamiento colectivo de los participantes en el mercado, las monedas altamente asociadas con las monedas dominantes pueden experimentar aumentos de precios similares.
corr_symbols = (df_norm.iloc[:1500].corrwith(df_norm.BTC.iloc[:1500])-df_norm.iloc[:1500].corrwith(total_index[:1500])).sort_values().index
Este artículo revela el grado de correlación entre las monedas. El artículo muestra cómo obtener datos para calcular la correlación entre las monedas y utilizar estos datos para evaluar las tendencias del mercado. Se revela que la sincronía de las fluctuaciones de precios en el mercado de monedas digitales no solo refleja la psicología y la estrategia del mercado, sino que también se puede cuantificar y predecir mediante métodos científicos.
La idea de este artículo tiene muchos lugares donde se puede ampliar, como calcular la correlación de rodaje, calcular la correlación de alza y bajada respectivamente, etc., para analizar más información útil.
el mztcoinBueno, el análisis de correlación se puede combinar con la estrategia anterior de hacer más o menos un salto y más o menos un descenso.