最近行情還不錯想必大家都賺到零花錢了。對於這波牛市,一些老饕們覺得太早了。雖不是老饕,但我也這樣認為。多個經濟周期底部對準了今明兩年不假,雖然大周期來說差個半年也不算差,但是從各路資金的博弈反應來看,還是熊市操作。所以說這次的大漲是否只是市場過快的修復了對估值與消息的定價,而底還是要磨呢?誰也說不好,不過該敬畏還是要敬畏的,別太囂張。

上上一篇文章實現並討論了WorldQuant 101 Alphas因子。之後呢,我又把國泰君安的191 Alphas因子實現了,接著耗時把能找到的16~18年所有因子類的研報都看了一遍,再加上自己總結的一些東西實現了Sundays Alpha 100+。在這裡就討論一下測試過程與測試結果。

先吐個槽。

國泰191 Alphas的研報《基於短周期價量特徵的多因子選股體系》於2017年6月份公布,其中191個alphas有70個是WorldQuant 101因子原樣照抄或者是小改一下(因為我在實現每個191之前都會去wq101裡面查一下,畢竟不寫重複代碼嘛,也順手加了注釋)。其實天下文章一大抄,借鑒倒也沒事,巨人也要站在巨人的肩膀上。只是在國泰研報也不註明引用wq101,這就有點過分了。券商研報都很少有加引用的習慣,這真不是一個好習慣,可能領導們不喜歡看引用吧。

單因子測試

因子從數值類型上可以分為兩類

  • 數值型,就是普通的那些;
  • 布爾型(Boolean型?啞變數?二值型?名稱無所謂)的因子我喜歡分成兩種: 一種是事件驅動因子(異常檢測類),很久都是0突然出現一個1的那種;另一種是變動類,0和1交替出現。

事件驅動因子的測試方法通常是計算事件出現前後的收益,然後統計得出是否有超額收益的結論。這裡推薦國泰20160527《事件驅動的因子化特徵》。我個人認為事件驅動因子+NLP可以很強,但是沒有深入研究過結合方法。變動類因子的測試方法暫不明確,可以統計N日內出現1的次數,然後用數值型那一套來做;應該也可以用貝葉斯。

按照需求與個人喜好不同,兩種因子混用的處理方法見仁見智。可以連續變數離散化,也可以不做改變直接用樹方法強懟。如果特徵工程能力強,將所有變數one-hot encoding得出一個好結果我也是佩服的。

三個因子集的因子類型統計(數值/二值):

  • wq_alpha:88/13。其中056需要市值數據。共測試87個。
  • gt_alpha:187/4。其中030 FAMA三因子,075、149、181、182需要大盤數據,143的公式看不懂。共測試181個。
  • sd_alpha:124/11。其中42個需要別的數據(自己坑自己)。共測試82個。

數值型因子有效性測試

主流單一因子測試方法也就分層法和IC法,具體方法就不贅述了。不過需要注意的是,通常金工研究認為,測試單一因子的有效性應考慮市場因子、市值因子和行業因子的風險暴露,也即用線性回歸殘差替代因子本身。但我jio著不一定必須用,畢竟之後的因子庫還要降維的。雖然可解釋性上更低了一點,也更不符合金融行業的習慣,但在不深入挖掘某一因子的風險(收益)來源時,此舉加大了工作量,說到底還是看需求。

我就這麼偷懶的使用了沒有剔除風險暴露的因子值進行了月度調倉的分層法測試。分層法判斷標準講究顯著性(TOP20%與BOTTOM20%差值的期望大不大)與穩健性(TOP20%與BOTTOM20%差值的方差小不小),在一條線上可以理解為收益率與回撤。但有很多因子你會發現,尾部的超額收益怎麼都比不上中間兩組。這就要用全市場的幾條線來看了。

下面選擇幾個因子討論一下:

先用著名的低價因子舉例子 Alpha = - close

其實我認為也就17下半年到18年比較差,估計19、20年還是比較強的。市值因子一般認為是CAPM的漏洞,定價時就沒考慮這個;市場對小公司的信息也沒有挖掘得很充分。對於我國的低價因子還有兩點,一是市場監管不到位導致的財務造假,二是註冊制不到位導致的殼資源預期。這些都是制度問題,制度帶來的收益必然隨制度變化而變化。因此當我國退市、註冊兩個制度變化的時候,必然會對小市值策略產生影響,但不至於顛覆。我的愚見,對於一個所謂的好因子,首先應看是不是市值暴露帶來的收益,即有沒有市值味兒。wq_alpha和gt_alpha中,十分顯著且穩定的基本上都有市值暴露。

比如wq_alpha042與gt_alpha120,rank(vwap - close) / rank(vwap + close)

看似是成交量均價高於收盤價的全市場強度的歸一化,實際上還是市值暴露。

討論一下其他還行的

wq_alpha016與gt_alpha083,- rank(covariance(rank(high), rank(volume), 5))

短期價量背離程度的強度。價量背離之前說過了是一個不錯的因子,除了牛市中後期(加速)的時候,基本都有穩定的反向關係,無論參數從5到20。加入rank()函數之後,牛市中後期也不會影響因子的穩定性,反而會得到超額收益,個中緣由比較複雜,不只是歸一化那麼簡單,明白人可以給我講講。所以說,「放量大漲能延續」說的是大盤,而不是個股(甚至大盤也不對)。縮量才是王道!!!

wq_alpha018與gt_alpha054,

- rank( std(abs(close - open), 5) + (close - open) + correlation(close, open, 10))

這個好長不過幸好都是加法,可以拆解來看。

  • std (abs(close - open), 5),波動越大收益越高,這個正向因子顯著性和魯棒性都不錯,但有很明顯的市值味道。
  • close – open就比較厲害了,最小的一組收益最差沒問題,但是收益最大的一組是中間的那組,也算是半個正向因子吧。
  • correlation(close, open, 10)是共振程度,共振程度越小≈背離程度越大,所以是個比較強的反向因子。這一部分把第一項和第二項部分抵消了,所以會差一點。

如果這個因子變成下面這樣就會比較好了。不過會不會改變因子作者的核心邏輯我就不知道了。但是因為去掉了負號所以會反向。

rank(std(abs(close - open), 5) + (close - open) - correlation(close, open, 10))

為什麼舉wq和gt同時出現的呢。其實國泰也有很多好因子,不過對於分層測試來說,市值味太重了,wq的因子市值味沒那麼重。不過需求為王,國泰那篇研報中使用這些因子是用來「預測」短期價格變動的,不是用來月度調倉的。gt_alpha中比較顯著且穩定的因子有50多個(50/181),wq_alpha中有30多個(30/87)。

舉一個sd_alpha裡面的8。說實在的我編的這些因子還湊合吧,有些市值味的和gt_alpha的衝突了。但還是有些技術指標啥的,測試下來結果還算過得去,技術指標調參可見上一篇…

sd_alpha001,max (high - low, abs(high - delay(close, 1)), abs(low - delay(close, 1)))

這個叫真實波幅?真實實體?我以為市值味會重,但卻是個正向指標,收益來源或許是反轉。因為絕對值處理之後無論漲得多還是跌得多的都會分到一組,然而我國反轉效應更強,因此會這樣?

還有一些指標比如adx值,obv的變動率,std的std都比較顯著而穩定。

究竟這兩個因子庫好不好用,真的是仁者見仁智者見智。說到底這只是一坨感知方法,感知方法有沒有用還是要看符不符合邏輯與需求。需求不同--->數據集不同--->特徵工程不同--->模型不同,整個建模過程還要必須符合邏輯。在金融數據中游泳,真實的迷茫鴨。

最後推薦研報中的一些聖經(我看的研報還是比較少的,這只是在我的鼠目寸光下閃著光的研報,海涵,勿噴)

  • 事件因子聖經:20160527-國泰-事件驅動的因子化特徵
  • 價值投資聖經:20170831-東方-質優股量化投資
  • 資金流因子聖經?:20180611-長江-資金流因子全測試
  • 多因子模型組合聖經:20171117-中信-多因子模型的組合優化與風險

P.S. 到現在沒有見一篇寫出來的研報ML、DL、RL用得好的

推薦閱讀:

相关文章