行業輪動的黃金律:日內動量與隔夜反轉

一、引言

>>> 研究目的

本文參考方正證券《行業輪動的黃金律:日內動量與隔夜反轉》,對研報裏面的結果進行了分析,並對比了傳統動量因子策略和將傳統動量因子拆分後日內漲跌幅因子和隔夜漲跌幅因子的效果。

>>> 研究內容

不同的交易者羣體,會有不同的行爲模式。在交易日內的不同時段,交易者的成分可能存在系統性差異,因而會導向不同的市場行爲特徵,最終形成各式各樣的日內模式(intraday patterns)。按照這個思路,爲了研究動量效應的日內精細規律,本文將行業指數的每日收益率拆解爲日內收益率(今收/今開-1) 和隔夜收益率(今開/昨收-1)。

1)將過去 15 個交易日的日內收益率加總,命名爲日內漲跌幅因子 M0;將過去 15 個交易日的隔夜收益率加總,稱爲隔夜漲跌幅因子 M1。

2)將這兩個效應結合在一起,構建新的行業輪動模型。在具體操作上,我們將 N 個行業指數按照 M0 因子值從低到高分別打 1 分至 N 分,按照 M1 因子值從高到低分別打 1 分至 N 分,將兩項打分相加,得到每個行業的總得分,此因子命名爲黃金律因子 M_gold。

3)行業輪動的回測框架如下:

測試時段: 2006 年 1 月-2017 年 11 月;

樣本空間: 申萬一級行業指數(共 28 個);

調倉方式: 在每個月初,將行業指數按總得分排序,劃分爲五組,分別持有至月末;得分最高的組合爲多頭組合,得分最低的組合爲空頭組合。

>>> 本文所用因子構建細節

根據研究內容,我們列出本文所用的四個因子構建細則:

傳統動量因子:前十五天漲跌幅

日內漲跌幅因子M0:前十五日內收益率加總,其中日內收益率爲今收/今開-1

隔夜漲跌幅因子M1:前十五日隔夜收益率加總,其中隔夜收益率爲今開/昨收-1

黃金律因子M_gold:將日內漲跌幅因子和隔夜漲跌幅因子根據打分法等權加總構成黃金律因子,其中日內漲跌幅因子由於動量效應採取從低到高分別打1-N分,而隔夜漲跌幅因子由於反轉效應由高到底分別打1-N分

>>> 研究結論

1)本文將傳統的動量因子(即前十五日漲跌幅)進行分拆,對交易者的行爲模式進行進一步細化,可以發現交易者存在不同的日內交易模式,這爲構建新的因子提供思路。

2)可以發現行業指數存在“日內動量”與“隔夜反轉”的黃金律:即日內漲跌幅因子 M0(前15天的日內收益率加總) 呈現顯著的動量效應,因子越大的組合能夠帶來更大的收益,而隔夜漲跌幅因子 M1(前十五日隔夜收益率加總)則呈現反轉效應,因子值越小的組合超額收益更加明顯。

3)將兩個因子按照打分法等權結合得到的黃金律因子構建行業輪動組合,可以發現頂部組合年化收益約有 7%的提升,同時最大回撤情況也有明顯改善。對比傳統的動量因子夏普比率 0.68,黃金律因子的夏普比率可達 0.87。

>>> 研究耗時

1)數據準備部分:大約需要 20min,數據採集部分需要注意,目前平臺暫無提供直接的 API 獲取行業數據,以下的內容都是調用了聚源數據庫進行的操作,具體數據源可以參考這個鏈接

https://www.joinquant.com/help/data/data?name=jy#nodeId=17

2)策略構建部分:大約需要 30min,主要對模型進行調整。

二、導入數據

目前平臺暫無提供直接的 API 獲取行業數據,以下的內容都是調用了聚源數據庫進行的操作,具體數據源可以參考這個鏈接https://www.joinquant.com/help/data/data?name=jy#nodeId=17,我們利用 get_SW_index 這個函數提取每一個申萬二級行業指數的數據,利用 index_list 確定提取指標,如收盤價“ClosePrice”等,其中 codelist 爲申萬二級指數的代碼彙總,我們可以利用 get_SW_index 函數提取出交易數據。

設置開始回測的開始時間和結束時間,將 index_list 設置爲收盤價與開盤價,利用 get_SW_index 分別提取出所有申萬二級指數的收盤價和開盤價。

三、黃金律:日內動量+隔夜反轉

不同的交易者羣體,會有不同的行爲模式。在交易日內的不同時段,交易者的成分可能存在系統性差異,因而會導向不同的市場行爲特徵,最終形成各式各樣的日內模式(intraday patterns)。按照這個思路,爲了研究動量效應的日內精細規律,報告將行業指數的每日收益率拆解爲日內收益率(今收/今開-1) 和隔夜收益率(今開/昨收-1)。在本篇報告中,我們將過去 15 個交易日的日內收益率加總,命名爲日內漲跌幅因子 M0;將過去 15 個交易日的隔夜收益率加總,稱爲隔夜漲跌幅因子 M1。

首先我們設置回測的一些參數,即開始回測時間和年份。

下面的 def_alpha 函數是我們根據之前說的因子計算邏輯計算出四個因子,即M-傳統的動量因子,M0-日內漲跌幅因子,M1-隔夜漲跌幅因子,M_gold-M1 和 M2 的複合因子。

同時後續會利用 report 這個函數對比這四個因子的選股效果,report 函數計算得到了年化收益率,最大會回撤等指標,可以對策略收益進行量化衡量,我們同時給出如計算得到的傳統動量因子,如下所示:

在這裏,利用 resample 這個函數,寫出 get_month 這個函數從而根據因子索引得到月末時間點和月初時間點,輸出月末時間點如下所示。

同時在本文中我們利用打分法進行選股,get_alpharank 就是用於做因子排序,輸入因子和日期,我們可以將那一天的排序值輸出。

下面可以對調倉時候的淨值進行計算,如 group1,a1 就是傳統動量因子的分組一的結果。下圖展示了傳統動量因子(以 15 日漲跌幅替代) 在行業輪動上的應用效果,測試對象爲申萬二級行業指數。可以看出五分組淨值曲線之間的區分度不太理想。

我們給出了多空淨值(第 1 組-第 5 組)的走勢,結論是上升趨勢不夠穩定且回撤較大。也就是說,直接基於指數前期 漲跌幅構建的動量輪動策略,效果是難以令人滿意的。

爲了考察因子對行業指數未來收益的預測能力,我們分別按照 M0、M1 由高到低將行業指數排序分成 5 組, 在每個自然月的月末進行調倉。下圖給出了兩種因子下各組合的年化收益率。我們的結論是:日內漲跌幅因子 M0 呈現顯著的動量效應,而隔夜漲跌幅因子 M1 則呈現反轉效應。

四、基於黃金律的行業輪動模型

按照前文所述,行業指數存在“日內動量”與“隔夜反轉”的黃金律,下面我們嘗試將這兩個效應結合在一起,構建新的行業輪動模 型。在具體操作上,我們將 N 個行業指數按照 M0 因子值從低到高分別打 1 分至 N分,按照 M1 因子值從高到低分別打 1 分至 N 分,將兩項打分相加,得到每個行業的總得分。

行業輪動的回測框架如下:

測試時段: 2006 年 1 月-2017 年 11 月;

樣本空間: 申萬一級行業指數(共 28 個);

調倉方式: 在每個月初,將行業指數按總得分排序,劃分爲五組, 分別持有至月末;

得分最高的組合爲多頭組合,得分最低的組合爲空頭組合。

下圖爲各分組的淨值走勢曲線。

五、結論

>>> 研究結論

本篇報告重點討論動量因子的行業輪動應用。基於“日內不同時段交易者行爲模式存在差異”的考慮,我們將傳統動量因子進行拆分,首次提出了“日內動量+隔夜反轉”的行業輪動黃金律。

通過對比傳統動量因子和改進後的動量因子,我們發現明顯的有一些策略業績的提升:從頂部組合來看,傳統動量因子的年化收益率只有 20.37%,但經過改進後的因子有 26.17%。同時從收益波動來看,經過改進後的因子的最大回撤也從 70%降低爲 64%左右。即不管是盈利能力還是盈利穩定性,改進後的因子都超過了傳統的動量因子。

>>> 未來展望

研究結果爲我們提供了一定的思考方向,即對一些傳統因子的改進,可以提升其效果。同時我們在這裏將傳統動量因子的參數默認爲 15 天,這也是一個值得探討的影響要求,參數可能會對因子效果產生一定的影響。同時本篇報告並沒有將換手因素加入,即沒有考慮交易費用所帶來的影響。這都是之後值得研究的問題。


點擊【閱讀原文】,查看完整研究源碼~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章