A primal-dual aggregation algorithm for minimizing conditional value-at-risk in linear programs

Daniel Espinoza, Eduardo Moreno

Research output: Contribution to journalArticlepeer-review

20 Scopus citations


Recent years have seen growing interest in coherent risk measures, especially in Conditional Value-at-Risk ($$\mathrm {CVaR}$$CVaR). Since $$\mathrm {CVaR}$$CVaR is a convex function, it is suitable as an objective for optimization problems when we desire to minimize risk. In the case that the underlying distribution has discrete support, this problem can be formulated as a linear programming (LP) problem. Over more general distributions, recent techniques, such as the sample average approximation method, allow to approximate the solution by solving a series of sampled problems, although the latter approach may require a large number of samples when the risk measures concentrate on the tail of the underlying distributions. In this paper we propose an automatic primal-dual aggregation scheme to exactly solve these special structured LPs with a very large number of scenarios. The algorithm aggregates scenarios and constraints in order to solve a smaller problem, which is automatically disaggregated using the information of its dual variables. We compare this algorithm with other common approaches found in related literature, such as an improved formulation of the full problem, cut-generation schemes and other problem-specific approaches available in commercial software. Extensive computational experiments are performed on portfolio and general LP instances.

Original languageEnglish
Pages (from-to)617-638
Number of pages22
JournalComputational Optimization and Applications
Issue number3
StatePublished - 1 Dec 2014


  • Aggregation techniques
  • Approximation methods
  • Conditional value at risk
  • Sample average approximation


Dive into the research topics of 'A primal-dual aggregation algorithm for minimizing conditional value-at-risk in linear programs'. Together they form a unique fingerprint.

Cite this