測試 alpha 的新因子
我希望更多地了解一旦你有一個因素(或信號)你將如何測試它的 alpha,我假設你可以看到它是否與其他因素的相關性很低,但你將如何測試“好”因素是什麼?
只需考慮幾點
績效評估
經典的夏普比率,還有尾部風險(例如,動量)
Α
回歸投資組合針對一些著名的因子模型的回報。你真的捕捉到了新的東西嗎( $ \to $ 尋找截距的統計和經濟幅度)?
交易成本
買賣差價後會發生什麼?當您嘗試在現實生活中實施時,您的策略會產生高回報嗎?營業額是多少?
樣本外測試
您的策略是否存在於其他資產類別/國際市場?[這可能不適用於某些策略/信號]
時變
您的戰略在商業周期中表現如何?經濟衰退中的回報率更高/更低,還是獨立於市場?
直覺
問問自己為什麼你的策略有效。它只是數據探勘,還是有一些經濟故事(風險)?
新的因子模型
如果您認為您的因子具有很高的解釋力並且應該成為資產定價模型的一部分,您應該執行跨越測試(即,您的因子是否有助於降低測試組合的 alpha)?
線性條件期望模型是 $$ \begin{align} E\left[\vec{y}t \left| \vec{x}{t-1}\right.\right] &= \mathrm{B}^{\top} \vec{x}{t-1},\ \operatorname{VAR}\left(\vec{y}t \left| \vec{x}{t-1}\right.\right) &= \Sigma. \end{align} $$ 這裡 $ \vec{x}{t-1} $ 是信號, $ \vec{y}t $ 是回報,回歸是“多對多”。以觀察信號為條件,Markowitz 投資組合為 $ \Sigma^{-1}\mathrm{B}^{\top}\vec{x}{t-1} $ .
現在來測試是否某些元素 $ \vec{x}_{t-1} $ 是“有用的”,可以查看矩陣的對應列 $ \Sigma^{-1}\mathrm{B}^{\top} $ :如果全為零,則信號的該元素不會改變您的分配。現在對於該直通矩陣的樣本估計,由於抽樣變化,該列實際上不會全為零,您必須執行假設檢驗。這將通過卡方。我在我的新書*《夏普比率:統計與應用》*的第 7.4.2 節中描述瞭如何做到這一點。程式碼有點複雜,它依賴於整個二階矩矩陣的漸近分佈,我建議你通過自動微分來完成。
編輯要在 R 中執行此測試,請修改範常式式碼:
# fake some historical data ndays <- 1500 nfeatures <- 5 nstocks <- 8 set.seed(1234) Features <- matrix(rnorm(ndays*nfeatures),nrow=ndays) Returns <- matrix(rnorm(ndays*nstocks),nrow=ndays) # lets give them fake names colnames(Features) <- letters[1:nfeatures] library(madness) thet <- theta(as.matrix(cbind(Features,Returns))) ithet <- solve(thet) # our hypothesis is that the Feature named 'd' is not pulling its weight conmat <- matrix(0,nrow=nrow(thet),ncol=ncol(thet)) conmat[nfeatures + (1:nstocks),which(colnames(Features) == 'd')] <- 1 # symmetrize conmat <- 0.5 * (conmat + t(conmat)) estval <- madness::matrix.trace(-conmat %*% ithet) estnum <- as.numeric(estval@val) estse <- sqrt(as.numeric(vcov(estval))) # should be approximately normal(0,1) under the null waldstat <- estnum / estse