Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析
米筐科技(RiceQuant)策略研究報告:Barra 結構化風險模型實現(1)——滬深300指數的風格因子暴露度分析
江嘉鍵 1 年前1 概述Barra 結構化風險模型是全球知名的投資組合表現和風險分析工具。最近一段時間,我們米筐科技量化策略研究團隊對該模型進行了系統研究,并在米筐科技公司的策略研究平臺上進行了實現。接下來一段時間,我們將以系列專題的形式展示我們的研究成果。在這一份報告里,我們將對 Barra 結構化模型作簡單介紹,并對因子的構建及暴露度的計算進行探討。為了對因子的有效性作簡單的測試,我們對滬深 300 組合 從 2014 年 5 月到 2016 年 3 月共 23 期的因子暴露度進行了計算和分析。
2?均值-方差模型(Markowitz Mean-Variance Model)
1952 年,馬柯維茨發表了《證券組合選擇》,建立起現代投資組合理論的框架。馬科維茨認為,投資者可以用預期收益率?,以及收益率的標準差??來完全構建和衡量一個投資組合,因此,該模型又稱為均值-方差模型。依據他的觀點,對于一個資產數目為??,且各資產頭寸相同的投資組合,如果已知每一個資產收益率的方差??和資產兩兩之間的協方差??,則我們可以計算這個投資組合的方差:
對于包含??個資產的投資組合,我們需要計算??個協方差,通常以協方差矩陣來表示:
此時,資產的協方差矩陣包含了我們投資組合的一切風險信息。在實際計算中,我們需要通過歷史數據來計算經驗協方差矩陣 (empirical covariance matrix),作為協方差矩陣的估計。然而,使用經驗協方差矩陣存在以下問題:
(1)數據量要求大。要對協方差矩陣實現較為準確的估計,需要保證觀測值數目大于矩陣的維數。考慮以滬深 300 的 300 個成分股作為投資組合,以月度數據計算經驗協方差矩陣,則需要至少 300/12 = 25 年的數據,因此缺乏現實可行性;
(2)依據歷史數據進行協方差估計無法反映投資組合中資產的結構性變化(例如并購);
(3)大量資產兩兩之間的協方差計算,容易出現多重比較謬誤(multiple comparison fallacy)的問題,因而引起資產之間相關性的錯誤判斷。
(4)歷史數據中包含大量的噪音,因此簡單使用資產的協方差矩陣進行預測會造成較大的偏差。
2?結構化風險模型 (Structural Risk Model, SRM)
針對以上用資產的協方差矩陣來衡量投資組合風險所存在的缺陷,國際著名的投資組合表現分析研究機構 MSCI Barra 使用結構化風險模型(也稱多因子模型,以下簡稱 SRM)來衡量投資組合的表現和風險。其核心思想是,我們可以選取一系列公共因子(common factors)和特異因子 (idiosyncratic factors)來描述一個投資組合的風險。常用的公共因子有所屬行業,成長性,市盈率等,特異因子則是和公共因子相對的概念,用于解釋每個資產的收益率中不能用公共因子解釋的部分。基于這個思路,投資組合的收益率??可以用資產的頭寸?,因子暴露(factor exposure)矩陣?,因子收益率??和特異因子(idiosyncratic factors)收益率??的線性組合來表示:
其中,因子暴露??又稱因子載荷(factor loading),用于衡量因子對投資組合收益率的貢獻。當因子為行業因子時,?為取值只有 0 和 1 的啞變量(dummy variable),表示該資產是否屬于該行業;當因子為市盈率等連續變量時,為減少回歸建模中殘差的異方差性,通常要進行剔除離群值和標準化的處理。
另外,SRM 給出了以下的兩個假設:(1)對于同一個資產?,因子收益率和特異收益率不存在線性相關,即?;(2)對于兩個不同的資產??和?,它們的特異收益率也不存在線性相關,即??。基于這兩個假設,我們可以推導出 SRM 的投資組合風險表達式:
其中??為投資組合收益率的標準差,?為因子收益率的協方差矩陣。?和??分別為權重向量和特異因子收益率方差矩陣。
上述兩個表達式即為結構化風險模型的核心。雖然它們的形式上稍顯復雜,但它們的意義是明確的:投資組合的風險可以用因子收益率的協方差矩陣,而非投資組合中資產的收益率的協方差矩陣來描述。從數據處理的角度來看,SRM是一種數據降維技術。因此,它具有數據降維通常的優點:
(1)去除數據中的噪音;
(2)它能夠大大減少計算量,因此也降低了出現多重比較謬誤的可能性。例如,一個包含 500 個資產的投資組合,如果要構建其相關系數矩陣,則需要計算 500*(500-1)/2 = 124,750 個相關系數,如果選用 50 個因子的相關系數來描述,則只需要計算 50*(50-1)/2 = 1225 個相關系數;
(3)因子的統計量通常比資產的統計量有更好的穩定性,因此基于SRM能給出更精確的長期預測;
(4)因子暴露度的調整可以捕捉資產的結構性變化;
(5)因子本身有清晰的經濟學涵義,在對 SRM 的因子進行篩選的過程中,也會加深我們對于投資組合風險來源的認識。
3?公共因子的選擇
在一般的 SRM 實現中,因子被分為兩大類:行業因子和風格因子。參照國家統計局的行業分類方法,我們選定了 19 個行業因子(表1),以取值為 0 或 1 的啞變量(dummy variable)表示。而風格因子則對應一些選擇投資組合常見的主題和標準,包括9個類型:貝塔值(beta),動量(momentum),規模(size),盈利率(earnings yield),波動率(volatility),成長性(growth),價值(value),杠桿(leverage)和流動性(liquidity)。因此在目前的建模中,我們一共使用28個因子。
4?風格因子的實現
行業因子的定義見表1。
表1:依據國家統計局的分類選定的行業因子
接下來我們將介紹如何構建風格因子。在部分風格因子的構建中,我們使用了多個細分因子(一些資料稱其為 atom descriptors)來組成一個因子,以表征該因子不同的特征。例如,在盈利率因子的構建中,我們使用了市盈率,每股經營活動產生的現金流量凈額和每股收益(扣除/稀釋)三個描述變量。如果在線性回歸模型中直接使用這些細分因子,因為它們所屬的類型相同,因此可能會導致有多個細分因子所屬的因子類型對模型參數估計的影響力過大,且容易引起共線性的問題。對此,我們把屬于同一類型的多個因子進行加權組合得到該類型對應的暴露度。而因子的權重可通過對上一期數據進行隨機森林(random forest)回歸分析獲得。
另外我們需要對一些穩定性較差(自相關性較低)的因子(動量和波動率)進行指數加權處理,給予時間較近的交易日數據較大的權重。具體地,我們采用半衰期為30天的指數系數(),此時在風險暴露度矩陣的估計中,近 30 個交易日的數據將會占一半的權重。我們在 200 個交易日處做截斷(更早的交易日的權重非常小,已可忽略不計)。在下面的因子計算中,我們將會統一使用??表示歸一化指數權重向量。
最后,在風格因子的計算中,除了在?RiceQuant?策略研究平臺上調用的變量外,我們還需要定義以下的衍生變量和運算:
衍生變量:
和??分別表示股票和基準組合的 200 個交易日的每日超額收益率時間序列;和?分別表示股票和基準組合中資產的 200 個交易日的每日收益率時間序列;?表示歸一化指數權重;?是貝塔值計算后得到的殘差+截距項。outstanding_shares 表示流通股本,TotalVolumeTraded/outstanding_shares 計算得到的即我們通常說的換手率。
運算:
?表示計算變量的協方差;表示計算變量的方差;??表示計算向量??和向量??的內積;?表示對變量取對數;?表示計算變量的標準差;?表示計算變量均值,和??分別表示取一組數據中的最大值和最小值。
基于以上的討論,我們的風格因子構建所需的變量見表2,具體計算見表3。
表2:RiceQuant?策略研究平臺上調用的變量
表3:風格因子的的定義和計算
5?滬深300的因子暴露度分析
接下來,我們將把滬深300指數和各個風格因子的變化趨勢進行比較分析(圖1和圖2)。在這里,我們首先給出滬深300指數的基本計算公式:
報告期指數=報告期成份股的調整市值/基日成份股的調整市值×1000
其中基日為2004年12月31日。由于可以看出,滬深300指數主要決定于其成分股的市值。基于這個認識,我們對各個風格因子的變化進行分析。
5.1?規模因子,盈利率因子和價值因子
基于風格因子的定義,規模因子的暴露度是直接對市值取對數,而盈利率因子暴露度中的市盈率和市值成正比,因此這兩個因子和滬深300的變化趨勢基本一致(圖1);而對于價值因子的暴露度,其和市值成反比,因此和滬深300的變化呈相反趨勢(圖2)。
5.2?貝塔值因子
貝塔值是衡量一個投資組合對基準組合的敏感性的指標。在這里,雖然我們使用的投資組合是滬深300的300個成分股,但貝塔值并不恒等于1。其原因在于,我們進行每一期因子暴露度計算時,都使用月底的成分股權重,和過去 200 個交易日滬深 300 指數成分股的權重稍有不同。在圖 1 中,我們可以看到當指數出現大幅震蕩時,貝塔值因子暴露度會明顯偏離于 1,即依據每期月末的權重構建的滬深 300 成分股組合,和過去 200 個交易日的滬深 300 指數的敏感性顯著提高或是降低(圖1)。
5.3?動量因子
在動量因子的構建過程中,我們使用了 200 個交易日的加權平均值來展示個股的長期動量,對比滬深 300 指數的和動量因子的變化趨勢,可以發現當市場出現大幅震蕩時,這個因子暴露度的變化呈現出一定的滯后性。2015年下半年市場出現大幅下跌,但2016年2月動量才從正變為負(圖1)。
5.4?波動率因子
波動率因子暴露度的走勢和滬深300指數的走勢基本一致,較好地反映了市場的波動情況(圖1)。
5.5?成長性因子
成長性因子的構建使用了四個變量的同比增長率,和企業的股票市值并沒有直接聯系。有意思的是,滬深300的成長性因子暴露度出現三個峰值,這三個峰值均出現在市場波動較小的階段,可能反映出在市場行情較為平淡時,投資者較為傾向于投資具有較好成長性的股票(圖2)。
5.6?杠桿因子
杠桿因子的計算公式是:(負債合計+總資產)/總資產,和企業的股票市值沒有直接聯系,但其暴露度變化和滬深300指數的變化呈現相反的趨勢。可能反映在牛市當中,杠桿低的企業的股票更受投資者青睞(圖2)。
5.7?流動性因子
流動性因子的走勢和滬深300指數的走勢基本一致,較好地反映了市場的整體交易情況(圖2)。
圖1?滬深300指數變化和風格因子(貝塔值,動量,規模,盈利率和波動率)的對比
圖2?滬深300指數變化和風格因子(成長性,價值,杠桿和流動性)的對比
6?總結
在這一份報告里,我們簡要介紹了Barra 結構化風險模型,并對一系列風格因子進行了構建和分析。我們以滬深 300 成分股作為投資組合進行測試。測試結果表明,大部分因子均較好地反映了滬深 300 指數的變化特征,以及在不同的市場環境下投資者的一些投資傾向。在動量因子的分析中,我們發現因子只能反映市場的長期動量變化,而當市場出現大幅震蕩的行情時,其變化出現了一定的滯后性。所以在下一步的建模中,我們將進一步添加表征短期和中期動量的細分因子,使其能夠捕捉不同情況下的市場變化趨勢。
總結
以上是生活随笔為你收集整理的Barra 结构化风险模型实现(1)——沪深300指数的风格因子暴露度分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一点关于cloze-style问题的简谈
- 下一篇: 谷歌最强NLP模型BERT官方代码来了!