結構化(多因子)風險模型中,怎樣理解因子暴露度,在實踐中如何得到它?

最近在研讀《Active portfolio management》,該書在第三章介紹的結構化風險模型中,提到了因子暴露度這一概念,並在技術附錄中提到因子暴露度是通過基本面數據得到的,那麼在實踐中,因子暴露度究竟是通過什麼方法、利用哪些數據得到的呢?

附:
r_{n} (t)=sum_{k}{x_{n,k} } (t)cdot b_{k}(t)  +u_{n}(t)
即將收益率進行線性分解。r_{n} (t)為資產n從時刻t到t+1的超額收益率,x_{n,k} (t)為時刻t時,資產n對因子k的暴露度,b_{k}(t) 為因子k從時刻t到t+1的因子收益率,u_{n}(t)為資產n從時刻t到t+1的特異收益率。


你說的是factor loadings吧, 這個東東又叫factor exposures, factor sensitivities, factor betas, asset exposures,可以理解為 standardized regression coefficients.

推薦一篇paper
"Factor-based, Non-parametric Risk Measurement Framework for Hedge Funds and
Fund-of-Funds"
http://faculty.washington.edu/ezivot/econ589/factorRiskMeasurementFoFEJF2007.pdf

BTW, 如果你用這本書:
Active Portfolio Management - A Quantitative Approach for Providing Superior Returns and Controlling Risk
Richard C. Grinold, Ronald N. Kahn

這裡有個study notes:
http://people.brandeis.edu/~yanzp/Study%20Notes/Active%20Portfolio%20Management.pdf


恰好,這兩天在做相關的東西,簡單來說一下。

結構化風險模型在APM這本書說的比較清晰了,也可以看一下Barra的USE3的handbook,都對這一類模型進行了比較細緻地講解,題主問的因子暴露度實際上就是排第一答案說的factor loading,即通常意義上的因子載荷,包括基本面數據,行情數據,財務數據得到的相關因子數據,將這些因子數據去異標準化之後,再根據當期的個股收益就可以截面回歸得到對應的因子收益率,這樣就將個股的收益分解為了其對應的因子收益乘以相應因子載荷加上其個股特質收益。

對於對沖模型來講,由於對於所有個股來講,因子收益都是相同的,區別在於不同的因子載荷(或者直接說因子暴露),所以將組合的所有個股的風格因子載荷得到之後,即可以將其對應於對沖標的Benchmark的因子載荷,從而通過將組合載荷和對沖載荷的difference的大小來暴露你期望的風險,控制你不需要的風險。


既然已經了解了結構化多因子模型,那麼想必知道組合管理的一部聖經之作:《主動投資組合管理:創造高收益並控制風險的量化投資方法》

pdf下載地址為

主動投資組合管理 創造高收益並控制風險的量化投資方法(原書第2版)美) 李騰;楊柯敏.pdf - 下載 - 人大經濟論壇

在這本書中,介紹了風險結構模型的來龍去脈。風險結構模型主要來自於APT。建模如下:

從這個模型可以看出,該模型是用多個因子去解釋股票收益率。直接採用多元回歸模型。X是組合的因子暴露度,b表示因子的收益率。因子暴露度是各個股票在各個因子上的實際數據,只是需要去極值、標準化處理。在實踐中怎樣獲取參考下圖:

這裡是以美國股票數據舉例,成長性、規模、ROE、Beta、債券beta就是用來解釋股票收益率的幾個因子。那麼,這幾個因子的實際數據即為股票的因子暴露度(需要去極值、標準化處理)。獲取因子暴露度以後,就可以進行橫截面回歸獲取各個因子的因子收益率。

最後,順便提一句,BigQuant平台即將上線組合管理工具,Barra 風險結構模型直接可以在BigQuant - 你的人工智慧量化平台 上菜單化操作實現。


其實就是一個權重,一個係數,或者你可以認為是一種beta


最近一直在研究因子暴露的計算問題,確實是有點困惑。目前知道有兩種因子暴露演算法,還請各位老師指正@Steven Li @朱聲堯 @李騰 @思凱 @黑貓Q形態 @eric lou @guiping sun @紅領巾 @江嘉鍵 @陳不機智

結構化風險模型中的因子載荷 (factor loadings), 又叫因子暴露(factor exposures)。根據結構化風險模型,共同因子包括行業因子與風格因子,行業因子載荷不是0就是1,代表是否屬於這個行業。

這裡主要研究的是風格因子(style factor)的載荷。風格因子有規模、波動率、流動性、槓桿等等基本面,技術面指標。這些因子的載荷組成了載荷矩陣,載荷矩陣用於估算因子收益率。如圖所示:

所以想要計算因子收益率必須要求出載荷矩陣。這裡要注意時間結構,因子載荷被認為是在時刻t(一個時刻的開始)發生的,而資產收益、因子收益都發生在時刻 t 到時刻 t+1 的整個時期內。

對於因子暴露的演算法,這個問題的幾位答主認為:

因子載荷就是標準化後的基本面、技術面指標

但是,對此我持懷疑態度。

這一觀點的主要根據來源是《積極型投資組合管理:控制風險獲取超額收益的數量方法(第二版)》一書中:(這裡截圖自08年清華大學出版社版本)

39頁:

44頁:

在看了@黃辰 老師的答案後,我打開答案中的網頁找到倍發科技的研究網頁:倍發科技

其中研究報告《 倍發科技A股基本面風險模型 》第5頁:

模型計算方法
倍發科技 A 股基本面模型採用 Fama-Macbeth 方法。針對模型輸入樣本中的每一隻股票, 模型將使用過去 3 年(36 個月)的數據進行時間序列回歸分析, 估計每隻股票的因子係數(或因子暴露程度)。然後基於估算出來的每隻股票的因子係數再做橫截面回歸分析, 計算出當期各個風險因子的收益率。

結合之前讀過國泰君安的研報 《基於組合權重優化的風格中性多因子選股策略》

我比較傾向這種演算法。其中的 Fama-MacBeth 方法主要步驟是:

1. Time series regression of retruns on factors to get beta"s
2. Cross-sectional regression of returns on betas to get risk premium, this is done repeatedly for all the periods, thus you will get a time series of cross sectional regression coefficient.
3. The final estimates are just the mean of the time series of the cross-sectional estimates from step2, the standard deviation is just the time series standard deviation of those estimates.

舉例來說就是,假設1隻股票的收益有9個風格因子來解釋,將風格因子標準化後,選取過去36個月的數據逐月做時間序列回歸分析,得到9×36個回歸係數,每一個因子的36個回歸係數作平均,得到的這個數就是因子載荷。接下來用算出來的9個因子的載荷對當期的收益率作橫截面回歸分析,用廣義最小二乘就可得到因子的收益率。


#####################

關於Barra的文檔我看過《Barra_risk_model_handbook》與《The Barra China Equity Model (CNE5) 》,關於載荷矩陣的描述都是語焉不詳或者一筆帶過:

《Barra risk model handbook》中:

第7頁: 解釋什麼是Exposures時只是說Barra會在月末更新equity 的exposures,而並沒有介紹是如何計算

By observing patterns over time, common factors can be identified and exposures to these factors can be determined. These factors are based on market or fundamental data.

The model』s profile of a security responds immediately to any change in the company』s structure or the market』s behavior. Barra updates the security exposures of most fixed-income models on a daily basis and the security exposures of most equity models on a monthly basis, using the last trading day』s information to compute exposures for the coming month.」

第21頁:Model Estimation Overview中對載荷矩陣的計算一筆帶過

Along with risk index exposures, industry allocations are determined for each security.

第27頁:Factor Return Estimation中只是說前文已經定義過

The previous steps have defined the exposures of each asset to the factors at the beginning of every period in the estimation window.

另外在第25頁,講到因子標準化的時候,完全沒有提標準化過的指標就是因子載荷

也因此我對幾位答主的觀點持懷疑態度。

《The Barra China Equity Model (CNE5) 》中全部是文字與圖表的描述,只在附錄中涉及到了各基本面與技術面指標的計算,也沒有闡明載荷因子的計算方法。

如果有人看到Barra文檔有關於因子暴露計算方法的詳細闡述,請一定告知我!

#####################

最後,想請教各位大神到底應該怎樣計算因子暴露?


怎麼回事,這麼簡單的一個概念怎麼一個個都答非所問?因子暴露就是你的組合在某個因子上的加權(組合中每個股票的權)之和就是所謂因子暴露嘛。顧名思義就是遮不住的,暴露出來的部分。因為這個東西有可能為0的,因為因子是必須要標準化的。對沖模型中我們看的暴露是要減去基準(例如滬深300指數)的,又曰,主動因子暴露,是你主動拿出來的,基準遮不住,自己要露出來的部分。露得多了有傷風化,碰到極端分子(極端行情),就會被X得媽都不認識了。。。


以下解釋儘可能讓讀者通俗易懂。若顯不專業,請包涵,也歡迎指正。

先來理解什麼是因子暴露度。我們從最簡單的CAPM模型講起:

R_i=eta_iR_m+varepsilon_i

這裡, R_i 是股票i的收益, R_m 是市場收益, varepsilon_i 是股票 i 相對於市場的超額收益,而 eta_i 是股票 i 相對於市場收益的暴露。這裡的暴露可以理解為股票 i 相對於市場的槓桿。比如, eta_m=1.2 , 我們可以理解為,當市場收益增加1%的時候,股票 i 的收益增加1.2倍,即1.2%。當然,這裡的槓桿和我們人為的加槓桿不一樣,這是由股票內在的風險相對於市場的風險計算而得,我們可以把它看做一個天然的槓桿。

現在我們透過現象看本質。首先在講暴露的時候,我們要定義一個空間(Universe)。我們在用CAPM模型的時候,往往是直接使用公式,卻忽視了背後的一些假設。我們之所以用 R_m 去表示 R_i ,是因為兩者在同一個空間,只不過 R_m 是這個空間全體的代表的某種表示。舉個例子,如果你要研究一個食品類的股票,你可以選擇用滬深300,這時候你看的空間是整個市場。你也可以用食品行業的指數,這時候你的空間就是這個特定行業。但是,如果你的空間鎖定在特定行業,你就不能用金融行業的指數,這樣你很可能得到暴露為0,結果沒有意義。所以在理解暴露之前,先要有空間(Universe)的概念。

下面我們來看多因子模型

R_i=eta_{1,i} X_{1,i}+eta_{2,i} X_{2,i}+...eta_{n,i} X_{n,i}+varepsilon_i

CAPM模型其實是多因子模型的特例,表現為它只有一個因子,且這個因子被定義為市場收益。如果你能找到更多的解釋因子,你就可以構造一個如上所示的多因子模型。和CAPM模型相似,這裡 X_{j,i} 是股票 i 在因子 j 上的收益,而 eta_{j,i} 是股票 i 在因子 j 上的暴露 (回憶天然槓桿的概念)。下面用實例來進行剖析,並且來講怎麼計算。假設,一個股票的解釋因子有EP和BP。EP和BP是市盈率和市凈率的倒數。那麼上面的等式可表示為:

R_i=eta_{1,i}EP_i+eta_{2,i}BP_i+varepsilon_i

計算暴露的時候,我們要先計算股票 i 本身的因子值,即EP和BP的值。接下來,請回憶空間的概念。在構建多因子模型之前,很重要的一步是確定股票池。這裡股票池就是你的投資空間。所以當計算完個股的EP和BP值之後,我們要相對整個股票池的EP和BP,分別進行標準化處理(下面等式以EP為例):

eta_{1,i}=EP_{std}=frac{EP_i-ar{EP}}{std(EP)}

這裡 ar{EP} 是在股票池中所有股票的EP的平均數, std(EP) 是在股票池中所有股票的EP的標準差。通過標準化公式,你可以看到暴露度其實是股票 i 在該因子上相對於選定空間的一種量級體現。這時候可能有的專業人員會說,這樣的因子暴露計算方法太簡單了,除了標準化,還要進行截尾(truncate)和中性化(neutralization)等處理。但其實,得到暴露度的過程中,標準化是必要的。截尾和中性化等處理是為了得到一個更穩定,且加入因子間相關性考慮的因子暴露度,換句話說,是為之後因子的使用,進行優化處理。

另外,以筆者個人經驗,很多對多因子暴露度理解不是很清晰的朋友,可能是對時間序列回歸(Time series regression)和橫截面回歸(cross sectional regression)的概念不太清晰。因為在多因子模型搭建中,計算暴露度是橫截面回歸,這裡和CAPM這樣常用的時間序列回歸模型找暴露度,理解上不一樣。如在這方面有困惑,歡迎提問。


Nah..

他問的不是"怎麼理解因子暴露度」嗎,你們回答的好像是「怎麼得到因子暴露度」。首先你要搞清楚你的RHS Variable是什麼,是因子收益率,換句話講是一個Portfolio Return。所以對Regression Coefficient(也就是你的x_{n,k}(t))最淺顯的理解是,你的LHS Return有多少是來自於某個Portfolio k。

但我們真正關心的不是Portfolio per se,而是這個Portfolio代表的Underlying Risk。換句話講,你的RHS Portfolio可以定義為所有Company Name以A開頭,B開頭..Z開頭。你也可以去做一個這樣的Regression也有可能有Significant Coefficients。But who cares?

所以你選的Portfolio往往帶有一定的特徵,而且你或許可以理解這些特徵表象下的所帶有的Risk。比如,你Small Company, High Leverage Company, High RD Company..etc。你認為你選擇的這些Portfolio各自代表了某些風險,x_{n,k}(t)這個時候的解釋實際上是你所建立的LHS Portfolio受到來自第k種RHS Portfolio所代表的Risk的影響程度(exposure)。

BTW, 把Factor Model翻譯成因子是很蛋疼的一件事。


樓上的答案都解釋了什麼是因子暴露度,但好像都沒介紹怎麼計算這些因子暴露度。個人覺得,僅僅把他認為是因子的權重,不夠深入。我的理解是:

一個因子的因子暴露度,是你在這個模型中考慮納入該因子時所承擔的風險。你認為這個因子是有效的、是能帶來收益的,那麼你必然要承擔這個期望的風險。


這說得有點抽象了,我們來舉個例子:

假設此時,你認為一隻股票(S)的因子A對下一期(t+1)的股票收益率有影響。於是你將這個因子加到收益率預測的模型中,並通過某種方法(方法的介紹見下文),計算得到該期的因子暴露度為0.5(假設),假設此時因子A的值為0.3。這什麼意思呢?意思就是你認為在其他因子對股票收益率沒有影響的情況下(也就是如果下一期股票的收益率只受該因子A的影響),該股票下一期的收益率就是0.3*0.5=0.15。如果如果如果如果你的想法錯了,這個因子在下一期一點用都沒有。假設實際上其他因子確實不影響股票收益率,那麼此時股票收益率為0%,你將承擔那高估15%的後果。(誇張點舉個例子:你跟客戶打包票說你下個月買的100萬股票一定會漲15%,不漲我就賠給你,那你就準備好掏那15萬吧)
這就是我所理解的因子暴露度,你想要因子暴露出多大程度的收益,暴露出多大的風險,他們其實是等價的。


至於怎麼計算因子暴露度,其實各家有各家的方法,由於大家能選擇的因子基本都那個範圍,選股模型的優劣很大程度取決於因子的篩選和因子暴露度的設置。方法之間孰優孰劣還是通過回測結果來比較,然而並不能保證未來是否有效。我這裡簡單的列出幾個常見的吧。

1. IC加權法:這個方法其實是目前各大量化部門比較常用的。最簡單的是對各個因子在橫截面上和因子收益率計算rank IC,然後前N期的因子值和前N-1期的因子收益率做回歸計算得到beta。用各個因子的rank IC對對應beta做加權得到各個因子的因子暴露度。現在還加入了各種花樣,例如引入半衰期的概念,認為因子IC對因子暴露度的影響應該像半衰期一樣遞減;也有將多期IC平均之後再和beta相乘,也有用像計算EMA的辦法來計算IC,也有將IC的變化和累加的IC圖做比較之後判斷因子是否實效來計算權重。

2. 歷史經驗法:有人用前N期的因子值和股票收益率數據做OLS來計算因子暴露度。也有人直接簡單粗暴地主觀設置固定的因子暴露度(我真的在研報里見過。。)


barra模型中關於風險因子的穩定性檢驗時,需要計算相鄰時間的相關係數,裡面用到了回歸權重,這個回歸權重具體指什麼?怎麼計算?


這裡面有相關的介紹
基於IC的多因子模型
Smart Beta 投資方法 - 量化哥 - 知乎專欄


贊!還是好好寫程序吧(? ??_??)?


應該去看統計里的 Factor Analysis吧


中文版APM,page 165 結構化模型1中的情況。因子暴露就是例如基本面、宏觀或其他因子類別,page 157 有個例子。


推薦閱讀:

程序狗沒有金融學位申請Quant職位會遇到瓶頸么?

TAG:寬客Quant | 金融風險管理師FRM | 風險管理 | 量化交易 | BARRA模型 |