portfolioRiskContribution
Compute individual asset risk contribution to overall portfolio volatility
Since R2022a
Syntax
Description
computes individual asset risk contribution to overall portfolio volatility and
returns riskCont = portfolioRiskContribution(portWeights,Sigma)riskCont as a matrix of risk contributions.
specifies an option using a name-value argument in addition to the input
arguments in the previous syntax.riskCont = portfolioRiskContribution(___,Name=Value)
Examples
Use portfolioRiskContribution to compute the risk contribution per asset with respect to the portfolio total risk.
Assume the returns covariance matrix is given by the following values.
Sigma = [0.0100 0.0075 0.0100 0.0150
0.0075 0.0225 0.0150 0.0225
0.0100 0.0150 0.0400 0.0450
0.0150 0.0225 0.0450 0.0900];The portWeights are the following values:
portWeights = [0.4101; 0.2734; 0.1899; 0.1266];
Use portfolioRiskContribution to compute the percent of risk contribution per asset.
riskCont = portfolioRiskContribution(portWeights,Sigma)
riskCont = 4×1
0.2500
0.2500
0.2500
0.2500
The default is to compute the relative risk contribution. However, you can compute the absolute risk contribution by using the name-value argument RiskContributionType="absolute". Use portfolioRiskContribution to compute each asset's relative risk contribution.
riskCont = portfolioRiskContribution(portWeights,Sigma,RiskContributionType="relative")riskCont = 4×1
0.2500
0.2500
0.2500
0.2500
Use portfolioRiskContribution to compute the risk contribution of each asset with respect to the portfolio total risk when the assets returns used to compute the variance have NaN values.
Assume the returns covariance matrix is given by the following values.
load('CAPMuniverse.mat','AssetsTimeTable') Sigma = cov(AssetsTimeTable{:,1:12},'partialrows')
Sigma = 12×12
0.0012 0.0005 0.0005 0.0005 0.0005 0.0001 0.0004 0.0003 0.0006 0.0003 0.0005 0.0006
0.0005 0.0023 0.0007 0.0005 0.0009 0.0001 0.0005 0.0003 0.0006 0.0004 0.0006 0.0011
0.0005 0.0007 0.0012 0.0006 0.0007 0.0000 0.0006 0.0004 0.0007 0.0005 0.0008 0.0008
0.0005 0.0005 0.0006 0.0009 0.0006 0.0000 0.0005 0.0003 0.0006 0.0004 0.0005 0.0006
0.0005 0.0009 0.0007 0.0006 0.0017 0.0002 0.0005 0.0003 0.0005 0.0004 0.0007 0.0010
0.0001 0.0001 0.0000 0.0000 0.0002 0.0006 -0.0000 0.0000 0.0000 0.0000 0.0000 0.0002
0.0004 0.0005 0.0006 0.0005 0.0005 -0.0000 0.0009 0.0003 0.0005 0.0003 0.0005 0.0005
0.0003 0.0003 0.0004 0.0003 0.0003 0.0000 0.0003 0.0004 0.0003 0.0002 0.0004 0.0004
0.0006 0.0006 0.0007 0.0006 0.0005 0.0000 0.0005 0.0003 0.0010 0.0005 0.0006 0.0006
0.0003 0.0004 0.0005 0.0004 0.0004 0.0000 0.0003 0.0002 0.0005 0.0006 0.0004 0.0005
0.0005 0.0006 0.0008 0.0005 0.0007 0.0000 0.0005 0.0004 0.0006 0.0004 0.0013 0.0007
0.0006 0.0011 0.0008 0.0006 0.0010 0.0002 0.0005 0.0004 0.0006 0.0005 0.0007 0.0019
⋮
The risk parity portfolio is subject to the following weights for all the assets.
portWeights = [0.1; 0.1; 0.1; 0.03; 0.1; 0.1; 0.1; 0.05; 0.1; 0.1; 0.1; 0.1];
Use portfolioRiskContribution to compute the percentage risk contribution per asset.
riskCont = portfolioRiskContribution(portWeights,Sigma)
riskCont = 12×1
0.0911
0.1261
0.1103
0.0251
0.1197
0.0203
0.0805
0.0258
0.0978
0.0660
0.1035
0.1338
⋮
The default values returned by portfolioRiskContribution are the relative risk contribution of the individual assets to the overall portfolio risk. Also, you can compute the absolute risk contribution by using the name-value argument RiskContributionType="absolute". Use portfolioRiskContribution to compute each asset's absolute risk contribution.
riskCont = portfolioRiskContribution(portWeights,Sigma,RiskContributionType="absolute")riskCont = 12×1
0.0023
0.0031
0.0027
0.0006
0.0030
0.0005
0.0020
0.0006
0.0024
0.0016
0.0026
0.0033
⋮
Use portfolioRiskContribution to compute the risk contribution per asset with respect to the portfolio total risk when portWeights is a matrix.
Assume the returns covariance matrix is given by the following values.
Sigma = [0.0100 0.0075 0.0100 0.0150
0.0075 0.0225 0.0150 0.0225
0.0100 0.0150 0.0400 0.0450
0.0150 0.0225 0.0450 0.0900];The matrix of portWeights is the values:
portWeights = [0.25 0.10 0.10828;
0.25 0.20 0.17197;
0.25 0.30 0.28026;
0.25 0.40 0.43949];Use portfolioRiskContribution to compute the percent of risk contribution per asset.
riskCont = portfolioRiskContribution(portWeights,Sigma)
riskCont = 4×3
0.1083 0.0308 0.0322
0.1720 0.1005 0.0816
0.2803 0.2735 0.2455
0.4395 0.5952 0.6407
The default is to compute the relative risk contribution. However, you can compute the absolute risk contribution by using the name-value argument RiskContributionType="absolute". Use portfolioRiskContribution to compute each asset's absolute risk contribution.
riskCont = portfolioRiskContribution(portWeights,Sigma,RiskContributionType="absolute")riskCont = 4×3
0.0170 0.0060 0.0064
0.0269 0.0194 0.0162
0.0439 0.0528 0.0488
0.0688 0.1149 0.1274
Input Arguments
Portfolio weights, specified using an
NumAssets-by-NumPortfolios matrix.
portWeights must be nonempty, numeric, finite, and
real. portWeights can be negative and does not need to
sum to 1. portWeights and
Sigma must have the same number of
NumAssets.
Data Types: double
Covariance matrix of returns, specified using an
NumAssets-by-NumAssets positive
semidefinite covariance matrix. Sigma and
portWeights must have the same number of
NumAssets.
Note
If Sigma is not a positive symmetric positive
semidefinite matrix, use nearcorr to create a positive semidefinite
matrix.
Data Types: double
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN, where Name is
the argument name and Value is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Example: riskCont =
portfolioRiskContribution(portWeights,Sigma,RiskContributionType="relative")
Type of risk contribution to compute, specified as
RiskContributionType and a scalar character
vector or string:
"relative"— Computes the relative contribution."absolute"— Computes the absolute risk contribution.
Data Types: char | string
Output Arguments
Risk contributions, returned as a matrix. The default values returned by
portfolioRiskContribution are the relative
contribution of the assets to the portfolio. However,
portfolioRiskContribution can also return the
absolute risk contribution by passing the name-value argument
RiskContributionType with a value of
"absolute".
Version History
Introduced in R2022a
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)