Coherent Risk Measures#

Risk Measures#

Do all these metrics have the properties which will make for a useful risk measure?

Define the following notation:

  • two risky payoffs (in USD) \(\Pi_j, \Pi_k\).

  • \(\alpha\): amount of cash holding.

A risk measure \(\riskmeasure\) measures

  • a dollar amount of losses–not the expected losses, but rather the amount of losses that could result

  • equivalently, the amount of capital required to protect against losses

Different risk measures will give different answers to this question.

  • volatility (std.dev.)

  • variance

  • quantile

If a risk measure of a risky position, \(\riskmeasure(\Pi_j)\) is negative, it indicates an amount of capital that could be withdrawn.

Risk Capital#

The term risk capital is used at times to refer to this capital needed to protect against a measure of loss from the portfolio–whether explicitly a margin requirement or an internal budget.

In that sense, the risk measure is assigning the risk capital budgeted for each portfolio.

Coherence#

For a risk measure to be sensible for measuring risk capital, it should have certain features.

A coherent risk, \(\riskmeasure\), measure satisfies the following properties:

Translation Invariance#

\[\riskmeasure(\alpha + \Pi_j) = \riskmeasure(\Pi_j)-\alpha\]

Adding cash to a position reduces the capital needed to support it one-for-one.

A stock plus cash needs less additional capital support (protection) than the stock alone.

If this were not true, it would say that, for risk purposes, combining the cash with the risky assets is different than holding the cash in a separate account.

Positive Homogeneity#

For any positive scaling, \(\lambda>0\),

\[\riskmeasure(\lambda\Pi_j) = \lambda\riskmeasure(\Pi_j)\]

The risk capital scales linearly with the position.

  • This property is controversial in certain settings and for large scaling, \(\lambda\).

Monotonicity#

If \(\Pi_j>\Pi_k\) in every state (almost surely) then the risk measure of \(\Pi_j\) is lower:

\[\riskmeasure\left(\Pi_j\right) < \riskmeasure\left(\Pi_k\right)\]

For instance, suppose that

  • \(\Pi_i\) is a stock

  • \(\Pi_j\) is the same stock plus a long put option

Then this definition requires that a coherent risk measure would assign lower risk to \(\Pi_j\).

Subadditive#

The risk of the total is less than the sum of its parts: $\(\riskmeasure\left(\Pi_j + \Pi_k\right) \le \riskmeasure\left(\Pi_j\right) + \riskmeasure\left(\Pi_k\right)\)$

This condition states that there is a diversification benefit, or at least, no harm.

Margin requirement#

If this condition did not hold, it would say that there is a direct benefit to splitting assets across accounts, rather than having them net for the margin requirement.

Convex Risk Measure#

There is some use of a generalized concept, the convex risk measure. It replaces

  • Homogeneity

  • Subadditivity

with convexity which says that for any \(\lambda\in[0,1]\), $\(\riskmeasure(\lambda\Pi_j + (1-\lambda)\Pi_k) \le \lambda\riskmeasure(\Pi_j) + (1-\lambda)\riskmeasure(\Pi_k)\)$

Questions#

Which are coherent risk measures?

  1. Standard deviation

  2. Variance

  3. 5th quantile of the loss distribution

  4. Maximum Drawdown

import pandas as pd
import numpy as np
import datetime
import warnings

import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['figure.figsize'] = (12,6)
plt.rcParams['font.size'] = 15
plt.rcParams['legend.fontsize'] = 13

from matplotlib.ticker import (MultipleLocator,
                               FormatStrFormatter,
                               AutoMinorLocator)

from sklearn.linear_model import LinearRegression
import sys
sys.path.insert(0,'../cmds')
from portfolio import *
from risk import *
LOADFILE = '../data/risk_etf_data.xlsx'
info = pd.read_excel(LOADFILE,sheet_name='descriptions').set_index('ticker')
rets = pd.read_excel(LOADFILE,sheet_name='total returns').set_index('Date')
prices = pd.read_excel(LOADFILE,sheet_name='prices').set_index('Date')

FREQ = 252
keys = ['SPY','UPRO']

comp = pd.concat([rets[keys],rets[keys].sum(axis=1)],axis=1).rename(columns={0:'Portfolio'})

mdd = mdd_timeseries(comp)
QUANT = .05

tabcomp = pd.concat([comp.std(), comp.var(), comp.quantile(QUANT), mdd.min()],axis=1,keys=['std','variance',f'quantile {QUANT}','MDD'])
tabcomp.loc['sum of parts'] = tabcomp.iloc[0:-1,:].sum()
tabcomp.loc['sum of parts','variance'] = tabcomp.loc['sum of parts','std']**2
tabcomp.style.format('{:.4%}')
  std variance quantile 0.05 MDD
SPY 1.1875% 0.0141% -1.7639% -33.7173%
UPRO 3.5588% 0.1266% -5.2788% -76.8168%
Portfolio 4.7452% 0.2252% -7.0521% -87.7918%
sum of parts 4.7462% 0.2253% -7.0427% -110.5341%

Dynamic Measures#

Above, we measured these risks for a static situation. This would be sufficent for

  • iid returns

For many cases of interest, we need the conditional risk measures.

  • most notably, time-varying volatility

These conditional statistics may be measured with…

  • a rolling window

  • a stochastic volatility model (GARCH)

  • simulation

References#

Coherent risk measures

https://people.math.ethz.ch/~delbaen/ftp/preprints/CoherentMF.pdf