# riskContribution

Generate risk contributions for each counterparty in portfolio

## Syntax

``Contributions = riskContribution(cdc)``
``Contributions = riskContribution(cdc,Name,Value)``

## Description

example

````Contributions = riskContribution(cdc)` returns a table of risk contributions for each counterparty in the portfolio. The risk `Contributions` table allocates the full portfolio risk measures to each counterparty, such that the counterparty risk contributions sum to the portfolio risks reported by `portfolioRisk`. NoteWhen creating a `creditDefaultCopula` object, you can set the `'UseParallel'` property if you have Parallel Computing Toolbox™. Once the `'UseParallel'` property is set, parallel processing is used to compute `riskContribution`. The `simulate` function must be run before `riskContribution` is used. For more information on using a `creditDefaultCopula` object, see `creditDefaultCopula`.```

example

````Contributions = riskContribution(cdc,Name,Value)` adds an optional name-value pair argument for `VaRWindow`. ```

## Examples

collapse all

Load saved portfolio data.

`load CreditPortfolioData.mat;`

Create a `creditDefaultCopula` object with a two-factor model.

`cdc = creditDefaultCopula(EAD,PD,LGD,Weights2F,'FactorCorrelation',FactorCorr2F)`
```cdc = creditDefaultCopula with properties: Portfolio: [100x5 table] FactorCorrelation: [2x2 double] VaRLevel: 0.9500 UseParallel: 0 PortfolioLosses: [] ```

Set the `VaRLevel` to 99%.

`cdc.VaRLevel = 0.99;`

Use the `simulate` function before running `riskContribution`. Then use `riskContribution` with the `creditDefaultCopula` object to generate the risk `Contributions` table.

```cdc = simulate(cdc,1e5); Contributions = riskContribution(cdc); Contributions(1:10,:)```
```ans=10×5 table ID EL Std VaR CVaR __ __________ __________ _________ __________ 1 0.036031 0.022762 0.083828 0.13625 2 0.068357 0.039295 0.23373 0.24984 3 1.2228 0.60699 2.3184 2.3775 4 0.002877 0.00079014 0.0024248 0.0013137 5 0.12127 0.037144 0.18474 0.24622 6 0.12638 0.078506 0.39779 0.48334 7 0.84284 0.3541 1.6221 1.8183 8 0.00090088 0.00011379 0.0016463 0.00089197 9 0.93117 0.87638 3.3868 3.9936 10 0.26054 0.37918 1.7399 2.3042 ```

Note: Due to simulation noise or numerical error, the `VaR` contribution can sometimes be greater than the `CVaR` contribution.

## Input Arguments

collapse all

`creditDefaultCopula` object obtained after running the `simulate` function.

For more information on `creditDefaultCopula` objects, see `creditDefaultCopula`.

### 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.

Before R2021a, use commas to separate each name and value, and enclose `Name` in quotes.

Example: ```Contributions = riskContribution(cdc,'VaRWindow',0.3)```

Size of the window used to compute VaR contributions, specified as the comma-separated pair consisting of `'VaRWindow'` and a scalar numeric with a percent value. Scenarios in the VaR scenario set are used to calculate the individual counterparty VaR contributions.

The default is `0.05`, meaning that all scenarios with portfolio losses within 5 percent of the VaR are included when computing counterparty VaR contributions.

Data Types: `double`

## Output Arguments

collapse all

Risk contributions, returned as a table containing the following risk contributions for each counterparty:

• `EL` — Expected loss for the particular counterparty over the scenarios

• `Std` — Standard deviation of loss for the particular counterparty over the scenarios

• `VaR` — Value at risk for the particular counterparty over the scenarios

• `CVaR` — Conditional value at risk for the particular counterparty over the scenarios

The risk `Contributions` table allocates the full portfolio risk measures to each counterparty, such that the counterparty risk contributions sum to the portfolio risks reported by `portfolioRisk`.

collapse all

### Risk Contributions

The `riskContribution` function reports the individual counterparty contributions to the total portfolio risk measures using four risk measures: expected loss (EL), standard deviation (Std), VaR, and CVaR.

• `EL` is the expected loss for each counterparty and is the mean of the counterparty's losses across all scenarios.

• `Std` is the standard deviation for counterparty i:

`$StdCon{t}_{i}=St{d}_{i}\frac{{\sum }_{j}St{d}_{j}{\rho }_{ij}}{St{d}_{\rho }}$`

where

Stdi is the standard deviation of losses from counterparty i.

StdÏ is the standard deviation of portfolio losses.

ρij is the correlation of the losses between counterparties i and j.

• `VaR` contribution is the mean of a counterparty's losses across all scenarios in which the total portfolio loss is within some small neighborhood around the Portfolio VaR. The default of the `'VaRWindow'` parameter is `0.05` meaning that all scenarios in which the total portfolio loss is within 5% of the portfolio VaR are included in VaR neighborhood.

• `CVaR` is the mean of the counterparty's losses in the set of scenarios in which the total portfolio losses exceed the portfolio VaR.

## References

[1] Glasserman, P. “Measuring Marginal Risk Contributions in Credit Portfolios.” Journal of Computational Finance. Vol. 9, No. 2, Winter 2005/2006.

[2] Gupton, G., Finger, C., and Bhatia, M. “CreditMetrics – Technical Document.” J. P. Morgan, New York, 1997.

## Version History

Introduced in R2017a