A random vector \(\mathbf{X}=(X_1,\dots,X_d)\) follows a
*normal variance mixture*, in notation \(\mathbf{X}\sim
\operatorname{NVM}_d(\mathbf{\mu},\Sigma,F_W)\), if, in
distribution, \[
\mathbf{X} = \mathbf{\mu}+\sqrt{W}A\mathbf{Z},
\] where \(\mathbf{\mu}\in\mathbb{R}^d\) denotes the
*location (vector)*, \(\Sigma=AA^\top\) for \(A\in\mathbb{R}^{d\times k}\) denotes the
*scale (matrix)* (a covariance matrix), and the mixture variable
\(W\sim F_W\) is a non-negative random
variable independent of \(\mathbf{Z}\sim\operatorname{N}_k(\mathbf{0},I_k)\)
(where \(I_k\in\mathbb{R}^{k\times k}\)
denotes the identity matrix). Both the Studentâ€™s \(t\) distribution with degrees of freedom
parameter \(\nu>0\) and the normal
distribution are normal variance mixtures; in the former case, \(W\sim\operatorname{IG}(\nu/2, \nu/2)\)
(inverse gamma) and in the latter case \(W\) is almost surely constant (taken as
\(1\) so that \(\Sigma\) is the covariance matrix of \(\mathbf{X}\) in this case).

It follows readily from the stochastic representation that linear combinations of multivariate normal variance mixtures are univariate normal variance mixtures. Let \(\mathbf{a}\in\mathbb{R}^d\). If \(\mathbf{X}\sim \operatorname{NVM}_d(\mathbf{\mu}, \Sigma,F_W)\), then \(\mathbf{a}^\top \mathbf{X} \sim \operatorname{NVM}_1(\mathbf{a}^\top\mathbf{\mu}, \mathbf{a}^\top\Sigma\mathbf{a},F_W)\).

If \(\mathbf{X}\) models, for instance, financial losses, \(\mathbf{a}^\top \mathbf{X}\) is the loss of a portfolio with portfolio weights \(\mathbf{a}\). It is then a common task in risk management to estimate risk measures of the loss \(\mathbf{a}^\top \mathbf{X}\). We consider the two prominent risk measures value-at-risk and expected shortfall.

In the following, assume without loss of generality that \(X\sim \operatorname{NVM}_1(0, 1, F_W)\), the general case follows from a location-scale argument.

The *value-at-risk* of \(X\)
at confidence level \(\alpha\in(0,1)\)
is merely the \(\alpha\)-quantile of
\(X\). That is, \[ \operatorname{VaR}_\alpha(X) =
\inf\{x\in[0,\infty):F_X(x)\ge \alpha\},\] where \(F_X(x)=\mathbb{P}(X\le x)\) for \(x\in\mathbb{R}\) is the distribution
function of \(X\). Such quantile can be
estimated via the function `qnvmix()`

, or equivalently, via
the function `VaR_nvmix()`

of the `R`

package
`nvmix`

.

As an example, consider \(W\sim\operatorname{IG}(\nu/2, \nu/2)\) so
that \(X\) follows a \(t\) distribution with \(\nu\) degrees of freedom. In this case, the
quantile is known. If the argument `qmix`

is provided as a
string, `VaR_nvmix()`

calls `qt()`

; if
`qmix`

is provided as a function or list, the quantile is
internally estimated via a Newton algorithm where the univariate
distribution function \(F_X()\) is
estimated via randomized quasi-Monte Carlo methods.

```
set.seed(1) # for reproducibility
qmix <- function(u, df) 1/qgamma(1-u, shape = df/2, rate = df/2)
df <- 3.5
n <- 20
level <- seq(from = 0.9, to = 0.995, length.out = n)
VaR_true <- VaR_nvmix(level, qmix = "inverse.gamma", df = df)
VaR_est <- VaR_nvmix(level, qmix = qmix, df = df)
stopifnot(all.equal(VaR_true, qt(level, df = df)))
## Prepare plot
pal <- colorRampPalette(c("#000000", brewer.pal(8, name = "Dark2")[c(7, 3, 5)]))
cols <- pal(2) # colors
if(doPDF) pdf(file = (file <- "fig_VaR_nvmix_comparison.pdf"),
width = 7, height = 7)
plot(NA, xlim = range(level), ylim = range(VaR_true, VaR_est),
xlab = expression(alpha), ylab = expression(VaR[alpha]))
lines(level, VaR_true, col = cols[1], lty = 2, type = 'b')
lines(level, VaR_est, col = cols[2], lty = 3, lwd = 2)
legend('topleft', c("True VaR", "Estimated VaR"), col = cols, lty = c(2,3),
pch = c(1, NA))
if(doPDF) dev.off()
```

Another risk measure of great theoretical and practical importance is
the *expected-shortfall*. The expected shortfall of \(X\) at confidence level \(\alpha\in(0,1)\) is, provided the integral
converges, given by \[
\operatorname{ES}_\alpha(X) = \frac{1}{1-\alpha} \int_\alpha^1
\operatorname{VaR}_u(X)du.\] If \(F_X()\) is continuous, one can show that
\[ \operatorname{ES}_\alpha(X) =
\operatorname{E}(X \mid X >
\operatorname{VaR}_\alpha(X)).\]

The function `ES_nvmix()`

in the `R`

package
`nvmix`

can be used to estimate the expected shortfall for
univariate normal variance mixtures. Since these distributions are
continuous, we get the following:

\[ (1-\alpha) \operatorname{ES}_\alpha(X) = \operatorname{E}\left(X \mathbf{1}_{\{X>\operatorname{VaR}_\alpha(X)\}}\right)= \operatorname{E}\left( \sqrt{W} Z \mathbf{1}_{\{\sqrt{W} Z > \operatorname{VaR}_\alpha\}}\right) \]

\[= \operatorname{E}\Big( \sqrt{W} \operatorname{E}\big(Z \mathbf{1}_{\{Z> \operatorname{VaR}_\alpha(X)/\sqrt{W}\}} \mid W\big)\Big)= \operatorname{E}\left(\sqrt{W} \phi(\operatorname{VaR}_\alpha(X) / \sqrt{W})\right) \]

Here, \(\phi(x)\) denotes the
density of a standard normal distribution and we used that \(\int_k^\infty x\phi(x)dx = \phi(k)\) for
any \(k\in\mathbb{R}\). Internally, the
function `ES_nvmix()`

estimates \(\operatorname{ES}_\alpha(X)\) via a
randomized quasi-Monte Carlo method by exploiting the displayed
identity.

In case of the normal and \(t\)
distribution, a closed formula for the expected shortfall is known; this
formula is then used by `ES_nvmix()`

if `qmix`

is
provided as string.

```
ES_true <- ES_nvmix(level, qmix = "inverse.gamma", df = df)
ES_est <- ES_nvmix(level, qmix = qmix, df = df)
## Prepare plot
if(doPDF) pdf(file = (file <- "fig_ES_nvmix_comparison.pdf"),
width = 7, height = 7)
plot(NA, xlim = range(level), ylim = range(ES_true, ES_est),
xlab = expression(alpha), ylab = expression(ES[alpha]))
lines(level, ES_true, col = cols[1], lty = 2, type = 'b')
lines(level, ES_est, col = cols[2], lty = 3, lwd = 2)
legend('topleft', c("True ES", "Estimated ES"), col = cols, lty = c(2,3),
pch = c(1, NA))
if(doPDF) dev.off()
```