量化交易回測系列三:多因子Alpha策略最佳因子權重
阿新 • • 發佈:2020-12-08
技術標籤:量化金融DolphinDB分散式時序資料庫量化金融交易回測多因子Alpha策略
在本系列二(多因子Alpha策略回測)中,我們對美股市場的4個量化因子進行了回測。在這裡,我們將使用 DolphinDB database 內建的quadprog函式,對各個因子的權重進行均值方差優化,以決定最佳因子權重。
本系列二提供的指令碼執行完畢後,資料表factorPnl會存有每個因子每天的收益。以下指令碼基於資料表factorPnl。
retMatrix=matrix(select C0, C1, C2, C3 from factorPnl) H = cross(covar, retMatrix, retMatrix) f=-0.25*each(avg, retMatrix) A=-(1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 $4:4) b=-0.1*1 1 1 1 Aeq=matrix([1],[1],[1],[1]) beq=[1] result=quadprog(H, f, A, b, Aeq, beq) result[1]
這段程式碼解決了以下優化問題:
這裡我們的目標函式為最大化(1/4*期望收益 – 1/2*方差),同時保證四個因子的權重之和為1,並且每個因子最小權重為10%。 H是四個因子收益率的方差-協方差矩陣。請注意這裡的H,A和Aeq必須是列數相等的矩陣; f,b和beq必須是向量。A是負的單位矩陣,與b一起使用,保證每個因子權重大於10%。關於quadprog函式細節請參考DolphinDB使用者開發文件quadprog。
result[1]給出基於給定優化條件的最佳因子權重。結果如下:
[0.3612, 0.1, 0.438804, 0.1]
在本系列二提供的指令碼中,
signalNames = `signal_mom`signal_vol`signal_beta`signal_size
因此,最佳權重為36.1%的動量因子,10%的波動率因子,43.9%的beta因子和10%的市值因子。
以上計算使用了所有歷史時期的資料。也可選用最近10年的資料進行計算,只需對以上指令碼的第一行程式碼做如下改動:
retMatrix=matrix(select C0, C1, C2, C3 from factorPnl where date>=2007.01.01)
結果如下:
[0.19277, 0.1, 0.1, 0.60723]
因此,最佳權重為19.3%的動量因子,10%的波動率因子,10%的beta因子和60.7%的市值因子。
由此可見,進行均值方差優化時選用的歷史時期對結果有重要影響。
歡迎訪問官網下載 DolphinDB database
聯絡郵箱:[email protected]