Skip to content

Discount Rate Formulation

This spec defines how discount rates are incorporated into the Cobre SDDP solver: the discounted Bellman equation, stage-dependent discount factors, effect on the future cost variable θ\theta, cumulative discounting, and the effect on lower/upper bound computation.

For the cyclic-mode formulation (where discounting is required for convergence), see Horizon Modes.

For notation conventions (index sets, parameters, decision variables, dual variables), see Notation Conventions.

The discount factor d(0,1]d \in (0, 1] captures the time value of money or risk preference, where future costs are valued less than present costs. This is essential for:

  1. Infinite horizon problems: Ensuring convergence of the value function
  2. Economic consistency: Reflecting opportunity cost of capital
  3. Risk adjustment: Implicitly reducing weight of distant uncertain outcomes

The standard risk-neutral Bellman recursion with discount factor dd is:

Vt(xt1)=Eωt[minxtXt(ωt){ct(xt,ut)+dtt+1Vt+1(xt)}]V_t(x_{t-1}) = \mathbb{E}_{\omega_t}\left[\min_{x_t \in \mathcal{X}_t(\omega_t)} \left\{ c_t(x_t, u_t) + d_{t \to t+1} \cdot V_{t+1}(x_t) \right\}\right]

where:

  • ct(xt,ut)c_t(x_t, u_t) is the immediate cost at stage tt
  • Vt+1(xt)V_{t+1}(x_t) is the future cost function (cost-to-go)
  • dtt+1d_{t \to t+1} is the discount factor for the transition from stage tt to t+1t+1

Discount rates are specified as an annual rate in stages.json, within the policy_graph section:

{
"policy_graph": {
"type": "finite_horizon",
"annual_discount_rate": 0.06,
"transitions": [
{ "source_id": 0, "target_id": 1, "probability": 1.0 },
{ "source_id": 1, "target_id": 2, "probability": 1.0 }
]
}
}

The system converts the annual rate to a per-transition discount factor based on each stage’s duration:

  • Stage duration Δt\Delta t is derived from end_date - start_date, expressed in years
  • Transition discount factor: dtt+1=1(1+rannual)Δtd_{t \to t+1} = \frac{1}{(1 + r_{annual})^{\Delta t}}
  • The duration used is that of the source stage (the stage whose future cost is being discounted)

A value of 0.0 means no discounting (d=1.0d = 1.0 for all transitions).

Individual transitions may override the global rate:

{
"source_id": 59,
"target_id": 48,
"probability": 1.0,
"annual_discount_rate": 0.1
}

Transition-specific discount rates are configured per transition in the case-level policy_graph.

The discount factor is applied to the future cost variable θ\theta in the stage tt objective, not to the cut coefficients:

Qt(xt1,ωt)=minxt,ut,θ{ct(xt,ut)+dtt+1θ}Q_t(x_{t-1}, \omega_t) = \min_{x_t, u_t, \theta} \left\{ c_t(x_t, u_t) + d_{t \to t+1} \cdot \theta \right\}

subject to all standard constraints (load balance, hydro balance, etc.) and Benders cuts:

θαi+hπi,hvvh+h,πi,h,lagah,i\theta \geq \alpha_i + \sum_{h} \pi^v_{i,h} \cdot v_h + \sum_{h,\ell} \pi^{lag}_{i,h,\ell} \cdot a_{h,\ell} \quad \forall i

The cut coefficients (αi,πi,hv,πi,h,lag)(\alpha_i, \pi^v_{i,h}, \pi^{lag}_{i,h,\ell}) are the undiscounted values from the backward pass. Cuts are stored and managed in undiscounted form — the discount factor appears only in the objective coefficient of θ\theta. See Cut Management for cut generation and aggregation details.

For a path from stage 1 to stage TT, the cumulative discount factor is:

d1T=t=1T1dtt+1d_{1 \to T} = \prod_{t=1}^{T-1} d_{t \to t+1}

The present value at stage 1 of costs incurred at stage TT is:

PV1[cT]=d1TcT\text{PV}_1[c_T] = d_{1 \to T} \cdot c_T

where d11=1d_{1 \to 1} = 1.

The deterministic lower bound at iteration kk is:

zk=c1(x^1k)+d12θ1k\underline{z}^k = c_1(\hat{x}_1^k) + d_{1 \to 2} \cdot \theta_1^k

where θ1k\theta_1^k is the optimal value of the future cost variable at stage 1. Because the discount factor cascades through θ\theta at each stage, the lower bound already reflects cumulative discounting to stage 1 present value.

7 Upper Bound (Simulation) with Discounting

Section titled “7 Upper Bound (Simulation) with Discounting”

When simulating the policy to estimate the upper bound:

zˉk=1Mm=1Mt=1Td1tct(x^tk,m)\bar{z}^k = \frac{1}{M} \sum_{m=1}^{M} \sum_{t=1}^{T} d_{1 \to t} \cdot c_t(\hat{x}_t^{k,m})

Each stage’s immediate cost is explicitly discounted to stage 1 present value using the cumulative discount factor.

For stopping rules that use these bounds, see Stopping Rules.

Both the lower bound z\underline{z} and upper bound zˉ\bar{z} represent total expected cost expressed in present value at stage 1:

  • A lower bound of $100M means the optimal policy costs at least $100M in stage-1 dollars
  • Future costs are already discounted: a $1M cost at stage 12 with d112=0.95d_{1 \to 12} = 0.95 contributes $0.95M to the bounds
  • Comparisons between bounds and between iterations are valid because they use consistent discounting
  • When reporting per-stage costs in simulation outputs, Cobre reports both nominal (undiscounted) and present value costs

For cyclic policy graphs (infinite periodic horizon), discounting is required for convergence. The cumulative discount around one full cycle must satisfy:

dcycle=tcycledtt+1<1d_{cycle} = \prod_{t \in \text{cycle}} d_{t \to t+1} < 1

This ensures the value function remains finite: limndcyclenVt(x)=0\lim_{n \to \infty} d_{cycle}^n \cdot V_t(x) = 0.

Typical setup: An annual discount rate of 6% gives dcycle0.94d_{cycle} \approx 0.94 per 12-month cycle.

For the complete cyclic-mode formulation — including the season-indexed cut pool, the cut-sharing equation, and the cycle convergence criterion — see Horizon Modes.

  • SDDP Algorithm — Core Bellman equation and forward/backward pass structure that discount rates modify
  • Cut Management — Cut coefficients remain undiscounted; discount applied to θ\theta in objective
  • Stopping Rules — Convergence criteria using discounted lower/upper bounds
  • Upper Bound Evaluation — Inner approximation uses discounted vertex values
  • Horizon Modes — Finite vs cyclic policy graphs; cyclic-mode formal structure (season function, cycle convergence inequality, season-indexed cut pool, fixed-point Bellman operator)
  • Notation Conventions — Index sets, parameters, decision variables, and dual variables used throughout