Risk Measures
Purpose
This spec defines the risk-averse SDDP formulation used in Cobre, based on Conditional Value-at-Risk (CVaR). It covers the CVaR definition, the convex combination risk measure, dual representations, the risk-averse subgradient theorem, modified Bellman equation with discount factor, risk-averse cut generation, per-stage risk profiles, and the critical implications for bound validity.
For notation conventions (index sets, parameters, decision variables, dual variables), see Notation Conventions.
Symbol conventions:
- denotes the CVaR confidence level (matching the
alphafield instages.json). This is the standard convention in the risk measure literature.- denotes per-scenario cut intercepts within this spec. This corresponds to in Cut Management §1, renamed here to avoid collision with the CVaR parameter.
- denotes the discount factor. See Discount Rate.
- denotes the risk-adjusted probability measure (not , which denotes turbined flow).
- denotes the dual penalty function in the general dual representation.
1 Motivation
Risk-neutral SDDP minimizes expected cost, which can lead to policies that perform poorly in adverse scenarios. Risk-averse SDDP incorporates a coherent risk measure (typically CVaR) to protect against tail risks while maintaining the convexity properties required for valid cut generation.
2 Conditional Value-at-Risk (CVaR)
For a random variable representing cost and confidence level :
where captures the excess cost above threshold .
Interpretation: CVaR is the expected cost in the worst -fraction of scenarios.
| Risk Posture | Meaning | |
|---|---|---|
| 1.0 | Risk-neutral | CVaR = (expected value) |
| 0.5 | Moderately risk-averse | Average of worst 50% of outcomes |
| 0.2 | Risk-averse | Average of worst 20% of outcomes |
| 0.05 | Highly risk-averse | Average of worst 5% of outcomes |
3 Convex Combination Risk Measure
Cobre uses a convex combination of expectation and CVaR (following the SDDP.jl convention):
where:
- : Risk aversion weight (0 = risk-neutral, 1 = pure CVaR)
- : CVaR confidence level
This is sometimes called the EAVaR (Expectation + Average Value-at-Risk) risk measure.
4 Dual Representation of Convex Risk Measures
Convex risk measures have a dual representation that is essential for computing risk-averse cuts:
where:
- is a convex subset of the probability simplex
- is a concave penalty function
Interpretation: The dual computes the expectation with respect to the worst probability vector within the set , less a penalty term .
4.1 CVaR Dual Representation
For CVaR, the dual representation is:
where the risk set is:
The penalty for CVaR (no penalty term).
Interpretation: CVaR puts more probability weight on the worst outcomes, with each scenario receiving at most probability mass. For small , only the worst scenarios receive significant weight.
4.2 EAVaR Dual Representation
For the convex combination :
5 Risk-Averse Subgradient Theorem
The key theorem for computing risk-averse cuts:
Theorem (Risk-Averse Subgradient): Let be convex with respect to for all fixed , and let .
If , then:
is a subgradient of at .
Application to Cut Generation: In SDDP, the subgradients are the cut coefficients obtained from LP duals (see Cut Management §2). The risk-averse cut coefficients are computed by replacing the uniform scenario probabilities with risk-adjusted probabilities :
where is the optimal dual probability vector computed from the scenario costs .
6 Risk-Averse Bellman Equation
The risk-averse value function with discount factor satisfies:
This modifies the standard Bellman recursion in two ways:
- Risk measure replaces expectation: replaces
- Discount factor on future cost: discounts the cost-to-go (see Discount Rate §2)
Time consistency: The risk measure is applied stage-wise (nested formulation), not to the total cost. This guarantees time consistency, which is essential for the dynamic programming decomposition. Formally: , not .
In the LP subproblem at stage , the future cost variable appears in the objective as (see Discount Rate §5). Cuts bound (not ), so the discount factor multiplies only in the objective — exactly as in the risk-neutral case.
7 Cut Generation with Risk Measures
For each visited state , compute the risk-averse cut as follows:
Step 1: Solve subproblems for all realizations :
Extract dual solutions and compute per-scenario cut coefficients:
- Intercept:
- Coefficients: — derived from LP duals (see Cut Management §2)
Step 2: Compute risk-adjusted scenario weights .
Each scenario has a probability upper bound:
Since when and , the total capacity . The risk-adjusted weights are found by assigning as much weight as possible to the most expensive scenarios:
- Sort scenarios by cost in descending order
- Walk down the sorted list, assigning (the upper bound) to each scenario
- When the cumulative weight reaches 1, the current scenario receives the remaining fraction, and all cheaper scenarios get
This is a greedy allocation (continuous knapsack) — it places maximum weight on the worst scenarios and minimum weight on the best.
Special cases:
- Risk-neutral (): for all , so and this reduces to the standard aggregation from Cut Management §3.
- Pure CVaR (): . Only the worst -fraction of scenarios receive weight; all others get .
- Convex combination (): All scenarios receive at least some weight (the floor), but the worst scenarios receive up to .
Equivalence note: This sorting procedure produces the same as solving the dual LP from §4.2, because the LP maximizes a linear objective with per-scenario upper bounds — a structure whose optimal solution is the greedy allocation above.
Step 3: Compute risk-averse cut coefficients using (justified by the theorem in §5):
Step 4: Add cut to stage :
Comparison with risk-neutral aggregation: The only difference from Cut Management §3 is that the scenario probabilities are replaced by the risk-adjusted weights .
8 Per-Stage Risk Profiles
Risk aversion can vary by stage. The risk_measure field in stages.json specifies per stage (see Input Scenarios §1.7):
| Option | Description |
|---|---|
"expectation" | Risk-neutral expected value (default) |
{"cvar": {...}} | CVaR parameters with alpha (confidence level) and lambda (weight) |
Example with stage-varying risk:
{
"stages": [
{
"id": 0,
"risk_measure": { "cvar": { "alpha": 0.95, "lambda": 0.5 } }
},
{
"id": 1,
"risk_measure": { "cvar": { "alpha": 0.95, "lambda": 0.25 } }
},
{
"id": 2,
"risk_measure": "expectation"
}
]
}
This allows decreasing risk aversion over the horizon (e.g., higher for near-term stages, lower for distant stages).
9 Upper Bound with Risk Measures
Monte Carlo simulation cannot directly estimate the upper bound for CVaR problems because:
- CVaR is computed over the entire distribution, not sample averages
- The optimal (VaR threshold) changes with the policy
For risk-averse problems, the inner approximation (SIDP) provides deterministic upper bounds that remain valid regardless of the risk measure. See Upper Bound Evaluation §1 for the complete formulation.
10 Lower Bound Validity with Risk Measures
Critical Warning: The lower bound computed during SDDP training is NOT a valid bound for risk-averse problems.
Why the Lower Bound Fails
In risk-neutral SDDP, the lower bound is the optimal value of the first-stage LP, which uses cuts that provide valid outer approximations of the expected future cost. This bound converges to the true optimal expected cost.
In risk-averse SDDP, this property does not hold because:
-
Cuts approximate nested risk measures: Each cut approximates , where the risk measure depends on the distribution of costs at that stage.
-
The LP optimizes under the wrong distribution: The first-stage LP optimizes , but the risk-adjusted distribution used in the cuts was computed for the training states, not for the optimal first-stage decision.
-
Nested risk measures are not time-consistent in expectation: Unlike , the nested application of CVaR does not satisfy:
What the “Lower Bound” Represents
For risk-averse problems, the value computed by SDDP is:
- A convergence indicator: It increases monotonically and plateaus when additional cuts provide no improvement
- NOT a valid lower bound on the true risk-averse optimal cost
Recommendations
| Purpose | Method |
|---|---|
| Convergence monitoring | Track stabilization (bound stalling rule — see Stopping Rules §4) |
| Valid upper bound | Inner approximation (SIDP) — see Upper Bound Evaluation |
| Policy evaluation | Monte Carlo simulation with risk-averse policy decisions |
Convergence reporting: When risk measures are enabled, convergence reports should label the “lower bound” as “convergence indicator” or explicitly note that it is not a valid bound.
11 References
Philpott, A.B., de Matos, V.L., & Finardi, E.C. (2013). “On solving multistage stochastic programs with coherent risk measures.” Operations Research, 61(4), 957-970. https://doi.org/10.1287/opre.2013.1175
Shapiro, A. (2011). “Analysis of stochastic dual dynamic programming method.” European Journal of Operational Research, 209(1), 63-72.
Cross-References
- Notation Conventions — Symbol definitions, dual variable notation, and sign conventions
- SDDP Algorithm — Bellman recursion and forward/backward pass structure modified by risk measures
- Cut Management — Dual extraction and cut coefficient computation; risk-averse aggregation replaces with (§7)
- Stopping Rules — Bound stalling recommended for risk-averse convergence monitoring; simulation-based stopping limitations
- Discount Rate — Discount factor convention and discounted Bellman equation
- Infinite Horizon — Interaction of risk measures with periodic policy graphs
- Upper Bound Evaluation — SIDP inner approximation for valid upper bounds with CVaR objectives
- Input Scenarios §1.7 — JSON schema for
risk_measurefield:"expectation"or{"cvar": {"alpha": ..., "lambda": ...}}