概述
本文將分享一些我在實(shí)際生產(chǎn)中使用風(fēng)控模型,并結(jié)合R語(yǔ)言代碼對(duì)模型構(gòu)建過(guò)程一一庖丁解牛。我們?cè)趯?shí)際構(gòu)建風(fēng)控模型時(shí),結(jié)合自身業(yè)務(wù)特點(diǎn),我們也基于多因子模型實(shí)現(xiàn)了一套行之有效的基金運(yùn)營(yíng)的風(fēng)控系統(tǒng)。
風(fēng)控系統(tǒng)架構(gòu)
簡(jiǎn)單分析
風(fēng)控系統(tǒng)中的簡(jiǎn)單分析是指針對(duì)策略持倉(cāng)的收益和風(fēng)險(xiǎn)做簡(jiǎn)單計(jì)算,不涉及財(cái)務(wù)或行業(yè)數(shù)據(jù)。我們也選用了常見(jiàn)的幾個(gè)簡(jiǎn)單分析指標(biāo):
1. 夏普比率
表示每承受一單位總風(fēng)險(xiǎn),會(huì)產(chǎn)生多少的超額回報(bào)酬。具體計(jì)算方法為 策略年化收益率?回測(cè)起始交易日的無(wú)風(fēng)險(xiǎn)利率策略年化收益率?回測(cè)起始交易日的無(wú)風(fēng)險(xiǎn)利率 / 策略收益波動(dòng)率 。
calcSharpeRatio <- function(neatMat){
annualYieldRate <- calcAnnualYieldRate(neatMat)
annualVolatility <- calcAnnualVolatility(neatMat)
annualYieldRate / annualVolatility
}
2. 年化波動(dòng)率
用來(lái)測(cè)量資產(chǎn)的風(fēng)險(xiǎn)性。具體計(jì)算方法為 策略年化收益的標(biāo)準(zhǔn)差x $\sqrt{252}$。波動(dòng)越大代表投資組合風(fēng)險(xiǎn)越高。(年化波動(dòng)率的計(jì)算時(shí)間為252個(gè)交易日)
calcAnnualVolatility <- function(neatMat){
dailyReturn <- neatMat[-1,"compoundReturn"] / neatMat[-nrow(neatMat),"compoundReturn"] - 1
sd(dailyReturn) * sqrt(252)
}
3. 累計(jì)收益率
表示從投資開(kāi)始的預(yù)期收益率。具體計(jì)算方式為 截至分析日的資產(chǎn)凈值/初值(初值為1)。
calcCompoundYieldReturn <- function(neatMat){
neatMat[nrow(neatMat),"compoundReturn"] / neatMat[1,"compoundReturn"] - 1
}
4. 最大回撤
描述策略可能出現(xiàn)的最糟糕的情況。具體計(jì)算方法為 min(策略當(dāng)日凈值/當(dāng)日之前賬戶(hù)最高價(jià)值-1)
calcMaxDrawbackSeries <- function(neatMat){
maxDrawback <- matrix(0,nrow(neatMat),ncol=1)
for(i in 1:nrow(neatMat)){
if(neatMat[i,2]<max(neatMat[1:i,2])){
maxDrawback[i] <- neatMat[i,2] / max(neatMat[1:i,2]) - 1
}
}
data.frame(date=neatMat[,1],maxDrawback=maxDrawback)
}
calcMaxDrawback <- function(neatMat){
MaxDrawbackSeries <- calcMaxDrawbackSeries(neatMat)
min(MaxDrawbackSeries$maxDrawback)
}
5. 年化收益率
表示投資期限為一年的預(yù)期收益率。具體計(jì)算方式為 回測(cè)期間策略每日收益率總和 / 回測(cè)交易日數(shù)量 × 252。
calcAnnualYieldRate <- function(neatMat){
runTime <- as.numeric(difftime(neatMat[nrow(neatMat),"date"],neatMat[1,"date"]),unit="days")
compoundYieldRate <- (neatMat[nrow(neatMat),"compoundReturn"]/neatMat[1,"compoundReturn"]) - 1
compoundYieldRate / runTime * 252
}
復(fù)雜分析
復(fù)雜分析主要是采用一些財(cái)務(wù)數(shù)據(jù)、行業(yè)數(shù)據(jù)構(gòu)建一些指標(biāo)和模型對(duì)策略持倉(cāng)做進(jìn)一步細(xì)致的分析。我們?cè)趯?shí)際生產(chǎn)中主要分析以下幾個(gè)方面:
1. 凈敞口暴露分析(現(xiàn)金)
凈敞口 = (股票多頭市值+股指期貨多頭市值-股指期貨空頭市值)/總資產(chǎn)。若采用完全對(duì)沖策略時(shí),凈敞口非常小,一般在5%附近。但是,當(dāng)股指期貨基差較大,或投資管理人采取放開(kāi)部分敞口策略時(shí),凈敞口會(huì)較大。
2. 風(fēng)險(xiǎn)因子敞口暴露分析
用10個(gè)風(fēng)險(xiǎn)因子描述市場(chǎng)價(jià)格波動(dòng)風(fēng)險(xiǎn)的主要來(lái)源,一般的,股票持倉(cāng)采用與基準(zhǔn)對(duì)應(yīng)的股指期貨進(jìn)行對(duì)沖,因此相對(duì)基準(zhǔn)的風(fēng)險(xiǎn)因子敞口越大,風(fēng)險(xiǎn)越高。一般風(fēng)險(xiǎn)因子的敞口用標(biāo)準(zhǔn)差的倍數(shù)描述,持倉(cāng)組合數(shù)量較多、控制嚴(yán)格的組合的風(fēng)險(xiǎn)因子敞口通常在0.5個(gè)標(biāo)準(zhǔn)差左右。完全無(wú)風(fēng)險(xiǎn)對(duì)沖會(huì)影響整體長(zhǎng)期收益,因子投資管理人會(huì)根據(jù)其對(duì)市場(chǎng)的理解對(duì)風(fēng)險(xiǎn)因子敞口進(jìn)行放開(kāi)限制
3. 股票相對(duì)滬深300的行業(yè)偏差分析
由于屬于同行業(yè)的股票的跌漲往往具有一定的一致性,國(guó)內(nèi)股票市場(chǎng)具有行業(yè)輪動(dòng)的特點(diǎn),因此股票持倉(cāng)與其對(duì)沖使用的基準(zhǔn)的行業(yè)偏差是影響對(duì)沖效果的重要因素。一般的,行業(yè)偏差越大,對(duì)沖風(fēng)險(xiǎn)越大。
4. 資產(chǎn)配置比例分析
總資產(chǎn)中,現(xiàn)金、股票、期貨的資產(chǎn)配比,是資產(chǎn)配置的直觀(guān)體現(xiàn)。
5. 證券賬戶(hù)收益歸因分析
分析股票的超額收益、主動(dòng)管理收益、行業(yè)偏差收益、風(fēng)險(xiǎn)暴露收益、現(xiàn)金配置收益等。
6. 期貨賬戶(hù)保證金占用情況分析
由于期貨為當(dāng)日無(wú)負(fù)債結(jié)算、采用保證金制度,一般情況下期貨保證金占用比例為期貨資金賬戶(hù)的60%~80%,占用過(guò)低則資金利用率低,占用過(guò)高則可能無(wú)法覆蓋市場(chǎng)價(jià)格波動(dòng)造成的資金風(fēng)險(xiǎn)。
什么是多因子模型
多因子模型是關(guān)于資產(chǎn)定價(jià)和風(fēng)險(xiǎn)管理的模型,關(guān)于多因子模型的構(gòu)造也根據(jù)不同業(yè)務(wù)有不同的選擇。
多因子模型通常使用下面的公式表示:
Ri = ai + βi(m) Rm + βi(1)F1 + βi(2)F2 +...+βi(N)FN + ei
- Ri:表示標(biāo)的 i 的單個(gè)標(biāo)的回報(bào)率
- Rm:表示大盤(pán)整體回報(bào)率
- F(1,2,3...N) 表示N個(gè)因子的權(quán)值
- β :每個(gè)因素對(duì)應(yīng)市場(chǎng)(m)的 beta 值
- e: 表示隨機(jī)誤差項(xiàng)(白噪聲)
- a:表示初始值(截距)
多因子風(fēng)控模型
區(qū)別于上述模型,我們根據(jù)自身點(diǎn)業(yè)務(wù)特點(diǎn),通常,我們將因子主要分為風(fēng)險(xiǎn)因子和行業(yè)因子兩個(gè)大類(lèi)。
風(fēng)險(xiǎn)因子
其中風(fēng)險(xiǎn)因子用10個(gè)風(fēng)險(xiǎn)因子描述市場(chǎng)價(jià)格波動(dòng)風(fēng)險(xiǎn)的主要來(lái)源,根據(jù)市場(chǎng)特點(diǎn)細(xì)分為:
1. Beta因子
2. 大小盤(pán)因子
3. 中盤(pán)因子
4. 估值因子
5. 盈利能力因子
6. 成長(zhǎng)性因子
7. 杠桿因子
8. 流動(dòng)性因子
9. 動(dòng)量因子
10. 殘余波動(dòng)因子
行業(yè)因子
而行業(yè)因子則是根據(jù)申銀萬(wàn)國(guó)的一級(jí)行業(yè)分類(lèi)構(gòu)造28個(gè)行業(yè)的行業(yè)因子。這里需要指出的是,由于我們的 Benchmark 選用了滬深300,所以在行業(yè)敞口上也由于滬深300在銀行和非銀金融的比重較大而影響。
綜合上訴38個(gè)因子,在實(shí)際生產(chǎn)中,經(jīng)過(guò)長(zhǎng)期檢驗(yàn),該模型能夠比較好的反應(yīng)出基金風(fēng)控情況。當(dāng)然,由于模型是根據(jù)歷史數(shù)據(jù)來(lái)判斷風(fēng)控情況的,所以,它也不可能100%地預(yù)測(cè)未來(lái)值,畢竟模型不是萬(wàn)能的。
股票收益歸因
股票收益歸因表示通過(guò)定量分析總收益反應(yīng)各種因子對(duì)總收益的貢獻(xiàn)情況。(選擇基準(zhǔn)為滬深300)計(jì)算公式為:
- 總收益 - 基準(zhǔn)指數(shù)收益 = 超額收益(主動(dòng)管理收益)
- 超額收益 – 行業(yè)偏差收益 – 風(fēng)險(xiǎn)暴露收益 – 現(xiàn)金貢獻(xiàn)收益 = 個(gè)股選擇收益
其中總收益、基準(zhǔn)指數(shù)收益、行業(yè)偏差收益 、 風(fēng)險(xiǎn)暴露收益 、現(xiàn)金貢獻(xiàn)收益由其他公式計(jì)算。 - 行業(yè)偏差收益 = 行業(yè)偏差 * 收益
- 風(fēng)險(xiǎn)暴露收益 =風(fēng)險(xiǎn)暴露 * 收益
- 現(xiàn)金貢獻(xiàn)收益 = 凈敞口 * 收益
示例
未完
作為分享主義者(sharism),本人所有互聯(lián)網(wǎng)發(fā)布的圖文均遵從CC版權(quán),轉(zhuǎn)載請(qǐng)保留作者信息并注明作者 Harry Zhu 的 FinanceR專(zhuān)欄:https://segmentfault.com/blog/harryprince,如果涉及源代碼請(qǐng)注明GitHub地址:https://github.com/harryprince。微信號(hào): harryzhustudio
商業(yè)使用請(qǐng)聯(lián)系作者。