🔥 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 保留本次活動的最終解釋權
用多因數策略構建強大的加密資產投資組合 :數據預處理篇
序言
書接上回,我們發佈了《用多因數策略構建強大的加密資產投資組合》系列文章的第一篇 - 理論基礎篇,本篇是第二篇 - 數據預處理篇。
在計算因數數據前/后,以及測試單因數的有效性之前,都需要對相關數據進行處理。 具體的數據預處理涉及重複值、異常值/缺失值/極端值、標準化和數據頻率的處理。
一、重複值
數據相關定義:
診斷重複值的首先需要理解數據「應當」是什麼樣子。 通常資料的形式有:
原則:確定了數據的索引(鍵),就能知道數據應該在什麼層面沒有重複值。
檢查方式:
1.PD。DataFrame.duplicated(子集=[key1, key2, …])
pd.merge(df1, df2, on=[key1, key2, …], indicator=True, validate=‘1:1’)
二、異常值/缺失值/極端值
產生異常值的常見原因:
針對異常值和缺失值處理原則:
機器學習慎用向後填充,有Look-ahead bias的風險
針對極端值的處理方法:
1.百分位法。
通過將順序從小到大排列,將超過最小和最大比例的數據替換為臨界的數據。 對於歷史數據較豐富的數據,該方法相對粗略,不太適用,強行刪除固定比例的數據可能造成一定比例的損失。
2.3σ / 三倍標準差法
標準差 σfactor 體現因數數據分佈的離散程度,即波動性。 利用 μ±3×σ 範圍識別並替換數據集中的異常值,約有99.73% 的數據落入該範圍。 該方法適用前提:因數數據必須服從正態分佈,即 X∼N(μ,σ2)。
其中,μ=∑ⁿᵢ₌₁⋅Xi/N, σ²=∑ⁿᵢ₌₁=(xi-μ)²/n ,因子值的合理范围是[μ−3×σ,μ+3×σ]。
對數據範圍內的所有因數做出如下調整:
該方法不足在於,量化領域常用的數據如股票價格、token價格常呈現尖峰厚尾分佈,並不符合正態分佈的假設,在該情況下採用3σ方法將有大量數據錯誤地被識別為異常值。
3.絕對值差中位數法(Median Absolute Deviation, MAD)
該方法基於中位數和絕對偏差,使處理后的數據對極端值或異常值沒那麼敏感。 比基於均值和標準差的方法更穩健。
絕對偏差值的中位數 MAD=median ( ∑ⁿi₌₁(Xi - Xmedian) )
因數值的合理範圍是[ Xmedian-n×MAD,Xmedian + n×MAD]。 對數據範圍內的所有因數做出如下調整:
處理因數數據極端值情況
class Extreme(object): def init(s, ini_data): s.ini_data = ini_data
定義 three_sigma(s,n=3): 平均值 = s.ini_data.mean() 標準 = s.ini_data.std() 低 = 平均值 - nstd 高 = 平均值 + N標準差 返回 np.clip(s.ini_data,low,high)
def mad(s, n=3): 中位數 = s.ini_data.median() mad_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標準化
x’i=(x−μ)/σ=(X−mean(X))/std(X)2.最大最小值差標準化(Min-Max Scaling)
將每個因數數據轉化為在(0,1) 區間的數據,以便比較不同規模或範圍的數據,但它並不改變數據內部的分佈,也不會使總和變為1。
x’i=(xi−min(x))/max(x)-min(x)3.排序百分位(Rank Scaling)
將數據特徵轉換為它們的排名,並將這些排名轉換為介於0和1之間的分數,通常是它們在數據集中的百分位數。 *
NormRanki=(Rankₓi−min(Rankₓi))/max(Rankₓ)−min(Rankₓ)=Rankₓi/N
其中,min(Rankₓ)=0, N 為區間內數據點的總個數。
標準化因數數據
class Scale(object): def init(s, ini_data,date): s.ini_data = ini_data s.date = 日期
def zscore(s): 平均值 = s.ini_data.mean() 標準 = s.ini_data.std() 返回 s.ini_data.sub(mean).div(std)
def 最大最小值: min = s.ini_data.min() max = 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())
四、數據頻率
有時獲得的數據並非我們分析所需要的頻率。 比如分析的層次為月度,原始數據的頻率為日度,此時就需要用到“下採樣”,即聚合數據為月度。
下採樣
指的是將一個集合里的數據聚合為一行數據,比如日度數據聚合為月度。 此時需要考慮每個被聚合的指標的特性,通常的操作有:
上採樣
指的是將一行數據的數據拆分為多行數據,比如年度數據用在月度分析上。 這種情況一般就是簡單重複即可,有時需要將年度數據按比例歸集於各個月份。
Falcon ( /)是新一代的Web3投資基礎設施,它基於多因數模型,幫助使用者“選”、“買”、“管”、“賣”加密資產。 Falcon在2022年6月由Lucida所孵化。
更多內容可訪問