Di bagian terakhir buku ini, kami menerbitkan artikel pertama dalam seri “Membangun Portofolio Aset Kripto yang Kuat dengan Strategi Multi-Faktor” - Fundamental Teoritis, dan ini adalah artikel kedua - Preprocessing Data.
Data perlu diproses sebelum / sesudah perhitungan data faktor, dan sebelum validitas faktor tunggal diuji. Preprocessing data spesifik melibatkan pemrosesan nilai duplikat, outlier / nilai yang hilang / nilai ekstrim, normalisasi, dan frekuensi data.
I. Nilai duplikat
Definisi terkait data:
Key: Menunjukkan indeks unik. misalnya. Untuk data dengan semua tanggal semua token, kuncinya adalah “token_id/contract_address - date”
Nilai: Objek yang diindeks oleh kunci disebut “nilai”.
Mendiagnosis nilai duplikat dimulai dengan memahami seperti apa data “seharusnya”. Biasanya data tersebut berupa:
Data Time Series. Kuncinya adalah “Waktu”. misalnya 5 tahun data harga untuk satu token
Data Cross Section. Kuncinya adalah “individu”. mis.2023.11.01 Data harga semua token di pasar kripto pada hari itu
Panel. Kuncinya adalah kombinasi dari “individu-waktu”. misalnya, data harga semua token dari 01/01/2019 - 01/11/2023 selama empat tahun.
Prinsip: Setelah Anda menentukan indeks (kunci) data, Anda dapat mengetahui pada tingkat apa data tidak boleh memiliki nilai duplikat.
Periksa metode:
PD. DataFrame.duplicated(subset=[key1, key2, …])
Periksa jumlah nilai duplikat: pd. DataFrame.duplicated(subset=[key1, key2, …]). jumlah()
Contoh untuk melihat sampel duplikat: df[df.duplicated(subset=[…])]. sample(), dan kemudian gunakan df.loc untuk memilih semua sampel duplikat yang sesuai dengan indeks
Tambahkan parameter indikator ke fungsi penggabungan horizontal, dan bidang _merge akan dibuat, dan Anda dapat menggunakan dfm[‘_merge’].value_counts() untuk memeriksa jumlah sampel dari sumber yang berbeda setelah penggabungan
Tambahkan parameter validasi untuk memeriksa apakah indeks dalam himpunan data gabungan seperti yang diharapkan (1 banding 1, 1 ke banyak, atau banyak ke banyak, kasus terakhir sebenarnya tidak divalidasi). Jika hasilnya tidak seperti yang diharapkan, kesalahan akan dilaporkan dan eksekusi akan dibatalkan.
2. Pencilan/Nilai yang Hilang/Nilai Ekstrim
Penyebab umum pencilan:
Kasus Ekstrim. Misalnya, jika harga token adalah 0,000001$ atau token dengan nilai pasar hanya $500.000, sedikit perubahan akan memiliki tingkat pengembalian puluhan kali lipat.
Karakteristik Data. Misalnya, jika data harga token diunduh dari 1 Januari 2020, maka secara alami tidak mungkin untuk menghitung data pengembalian pada 1 Januari 2020, karena tidak ada harga penutupan hari sebelumnya.
Kesalahan Data. Penyedia data pasti akan membuat kesalahan, seperti mencatat 12 yuan per token sebagai 1,2 yuan per token.
Prinsip penanganan untuk pencilan dan nilai yang hilang:
Hapus. Pencilan yang tidak dapat diperbaiki atau diperbaiki secara wajar dapat dipertimbangkan untuk dihapus.
Ganti. Ini sering digunakan untuk menangani nilai-nilai ekstrem, seperti Winsorizing atau logaritma (yang tidak umum digunakan).
Mengisi. Untuk nilai yang hilang, Anda juga dapat mempertimbangkan untuk mengisi dengan cara yang masuk akal, metode umum termasuk nilai rata-rata (atau rata-rata bergerak), interpolasi, mengisi 0 df.fillna(0), forward df.fillna(‘ffill’)/backward filling df.fillna(‘bfill’), dll., untuk mempertimbangkan apakah asumsi yang menjadi dasar padding sudah benar.
Pembelajaran mesin harus digunakan dengan hati-hati untuk mengisi ulang dan mengambil risiko bias melihat ke depan
Penanganan nilai ekstrem:
Metode persentil.
Dengan mengatur urutan dari terkecil hingga terbesar, ganti data yang melebihi proporsi minimum dan maksimum dengan data kritis. Untuk data dengan data historis yang melimpah, metode ini relatif kasar dan tidak berlaku, dan menghapus secara paksa proporsi data yang tetap dapat menyebabkan persentase kerugian tertentu.
2.3Σ / Metode Simpangan Baku Tiga Kali Lipat
Standar deviasi σfactor mencerminkan tingkat dispersi distribusi data faktor, yaitu volatilitas. Rentang μ±3×σ digunakan untuk mengidentifikasi dan mengganti pencilan dalam himpunan data, dan sekitar 99,73% data jatuh ke dalam kisaran. Premis dari metode ini adalah bahwa data faktor harus mematuhi distribusi normal, yaitu, X∼N(μ,σ2).
di mana μ=∑ⁿi₌₁⋅Xi/N, σ²=∑ⁿi₌₁=(xi-μ)²/n, rentang nilai faktor yang wajar adalah [μ−3×σ, μ+3×σ].
Buat penyesuaian berikut untuk semua faktor dalam rentang data:
Kerugian dari metode ini adalah bahwa data yang biasa digunakan dalam bidang kuantitatif, seperti harga saham dan harga token, sering menunjukkan lonjakan dan distribusi ekor tebal, yang tidak sesuai dengan asumsi distribusi normal, dan dalam hal ini, sejumlah besar data akan salah diidentifikasi sebagai pencilan dengan menggunakan metode 3σ.
3.绝对值差中位数法(Median Absolute Deviation, MAD)
Metode ini didasarkan pada bias median dan absolut, membuat data yang diproses kurang sensitif terhadap ekstrem atau outlier. Lebih kuat dari metode berdasarkan mean dan standar deviasi.
Median deviasi absolut MAD=median ( ∑ⁿi₌₁(Xi - Xmedian) )
Rentang nilai faktor yang wajar adalah [Xmedian-n×MAD, Xmedian + n×MAD]. Buat penyesuaian berikut untuk semua faktor dalam rentang data:
Menangani kasus nilai ekstrim dari data faktor
kelas Ekstrim (objek):
def init, ini_data):
s.ini_data = ini_data
def three_sigma (s, n = 3):
rata-rata = s.ini_data.mean()
std = s.ini_data.std()
rendah = rata-rata - n*std
tinggi = rata-rata + n*std
mengembalikan np.clip(s.ini_data,low,high)
def mad (s, n = 3):
median = s.ini_data.median()
mad_median = abs(s.ini_data - median).median()
tinggi = median + n * mad_median
rendah = median - n * mad_median
mengembalikan np.clip(s.ini_data, rendah, tinggi)
Kuantil def (s, l = 0,025, h = 0,975):
rendah = s.ini_data.quantile(l)
high = s.ini_data.quantile(h)
mengembalikan np.clip(s.ini_data, rendah, tinggi)
III. Standardisasi
Standarisasi Z-score
Prasyarat: X N (μ, σ)
Karena penggunaan standar deviasi, metode ini sensitif terhadap pencilan dalam data
Mengubah setiap faktor menjadi data dalam interval (0,1) memungkinkan perbandingan data dengan ukuran atau rentang yang berbeda, tetapi tidak mengubah distribusi dalam data dan tidak membuat jumlah 1.
Sensitif terhadap outlier karena pertimbangan minima maksimum
Dimensi Terpadu, yang kondusif untuk membandingkan data dari dimensi yang berbeda.
min(Rankₓ)=0, di mana N adalah jumlah total titik data dalam interval.
Menormalkan data faktor
kelas Scale (objek):
def init, ini_data, tanggal):
s.ini_data = ini_data
s.date = tanggal
def zscore(s):
rata-rata = s.ini_data.mean()
std = s.ini_data.std()
mengembalikan s.ini_data.sub(mean).div(std)
def maxmin (s):
min = s.ini_data.min()
maks = s.ini_data.max()
mengembalikan s.ini_data.sub(min).div(maks - mnt)
def normRank(s):
# Beri peringkat kolom yang ditentukan, method = 'min' berarti bahwa nilai yang sama akan memiliki peringkat yang sama, bukan peringkat rata-rata
peringkat = s.ini_data.rank(metode='min')
kembalikan ranks.div(peringkat.max())
Keempat, frekuensi data
Terkadang data yang diperoleh tidak sesering yang kita butuhkan untuk analisis kita. Misalnya, jika tingkat analisis bulanan dan frekuensi data mentah harian, Anda perlu menggunakan “downsampling”, yaitu, data agregat bulanan.
DOWNSAMPLING
Ini mengacu pada agregasi data dalam koleksi ke dalam deretan data, seperti menggabungkan data harian ke dalam data bulanan. Dalam hal ini, perlu untuk mempertimbangkan karakteristik masing-masing indikator agregat, dan operasi yang biasa adalah:
Nilai pertama / nilai terakhir
Rata-rata / median
*standar deviasi
Upsample
Ini mengacu pada pemisahan baris data menjadi beberapa baris data, seperti data tahunan untuk analisis bulanan. Ini biasanya pengulangan sederhana, dan kadang-kadang perlu untuk mengumpulkan data tahunan secara proporsional setiap bulan.
Falcon (/) adalah generasi baru infrastruktur investasi Web3 yang didasarkan pada model multi-faktor yang membantu pengguna “memilih”, “membeli”, “mengelola”, dan “menjual” aset kripto. Falcon diinkubasi oleh Lucida pada Juni 2022.
Lebih banyak konten tersedia untuk dikunjungi
Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
Membangun Portofolio Aset Kripto yang Kuat dengan Strategi Multi-Faktor: Preprocessing Data
Pembukaan
Di bagian terakhir buku ini, kami menerbitkan artikel pertama dalam seri “Membangun Portofolio Aset Kripto yang Kuat dengan Strategi Multi-Faktor” - Fundamental Teoritis, dan ini adalah artikel kedua - Preprocessing Data.
Data perlu diproses sebelum / sesudah perhitungan data faktor, dan sebelum validitas faktor tunggal diuji. Preprocessing data spesifik melibatkan pemrosesan nilai duplikat, outlier / nilai yang hilang / nilai ekstrim, normalisasi, dan frekuensi data.
I. Nilai duplikat
Definisi terkait data:
Mendiagnosis nilai duplikat dimulai dengan memahami seperti apa data “seharusnya”. Biasanya data tersebut berupa:
Prinsip: Setelah Anda menentukan indeks (kunci) data, Anda dapat mengetahui pada tingkat apa data tidak boleh memiliki nilai duplikat.
Periksa metode:
PD. DataFrame.duplicated(subset=[key1, key2, …])
pd.merge(df1, df2, on=[key1, key2, …], indicator=True, validate=‘1:1’)
2. Pencilan/Nilai yang Hilang/Nilai Ekstrim
Penyebab umum pencilan:
Prinsip penanganan untuk pencilan dan nilai yang hilang:
Pembelajaran mesin harus digunakan dengan hati-hati untuk mengisi ulang dan mengambil risiko bias melihat ke depan
Penanganan nilai ekstrem:
Dengan mengatur urutan dari terkecil hingga terbesar, ganti data yang melebihi proporsi minimum dan maksimum dengan data kritis. Untuk data dengan data historis yang melimpah, metode ini relatif kasar dan tidak berlaku, dan menghapus secara paksa proporsi data yang tetap dapat menyebabkan persentase kerugian tertentu.
2.3Σ / Metode Simpangan Baku Tiga Kali Lipat
Standar deviasi σfactor mencerminkan tingkat dispersi distribusi data faktor, yaitu volatilitas. Rentang μ±3×σ digunakan untuk mengidentifikasi dan mengganti pencilan dalam himpunan data, dan sekitar 99,73% data jatuh ke dalam kisaran. Premis dari metode ini adalah bahwa data faktor harus mematuhi distribusi normal, yaitu, X∼N(μ,σ2).
di mana μ=∑ⁿi₌₁⋅Xi/N, σ²=∑ⁿi₌₁=(xi-μ)²/n, rentang nilai faktor yang wajar adalah [μ−3×σ, μ+3×σ].
Buat penyesuaian berikut untuk semua faktor dalam rentang data:
Kerugian dari metode ini adalah bahwa data yang biasa digunakan dalam bidang kuantitatif, seperti harga saham dan harga token, sering menunjukkan lonjakan dan distribusi ekor tebal, yang tidak sesuai dengan asumsi distribusi normal, dan dalam hal ini, sejumlah besar data akan salah diidentifikasi sebagai pencilan dengan menggunakan metode 3σ.
3.绝对值差中位数法(Median Absolute Deviation, MAD)
Metode ini didasarkan pada bias median dan absolut, membuat data yang diproses kurang sensitif terhadap ekstrem atau outlier. Lebih kuat dari metode berdasarkan mean dan standar deviasi.
Median deviasi absolut MAD=median ( ∑ⁿi₌₁(Xi - Xmedian) )
Rentang nilai faktor yang wajar adalah [Xmedian-n×MAD, Xmedian + n×MAD]. Buat penyesuaian berikut untuk semua faktor dalam rentang data:
Menangani kasus nilai ekstrim dari data faktor
kelas Ekstrim (objek): def init, ini_data): s.ini_data = ini_data
III. Standardisasi
x’i=(x−μ)/σ=(X−mean(X)))/std(X)2.Penskalaan Min-Maks
Mengubah setiap faktor menjadi data dalam interval (0,1) memungkinkan perbandingan data dengan ukuran atau rentang yang berbeda, tetapi tidak mengubah distribusi dalam data dan tidak membuat jumlah 1.
x’i=(xi−min(x))/max(x)-min(x)3.排序百分位(Penskalaan Peringkat)
Ubah fitur data menjadi peringkat mereka, dan ubah peringkat tersebut menjadi skor antara 0 dan 1, biasanya persentil mereka dalam himpunan data. *
Karena peringkat tidak terpengaruh oleh pencilan, metode ini tidak sensitif terhadap pencilan. **
NormRanki=(Peringkatₓi−min(Peringkatₓi))/max(Peringkatₓ)−min(Peringkatₓ)=Peringkatₓi/N
min(Rankₓ)=0, di mana N adalah jumlah total titik data dalam interval.
Menormalkan data faktor
kelas Scale (objek): def init, ini_data, tanggal): s.ini_data = ini_data s.date = tanggal
Keempat, frekuensi data
Terkadang data yang diperoleh tidak sesering yang kita butuhkan untuk analisis kita. Misalnya, jika tingkat analisis bulanan dan frekuensi data mentah harian, Anda perlu menggunakan “downsampling”, yaitu, data agregat bulanan.
DOWNSAMPLING
Ini mengacu pada agregasi data dalam koleksi ke dalam deretan data, seperti menggabungkan data harian ke dalam data bulanan. Dalam hal ini, perlu untuk mempertimbangkan karakteristik masing-masing indikator agregat, dan operasi yang biasa adalah:
Upsample
Ini mengacu pada pemisahan baris data menjadi beberapa baris data, seperti data tahunan untuk analisis bulanan. Ini biasanya pengulangan sederhana, dan kadang-kadang perlu untuk mengumpulkan data tahunan secara proporsional setiap bulan.
Falcon (/) adalah generasi baru infrastruktur investasi Web3 yang didasarkan pada model multi-faktor yang membantu pengguna “memilih”, “membeli”, “mengelola”, dan “menjual” aset kripto. Falcon diinkubasi oleh Lucida pada Juni 2022.
Lebih banyak konten tersedia untuk dikunjungi