Kesimpulan 2021 dan Strategi Masa Depan.
2021 hampir berakhir, dan titik panas dari DEFI ke GAMEFI muncul satu demi satu, dan pasaran keseluruhan masih dalam pasaran lembu. Melihat ke belakang sekarang, berapa banyak yang anda peroleh pada tahun 2021? Peluang apa yang dilewatkan? Adakah terdapat pelaburan yang berjaya? Baru-baru ini, saya menarik sebut harga pasaran sejarah tahun lalu dan menemui strategi keuntungan yang tidak dijangka, tetapi ia adalah indeks pelbagai mata wang.
Terdapat terlalu banyak simbol mata wang yang disenaraikan di platform, dan banyak yang ditakdirkan tidak diketahui dan mungkin juga ditarik balik dari perdagangan. Di sini kita memilih simbol mata wang yang telah disenaraikan di Binance Perpetual Swap. Mereka umumnya telah diuji dan diiktiraf sebagai mata wang arus perdana, yang agak selamat. Selepas pemeriksaan sederhana, beberapa mata wang indeks dikeluarkan, dan 134 mata wang akhirnya bertahan.
Dalam [1]: Permintaan import Dari tarikhwaktu tarikhimport,tanggalwaktu Masa import Import panda sebagai pd import numpy sebagai np Import matplotlib.pyplot sebagai plt % matplotlib dalam barisan
Dalam [144]:
##pasangan dagangan semasa
Info = permintaan.get"https://fapi.binance.com/fapi/v1/exchangeInfo’)
simbol = [s[
Di [154]:
symbols_f = list(set(filter(lambda x: x[-4:] ==
Di [155]: print(len(symbols_f))
Kemudian, kita mendapat harga penutupan harian mereka pada tahun lepas, dan kita perhatikan bahawa beberapa simbol mata wang hanya berada di pasaran untuk jangka masa yang singkat, jadi data memerlukan pemprosesan unitization.
Keuntungan indeks akhir adalah kira-kira 12 kali, iaitu, jika anda membeli 134 simbol mata wang ini secara purata pada 1 Januari 2021, keuntungan akhir daripada tidak melakukan apa-apa adalah 12 kali, dan dianggarkan bahawa lebih daripada 90% orang tidak melebihi indeks purata. Di antara mereka, simbol mata wang dengan penurunan terbesar: ICP jatuh sebanyak 93%, DODO jatuh sebanyak 85%, dan LINA jatuh sebanyak 75%. Peningkatan hampir seratus kali: SOL, FTM, LUNA, MATIC, SAND, AXS. Di antara mereka, AXS telah meningkat sebanyak 168 kali dan merupakan kuda hitam terbesar. Median meningkat 3 kali.
Ini adalah nisbah keuntungan yang putus asa. Saya telah bekerja keras dan mencuba semua jenis strategi, dan saya tidak membuat keuntungan sebanyak tahun ketika saya tidak membuat sebarang usaha tambahan. Walau bagaimanapun, perlu diperhatikan bahawa beberapa peningkatan nisbah terlalu besar, dan jelas menyimpang dari indeks. Jika simbol mata wang ini tidak dipilih pada awal tahun, keuntungan akan dekat dengan median, yang jauh kurang menonjol.
Di [157]:
#fungsi untuk mendapatkan K-garis dalam mana-mana tempoh
def GetKlines ((simbol=
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')
profit df
Di [164]:
df_all_s = pd.DataFrame ((index=pd.date_range ((start=
Dalam [165]: df_all_s.tail() #struktur data Keluar[165]:
Dalam [174]:
df_all = df_all_s.fillna ((metod=
Dalam [175]: #peningkatan purata df_norm.median ((axis=1).plot ((figsize=(12,4), grid=True); Keluar[175]:
Dalam [168]: #bangkit dan jatuh menyusun print ((df_norm.iloc[-1].round ((2).sort_values().to_dict())
Dalam [317]: # maksimum pengeluaran harga semasa berbanding dengan harga tertinggi pada tahun lepas print ((((1-df_norm.iloc[-1]/df_norm.max()).bulat(2).sort_values().to_dict())
Dalam [177]:
df_all_f = pd.DataFrame ((index=pd.date_range ((start=
Dalam [208]:
# tidak termasuk simbol baru
df = df_all_s[df_all_s.columns[~df_all_f.iloc[0].isnull() ]
df = df.fillna ((metode=
Dalam [212]: #dibandingkan dengan BTC (df.mean(axis=1)/df.BTCUSDT).plot ((figsize=(12,4), grid=True); Keluar[212]:
Dalam [213]: # gunakan enjin backtest lama kelas Pertukaran:
def __init__(self, trade_symbols, fee=0.0004, initial_balance=10000):
self.initial_balance = initial_balance #initial asset
self.fee = fee
self.trade_symbols = trade_symbols
self.account = {'USDT':{'realised_profit':0, 'unrealised_profit':0, 'total':initial_balance, 'fee':0}}
for symbol in trade_symbols:
self.account[symbol] = {'amount':0, 'hold_price':0, 'value':0, 'price':0, 'realised_profit':0,'unrealised_profit':0,'fee':0}
def Trade(self, symbol, direction, price, amount):
cover_amount = 0 if direction*self.account[symbol]['amount'] >=0 else min(abs(self.account[symbol]['amount']), amount)
open_amount = amount - cover_amount
self.account['USDT']['realised_profit'] -= price*amount*self.fee #deduct service fee
self.account['USDT']['fee'] += price*amount*self.fee
self.account[symbol]['fee'] += price*amount*self.fee
if cover_amount > 0: #close first
self.account['USDT']['realised_profit'] += -direction*(price - self.account[symbol]['hold_price'])*cover_amount #profit
self.account[symbol]['realised_profit'] += -direction*(price - self.account[symbol]['hold_price'])*cover_amount
self.account[symbol]['amount'] -= -direction*cover_amount
self.account[symbol]['hold_price'] = 0 if self.account[symbol]['amount'] == 0 else self.account[symbol]['hold_price']
if open_amount > 0:
total_cost = self.account[symbol]['hold_price']*direction*self.account[symbol]['amount'] + price*open_amount
total_amount = direction*self.account[symbol]['amount']+open_amount
self.account[symbol]['hold_price'] = total_cost/total_amount
self.account[symbol]['amount'] += direction*open_amount
def Buy(self, symbol, price, amount):
self.Trade(symbol, 1, price, amount)
def Sell(self, symbol, price, amount):
self.Trade(symbol, -1, price, amount)
def Update(self, close_price): #update asset
self.account['USDT']['unrealised_profit'] = 0
for symbol in self.trade_symbols:
self.account[symbol]['unrealised_profit'] = (close_price[symbol] - self.account[symbol]['hold_price'])*self.account[symbol]['amount']
self.account[symbol]['price'] = close_price[symbol]
self.account[symbol]['value'] = abs(self.account[symbol]['amount'])*close_price[symbol]
self.account['USDT']['unrealised_profit'] += self.account[symbol]['unrealised_profit']
self.account['USDT']['total'] = round(self.account['USDT']['realised_profit'] + self.initial_balance + self.account['USDT']['unrealised_profit'],6)
Dalam [418]:
#untuk backtest yang lebih tepat, merangkak 1-jam k-garis
df_all_s = pd.DataFrame ((index=pd.date_range ((start=
Dalam [419]:
df = df_all_s[df_all_s.columns[~df_all_f.iloc[0].isnull() ]
df = df.fillna ((metode=
Ujian belakang memilih semua simbol mata wang yang disenaraikan pada kontrak Binance Perpetual pada 1 Januari 2021. Tempoh K-line adalah 1h, dan parameternya adalah mula membeli apabila jumlah kedudukan kurang dari 5% dari purata dan mula menjual apabila melebihi 5%. Apabila ujian belakang adalah semua simbol mata wang, keuntungan strategi akhir adalah 7.7 kali. Semakin buruk daripada keuntungan purata 13 kali. Itu juga dalam jangkaan saya. Lagipun, simbol mata wang yang meningkat seratus kali terlalu istimewa, dan strategi seimbang akan menjualnya semua.
Jika ujian belakang memilih untuk membuang 10 simbol mata wang dengan peningkatan tertinggi, dan hanya memeriksa simbol mata wang yang agak biasa, keuntungan akhir adalah 4.8 kali, jauh melebihi prestasi purata 3.4 kali.
Jika hanya 3 simbol mata wang dengan peningkatan tertinggi diputar, keuntungan akhir adalah 373 kali, jauh melebihi prestasi purata 160 kali.
Dalam [494]:
# backtest semua simbol
simbol = senarai ((df.iloc[-1].sort_values() [:].index)
e = Pertukaran ((simbol, yuran=0.001, baki_awal=10000)
res_list = []
avg_pct = 1/len (simbol)
untuk baris dalam df[simbol].iterrows():
harga = baris[1]
Jumlah = e. akaun[
Dalam [495]:
e. akaun[
Dalam [496]: # backtest prestasi semua simbol (res.total/10000).plot(figsize=(12,4), grid = Benar); df[simbol].mean ((axis=1).plot ((figsize=(12,4), grid=True); Keluar[496]:
Dalam [498]:
#mengurangkan simbol dengan peningkatan besar
simbol = senarai ((df.iloc[-1].sort_values()[:-10].index)
e = Pertukaran ((simbol, yuran=0.001, baki_awal=10000)
res_list = []
avg_pct = 1/len (simbol)
untuk baris dalam df[simbol].iterrows():
harga = baris[1]
Jumlah = e. akaun[
Dalam [501]:
e. akaun[
Dalam [499]: (res.total/10000).plot(figsize=(12,4), grid = Benar); df[simbol].mean ((axis=1).plot ((figsize=(12,4), grid=True); Keluar [499]:
Dalam [503]:
#hanya menguji simbol dengan peningkatan tertinggi
simbol = senarai ((df.iloc[-1].sort_values()[-3:].index)
e = Pertukaran ((simbol, yuran=0.001, baki_awal=10000)
res_list = []
avg_pct = 1/len (simbol)
untuk baris dalam df[simbol].iterrows():
harga = baris[1]
Jumlah = e. akaun[
Dalam [504]:
e. akaun[
Dalam [505]: (res.total/10000).plot(figsize=(12,4), grid = Benar); df[simbol].mean ((axis=1).plot ((figsize=(12,4), grid=True); Keluar[505]:
Secara umum, 2021 adalah pasaran bull besar untuk mata wang tiruan dan tahun yang sunyi bagi BTC. Nilai pasaran BTC telah jatuh dari 70% pada awal tahun kepada 40% sekarang, yang sudah menjadi tahap terendah dalam sejarah. Oleh itu, keuntungan purata membeli simbol mata wang tiruan dan memegangnya pada tahun lalu jauh lebih tinggi daripada memegang BTC. Menunggu ke hadapan ke 2022, jika anda berfikir bahawa masih ada beberapa ratus kali mata wang yang dilahirkan di pasaran semasa di masa depan, anda boleh dengan berani mempelbagaikan simbol mata wang yang anda pegang dan menunggu dengan sabar. Jika anda sangat optimis tentang beberapa simbol mata wang atau pasaran purata, anda boleh menggunakan strategi putaran untuk mendapatkan keuntungan berlebihan tanpa berfikir. Jika anda bersetuju bahawa perkara akan berkembang ke arah yang bertentangan apabila mereka menjadi melampau, anda boleh memancing BTC untuk keuntungan dan keselamatan yang lebih baik.