寫在前面

這一篇是基於上篇文章提出的方法的實證部分:

Wu Kevin:策略篇——殘差項的均值回歸?

zhuanlan.zhihu.com
圖標

之前承諾的對於上篇的實證現在才兌現,主要原因是我前期一直忙於秋招,無瑕顧及更新了。目前總算是定下來了,慶幸的是我還在量化這條路上,只不過今後的研究會更加偏向宏觀層面,以後的分享也是偏宏觀一些的量化研究,這篇研究也算是我原創性的job market research之一,特此分享。

這篇文章的一大貢獻是,提供了(實證了)均值回復建模的一個參考方法,對於任何具有均值回復特徵(全局均值回復或局部均值回復)的序列都可以套用。

摘要

在已知股票價格序列本身不平穩的前提下,本文通過線性回歸得到股票收益的「殘差項」後,重新構造了一個新的價格序列。在假設這個價格序列符合平穩特徵,用時間序列方法OU過程對其建模。識別其漸進均值和方差後建立置信區間,當價格偏離置信區間時,對個股持有相反頭寸,構建了一個A股多空組合。回測來看,組合年化Sharpe 達3.22,最大回撤僅3.2%(不考慮手續費)。該方法的面臨的問題是A股做空的限制和達28倍的年化換手率。繼續發現,本文OU過程建模方法優於布林帶方法。

一、 前言

均值回歸廣泛存在於金融市場,均值回復在行為金融學上的解釋為:投資者的過度反應(De Bondt and Thaler 1984)

技術面指標中,布林帶就有應用:當股價偏離上帶或者下帶時,認為股價會回復。布林帶由於簡單(回看定長區間計算均值和標準差)和實用性自1980年提出以來廣受歡迎。

圖1:標普500指數20日移動平均和移動兩倍標準差構造布林帶,來源維基百科

但是布林帶存在的問題是:價格序列並不平穩[1],這導致簡單樣本平均和取標準差的做法缺乏嚴格的統計意義。

構建平穩價格序列的一種方法是對兩個價格序列做差分,對差分序列均值回歸(配對交易):Elliott et al (2005) 應用了OU過程(Ornstein–Uhlenbeck Process),提出了對一組協整的價格序列建模的方法。

股價的非平穩原因之一是市場風格的持續性,自然想到個股的特質收益率(剔除掉市場的解釋後個股剩下的收益,也即「誤差項」)

個股的「誤差項」是本文研究的對象,「誤差項」即為在套利定價理論(arbitrage pricing theory)框架下的個股特質收益率,或者說線性模型假設下的誤差項:

r_j=a_j+b_{ji}F_1+b_{j2}F2+...+b_{jn}F_n+varepsilon_{j}

其中 r_j 為個股 j 的收益, F_j 為橫截面定價因子, varepsilon_t 為我們的研究對象:「誤差項」。

誤差項在線性模型中外生於解釋變數,在個股定價模型中,被稱為「特質收益率」。很自然的,特質收益率對應了價格,設特質收益率的價格為 X_{i,t} ,那麼X_{i,t}=X_{i,t-1}(1+hat{varepsilon}_{i,t}),forall t
e1;X_{i,0}=1

圖2:貴州茅臺(600519.SH)股價凈值和特質收益率凈值

圖2中藍線是貴州茅臺的根據真實收益率繪製的凈值曲線,紅線為根據特質收益率(誤差項)繪製的凈值曲線。可以看出,即使股價自14年開始一直是趨勢效應,特質收益率凈值卻依然很平穩。

Yeo and Papanicolaou (2017)用了多個公共因子對個股進行線性回歸獲得殘差項,利用了OU過程對殘差價格曲線建模,對標普500成分股從2005年到2014年進行擇時並構建組合,回測結果顯示該策略可以獲得年年正收益且年華收益平均近10%。但文章組合優化的參數過多。

本文採用OU過程對特質收益率價格序建模,構建識別序列上下界的類「布林帶」的擇時指標。並在A股市場實證。

二、 模型設定

2.1 OU過程

OU過程的正式表達式為:

dX_t=	heta(mu-X_{t})dt+delta dW_t

其中:

  • mu>0 為隨機變數 X_t 的漸進均值
  • 	heta>0 為隨機變數 X_t 的回歸速度
  • sigma>0 為維納過程增量的標準差
  • W_t 為維納過程

OU過程描述了這樣一個過程:當 X_t 大於 mu ,在不考慮隨機項 W_t 的情況下, dX_{t}<0 ,使得 X_t 在那一瞬間有一個向下的斜率,符合均值回復的直覺。

下面展示三組不同參數下的OU過程的模擬:

圖3:OU過程在不同參數下的模擬

圖3的第一和第二幅圖可以看出:在隨機項的波動率一樣的情況,回歸速度 	heta 越小(子圖(1)),回歸的週期越長。

由於真實世界的價格信息是離散的,所以可以考慮OU過程的離散形式(更重要的原因是離散情況下更簡單):

X_t-X_{t-1}=	heta(mu-X_{t-1})+sigma(W_{t}-W_{t-1})\(3)

(需要注意的是:在離散的情況下 	heta(mu-X_{t-1}) 裡面的 X_t 應該為 X_{t-1} , 因為離散情況下沒有辦法通過求導刻畫「瞬時」狀態,只有通過前後期的差分體現)。

離散的維納過程描述了這樣一個情景: W_1...W_{t} 時間序列的每一個增量 (increment) W_{t}-W_{t-1},forall t 都是獨立同分布的(服從 N(0,s^2) 的正太分佈,本文中 s=1)。

所以(3)式可以化簡為

X_t-X_{t-1}=	heta(mu-X_{t-1})+varepsilon_t\ (4)

(4)式中 X_{t} 由上一期值 X_{t-1} 與均值的偏離度 mu-X_{t-1} ,和回歸速度 	heta 決定。

進一步可以化簡成AR(1)過程:

X_t=alpha_0+alpha_1X_{t-1}+varepsilon_t\(5)

其中 alpha_0=	hetamu,alpha_1=1-	heta,varepsilonsim N(0,sigma^2),forall t

可以證明 X_t 為弱平穩過程, X_tsim N(mu,frac{sigma}{sqrt{2	heta-	heta^2}}) (證明見附錄1)

值得注意的是: 當假設了 varepsilon_t 的正態性後, varepsilon_1,varepsilon_2,...,varepsilon_n 的獨立同分布性質與序列白雜訊(white noise)或者是鞅差分序列(Martingale difference sequence)是等價的,所以獨立同分布在這兒可以放鬆到最弱的白雜訊過程。

2.2 誤差項的構建

誤差項通過回歸以下線性模型得到:

r_{i,t}=alpha +eta_mMKT_t+eta_sSMB_{t}+eta_hHML_{t}+eta_rRMW_t+eta_cCMA_{t}+eta_{u}UMD_{t}+eta_{u}UMD_{t}+eta_iIndustry Return+epsilon_t\(6)

自變數為Fama-French 6因子加一個行業因子一共7個因子。行業因子由於和市場因子存在共線性,遂將行業收益與市場收益回歸得到的殘差項作為正交化的行業收益率。

我們研究的對象是誤差項本身,任何的市場風格都會干擾的誤差項的純度,所以需要儘可能多的因子來控制市場風格。雖然多解釋變數會而增大估計量的方差,但是我認為這種犧牲是有必要的。

(註:以上回歸是時間序列回歸,也可以用截面回歸,對於到底控制多少變數是個值得討論的話題)

三、 數據描述和可視化

3.1 數據來源

個股數據來源於wind數據,樣本包括自2008年1月至2018年8月的全A股約3500支個股日行情數據,中信一級行業日收益率;Fama-French 6因子數據來源於中央財經大學官網[1],國泰安資料庫,因子構建的過程見附錄2

由於行業風格必須要得到控制,我剔除掉不能被中信一級行業歸類的和上市不足一年(日曆日365天)的股票,剩下2629支個股作為樣本池。

圖4為6因子從09年開始的凈值曲線。

圖4:6因子凈值

3.2 構建殘差凈值

殘差項凈值序列 X_t 的構建如下:

1. 對於任意一個時期t,回看125個交易日OLS回歸模型(6)得到參數估計量( hat{alpha},hat{eta}_m,...,hat{eta}_i ),繼而計算「殘差項」:

hat{epsilon}_{i,t}=r_{i,t}-hat{alpha}-hat{eta}	imes MKT_t-...-hat{eta}_iIndustryReturn_t

2. 根據估計得到的特質收益率 hat{epsilon}_{i,t} ,按照累計複利計算 X_{i,t} , X_{i,t}=X_{i,t-1}(1+hat{epsilon}_{i,t})

選擇125個交易日的原因如下:我認為回歸的時間窗口過長(1年)會導致估計量滯後,不能及時反映當前市場變化;時間窗口太短(3個月)導致估計量不穩定,所以考慮半年的時間窗口是合意的

通過計算:平均來看7因子對個股回歸的調整R方達0.4以上,具有較高的解釋力度。

由於誤差項是通過(5)式子OLS回歸得到,在經典的線性模型假設下,(5)式的誤差項是獨立同分布的。把誤差項(特質收益率)做成價格的做法類似於把誤差項累計求和(對數收益率求和為累計收益率),那麼獨立正態分佈的隨機變數的求和序列是隨機遊走的,似乎和均值回復的特徵相矛盾。

但是現實是:截面定價的殘差項(不再是理論上的誤差項)彼此並不是獨立的,而是存在序列相關性,此相關性來源於被解釋變數也就是個股收益率在時間序列上的相關性,所以該相關性導致隨機遊走的說法不成立。在已知特質收益率價格序列不是隨機遊走的情況下,我們不關心特質收益率的任何性質,只需要關注誤差項合成的價格序列 X_t 的性質。

這裡需要引用一篇啟發本文的文章, @石川 在文章次世代均值回歸策略中提到:

「『價格呈現均值回歸』等價於『收益率呈現序列負相關性』。這是一種非常好的、可以被拿來構建優秀策略的特性。 『收益率呈現均值回歸(即收益率圍繞 0 隨機的上下波動)』等價於『價格呈現隨機遊走』。這是投資品最差的一種形態(不幸的是,這也恰恰是實際中的情況),在這種情況下不存在有效的賺錢策略(運氣除外)。」

所以我認為:均值回復策略只能建立在價格序列上。

3.3 檢驗

由於對 X_t 的弱平穩的協方差的推導中,使用了 cov(varepsilon_t,varepsilon_{s})=0,forall t
e s 這個條件,也即 varepsilon_tvarepsilon_s 不存在線性相關性,滿足白雜訊過程。要認為模型是正確的,需要對 hat{varepsilon}_t 進行白雜訊檢驗。當證明瞭線性無關性,在給定正太的假設下,同時證明瞭獨立性

另一個事實是:特質收益與市場收益依然存在相關性,原因如下:

  1. 滾動時序回歸的方法不能完全剔除市場效應(參數估計存在滯後性);
  2. 截面定價模型並不能刻畫被解釋變數和誤差項的時間序列上的自相關性,而自相關性與市場環境相關。

以上原因導致 X_{i,t} 的分佈是和時間相關的,所以對 X_{i,t} 的參數的樣本選取也要隨時間變化,這導致我們的白雜訊檢驗也是發生在局部而不是全局。

於是我在樣本窗口內隨機抽取個股連續252個交易日做Box-ljung白雜訊檢驗,發現全樣本2629支股票中有2049支不能拒絕白雜訊原假設

總的來說:大部分個股特質波動率建模後的 局部來看還是能夠滿足白雜訊過程。一個正式的表達如下:

根據過去估計出來關於 X_{i,t} 的參數:漸進均值 hat{mu} ,回歸速度 hat{	heta} 和隨機項的波動率 hat{sigma} 和時間相關,變為 hat{mu}_t hat{	heta}_t hat{sigma}_t ,並且具有一定的穩定性,可以據此對未來短期內做統計推斷。

3.4 建立置信區間

當序列滿足模型的假設時,便可以建立置信區間用來刻畫序列運動的預期通道。

對每一支個股站在t時刻回看252個交易日滾動做如下的操作:

  1. 採用OLS估計 alpha_{0,t},alpha_{1,t},hat{sigma}_t,並計算漸進均值 hat{mu}_t 和回歸速度 hat{	heta}_that{mu}=frac{hat{alpha}_{0,j}}{1-hat{alpha_{i,t}}};hat{	heta}=1-hat{alpha}_{1,t}
  2. 建立置信區間: hat{mu}_tpm2frac{hat{sigma_t}}{sqrt{2hat{	heta}_t-hat{	heta}_t^2}}

這裡的數字2表示:當一個服從正太分佈的隨機變數偏離原假設期望(可正可負)的2倍(嚴格為1.96,文章實證採用1.96)標準差時,在5%的顯著性水平下拒絕原假設期望。5%的顯著性水平也是在實證計量經濟學公認的顯著性水平,將其固定後不再是一個參數。

下面對比布林帶方法,試圖將置信區間可視化。

布林帶方法構造如下:

  1. 計算252個交易日移動均值和移動標準差(布林帶構造方法)
  2. 建立置信區間: 20日移動平均 pm 2倍20日移動標準差
圖6:OU過程(左)布林帶(右)建立置信區間方法的對比:貴州茅臺(600519.SH)

可以看出:用簡單移動平均的建立的置信區間雖然平穩,但是滯後性太強,對當前價格變動不敏感,而OU過程置信區間克服了這一缺點。

由於模型設定中 alpha_{0,t}>0,alpha_{1,t}<1 , 當 alpha_{1,t}>1hat{	heta}_t<0 ,意味著回歸速度為負)會導致方差識別失敗( frac{hat{sigma}}{sqrt{2hat{	heta}-hat{	heta}^2}} 分母根號內為負),舉個例子:

從圖7中可以看到在12年至13年間價格急升和13年至14年的明顯趨勢價格下,方差識別失敗,說明樣本並不滿足均值回復的特徵,這時對其做均值回復策略的時候需要謹慎。

四、 回測

4.1 開平倉信號

構建這樣的投資組合:每天根據昨天產生的多/空/平信號,在今天的收盤價做多/做空/平倉構建一個投資組合,該投資組合的每支個股開平倉信號產生如下:

  1. 股票的樣本池為全樣本2629支股票按照市值剔除前後10%的股票[1]
  2. 開倉:當特質收益率價格向上偏離置信區間,產生賣空信號;向下偏離,產生買多信號
  3. 平倉:當特質收益率價格回到0.67倍標註差時產生平倉信號

第3步中:0.67倍標準差的含義是:一個服從正態分佈的隨機變數偏離均值0.67倍標註差以內的概率為0.5。

也就是當我們只有50%的把握認為特質收益率凈值偏離均值時,平倉。這裡的0.67倍固定下來不再是參數。

( [1] 為了得到不同參數下的穩健性,往往需要做市值控制。即使控制其他條件不變,剔除市值排前後1%的個股,回測年化夏普比仍可達到2.91。為了前後一致性,選擇前後10%)

4.2 開倉信號限定

由於樣本池為全A股,同時我們需要對組合規模有所掌控。所以在每次開倉時,需要對進入組合的個股進行限制:
  1. 在產生開倉信號的個股中, hat{	heta}_{i,t} 如果排在橫截面上所有個股90以外,不開倉
  2. 1. 3個月內存在長達5個交易日的回歸速度 hat{	heta}_{i,t} 為負的不開倉

第1步中的 hat{	heta}_{i,t} 是回復速度,我認為回復速度越快的,在未來有更大的概率做均值回復;第2步:回憶圖中的置信區間缺失部分,置信區間缺失表面當前特質收益率價格以趨勢為主,均值回復的概率小。

4.3 回測結果

回測設定如下:

  1. 每天按照收盤價計算個股加權平均收益率,每天調整權重使得總多空頭寸持平,多/空內部等權
  2. 分別考慮不算手續費和手續費雙邊0.002(千二),手續費包括開平倉手續費權重調整費用
  3. 計算每天的組合收益率,設定初始投資額為1按照累計複利計算組合凈值

回測結果如下:

圖8:組合凈值和同期滬深300凈值(左為0手續費,右為千二手續費)
表1:組合表現統計量

圖8中的藍線是組合的絕對收益凈值(不是超額),紅線為滬深300從2010-7-28開始的凈值。可以看到構建的組合可以實現年年正回報,回測期8年內(2010-7-28至2018-7-5)跑贏滬深300(超額125.0%)。最大回撤僅3.3%!但是由於策略本身的個股擇時的屬性,導致其年化換手率高。

目前的疑問是:我們建模的對象是特質收益率價格,並不是股價,這種關係是怎麼對應上去的呢?

以為鄂武商A(000501.SZ)為例:

圖9:鄂武商A(000501.SZ)特質收益率價格擇時、開平倉信號對應股價凈值,擇時個股凈值曲線

其中圖9第一幅子圖是特質收益率價格(藍線),均值(中間紅線),置信區間(淺紅色區間),擇時信號產生的持有頭寸(紅色:買;綠色:賣),中間的空白區域為均值回復平倉區域(0.67倍標準差);第二幅子圖是對應到用個股收盤價收益算出來的凈值上的頭寸分佈情況;第三幅圖是根據信號擇時的股票凈值。

這種策略的有效性源於線性模型中誤差項 epsilon_t 與被解釋變數 r_{i,t} 的相關性,我的策略僅僅是抓住了個股本身的特質波動率,所以從個股上來看(鄂武商A,000501.SZ)沒有抓住14年後半年到15年年初的市場收益;從組合上來看,在14年10月份開始的牛市也跑輸了市場。但是beta收益不是任何時候都有的,殘差項的收益卻是時時刻刻都存在的。

4.4截面驗證

從組合凈值曲線可以看出:組合收益最大的是在15年到16年第一季度(泡沫期和泡沐破裂期)

我認為是由於在泡沫期動量效應明顯,在能夠識別動量方向的時候,能夠獲得相比非泡沫期更高的收益,而我們構建的置信區間或多或少地抓住了個股動量的方向。

還可以從截面相關性來進一步驗證,動量期的收益依然來源於均值回復效應。

在因子投資裏IC被用來檢驗橫截面個股因子值和下一期收益的相關性,於是我構建一個因子:這個因子用來刻畫當前特質收益率價格偏離了多少倍標準差[1],偏離的倍數就是因子值。該因子值是有方向性的,比如向上偏離了兩倍標註差,因子值為2;向下偏離了兩倍標註差,因子值為-2。所以預期因子值和下期收益率存在負相關

我藉助Quantopian平臺下的模塊Alphalens來計算IC(Information Coefficient)

圖10:標準差偏離度因子以持有22個交易日的IC值時間序列分佈

圖10描述了當期個股當期因子值和22個交易日後累計收益的相關性(IC值)。可以看到在15年至16年第一季度一個月移動平均IC值穩定為負,且連續為負的持續時間也是其他時間段不具備的。

所以可以認為15年的高收益也是由於殘差項的均值回復導致的,泡沫期和泡沫破裂期的市場環境使得均值回復的效果更加穩定。

五、 對照組合表現

我用布林帶的方法來構建一個對照組合:

控制其他條件不變,置信區間通過簡單計算移動平均和移動樣本標註差來建立。

考慮兩組滾動時間窗口:

  1. 252個交易日。為了和我們的組合識別窗口一致
  2. 22個交易日。這個是普遍認為的布林帶最優窗口期

布林帶官方建議採用2倍標註差構建置信區間,為了和我們的識別方法可比較,仍採用1.96倍標註差作為開倉條件(0.67倍標準差平倉),不考慮手續費;由於布林帶方法不存在 	heta 這個參數,所以關於 	heta 的組合控制方法都不考慮,下面是以上兩組參數的布林帶方法回測表現:

圖11:布林帶方法對照組合凈值和同期滬深300凈值
表2:布林帶方法組合表現統計量

圖11和表2顯示:布林帶方法在兩個參數下能獲得的年化夏普比最大隻有1.50,且最大回撤為4.8%,也比我們的組合高出不少,但年化換手率更低。總的來說布林帶方法構建的組合在表現上遠不如OU過程組合。

六、 穩健性檢查

6.1 參數有哪些?

到目前為止還沒有討論過參數優化的問題,梳理一下所有的參數:

  1. 滾動建立置信區間的天數(252個交易日)
  2. 產生開倉信號時:按照均值回歸速 hat{	heta}_t 度排序選取最大的多少支個股(90支)
  3. 產生信號時:過去三個月內存在累計多少個交易日置信區間識別失敗(均值回歸速度 hat{	heta}_t<0 ),即使產生信號也不開倉(10個交易日)

對於(1)滾動天數的設定上,我認為1年是一個合意的時間區間,所以不再考慮對252這個數字的參數問題。

對於(2)選取前多少支股票這個要根據具體實盤上組合規模的限制,和基金經理認為合適股票數量的股票池來選擇,但是組合規模確實會影響策略收益,是一個參數。

(3)對個股的均值回復「質量」進行把關:過去一段時間特質收益率價格存在趨勢特徵:那麼就不應該開倉,但是判斷的天數卻是一個典型的參數。

所以現在只剩下2個參數:

1. 產生信號時 hat{	heta}_t 從大到小排序取前n支股票中的n;

2. 三個月內k天或以上 hat{	heta}_t<0 不開倉的k

本文不對參數優化做更多的深究。

6.2 網格參數穩健性檢查

我對n和k設一個上下界:n設置為從30到120(間隔為5),k設置為從1到22(間隔為1),穩健性的評價指標選取年化夏普比。

n、k的值從小到大是一個開倉條件逐漸放寬的過程。

下面在保持其他條件不變,計算每一個n,k對應的年化夏普比,並畫出網格圖:

圖12:不同n(30到120)、k(1到22)值對應的回測年化夏普比

圖12可以看出:

1. 當n值大於60的時候,年化夏普對於n的變動不再敏感。具體的區間範圍還有依股票樣本池的容量而定。

2. 年化夏普比在k取1到2時變動十分劇烈,由於k=1意味著過去三個月只要存在一天 ,就不開倉,是一個非常嚴格的約束,反而會損害組合表現。k從1到2年化夏普比陡增是由於邊際約束的放鬆在前期更明顯,所以隨著k逐漸增大,在後期年化夏普比的邊際貢獻逐漸減小,在k=4時為極大值,之後年化夏普比隨著k增大平穩地降低直至收斂。

3. 在網格圖的最右上端的年華夏普比對n和k的變動敏感度幾乎為0。因為右上端n、k數值最大,代表著幾乎不對個股過去一段時間是否是趨勢態和進入樣本容量進行限制,也就是0參數。即便如此,年化夏普比依然接近2.7!

4. 總的來看,夏普比曲面十分平整,我們的組合對參數不敏感,結論穩健!

七、 總結

本文的直覺源於個股特質收益率的外生性質,策略成功的關鍵也在於特質收益率的時間序列上的相關性。我將特質收益率合成新的價格,假設其均值回復並建模,通過並識別漸進均值和漸進標註差建立置信區間。認為當特質收益率價格突破置信區間時,在未來短期會回復。我於是構建一個個股擇時的組合,組合表現上:年化夏普比高達2.90,最大回測僅3.3%。

我發現15年至16年第一季度的組合表現(年化收益47%)遠優於其他時間,我進一步進行截面驗證,通過構造因子並計算IC值發現該時間段因子與收益的截面相關性相比其他時間更加穩定,說明瞭均值回復策略在動量期反而有更好的表現。

我認為策略表現的原因除了均值回復假設成立之外,還要歸功於模型(OU過程)能夠準確地估計序列的置信區間,我進一步採用簡單樣本均值和樣本標註差的方法(布林帶方法)來估計置信區間,在控制其他條件不變的情況下來構建組合,發現布林帶方法組合表現(年化夏普比1.5)遠遜於OU過程建模方法。

組合網格參數方法顯示:組合的夏普比對參數的不敏感,結論穩健。

OU過程建模優於布林帶方法建模

布林帶方法對股價本身簡單樣本均值和樣本標註差的置信區間構建完全不顧及股價的非平穩特性,即使把該方法用在符合均值回復假設的特質收益率價格序列上,其構建方法忽略序列的自相關性導致表現平平。可見OU過程和其他時間序列模型在A股的應用大有可為。

基於大樣本的組合構建是策略穩定的關鍵

如果僅僅從單只個股擇時的角度去做回測,結果有時候往往不如一直持有(buy and hold)。但是在大樣本(我把滿足條件的全A股(2629支個股)納入我們的選股樣本池)和組合管理下(在資金分配方面多空頭寸持平,每日調整),組合收益持續穩定。

複雜的組合控制方法反而會損害組合表現

我也考慮過其他的組合控制方法:包括,在個股產生開倉信號時,該個股的當日滾動回歸的調整R方只有到達一定的閾值才納入開倉股裏;當開倉後超過一個星期特質收益率站在置信區間外提前平倉;個股收益的止損和止盈;當識別的均值和當前特質收益率價格偏差過大不開倉等。但是這些組合控制方法不僅不會提高組合表現,反而會因為「風險控制」降低組合表現。

基於此模型的其他應用場景

我們的擇時策略也可以用於在指數成分股裏擇股擇時,進行指數增強,但是某些指數無法滿足對於大樣本的需求,比如上證50(000016.SH);OU過程建模方法也有想像空間,可應用於任何具有均值回復屬性的序列,比如日內高頻股價序列;正如我在截面驗證提到的一樣,還可以從因子的角度來審視殘差項的均值回復特性,這樣可以避免個股擇時頻繁開平倉導致的高換手率,也是一個值得研究的方向。

參考文獻

Box, G. E. P.; Pierce, D. A. (1970). "Distribution of Residual Autocorrelations in Autoregressive-Integrated Moving Average Time Series Models". Journal of the American Statistical Association. 65: 1509–1526

De Bondt, W. F. M. and R. Thaler (1984). Does the stock market overreact? The Journal of Finance, Vol. 40(3), 793 – 805.

Elliott, R., van der Hoek, J. and Malcolm, W. (2005) 「Pairs Trading」, Quantitative Finance, Vol. 5(3), pp. 271-276.

G. M. Ljung; G. E. P. Box (1978). "On a Measure of a Lack of Fit in Time Series Models". Biometrika. 65 (2): 297–303.

"Python: Ljung-Box Tests". statsmodels.org.

Uhlenbeck, G. E.; Ornstein, L. S. (1930). "On the theory of Brownian Motion". Phys. Rev. 36: 823–841.

Yeo, J. and G. Papanicolaou (2017). Risk control of mean-reversion time in statistical arbitrage.Risk and Decision Analysis, Vol. 6(4), 263 – 290.

Alphalens官網:quantopian.com/posts/al

布林帶維基百科:en.wikipedia.org/wiki/B

中央財經大學金融學院官網下載頁:sf.cufe.edu.cn/kxyj/kyj

附錄:

1. 證明 X_t 為弱平穩過程, X_tsim N(mu,frac{sigma}{sqrt{2	heta-	heta^2}})

證明:

均值:E(X_t) = alpha_0 + alpha_1E(X_{t-1})\ = alpha_0 + alpha_1(alpha_0 + alpha_1alpha_0 + alpha_1^2E(X_{t-2}))\ = ...\ = alpha_0 + alpha_0alpha_1+ alpha_0alpha_1^2 + ... + alpha_1^tE(X_0)\ = alpha_0{frac{1-alpha_1^{t-1}}{1-alpha_1}}\ (alpha_1<1,t
ightarrowinfty,X_0)\ = frac{alpha_0}{1-alpha_1} = mu

方差

Var(X_t) = Var(alpha_0 + alpha_1X_{t-1} + epsilon_t)\ =alpha_1^2Var(X_{t-1}) + sigma^2\ =alpha_1^2(b^2Var(X_{t-2}) + sigma^2) + 	heta^2\ (alpha_1<1,t
ightarrowinfty,X_0)\ =0 + frac{sigma^2}{1-alpha_1^2} = frac{sigma^2}{2	heta-	heta^2}

協方差

Cov(X_t,X_{t-h})=E[X_t-E(X_t)][(X_{t-h} - E(X_{t-h}))]\ =E(X_tX_{t-h}) - mu E(X_t + X_{t-h}) + mu^2\ =E[(alpha_0 + bX_{t+h-1})X_t] - 2mu^2 + mu^2\ =E[(alpha_0 + ab + alpha_1^2X_{t-h-2})X_t] - mu^2\ =...\ =E[(alpha_0 + ab + ab^2 + ab^3 + ... + ab^{h-1} + alpha_1^{h}X_t)X_t] - mu^2\ =E[(afrac{1-alpha_1^h}{1-alpha_1} + alpha_1^hX_t)X_t] - mu^2\ =frac{a}{1-alpha_1}(1-alpha_1)^hE(X_t) + alpha_1^hE(X_2) - mu^2\ =mu^2(1-(1-	heta)^h) + frac{(1-	heta)^h}{2	heta - 	heta^2}sigma^2- mu^2\ =(1-	heta)^h(frac{sigma^2}{2	heta-	heta^2} - mu^2)


推薦閱讀:
相關文章