Shadow Price Analysis¶
Method — instantiates Bottleneck Capacity Shadowing
Reads the dual of a solved optimization model to price the marginal objective gain from relaxing each binding constraint by one unit.
Shadow Price Analysis is the formal move that turns a solved optimization model into a per-constraint price. Once a model is solved to optimality, every constraint carries a dual value — its shadow price — equal to how much the objective would improve if that constraint were loosened by one unit. A constraint with a nonzero shadow price is binding; one with a zero shadow price has slack, and relaxing it buys nothing. That is the mechanism's whole contribution: not "where does it hurt" but "what is one more unit of room worth, right here, right now, in the objective's own units." Its defining trait — the thing that separates it from every sibling — is that it reads a single number off the current optimum rather than sweeping a range, drawing a map, or watching what happens afterward. The price is exact but strictly local.
Example¶
A grid operator runs an economic-dispatch model each interval: pick generator output to meet demand at least cost, subject to each generator's limits and each transmission line's thermal rating. The solved model hands back a dual value on every constraint. On the line feeding a congested load pocket, that dual is the Locational Marginal Price — the extra cost of serving one more megawatt inside the pocket, which is exactly what an additional megawatt of transfer capacity on that line would save. Suppose it comes back at roughly $40/MWh while a second, uncongested corridor shows a shadow price of zero. The comparison is decisive: reinforcing the congested line relieves real cost; upgrading the uncongested one, however tempting politically, is worth nothing at the current dispatch. The operator now has a defensible marginal price attached to each candidate reinforcement instead of an argument about which line "feels" overloaded.
How it works¶
- Solve to optimality. Formulate the objective and constraints and solve the model (typically a linear program). Shadow prices only exist relative to an optimal solution.
- Read the duals. Each constraint's dual variable is its shadow price. A nonzero dual flags a binding constraint; the value is the marginal objective change per unit of relaxation.
- Interpret in objective units. Convert the raw dual into the decision's language — dollars per bed, throughput per connection, cost per megawatt — so binding constraints are directly comparable.
- Stay in the linear neighborhood. The price is valid for a small relaxation only; a large one can change which constraints bind and invalidate the number.
Tuning parameters¶
- Model fidelity — how faithfully the formulation captures the real system. A mis-specified model returns precise-but-wrong duals; precision here is not accuracy.
- Degeneracy handling — at a degenerate optimum the shadow price can be ambiguous or knife-edge zero. Whether to perturb, re-solve, or report a left/right price is a real choice.
- Relaxation unit — the size of the "one unit" priced. Too large and you leave the linear regime the dual assumes.
- Constraint aggregation — pricing each raw constraint versus grouped families. Finer granularity localizes value but adds noise and interpretation burden.
- Re-solve cadence — a one-shot read versus re-pricing every time the system state changes, since duals drift as the optimum moves.
When it helps, and when it misleads¶
Its strength is that it is cheap, exact at the point of evaluation, and directly comparable across very different constraints — the canonical way to learn which binding limit is worth the most per unit of relief. It is the mechanism the archetype leans on when a credible optimization model exists.
Its central failure mode is over-reach: a shadow price is local, and treating it as valid across a large relaxation is the classic error, because past a certain point a different constraint binds and the price simply no longer applies. It also assumes the model — and the objective baked into it — is right, which invites objective laundering: presenting a dual as neutral fact when the objective encodes contested value judgments. The theorem underneath it, complementary slackness, is precise about binding status but says nothing about how far the price extends.[n1] The discipline that keeps it honest is to quote the price with its validity range, re-solve after any real relaxation rather than extrapolating, and keep the objective explicit so no one mistakes a dual for a value-free verdict.
How it implements the components¶
binding_constraint— a nonzero dual is precisely the test of binding status; the method identifies which constraints actually limit the objective and which merely have slack.shadow_value— the dual value is the shadow value: the marginal objective gain per unit of relaxation, in the objective's own units.
It does not say how far that value holds or what the relaxation would cost — the response range and cost model are marginal_response_range, relief_cost_model, and baseline_solution of Constraint Sensitivity Report, its nearest twin: that report sweeps a range, this method reads a single point. It does not lay out the concrete relief options or rank them (relaxation_option, relief_priority) — that's Bottleneck Valuation Map; nor verify afterward that relief moved the bottleneck (constraint_migration_monitor, downstream_effect_audit) — that's Before/After Constraint Monitoring.
Related¶
- Instantiates: Bottleneck Capacity Shadowing — Shadow Price Analysis supplies the marginal value the rest of the appraisal ranks and acts on.
- Sibling mechanisms: Constraint Sensitivity Report · Bottleneck Valuation Map · Before/After Constraint Monitoring · Capacity Investment Analysis · Marginal Capacity Value Review
Editorial Notes¶
Form Classification¶
Form family: Analysis, Modeling & Optimization
Rationale: Shadow Price Analysis operates as an analytical, modeling, inference, comparison, or optimization procedure that derives insight or a solution because it reads the dual of a solved optimization model to price the marginal objective gain from relaxing each binding constraint by one unit.
Independent corroboration: The frozen evidence defines Shadow Price Analysis as 'Reads the dual of a solved optimization model to price the marginal objective gain from relaxing each binding constraint by one unit', so its operative form is Analysis, Modeling & Optimization.
Review outcome: Independent reviewer agreement; high confidence.
Origin Attribution¶
Primary origin: Operations Research
Origin pattern: Single lineage
Present-day reach: Specialized
Rationale: Interpreting a dual variable as the marginal objective value of relaxing a binding constraint is canonical linear and convex optimization.
Related originating lineages:
- Economics & Finance — The dual value has the economic interpretation of an implicit scarcity price.
- Mathematics — Duality theory supplies the formal sensitivity relationship.
Review resolution: The blind reviewers agree that operations_research is the primary origin and differ only on alternate origin disagreement. I preserve every independently explained alternate from both records rather than imposing a numeric cap. I retain single_lineage because the combined record shows one traceable formative lineage. The broader reach of specialized records portability separately from historical provenance, and encyclopedia_synthesis=false preserves the affirmative synthesis judgment where either reviewer identified one.
Review outcome: Reconciled after independent review; high confidence.
Notes¶
The archetype is careful to keep this mechanism below itself: a solver output containing shadow prices is not Bottleneck Capacity Shadowing, only the estimate the pattern consumes. The distinction matters because a shadow price is silent on legitimacy — it will happily price the relaxation of a safety, fairness, or due-process constraint. Keeping the pricing method separate from the relief decision is what lets a team trust the number without letting it make the call.
[n1] Complementary slackness — a standard optimality condition in linear programming: at an optimum, a constraint is either binding (zero slack) with a possibly nonzero dual, or slack with a zero dual. It certifies which constraints limit the objective, but it is a statement about the current optimal basis, not a guarantee that the price survives a large relaxation. ↩