Kesimpulan dan Strategi Masa Depan 2021
2021 akan berakhir, dan titik panas dari DEFI ke GAMEFI muncul satu demi satu, dan pasar secara keseluruhan masih berada di pasar bull. Melihat ke belakang sekarang, berapa banyak yang Anda hasilkan pada tahun 2021? Peluang apa yang hilang? Apakah ada investasi yang sukses? Baru-baru ini, saya menarik kutipan pasar sejarah tahun lalu dan menemukan strategi profitering yang tidak terduga sederhana, tetapi ini adalah indeks multi-mata uang.
Ada terlalu banyak simbol mata uang yang terdaftar di platform, dan banyak yang ditakdirkan untuk tidak diketahui dan bahkan mungkin ditarik dari perdagangan. Di sini kami memilih simbol mata uang yang telah terdaftar di Binance Perpetual Swap. Mereka umumnya telah diuji dan diakui sebagai mata uang utama, yang relatif aman. Setelah skrining sederhana, beberapa mata uang indeks dihapus, dan 134 mata uang akhirnya bertahan.
Dalam [1]: permintaan impor dari tanggal/waktu tanggal impor,tanggal/waktu waktu impor mengimpor panda sebagai pd import numpy sebagai np mengimpor matplotlib.pyplot sebagai plt % matplotlib inline
Di [144]:
##pasangan perdagangan saat ini
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(simbol_f))
Kemudian, kita mendapatkan harga penutupan harian mereka di tahun lalu, dan kita perhatikan bahwa beberapa simbol mata uang hanya di pasar untuk jangka waktu yang singkat, sehingga data membutuhkan pemrosesan unitization.
Hasil indeks akhir adalah sekitar 12 kali lipat, yaitu, jika Anda membeli 134 simbol mata uang ini rata-rata pada tanggal 1 Januari 2021, keuntungan akhir dari tidak melakukan apa-apa adalah 12 kali lipat, dan diperkirakan bahwa lebih dari 90% orang tidak lebih baik dari indeks rata-rata. Di antara mereka, simbol mata uang dengan penurunan terbesar: ICP turun 93%, DODO turun 85%, dan LINA turun 75%. Peningkatan hampir seratus kali lipat: SOL, FTM, LUNA, MATIC, SAND, AXS. Di antara mereka, AXS telah meningkat 168 kali lipat dan adalah kuda hitam terbesar. Median meningkat 3 kali lipat.
Ini adalah rasio keuntungan yang putus asa. Saya telah bekerja keras dan mencoba semua jenis strategi, dan saya tidak menghasilkan keuntungan sebanyak tahun ketika saya tidak melakukan upaya tambahan. Namun, harus dicatat bahwa beberapa kenaikan rasio terlalu besar, dan jelas menyimpang dari indeks. Jika simbol mata uang ini tidak dipilih pada awal tahun, keuntungan akan dekat dengan median, yang jauh lebih kurang menonjol.
Di [157]:
#fungsi untuk mendapatkan K-line dalam periode apapun
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=
Di [165]: df_all_s.tail() #struktur data Keluar[165]:
Di [174]:
df_all = df_all_s.fillna(metode=
Di [175]: #peningkatan median df_norm.median ((axis=1).plot ((figsize=(12,4), grid=True); Keluar[175]:
Di [168]: #bangkit dan jatuh menyortir print ((df_norm.iloc[-1].round ((2).sort_values().to_dict())
Di [317]: # maksimum penarikan dari harga saat ini dibandingkan dengan harga tertinggi di tahun lalu print ((((1-df_norm.iloc[-1]/df_norm.max()).round ((2).sort_values().to_dict())
Di [177]:
df_all_f = pd.DataFrame ((index=pd.date_range ((start=
Di [208]:
# tidak termasuk simbol baru
df = df_all_s[df_all_s.columns[~df_all_f.iloc[0].isnull() ]
df = df.fillna ((metode=
Di [212]: #dibandingkan dengan BTC (df.mean(axis=1)/df.BTCUSDT).plot ((figsize=(12,4), grid=True); Keluar[212]:
Di [213]: # gunakan mesin 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)
Di [418]:
# Untuk backtest yang lebih akurat, merangkak 1-jam k-line
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=
Backtest memilih semua simbol mata uang yang tercantum pada kontrak Binance Perpetual pada tanggal 1 Januari 2021. Periode K-line adalah 1h, dan parameternya adalah mulai membeli ketika jumlah posisi kurang dari 5% dari rata-rata dan mulai menjual ketika lebih dari 5%. Ketika backtest adalah semua simbol mata uang, keuntungan strategi akhir adalah 7,7 kali lipat. Sangat lebih buruk daripada keuntungan rata-rata 13 kali lipat. Itu juga dalam ekspektasi saya. Lagi pula, simbol mata uang yang meningkat seratus kali terlalu khusus, dan strategi seimbang akan menjualnya semua.
Jika backtest memilih untuk menghapus 10 simbol mata uang dengan kenaikan tertinggi, dan hanya memeriksa simbol mata uang yang relatif biasa, keuntungan akhir adalah 4,8 kali, jauh melebihi kinerja rata-rata 3,4 kali.
Jika hanya 3 simbol mata uang dengan kenaikan tertinggi yang diputar, keuntungan akhir adalah 373 kali, jauh melebihi kinerja rata-rata 160 kali.
Di [494]:
# backtest semua simbol
simbol = daftar ((df.iloc[-1].sort_values() [:].index)
e = Exchange ((simbol, biaya=0,001, initial_balance=10000)
res_list = []
avg_pct = 1/len (simbol)
untuk baris di df[simbol].iterrows():
harga = baris[1]
total = e.account[
Di [495]:
e.account[
Di [496]: # backtest kinerja semua simbol (res.total/10000).plot(figsize=(12,4), grid = Benar); df[simbol].mean ((axis=1).plot ((figsize=(12,4), grid=True); Keluar[496]:
Di [498]:
#mengurangi simbol dengan peningkatan besar
simbol = daftar ((df.iloc[-1].sort_values() [:-10].index)
e = Exchange ((simbol, biaya=0,001, initial_balance=10000)
res_list = []
avg_pct = 1/len (simbol)
untuk baris di df[simbol].iterrows():
harga = baris[1]
total = e.account[
Di [501]:
e.account[
Dalam [499]: (res.total/10000).plot(figsize=(12,4), grid = Benar); df[simbol].mean ((axis=1).plot ((figsize=(12,4), grid=True); Keluar [499]:
Di [503]:
#hanya menguji simbol dengan peningkatan tertinggi
simbol = daftar ((df.iloc[-1].sort_values()[-3:].index)
e = Exchange ((simbol, biaya=0,001, initial_balance=10000)
res_list = []
avg_pct = 1/len (simbol)
untuk baris di df[simbol].iterrows():
harga = baris[1]
total = e.account[
Di [504]:
e.account[
Di [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 pasar bull besar untuk mata uang tiruan dan tahun yang sepi bagi BTC. Nilai pasar BTC telah turun dari 70% pada awal tahun menjadi 40% sekarang, yang sudah menjadi level terendah dalam sejarah. Oleh karena itu, rata-rata keuntungan membeli simbol mata uang tiruan dan menahannya pada tahun lalu jauh lebih tinggi daripada memegang BTC. Menantikan 2022, jika Anda berpikir bahwa masih ada beberapa ratus kali mata uang yang lahir di pasar saat ini di masa depan, Anda dapat dengan berani mendiversifikasi simbol mata uang yang Anda pegang dan menunggu dengan sabar. Jika Anda sangat optimis tentang beberapa simbol mata uang atau pasar rata-rata, Anda dapat menggunakan strategi rotasi untuk mendapatkan keuntungan berlebih tanpa berpikir. Jika Anda setuju bahwa hal-hal akan berkembang ke arah yang berlawanan ketika mereka menjadi ekstrem, Anda dapat memancing dasar BTC untuk keuntungan dan keamanan yang lebih baik.