В предыдущих статьях мы обсуждали общее явление на рынке цифровой валюты: большинство цифровых валют, особенно те, которые следуют колебаниям цен биткойна и эфириума, часто демонстрируют тенденцию к росту и падению вместе. Это явление показывает их высокую корреляцию с основными валютами. Однако степень корреляции между различными цифровыми валютами также варьируется. Так как эта разница в корреляции влияет на рыночную производительность каждой валюты? В этой статье мы будем использовать бычий рынок во второй половине 2023 года в качестве примера для изучения этой проблемы.
Рынок цифровых валют известен своей волатильностью и неопределенностью. Биткойн и Эфириум, как два гиганта на рынке, часто играют ведущую роль в ценовых тенденциях. Большинство небольших или развивающихся цифровых валют, чтобы сохранить конкурентоспособность рынка и торговую активность, часто сохраняют определенную степень синхронизации цен с этими основными валютами, особенно теми монетами, которые создаются сторонами проекта. Эта синхроничность отражает психологические ожидания и торговые стратегии участников рынка, которые являются важными соображениями при разработке количественных торговых стратегий.
В области количественной торговли измерение корреляции достигается с помощью статистических методов. Наиболее часто используемой мерой является коэффициент корреляции Пирсона, который измеряет степень линейной корреляции между двумя переменными.
Диапазон коэффициента корреляции Пирсона (обозначенный как r) составляет от -1 до +1, где +1 указывает на идеальную положительную корреляцию, -1 указывает на идеальную отрицательную корреляцию, а 0 указывает на отсутствие линейной связи.
Среди них,иявляются наблюдаемыми значениями двух случайных переменных,иИспользуя пакеты, связанные с научными вычислениями Python, легко рассчитать корреляцию.
В этой статье собраны данные 4h K-line за весь 2023 год с Binance, выбранные 144 валюты, которые были перечислены 1 января.
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)
После нормализации данных сначала мы рассчитываем индекс средних колебаний цен. Можно увидеть, что в 2023 году есть две тенденции рынка. Одна - значительное увеличение в начале года, а другая - значительный рост, начиная с октября. В настоящее время он в основном находится в высокой точке с точки зрения индекса.
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 поставляется с встроенным расчетом корреляции. Самая слабая корреляция с ценой BTC показана на следующем рисунке. Большинство валют имеют положительную корреляцию, что означает, что они следуют за ценой BTC. Однако некоторые валюты имеют отрицательную корреляцию, которая считается аномалией в тенденциях рынка цифровой валюты.
corr_symbols = df_norm.corrwith(df_norm.BTC).sort_values().index
Здесь валюты свободно разделены на две группы. Первая группа состоит из 40 валют, наиболее коррелирующих с ценой BTC, а вторая группа включает в себя те, которые наименее связаны с ценой BTC. Вычитая индекс второй группы из первой, он представляет длинный курс на первую группу, короткий на вторую. Таким образом, мы можем вычислить взаимосвязь между колебаниями цен и корреляцией BTC. Вот как вы это делаете вместе с результатами:
(df_norm[corr_symbols[-40:]].mean(axis=1)-df_norm[corr_symbols[:40]].mean(axis=1)).plot(figsize=(15,6),grid=True);
Результаты показывают, что валюты с более сильной корреляцией с ценой BTC имеют лучший рост, а короткие валюты с низкой корреляцией также играли хорошую роль хеджирования. Неточность здесь заключается в том, что при расчете корреляции использовались будущие данные. Ниже мы делим данные на две группы: одна группа рассчитывает корреляцию, а другая рассчитывает доходность после хеджирования. Результат показан на следующей рисунке, и вывод остается неизменным.
Биткойн и Эфириум как лидеры рынка часто оказывают огромное влияние на общие тенденции рынка. Когда эти криптовалюты растут в цене, настроение рынка обычно становится оптимистичным, и многие инвесторы склонны следовать этой тенденции. Инвесторы могут рассматривать это как сигнал общего роста рынка и начать покупать другие валюты. Из-за коллективного поведения участников рынка, валюты, высоко коррелирующие с основными, могут испытывать аналогичное повышение цен. В такие моменты ожидания относительно ценовых тенденций могут иногда становиться самореализующимися пророчествами. Напротив, валюты, отрицательно коррелирующие с Биткойном, уникальны; их фундаментальные показатели могут ухудшаться или они могут больше не быть в поле зрения основного потока - может даже существовать кровососущая ситуация Биткоина, когда инвесторы покидают рынки, преследуя тех, кто может идти в ногу с растущими ценами.
corr_symbols = (df_norm.iloc[:1500].corrwith(df_norm.BTC.iloc[:1500])-df_norm.iloc[:1500].corrwith(total_index[:1500])).sort_values().index
В статье рассматривается коэффициент корреляции Пирсона, который показывает степень корреляции между различными валютами. В статье показано, как получить данные для расчета корреляции между валютами и использовать эти данные для оценки рыночных тенденций.
Есть много областей, где идеи в этой статье могут быть расширены, например, вычисление колеблющихся корреляций, отдельное вычисление корреляций во время подъемов и падений и т. д., что может дать много полезной информации.