前回の記事では,デジタル通貨市場の普遍的な現象について説明しました. ほとんどのデジタル通貨,特にビットコインとイーサリアムの価格変動を追うものは,しばしば同期傾向を示します.この現象は,主流通貨と高度に関連していることを示唆します.しかし,異なるデジタル通貨の関連度も異なります.この関連性の差異は,各通貨の市場パフォーマンスにどのように影響を与えるのでしょうか?この記事では,2023年下半期の牛市を例としてこの問題を探ります.
デジタル通貨市場は波動性と不確実性で知られています.ビットコインとイーサリアムは,市場の2大巨人であり,しばしば価格動向に先導する役割を果たします.ほとんどの小型または新興デジタル通貨は,市場の競争力と取引活性を維持するために,これらの主流通貨,特にプロジェクト・バイ・マーケットの通貨と一定程度に価格を同期する傾向があります.この同期性は,市場参加者の心理的な期待と取引戦略を反映し,定量化取引戦略の設計における重要な考慮事項です.
量化取引の分野では,関連性の測定は統計的方法によって実現される.最もよく使用される測定法は,二つの変数間の線形関連性を測定するピルソン相関系数である.以下はいくつかの核心概念と計算方法である.
ピルソン相関因数 (($r$として記される) は -1 から +1 の範囲にあり, +1 は完全に正関関係であり, -1 は完全に負関関係であり,0 は線形相関関係がない.この係数の計算式は以下のとおりである.
$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}}$
$X_i$と $Y_i$は,2つのランダム変数の観測値であり,$\bar{X}$と $\bar{Y}$は,2つのランダム変数の平均値である.
この記事では,Binance2023全年の4hK線データを収集し,1月1日に上場する144つの通貨から選択しました. 具体的なダウンロードデータコードは以下のとおりです.
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年に2つの波が起こると見ることができます.
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);
pandas自带関数計算は,BTC価格関数と最も弱い関数と,ほとんどの通貨の関数が正である,つまりBTCの価格を追跡している,そして一部の通貨の関数も負である.これはデジタル通貨市場において,異常な計算である.
corr_symbols = df_norm.corrwith(df_norm.BTC).sort_values().index
ここでは,硬貨を2つのグループに分け,最初のグループはBTC価格に関連性のある40の通貨であり,第2グループはBTC価格に関連性のない通貨であり,最初のグループの価格指数から第2グループの指数をマイナスして,平均して最初のグループを空にする2番目のグループを代表する指数を使用し,価格の下落とBTC関連性の関係を計算することができます. コードと結果は以下のとおりです:
(df_norm[corr_symbols[-40:]].mean(axis=1)-df_norm[corr_symbols[:40]].mean(axis=1)).plot(figsize=(15,6),grid=True);
結果は,BTC価格に関連性が強い通貨が上昇し,空間の関連性が低い通貨も優れたヘッジ効果を示した. ここで不厳格な点は,関連性を計算する際に将来のデータを使用し,次にデータを2つのグループに分け,関連性を計算する1つのグループ,およびヘッジ後の収益を計算する2つのグループに分け,結果は以下の図のように同じ結論である.
ビットコインとイーサリアムは市場リーダーであり,その価格動向はしばしば市場全体に大きな影響を与える. これらのビットコインの価格が上昇すると,市場情勢は通常楽観的になり,多くの投資家は市場傾向に従う. 投資家はこれを市場全体の上昇の信号として捉え,他の通貨を購入し始める可能性があります. 市場参加者の集団行動により,主流通貨と高度に関連している通貨は,同様の価格上昇を経験する可能性があります. このとき,市場が価格動向の予測をすると,時には自己実現になります.
corr_symbols = (df_norm.iloc[:1500].corrwith(df_norm.BTC.iloc[:1500])-df_norm.iloc[:1500].corrwith(total_index[:1500])).sort_values().index
この記事では,ピアソン相関系数について説明します. この記事では,各通貨間の相関関係を計算し,市場動向を評価するためにそのデータを利用する方法について説明します. デジタル通貨市場における価格変動の同期性は,市場心理と戦略の反映だけでなく,科学的方法によって量化および予測することも可能であることを明らかにします. これは,取引戦略の量化設計において特に重要です.
この記事のアイデアには,さらに多くの拡張余地があります. 例えば,ロール関連性,上昇と減少の関連性などを計算することで,さらに有効な情報を分析することができます.
mztcoinさて,関連性分析は,前回の空飛躍と多転飛躍の戦略と組み合わせられます.