Risk Fraction Constraints

Description

Constrain the fraction (or value) of variance attributed to each asset.

Also constrain the correlation between each asset and the portfolio.

Implementation

The risk.fraction argument controls these constraints.  This can be a blanket constraint on all assets like:

risk.fraction = 0.05

Alternatively each asset can be constrained differently.

When a benchmark is used, then the weights for the benchmark in terms of the other assets need to be given via the bench.weights argument.

Lower constraints as well as upper constraints can be imposed.  Advanced use allows multiple variances and benchmarks.

Applications

One application of these constraints is in creating risk parity portfolios where each asset (class) has the same contribution to the variance.

Details

If w is the vector of weights for a portfolio and V is the variance matrix, then the variance of the portfolio is:

w’Vw

We can change this slightly to:

w * Vw

where the * operator is element-by-element multiplication.  The result of this is a vector that gives the amount of variance attributed to each asset. To turn this into a fraction for each asset, we need to divide by the portfolio variance:

f = w * Vw / w’Vw

So f is the fraction of variance for each asset.

With a benchmark

When there is a benchmark (with weight vector b), then the variance fraction is computed as:

f = (w – b) * V(w – b) / (w-b)’V(w – b)

A key feature when there is a benchmark is that assets not in the portfolio (but in the benchmark) have a non-zero risk fraction.  Without a benchmark only assets in the portfolio have a non-zero risk fraction.

Even more

There is a more in-depth discussion in the Portfolio Probe User’s Manual (available under Documentation).  This includes:

  • adjusting the risk fraction for the marginal contribution to the benchmark
  • constraining correlations of assets to the portfolio
  • constraining variance values rather than fractions

Related blog posts

risk fraction tag