基于 Copulas的风险和投资组合管理研究(Matlab代码实现)

 👨‍🎓个人主页:研学社的博客    

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

投资实践中保险公司的投资组合一般由多种类型的金融资产构成,随着金融市场的不断发展,金融市场或金融资产间的相关关系越来越复杂,呈非线性和尾部相关的相关模式,基于线性相关系数的分析方法已经不能准确反映金融资产间的相关信息。而且当风险资产的收益率服从不同分布时,对他们之间的相关结构建模是很困难的。
以往的研究一般都假设投资组合的收益率服从多元正态分布。多元正态分布限定了资产间的相关结构,且与金融资产收益率分布的尖峰、厚尾等非正态特征不相符合。因此基于多元正态分布计算的组合风险价值往往与实际值相差较大。为了对投资组合的整体风险价值做出准确度量,必须考虑金融资产间相关结构和单个资产收益率的分布特征。
Copula 函数的提出为解决多元金融时间序列建模提供了很好的方法,它不仅可以刻画资产间的非线性相关关系,而且对边缘分布没有任何限制,现在
Copula 函数已被广泛用于金融研究的各个领域。 Copula 函数最早由法国统计学家 Sklar 1959 年提出,它是一种可以将多个随机变量的边缘分布连接起来并刻画它们之间相关结构的连接函数。利用 Copula 函数对多元时间序列建模可以分为两步,首先利用 GARCH 等条件异方差模型对单个金融资产的边缘分布建模,其次选择一个合适的 Copula 函数将他们连接起来就可以得到一个有效的多元分布函数。在此基础上就能用VaR 计算投资组合的风险价值,并在风险最小的约束下求得投资组合的最优投资比例。
Copula 函数的定义:一个 N Copula 函数是指具有以下性质的分布函数 C

Sklar 定理可以看出利用 Copula 函数,可以达到将边缘分布和组合中资产之间的相关结构分开来研究的目的,同时减小多变量时间序列建模和分析的难度,并使建模和分析过程更加清晰。

📚2 运行结果

 主函数代码:

lear; clc; close all;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% generate panic distribution
N=20;
J=50000;

p=ones(J,1)/J;

r_c=.3;  
c2_c=(1-r_c)*eye(N)+r_c*ones(N,N);

b=0.02; 
r=.99;  
c2_p=(1-r)*eye(N)+r*ones(N,N);

s2=blkdiag(c2_c,c2_p);
Z = MvnRnd(zeros(2*N,1),s2,J);

X_c = Z(:,1:N);
X_p = Z(:,N+1:end);
D = (normcdf(X_p)<b);

X=(1-D).*X_c+D.*X_p;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% perturb probabilities via Fully Flexible Views
Aeq = ones(1,J);  % constrain probabilities to sum to one...
beq=1;
Aeq = [Aeq   % ...constrain the first moments...
    X'];
beq=[beq
    zeros(N,1)];
p_ = EntropyProg(p,[],[],Aeq ,beq); % ...compute posterior probabilities

[xdd,udd,U]=CMAseparation(X,p_);


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% merge panic copula with normal marginals
y=[];
u=[];
for n=1:N
    sig=.20;
    yn = linspace(-4*sig,4*sig,100)';
    un=normcdf(yn,0,sig);
    
    y=[y yn];
    u=[u un];
end
Y=CMAcombination(y,u,U);


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% compute portfolio risk
w=ones(N,1)/N; % portfolio weights
R_w=Y*w;

figure
[n,D]=pHist(R_w,p_,round(10*log(J))  );
h=bar(D,n,1);
[x_lim]=get(gca,'xlim');
set(gca,'ytick',[])
set(h,'FaceColor',.5*[1 1 1],'EdgeColor',.5*[1 1 1]);
grid on

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% rotate panic copula (only 2Dim)
if N==2
    th=pi/2;
    R=[cos(th) sin(th)
        -sin(th) cos(th)];
    X_=X*R';
    [xdd,udd,U_]=CMAseparation(X_,p_);
end

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]谢保华. Copula函数在保险投资组合风险管理中的应用[D].南京财经大学,2010.

[2]蒋坤. Copula-MCMC理论在投资组合风险管理上的应用[D].湖南师范大学,2013.

[3] Copula-Marginal Algorithm (CMA) to generate and manipulate flexible copulas, as described in Meucci A., "New Breed of Copulas for Risk and Portfolio Management", Risk, September 2011

🌈4 Matlab代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值