🔥 Gate 廣場活動|#发帖赢Launchpad新币KDK 🔥
KDK|Gate Launchpad 最新一期明星代幣
以前想參與? 先質押 USDT
這次不一樣 👉 發帖就有機會直接拿 KDK!
🎁 Gate 廣場專屬福利:總獎勵 2,000 KDK 等你瓜分
🚀 Launchpad 明星項目,走勢潛力,值得期待 👀
📅 活動時間
2025/12/19 12:00 – 12/30 24:00(UTC+8)
📌 怎麼參與?
在 Gate 廣場發帖(文字、圖文、分析、觀點都行)
內容和 KDK 上線價格預測/KDK 項目看法/Gate Launchpad 機制理解相關
帖子加上任一話題:#发帖赢Launchpad新币KDK 或 #PostToWinLaunchpadKDK
🏆 獎勵設定(共 2,000 KDK)
🥇 第 1 名:400 KDK
🥈 前 5 名:200 KDK / 人(共 1,000 KDK)
🥉 前 15 名:40 KDK / 人(共 600 KDK)
📄 注意事項
內容需原創,拒絕抄襲、洗稿、灌水
獲獎者需完成 Gate 廣場身份認證
獎勵發放時間以官方公告為準
Gate 保留本次活動的最終解釋權
LUCIDA:如何利用多因數策略構建強大的加密資產投資組合(數據預處理篇)
序言
書接上回,我們發佈了《用多因數策略構建強大的加密資產投資組合》系列文章的第一篇 - 理論基礎篇,本篇是第二篇 - 數據預處理篇。
在計算因數數據前/后,以及測試單因數的有效性之前,都需要對相關數據進行處理。 具體的數據預處理涉及重複值、異常值/缺失值/極端值、標準化和數據頻率的處理。
一、重複值
資料相關定義:
診斷重複值的首先需要理解數據「應當」是什麼樣子。 通常資料的形式有:
原則:確定了數據的索引(鍵),就能知道數據應該在什麼層面沒有重複值。
檢查方式:
鈀。DataFrame.duplicated(subset=[鍵 1, 鍵 2, …])
pd.merge(df 1, df 2, on=[鍵 1, 鍵 2, …], 指標=True, validate=‘1: 1’)
二、異常值/缺失值/極端值
產生異常值的常見原因:
針對異常值和缺失值處理原則:
機器學習慎用向後填充,有Look-ahead bias的風險
針對極端值的處理方法:
1.百分位法。
通過將順序從小到大排列,將超過最小和最大比例的數據替換為臨界的數據。 對於歷史數據較豐富的數據,該方法相對粗略,不太適用,強行刪除固定比例的數據可能造成一定比例的損失。
2.3σ / 三倍標準差法
對數據範圍內的所有因數做出如下調整:
該方法不足在於,量化領域常用的數據如股票價格、token 價格常呈現尖峰厚尾分佈,並不符合正態分佈的假設,在該情況下採用 3 σ方法將有大量數據錯誤地被識別為異常值。
3.絕對值差中位數法(Median Absolute Deviation, MAD)
該方法基於中位數和絕對偏差,使處理后的數據對極端值或異常值沒那麼敏感。 比基於均值和標準差的方法更穩健。
處理因數數據極端值情況
class Extreme(object): def __init__(s, this_data): s.ini_data = 這個_data
def three_sigma(s, n= 3): 均值 = .ini_data.mea() 標準 = s.ini_data.std() 低 = 平均值 - n*std 高 = 平均值 + n*std
返回 np.clip(s.ini_data, low, high)
def mad(s, n= 3): 中位數 = s.ini_data.median() 瘋狂_median = abs(s.ini_data - 中位數).median() 高 = 中位數 + n * MAD_median 低 = 中位數 - n * mad_median
返回 np.clip(s.ini_data, low, high)
定義分位數(s, L = 0.025, H = 0.975): 低 = s.ini_data.quantile(l) 高 = s.ini_data.quantile(h) 返回 np.clip(s.ini_data, low, high)
三、標準化
1.Z-score 標準化
2.最大最小值差標準化(Min-Max Scaling)
將每個因數數據轉化為在( 0, 1 ) 區間的數據,以便比較不同規模或範圍的數據,但它並不改變數據內部的分佈,也不會使總和變為 1 。
3.排序百分位(Rank Scaling)
將數據特徵轉換為它們的排名,並將這些排名轉換為介於0和1之間的分數,通常是它們在數據集中的百分位數。 *
標準化因子數據 class Scale(object):
def __init__(s, this_data, date): s.ini_data = 這個_data s.date = 日期 def zscore(s): 均值 = .ini_data.mea() 標準 = s.ini_data.std() 返回 s.ini_data.sub(mean).div(std) def 最大最小值: 最小值 = s.ini_data.min() 最大值 = s.ini_data.max() 返回 s.ini_data.sub(min).div(max - min) def norm排名:
對指定列進行排名,method='min’意味著相同值會有相同的排名,而不是平均排名
排名 = s.ini_data.rank(method=‘min’) 返回 ranks.div(ranks.max())
四、數據頻率
有時獲得的數據並非我們分析所需要的頻率。 比如分析的層次為月度,原始數據的頻率為日度,此時就需要用到“下採樣”,即聚合數據為月度。
下採樣
指的是將一個集合里的數據聚合為一行數據,比如日度數據聚合為月度。 此時需要考慮每個被聚合的指標的特性,通常的操作有:
上採樣
指的是將一行數據的數據拆分為多行數據,比如年度數據用在月度分析上。 這種情況一般就是簡單重複即可,有時需要將年度數據按比例歸集於各個月份。
原文連結