引言
今天總結(jié)下CoVaR 這篇文章,作為系統(tǒng)性風險的大牛之作垢粮,
引用量之巨(請收下膝蓋)顿颅。話不多說,今天主要介紹簡單的實現(xiàn)足丢,太多都過多介紹理論公式粱腻,講得多了,反而是壞事斩跌,距離感太強绍些。
所以先介紹 delta covar 怎么計算。
用matlab 為例來算耀鸦,為什么用它柬批,是因為matlab有個systemic risk 計算的包,但是里面的代碼不是很友好(封裝越好袖订,改起來越麻煩氮帐,不接地氣),所以利用一部分關(guān)鍵信息作為示例洛姑。
計算
預處理
- 數(shù)據(jù)
數(shù)據(jù)一般都是日收益率上沐,當然算這個指標,一般都是兩兩之間的計算楞艾。所以準備個最簡單的兩天時間序列参咙。長度當然起碼得一年吧,所以怎么也得有個252吧硫眯。參考下面網(wǎng)盤中(test.xlsx)
- 均值和波動率建模
這個方法有很多中蕴侧,
對于均值方法,非常簡單的方法就是去均值處理两入,
r0_x = r_x - mean(r_x)
對于波動率净宵,當然取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的風險溢出(就是B對A的Delta CoVaR ))
s_m = sqrt(h(:,1)); %% s_m 是A(market index)的標準差
s_x = sqrt(h(:,2)); %% B (大型上市公司)的標準差
rho = squeeze(p(1,2,:)); %% 降低維度。提取后是一個包含相關(guān)系數(shù)的向量
- 計算VaR番舆、ES和beta
%一般設(shè)定a=0.05 就是0.05 的分位數(shù)酝碳,s_m 是A的標準差,r0_x是B的去均值后的序列恨狈,s_x 是B的動態(tài)標準差疏哗,rho 是動態(tài)相關(guān)系數(shù)。
% 代碼中很清晰看到禾怠,計算結(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
- 計算covar 和delta covar
為了方便說明代碼吗氏,先來上公式芽偏,
covar 這個文章是用分位數(shù)回歸的方法來計算的。
很直觀利用分位數(shù)回歸弦讽,x采用B的VaR, 得到的就是A covar ,delta covar 就是再減去當B取分位數(shù)為中位數(shù)的值所得到的A 的covar污尉,二者相減,常數(shù)項去掉就是第二個公式往产。
% 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);
當然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)其實還是和狀態(tài)變量進行回歸。
所以得到
所以根據(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
最后這就計算完畢了泼差。
在新冠病毒肆虐全球金融的行情下贵少,關(guān)注系統(tǒng)性風險至關(guān)重要。
[代碼](鏈接:https://pan.baidu.com/s/1o52XgHDn_ElwuuU0eNrJWQ 密碼:rcw4)