ubiquant九坤量化金牌方案解讀

語言: CN / TW / HK

九坤投資ubiquant是目前國內成立最早、投資管理經驗最為豐富的多策略量化私募基金管理人之一。公司投研和技術團隊核心成員90%+畢業於清華、北大、上海交大、復旦、斯坦福等國內外知名院校,且在華爾街知名對衝基金、全球頭部科技公司、國內知名互聯網企業擁有多年工作經驗。

2022年1月,九坤聯合kaggle舉辦A股股票預測大賽,目的是預測股票未來短期的收益。比賽官網地址: Ubiquant Market Prediction | Kaggle

1)背景介紹

無論你的投資策略如何,金融市場都會出現波動。儘管存在這種差異,但專業投資者仍試圖估計其整體回報。風險和回報因投資類型和其他影響穩定性和波動性的因素而異。為了嘗試預測回報,金融市場交易有許多基於計算機的算法和模型。然而,有了新的技術和方法,數據科學可以提高定量研究人員預測投資回報的能力。

2)數據特點

這場比賽的數據是基於A股真實的交易數據,不過所有數據都做了匿名處理。數據乾淨無缺失,結構清晰且簡單,盡大可能的方便選手進行建模。

  • 時間列表

time_id代表時間,0代表第0天,其它類似。時間雖是匿名的,不過時間0-1219代表2014-2018年。

  • 股票列表

investment_id代表股票ID;比賽數據的股票數量隨着時間推移,股票數量是增多的,其原因是A股市場不斷增加新股。紅框數據的股票比較少,是因為九坤官方提出了部分不想要的股票數據。

雖説investment_id是匿名的,但還是有辦法破解的。利用A股真實交易數據,計算A股股票收益和九坤給出數據的target的相關性,每次匹配選出最相關的映射,剔除後再重新匹配,循環遍歷即可。 Ubiquant Market Prediction | Kaggle

  • 因子特徵

九坤比賽給出了300個匿名的特徵,這些特徵我嘗試去破解,把alpha101因子庫和自己的因子庫和它的特徵去匹配,但是結果很沮喪,一個都沒匹配出來。這些特徵是匿名的,也是九坤對其研究成果的一個保護。

  • target

target也是匿名的,是對短期收益數據的變換,具體變換規則無從知曉。

3)解決方案

這場比賽目前僅有少數隊伍公佈瞭解決方案,詳細解讀下供大家參考。

  • 第一名方案

原始鏈接: Ubiquant Market Prediction | Kaggle

特徵:原始的300匿名因子+100個按照time_id group的mean因子

features = [f'f_{i}' for i in range(300)]
corr = train_df[features[:] + ['target']].corr()['target'].reset_index()
corr['target'] = abs(corr['target'])
corr.sort_values('target', ascending = False, inplace = True)
best_corr = corr.iloc[3:103, 0].to_list()
time_id_mean_features = []
for col in tqdm(best_corr):
   mapper = train_df.groupby(['time_id'])[col].mean().to_dict()
   train_df[f'time_id_{col}'] = train_df['time_id'].map(mapper)
   train_df[f'time_id_{col}'] = train_df[f'time_id_{col}'].astype(np.float16)
   time_id_mean_features.append(f'time_id_{col}')
features += time_id_mean_features

採樣:使用訓練樣本的前2400000行

驗證:kfold和groupkfold

模型:lightgbm和tabnet

  • 第三名方案

原始鏈接: Ubiquant Market Prediction | Kaggle

特徵:300原始特徵

模型:6層transformer,自定義的pearson loss函數,10epoches

數據:特徵維度上用0隨機替代;序列維度上隨機遮掩特徵

  • 第五名方案

原始鏈接: Ubiquant Market Prediction | Kaggle

數據:使用timeid>599的樣本訓練,去除127個target異常的數值

特徵:300原始特徵

模型:4層mlp

驗證:purged cv, 20fold,gap為10

  • 第七名方案

原始鏈接: Ubiquant Market Prediction | Kaggle

特徵:300原始特徵+600維作者基於經驗做的特徵工程,這裏作者表示不可泄露

模型:lightgbm

  • 我們的方案

這場比賽我打了兩個月,花費了不少精力,最後和richard, lafoss大神組隊。最終排名86/2893,不太理想。總體感覺量化比賽比一般表格賽的難度要大,平穩性明顯差很多,更加考驗參賽者的建模能力。

數據:train+supplement

特徵:原始300維特徵

驗證:cpcv和timeseries split方法

模型:transformer、NN模型融合;lgb因為LB效果太差,放棄過早,沒有深入研究。

整理不易,供老師們參考,歡迎一鍵三連~