In früheren Artikeln haben wir ein allgemeines Phänomen auf dem Markt für digitale Währungen diskutiert: Die meisten digitalen Währungen, insbesondere diejenigen, die den Kursschwankungen von Bitcoin und Ethereum folgen, zeigen oft einen Trend des Anstiegs und Fallens zusammen. Dieses Phänomen zeigt ihre hohe Korrelation mit Mainstream-Währungen. Allerdings variiert auch der Grad der Korrelation zwischen verschiedenen digitalen Währungen. Wie wirkt sich dieser Unterschied in der Korrelation auf die Marktleistung jeder Währung aus? In diesem Artikel werden wir den Bullenmarkt in der zweiten Hälfte des Jahres 2023 als Beispiel verwenden, um dieses Problem zu untersuchen.
Der digitale Währungsmarkt ist bekannt für seine Volatilität und Unsicherheit. Bitcoin und Ethereum, als die beiden Giganten auf dem Markt, spielen oft eine führende Rolle in den Preistrends. Die meisten kleinen oder aufstrebenden digitalen Währungen halten oft einen gewissen Grad an Preissynchronisation mit diesen Mainstream-Währungen, insbesondere mit den von Projektparteien hergestellten Münzen, um die Wettbewerbsfähigkeit des Marktes und die Handelsaktivität zu erhalten. Diese Synchronität spiegelt die psychologischen Erwartungen und Handelsstrategien der Marktteilnehmer wider, die bei der Gestaltung quantitativer Handelsstrategien wichtige Überlegungen sind.
Im Bereich des quantitativen Handels wird die Korrelationsmessung durch statistische Methoden erreicht. Das am häufigsten verwendete Maß ist der Pearson-Korrelationskoeffizient, der den Grad der linearen Korrelation zwischen zwei Variablen misst. Hier sind einige Kernkonzepte und Berechnungsmethoden:
Der Bereich des Pearson-Korrelationskoeffizienten (bezeichnet als r) beträgt von -1 bis +1, wobei +1 eine perfekte positive Korrelation anzeigt, -1 eine perfekte negative Korrelation anzeigt und 0 keine lineare Beziehung anzeigt.
Unter ihnen:undsind die beobachteten Werte von zwei zufälligen Variablen,undMit Hilfe von Python-paketen für wissenschaftliche Berechnungen ist es leicht, Korrelationen zu berechnen.
Dieser Artikel hat die 4h K-Line-Daten für das gesamte Jahr 2023 von Binance gesammelt und 144 Währungen ausgewählt, die am 1. Januar aufgelistet wurden.
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)
Nach der Normalisierung der Daten berechnen wir zunächst den Index der durchschnittlichen Preisschwankungen. Es kann gesehen werden, dass es zwei Markttrends im Jahr 2023 gibt. Einer ist ein deutlicher Anstieg zu Beginn des Jahres, und der andere ist ein großer Anstieg ab Oktober. Derzeit ist es grundsätzlich an einem hohen Punkt in Bezug auf den Index.
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);
Pandas verfügt über eine integrierte Korrelationsberechnung. Die schwächste Korrelation mit dem BTC-Preis wird in der folgenden Abbildung dargestellt. Die meisten Währungen haben eine positive Korrelation, was bedeutet, dass sie dem Preis von BTC folgen. Einige Währungen haben jedoch eine negative Korrelation, die als Anomalie in den Trends des digitalen Währungsmarktes angesehen wird.
corr_symbols = df_norm.corrwith(df_norm.BTC).sort_values().index
Hier werden die Währungen locker in zwei Gruppen unterteilt. Die erste Gruppe besteht aus 40 Währungen, die am meisten mit dem BTC-Preis korreliert sind, und die zweite Gruppe umfasst diejenigen, die am wenigsten mit dem BTC-Preis zusammenhängen. Indem der Index der zweiten Gruppe von dem der ersten subtrahiert wird, stellt er einen Long auf der ersten Gruppe dar, während der zweite kurz gehalten wird. Auf diese Weise können wir eine Beziehung zwischen Preisschwankungen und BTC-Korrelation berechnen.
(df_norm[corr_symbols[-40:]].mean(axis=1)-df_norm[corr_symbols[:40]].mean(axis=1)).plot(figsize=(15,6),grid=True);
Die Ergebnisse zeigen, dass die Währungen mit einer stärkeren Korrelation zum BTC-Preis bessere Zuwächse haben, und die Shorting-Währungen mit geringer Korrelation spielten auch eine gute Absicherungsrolle. Die Ungenauigkeit hier ist, dass bei der Berechnung der Korrelation zukünftige Daten verwendet wurden. Im Folgenden teilen wir die Daten in zwei Gruppen: Eine Gruppe berechnet die Korrelation, und eine andere berechnet die Rendite nach der Absicherung. Das Ergebnis wird in der folgenden Abbildung dargestellt, und die Schlussfolgerung bleibt unverändert.
Bitcoin und Ethereum als Marktführer haben oft einen großen Einfluss auf die allgemeinen Markttrends. Wenn diese Kryptowährungen im Preis steigen, wird die Marktstimmung in der Regel optimistisch und viele Investoren neigen dazu, diesem Trend zu folgen. Investoren können dies als Signal für einen allgemeinen Marktanstieg sehen und andere Währungen kaufen. Aufgrund des kollektiven Verhaltens der Marktteilnehmer können Währungen, die stark mit den Mainstream-Währungen korreliert sind, ähnliche Preissteigerungen erleben. In solchen Zeiten können Erwartungen über Preistrends manchmal zu selbst erfüllenden Prophezeiungen werden. Im Gegenteil, Währungen, die negativ mit Bitcoin korrelieren, sind einzigartig; ihre Fundamente können sich verschlechtern oder sie sind möglicherweise nicht mehr im Blickfeld des Mainstreams - es könnte sogar eine blutig saugende Situation von Bitcoin
corr_symbols = (df_norm.iloc[:1500].corrwith(df_norm.BTC.iloc[:1500])-df_norm.iloc[:1500].corrwith(total_index[:1500])).sort_values().index
Dieser Artikel behandelt den Pearson-Korrelationskoeffizienten, der den Grad der Korrelation zwischen verschiedenen Währungen aufzeigt. Der Artikel zeigt, wie Daten zur Berechnung der Korrelation zwischen Währungen gewonnen und diese Daten zur Bewertung von Markttrends verwendet werden können.
Es gibt viele Bereiche, in denen die Ideen in diesem Artikel erweitert werden können, wie z.B. die Berechnung von Rollkorrelationen, die separate Berechnung von Korrelationen bei Anstiegen und Abstiegen usw., die viele nützliche Informationen liefern können.