1. 程式人生 > 其它 >量化交易回測系列三:多因子Alpha策略最佳因子權重

量化交易回測系列三:多因子Alpha策略最佳因子權重

技術標籤:量化金融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]