引言
今天總結(jié)下CoVaR 這篇文章,作為系統(tǒng)性風(fēng)險(xiǎn)的大牛之作,

引用量之巨(請收下膝蓋)。話不多說,今天主要介紹簡單的實(shí)現(xiàn),太多都過多介紹理論公式,講得多了,反而是壞事,距離感太強(qiáng)。
所以先介紹 delta covar 怎么計(jì)算。
用matlab 為例來算,為什么用它,是因?yàn)閙atlab有個systemic risk 計(jì)算的包,但是里面的代碼不是很友好(封裝越好,改起來越麻煩,不接地氣),所以利用一部分關(guān)鍵信息作為示例。
計(jì)算
預(yù)處理
- 數(shù)據(jù)
數(shù)據(jù)一般都是日收益率,當(dāng)然算這個指標(biāo),一般都是兩兩之間的計(jì)算。所以準(zhǔn)備個最簡單的兩天時(shí)間序列。長度當(dāng)然起碼得一年吧,所以怎么也得有個252吧。參考下面網(wǎng)盤中(test.xlsx)
- 均值和波動率建模
這個方法有很多中,
對于均值方法,非常簡單的方法就是去均值處理,
r0_x = r_x - mean(r_x)
對于波動率,當(dāng)然取garch 方法,常見的garch 很多隨便挑選。
這里采用動態(tài)相關(guān)系數(shù)的 gjrgarch。至于原理,不是本節(jié)內(nèi)容,自行百度。
[p,h]=dcc_gjrgarch(data); % 其中,p 是動態(tài)相關(guān)系數(shù),h 是動態(tài)的波動率
然后提取一些變量 (假設(shè)想研究一個 大型上市公司B 對市場(market)指數(shù)A的影響,即B對A的風(fēng)險(xiǎn)溢出(就是B對A的Delta CoVaR ))
s_m = sqrt(h(:,1)); %% s_m 是A(market index)的標(biāo)準(zhǔn)差
s_x = sqrt(h(:,2)); %% B (大型上市公司)的標(biāo)準(zhǔn)差
rho = squeeze(p(1,2,:)); %% 降低維度。提取后是一個包含相關(guān)系數(shù)的向量
- 計(jì)算VaR、ES和beta
%一般設(shè)定a=0.05 就是0.05 的分位數(shù),s_m 是A的標(biāo)準(zhǔn)差,r0_x是B的去均值后的序列,s_x 是B的動態(tài)標(biāo)準(zhǔn)差,rho 是動態(tài)相關(guān)系數(shù)。
% 代碼中很清晰看到,計(jì)算結(jié)果中,beta 是A對B 線性回歸的beta, var 是B的VaR,ES 也是B的ES。
function [beta,var,es] = calculate_idiosyncratic(a,s_m,r0_x,s_x,rho)
beta = rho .* (s_x ./ s_m);
c = quantile((r0_x ./ s_x),a);
var = s_x * c;
es = s_x * -(normpdf(c) / a);
end
a=0.05;
[beta,var,es] = calculate_idiosyncratic(a,s_m,r0_x,s_x,rho);0.05 alpha
- 計(jì)算covar 和delta covar
為了方便說明代碼,先來上公式,
covar 這個文章是用分位數(shù)回歸的方法來計(jì)算的。


很直觀利用分位數(shù)回歸,x采用B的VaR, 得到的就是A covar ,delta covar 就是再減去當(dāng)B取分位數(shù)為中位數(shù)的值所得到的A 的covar,二者相減,常數(shù)項(xiàng)去掉就是第二個公式。
% a =0.05,r0_m 是A的去均值序列,r0_x 是B的去均值序列,var 是B的VaR
% 所以得到的covar和dcovar 是B對A的影響 。
function [covar,dcovar] = calculate_covar(a,r0_m,r0_x,var)
beta = quantile_regression(r0_m,r0_x,a);
covar = beta(1) + (beta(2) .* var);
dcovar = beta(2) .* (var - repmat(median(r0_x),length(r0_m),1));
end
[covar,dcovar] = calculate_covar(a,r0_m,r0_x,var);
當(dāng)然covar 文章里說還有對一些狀態(tài)變量發(fā)生聯(lián)系,也很簡單,

公式6a 是說B序列和M代表的很多狀態(tài)變量有關(guān),
公式6b 是說A序列不僅和B序列有關(guān),還和狀態(tài)變量你M有關(guān)系。所以把6a 帶入到6b 中,會發(fā)現(xiàn)其實(shí)還是和狀態(tài)變量進(jìn)行回歸。
所以得到


所以根據(jù)7a 得到了B的VaR ,然后根據(jù)7b 得到了A的CoVaR.
對應(yīng)公式也很簡單
% state_variables 的輸入應(yīng)該是一個矩陣,每一列代表一個變量。
function [covar,dcovar] = calculate_covar(a,r0_m,r0_x,var,state_variables)
beta = quantile_regression(r0_m,[r0_x state_variables],a);
covar = beta(1) + (beta(2) .* var);
for i = 1:size(state_variables,2)
covar = covar + (beta(i+2) .* state_variables(:,i));
end
dcovar = beta(2) .* (var - repmat(median(r0_x),length(r0_m),1));
end
最后這就計(jì)算完畢了。
在新冠病毒肆虐全球金融的行情下,關(guān)注系統(tǒng)性風(fēng)險(xiǎn)至關(guān)重要。
[代碼](鏈接:https://pan.baidu.com/s/1o52XgHDn_ElwuuU0eNrJWQ 密碼:rcw4)