Given a set of assets with returns following a multivariate normal distribution with a known mean vector and a known covariance matrix, $$ r \sim N(\mu,\Sigma), $$ I want to find optimal portfolio weights $w^*$ that maximize value at risk (VaR), subject to weights summing up to 1 and being nonnegative: $$ w^*:=\arg \max_{w} F^{-1}(q) \\ \text{subject to} \\ \quad w^{\top}e=1 \quad \text{and} \quad w>0 $$ where $F(\cdot)$ is the CDF of the porfolio return, $q$ is the quantile of interest, $e$ is a vector of ones and $>$ holds for each element of $w$. $F$ is a normal CDF with expectation $w^{\top}\mu$ and variance $w^{\top} \Sigma w$, the parameters being functions of $w$.

Does this problem have an analytical solution?

The elements of the mean vector are not necessarily equal; otherwise a solution is readily available and equals the well-known solution of minimization of portfolio variance.

Note: I do not care about the plausibility of multivariate normality for asset returns; I need this for testing and benchmarking a numerical optimization routine for VaR.

Edit: updated to include formulas and to restrict the question to the case of nonnegative weights (in the original question the latter restriction was optional).

  • $\begingroup$ Maximising VaR with weights being non-negative is non-sensical. Consider selling a low volatility asset in almost infinite amount, and buying a high volatility asset in almost infinite amount. The correlation is irrelevant and your VaR will be unbounded. Furthermore for this objective function the expected returns are redundant information since you are not targeting return, just risk. $\endgroup$
    – Attack68
    Dec 11, 2019 at 16:16
  • $\begingroup$ Actually my comment might have been a misinterpretation, you want to achieve maximal return and maximal VaR subject to weights equal one. You will still need boundary conditions on the weights, for the above reason. $\endgroup$
    – Attack68
    Dec 11, 2019 at 16:18
  • $\begingroup$ If the assets returns are jointly normal, then portfolio VaR will be a multiple of the portfolio standard deviation. Then, a mean-variance efficient portfolio will also be mean-VaR efficient, so you would have a benchmark. But this may or may not help, because this only holds for the true distribution. You typically optimize VaR for a scenario set (i.e. a returns sample), and so the results will differ (how much depends on the specific setting and the number scenarios). $\endgroup$ Dec 11, 2019 at 16:53
  • $\begingroup$ @Attack68, thank you for your comments! I have a hard time following them, though. Did you mean with weights being negative instead of with weights being non-negative? Then most of the comments would make sense to me. $\endgroup$ Dec 12, 2019 at 11:35
  • $\begingroup$ @Attack68, but if you meant what you wrote: you say Maximising VaR with weights being non-negative is non-sensical. Nonnegative weights are a common restriction in finance; they represent absence of short sales. Regarding for this objective function the expected returns are redundant, this is not quite right. For a normal distribution (which the resulting portfolio return will have), VaR depends on both the variance (or standard deviation) and the expected value. Regarding you want to achieve maximal return and maximal VaR, this is not how my problem is formulated; I care only about VaR. $\endgroup$ Dec 12, 2019 at 11:37

1 Answer 1


If you define VaR as a quantile of the portfolio's returns distribution about the mean of those returns, then the minimum-variance portfolio is what you look for: it minimises the volatility around the mean, whereever this mean is. When returns are jointly normal, maximising VaR as just defined does the same.

Regarding my second comment: numerical procedures for VaR typically directly maximise a given order statistic on a sample of portfolio returns. But then there is no guarantee that in the sample the optimal VaR-portfolio will be the same as the minimum-variance portfolio. Thus, for testing a numerical procedure, knowing the true distribution and generating data from it may not be enough. Example (using R):

I create 2000 scenarios for 10 assets; each may have a weight between 0 and 25%. The returns use ridiculously high mean returns, so that the distribution is shifted away from zero.

library("NMOF")        ## https://github.com/enricoschumann/NMOF
library("neighbours")  ## https://github.com/enricoschumann/neighbours


## create random data
na <- 10              ## number of assets
ns <- 2000            ## number of scenarios
k <- ceiling(ns*0.1)  ## order statistic to maximise
R <- randomReturns(na = na, ns = ns,
                   mean = runif(na, 200/100/255, 300/100/255),
                   sd = runif(na, 0.005, 0.02),
                   rho = 0.6)

## minimum-variance solution
x.qp <- minvar(cov(R), wmin = 0, wmax = 0.25)

The VaR optimisation. The algorithm I use minimises, so I put a minus in front of the VaR.

### 1) objective function
of_var <- function(x, R, k, ...)
    -(sort(R %*% x, partial = k)[k] - sum(R %*% x)/nrow(R))

### 2) optimisation with Threshold Accepting
x.ta <- TAopt(
    OF = of_var,                    ## SETTINGS
    list(nI = 20000,                ### number of iterations
         neighbour = neighbourfun(  ### neighbourhood function
             min = 0,
             max = 0.25,
             stepsize = 1/100),
         x0 = rep(1/na, na)         ### initial solution: equal weights
    R = R, k = k)$xbest

We can compare the resulting portfolios and their returns distributions: the portfolios are very similar.

## compare weights
data.frame(MV  = round(100*x.qp, 2),
           VaR = round(100*x.ta, 2))

## compare returns distributions under given sample
plot(ecdf(R %*% rep(1/na, na)),
     main = "distribution of portfolio returns")
lines(ecdf(R %*% x.qp), col = "blue")
lines(ecdf(R %*% x.ta), col = "darkgreen")

Finally, I evaluate the VaR-objective function at the minimum-variance and at the minimum-VaR portfolio.

of_var(rep(1/na, na), R, k)  ## equal weight
## [1] 0.01316127
of_var(x.qp, R, k)           ## minimum variance
## [1] 0.008222392
of_var(x.ta, R, k)           ## minimum VaR
## [1] 0.008178637

As you can see, Threshold Accepting found a portfolio that provides a tiny advantage over the minimum-variance portfolio in this particular sample. (This could probably be improved, but it only serves to make the point here.) Under the true distribution, both portfolios should be the same.

You may also define VaR as a quantile of the returns distribution, without the centering. You cannot generally maximise any quantile of the returns distribution. Just think of the median: if you can use leverage and the portfolio has a positive return, you can increase the median (which is the same as the mean under the Gaussian distribution) without bound. So you had better define VaR as a lower quantile. Maximising it is, in a Gaussian world, equivalent to maximising

$$\mu'x - \lambda \sqrt{x' \Sigma x}$$

in which $\lambda$ is an appropriate multiplier for the standard deviation, such as 1.645 for the 5% VaR:

> qnorm(0.05)
## [1] -1.644854

This model should not pose much difficulty to a numeric solver. (For the median, $\lambda$ would be zero.)

  • $\begingroup$ Thank you for your answer! I am interested in portfolio VaR (the quantile of the return distribution of the portfolio) as commonly defined (e.g. Wikipedia). What you seem to be analyzing here is mean-adjusted portfolio VaR (the quantile of the return distribution of the portfolio minus the mean of that distribution) which is something else than portfolio VaR. $\endgroup$ Dec 14, 2019 at 9:25
  • $\begingroup$ As Attack68 mentioned, it would have helped had you specified your model more precisely. I have updated the answer. $\endgroup$ Dec 20, 2019 at 7:04
  • $\begingroup$ I have updated the question with formulas. $\endgroup$ Dec 21, 2019 at 11:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.