Methodology Cost engine Build pgiq-20260926-211939
How PowerGridIQ builds a standardized recurring delivered-cost band for one declared large-load case, what each published line is worth, and the rules that stop a band publishing at all. This describes the engine as it currently runs; every vocabulary below is read from the code that produces the figures, so this page cannot drift from them.
Every band answers one question about one customer, and comparability depends entirely on that customer being the same everywhere:
| Contracted demand | 100 MW |
|---|---|
| Annual load factor | 0.95 — 8,322 MWh per MW-year |
| Service | Transmission-level (high voltage) |
| Currency | US dollars per MWh |
| Excluded | Customer-funded connection capital, and refundable taxes |
The band does not transfer below the archetype's load factor. Demand, capacity and network charges are levied per MW of contracted demand, not per MWh consumed. Spread over fewer MWh they contribute more per MWh, so applying a 95% band to a 60% load understates its delivered cost — and understates it exactly for the flexible profiles most likely to be screened. The engine refuses that calculation rather than performing it quietly.
This is the single most important thing to understand about a PowerGridIQ cost breakdown, and
until August 2026 it had only one answer. It now has two, and the payload says which one applies
in realized_cost.total_derivation.
total_derivation | How the number was made | What the sum proves |
|---|---|---|
compiled_band_allocated_across_categories |
The delivered-cost band is compiled first, from cited market-monitor and operator sources. The component lines are then an allocation of its midpoint. | Nothing. The lines sum to the midpoint by construction, always, in every such market — so "the components reconcile" reads like assurance and carries none. |
tariff_reconstruction |
Each line is derived independently from a filed, dated tariff rate by a published formula, and the total is whatever they came to. Nothing was fitted to a preselected figure. | That the filed rates, applied to the declared case, produce this delivered cost. The sum is a result rather than an identity. |
Both produce a number and a set of lines that add up to it. Only one of them is evidence. A reader who cannot tell them apart will over-trust the first, which is why the field exists rather than being left implicit in the confidence label.
Every component line carries provenance.provenance_state. The boundary that matters
most is the first one: a published rate is not a published answer. Dominion files
Rider A at 3.7648 cents per kWh. It does not publish "$37.65/MWh for a 100 MW load at 95%
load factor" — that conversion is ours, over our archetype, and it can be wrong in ways the rate
sheet cannot. Calling it observed would borrow the utility's authority for our arithmetic; calling
it an allocation would throw away a filed rate and pretend we guessed. Both are false, in opposite
directions.
| State | Meaning |
|---|---|
directly_observed Directly observed | The cited source publishes this component amount for this case. No conversion of ours stands between the source and the number. |
tariff_derived Tariff-derived | Calculated from applicable filed tariff rates, riders or taxes by a stated formula, at the declared archetype. The rates are published and dated; the conversion to $/MWh is ours and is published with it. |
estimated_allocation Estimated allocation | Apportioned from a compiled total or midpoint by analyst judgement. Not independently calculated, and not corroborated by anything outside the band it came from. |
unavailable Unavailable | No defensible value exists for this component today. Published as absent rather than filled with a proxy. |
A tariff_derived line publishes the arithmetic with the number: formula,
method, inputs, customer_applicability, source,
source_id and effective. A derived figure a reader cannot reproduce is an
assertion wearing a decimal point.
The evidence class and confidence are derived from this state, not set beside it.
They were once set independently at three call sites, and in August 2026 a live record published a
line that was independently_sourced and allocation_of_compiled_midpoint at
the same time. One field is now the source of truth and a build gate enforces it.
A sourced line is still not a decomposed one. Where one line covers several
categories, category_coverage reports each of them as bundled and carries
line_provenance_state for the line they share. Dominion's base schedule is read exactly
and still bundles energy, transmission, distribution and demand: knowing a number is not knowing how
it splits.
How much of a figure is evidenced is published per market at
component_status.provenance_summary: counts and dollars by state, the evidenced share
as a percentage, and the lines still awaiting evidence. Today that share is 100% for Northern
Virginia and 0% for the six comparison markets, whose lines remain allocations. Publishing that
number is uncomfortable and is the point.
| Check | What it asks | Status |
|---|---|---|
arithmetic_integrity | Do the printed lines add up to the total printed beneath them? | A hard build gate. Cheap, and it catches an edited line or a rounding drift. It is not evidence: an allocation always sums to its own anchor. |
evidence_reconciliation | Were the lines observed separately, and do they then agree with the compiled total? | A published coverage grade, not a gate. independently_reconciled only where every
line stands on its own evidence; not_independently_reconciled wherever the lines
apportion a compiled band. |
| Class | Meaning |
|---|---|
estimated_allocation | Apportioned from the compiled midpoint. No independent observation stands behind this line. |
independently_corroborated | Still an apportionment, but an independently sourced observation of the same category agrees with it within tolerance. The published value is the allocation, not the observation. |
independently_sourced | The published value IS the observation, with its own source, date, method and confidence. |
Corroboration is not sourcing. Where a cited observation of the same category
agrees with an allocated line within $1.00/MWh, the
line is independently_corroborated: the published value remains the allocation and the
observation is recorded beside it. Substituting the observation would break the sum against the
compiled midpoint and move a live band on partial evidence. Only
independently_sourced counts toward publication grade.
Every published line carries its own source, date, method and confidence. The trap is that all four exist for the band, and pasting them onto each line would satisfy the requirement while asserting something false: the band's source observed a delivered cost, which an analyst then apportioned. It never saw the energy line.
So an allocated line reports the band's source as source_of_band_not_line, carries
no source key at all, and takes its confidence from a vocabulary the band cannot lend
it. The two are deliberately disjoint:
| Line confidence | Meaning |
|---|---|
observed | Separately observed from a cited source, with its own date and method. |
modelled_from_observed | Calculated by PowerGridIQ from a cited observation, using a published formula and stated assumptions. |
allocation | Apportioned from the compiled delivered-cost midpoint by analyst judgement. Not separately observed. |
bundled_allocation | Apportioned, and covering more than one cost category in a single line. Neither the total nor the split within it was separately observed. |
tariff_derived | Calculated from filed, dated tariff rates by a published formula at the declared archetype. The rate is the utility's; the conversion is ours. |
Band confidence is administered, triangulated or
modelled. No line can read as any of those and borrow the band's standing.
A comparable stack needs comparable categories. Coverage is derived against this vocabulary and the gaps are published rather than implied:
| Category | In the recurring boundary? |
|---|---|
energy Wholesale or tariff energy | yes |
capacity Capacity or resource adequacy | yes |
transmission Transmission | yes |
distribution Distribution | yes |
demand_charges Demand charges | yes |
ancillary Ancillary services and uplift | yes |
riders Riders and unavoidable regulatory charges | yes |
carbon Carbon-related charges | yes |
taxes Recurring taxes | yes |
connection_capital Customer-funded connection capital | no — reported separately |
Transmission & delivery is bundled in most markets. One line covers
transmission, distribution and demand-related network charges, and no separate figure for any of
them has been sourced. That is reported as bundled, never as three estimates: the line
exists, but nobody has apportioned it, and calling that an estimate would credit an apportionment
never made. No artificial split is created to populate categories.
A capacity-auction clearing price is the one input that is genuinely observed — published by the operator, dated to a delivery year, derived from nothing of ours. Turning it into the archetype's $/MWh is a different act, and the two are reported separately with separate provenance.
$/kW-month → ($/kW-mo × 12 × 1000) / (8760 × load factor) $/MW-day → ($/MW-day × 365) / (8760 × load factor) at the declared case: 8760 × 0.95 = 8,322 MWh per MW-year
No reserve-margin gross-up is applied, and the result is a floor. A load's capacity obligation is not its contracted MW: it is set by its contribution to system peak and grossed up by a reserve margin each market defines for itself. We hold no cited multiplier for any market, so the multiplier is 1.00, stated, and the output is labelled a floor — the real obligation is at least this and probably more. Inventing a multiplier would place a PowerGridIQ assumption inside a number a reader would take for an auction result.
This is not a tariff charge and must not be quoted as one. It is an auction clearing price converted to the archetype's consumption; tariff research has not established what a supplier would actually bill.
Price basis is part of provenance. A current_delivery_year price
answers what a load pays now; a forward_auction price answers what a different load
contracted to pay later. Both are cited and correct, and comparing one against the other under a
single column heading is a boundary error. A comparator on a different basis may not corroborate a
line and may not supply its provenance.
A market that cannot be priced is not a hole in the product. Each state below implies a different remedy and a different expectation of when, if ever, it closes:
| Evidence state | Meaning |
|---|---|
publication_grade Publication grade | Every publication gate is clear: applicability, cost boundary, components with their own provenance, reconciliation and evidence depth. |
applicable_evidence_incomplete Applicable, evidence incomplete | The archetype can buy the service and the band is sound, but some published figures do not yet carry their own source, date, method and confidence. |
methodology_unresolved Methodology unresolved | The underlying observations exist and are cited, but the correct conversion or treatment for the archetype is not yet established, so the resulting figure is not settled. |
inapplicable Inapplicable evidence | The evidence we hold cites a tariff or service the standard archetype cannot purchase. It may be accurate about some other customer and still say nothing about this one. |
scope_fragmented Observable in part; complete cost fragmented by jurisdiction | Part of the cost is established from a filed, applicable tariff and is published. The remainder is set by many serving utilities across several jurisdictions, so no single figure exists at this market's geographic scope. The gap is not missing research; it is a scope the evidence cannot span. |
structurally_unavailable Structurally unavailable | No public evidence can establish this cost, because the archetype is contract-served in this market rather than tariff-served. There is no posted figure to find. |
And the coarse answer a reader needs first — is there a number, is one coming, or must it be negotiated:
| Availability | What to do next |
|---|---|
standardized_observable Standardized cost observable | Use the band, with its stated confidence and boundary. |
contingent_evolving Cost contingent or evolving | Treat cost as unresolved and track the named proceeding. Do not plan against a figure that a pending decision may change. |
customer_specific Customer-specific cost | Engage the utility directly. No published band is coming, and waiting for one loses time. |
scheduled_change Cost basis changes on a known date | Plan against the new tariff from its effective date and treat today's cost as a different basis. Check whether its terms -- contract length, minimum charges, exit fees -- bind your load shape, because they are written for a customer who may not be you. |
varies_by_jurisdiction Availability varies by jurisdiction | Identify the jurisdiction the site sits in and read that record. Do not apply one jurisdiction's conclusion to the region. |
A defect against the component allocation withholds the breakdown and leaves the band standing. A defect against the band itself withdraws it, because the band is what the screen filters on and the memo concludes from. No substitute is published — no widened range, no carried midpoint, no modelled stand-in.
| Defect | Market | Why |
|---|---|---|
| #317 | desert-southwest | The published band blended an effective regulated rate with APS's PROPOSED extra-large-load class of roughly +45%, which the Arizona Corporation Commission has not decided: the rate-case hearing closed 7 July 2026 and the Commission's vote is due by 31 December 2026. A pending proceeding may not set a current delivered cost. The band's primary source was also an ACC large-load workshop rather than a tariff. |
| #320 | isone | A single delivered-cost estimate cannot be defended at ISO-NE-wide scope. The regional transmission layer is uniform and verifiable, but local transmission, distribution and retail demand charges are set by 32 serving utilities across six states and five regulators. The superseded values are recorded in the correction record, not here. |
| #305 | pacific-northwest | The published band was derived from the Bonneville Power Administration priority-firm rate, which a new large load cannot obtain: federal hydro allocations are largely committed and a new customer would pay a market premium above the federal rate. A tariff the standard archetype cannot purchase may not set a delivered-cost band. |
| #316 | us-southeast | The band was anchored on a regulated bundled industrial tariff that a new 100 MW load cannot take: Georgia closed its standard schedules to new large loads on 1 February 2025 and requires an individually negotiated contract instead. The band's primary source was also EIA industrial monthly pricing, which may serve only as a lagged validation layer and not as the headline large-load price. |
Some markets publish enough for part of the delivered cost to be derived exactly from primary documents, while the rest stays out of reach. That part is published as a verified cost layer — a figure built line by line from named primaries, shown beside the band and never inside it. Today 2 markets currently publish one.
A verified layer is not a delivered cost and is not a cheaper version of the band. It covers fewer things. Where a market has both, the two answer different questions, are often in different currencies, and must never be netted, ranked or subtracted against each other.
| Rule | Why |
|---|---|
A layer never enters realized_cost | Separation is the safety mechanism. A sourced layer merged into a band would upgrade the band's apparent provenance without improving it, and the merge could not be undone by a reader. |
| Every component line names its own primary | A layer is only worth more than a band because each line is separately checkable. A layer with one citation for five lines is a band wearing better clothes. |
| What it excludes is printed, not implied | The exclusions are the part a reader is most likely to get wrong, so they are stated as plainly as the total. |
| A determinant is established before it is used | A published rate is not enough on its own: most tariffs charge on a quantity — a billing capacity, a coincident demand, a power factor — that is defined in a different document, or not defined publicly at all. Where the quantity cannot be established, the layer carries a range rather than a point, and says which determinant the range is. |
The obvious assumption is that a partial layer is simply unfinished research. Often it is not. A transmission tariff can set some of its charges as published rates and leave others as allocations — a share of whatever the system actually spent that month, divided among users after the fact. Those charges have no rate to read, in any document, ever. Reading more of the tariff does not close them; only settlement data would, and that is a different class of source.
This matters more than it sounds. A market can have a single named operator publishing a current, approved, uniform tariff — every signal that usually means "reconstructable" — and still not be reconstructable in full. Where that is the case, the layer says so rather than presenting its readable part as the whole.
Public evidence currently supports defensible standardized recurring-cost bands for the U.S. organized markets tested, where the 100 MW archetype can be modelled using observable and applicable market inputs. It does not support equivalent standardized bands in the vertically integrated markets tested, where large new loads depend on tariffs that are inapplicable, still being decided, or superseded by customer-specific agreements.
Four US vertically integrated markets were tested against this standard and all four failed. The thresholds converge: Georgia's rule, the North Carolina Utilities Commission's large-load definition and Arizona's extra-large class all bite at or around 100 MW. The archetype sits exactly where US regulated utilities stop offering a posted rate. This is a finding about market structure, not a research backlog.
Sources are ranked by what they can settle, not by how authoritative they sound. A policy institute may be entirely right about a trend and still cannot establish a rate.
| Rank | Source | What it can settle |
|---|---|---|
| 1 | A filed, effective tariff the archetype may take | The delivered cost
itself, by derivation. The only source that supports tariff_derived. |
| 2 | An operator or regulator publishing the component amount for this case | A line, directly. Supports directly_observed. |
| 3 | A market monitor, auction result or operator statistic | A band, and a cross-check against an allocated line where the price basis matches. |
| 4 | Compiled national or sectoral statistics | A band, with wider uncertainty. Never a line. |
| 5 | Policy research and commentary | Context, direction and dating. Never a price. A withdrawn Northern Virginia band was built partly this way, which is how the rule came to be written down. |
A band's source is not a line's source. Where lines are apportioned, the
provenance field is named source_of_band_not_line for that reason, and the URL beside
it is labelled the same way. The naming is deliberately awkward so it cannot be quoted as if it
established the line.
Price basis must match before anything corroborates anything. A forward-auction clearing price for a future delivery year and a current delivered cost answer different questions. ISO-New England holds a cited capacity price that is refused as corroboration for exactly this reason: letting it agree would launder a basis mismatch into an evidence upgrade.
When a published figure turns out to be wrong, it is withdrawn rather than quietly
edited, and the correction is published with a date at
/corrections and in /data/corrections.json.
correction and
flagged is_market_signal: false. A data-quality fix must never enter a price signal.The canonical cost state is snapshotted append-only, and the difference between snapshots is classified. A time series of midpoints would let someone draw a line; it would not answer the only question that matters when a number moves.
| Change class | Meaning | Market signal? |
|---|---|---|
economic_change | The underlying market moved. Same source and method, a new observation period. | yes |
source_revision | The source restated a figure for a period it had already published. The market did not move; the record of it did. | no |
input_replacement | PowerGridIQ changed which source or which period it reads. Any movement is ours, not the market's. | no |
methodology_change | A method or conversion version changed. The arithmetic moved, not the world. | no |
evidence_state_change | What can be published changed: a band withdrawn or restored, a breakdown withheld, a review opened or closed. | no |
correction | A defect was recorded against the previous figure and it was withdrawn or repaired. | no |
input_regression | PowerGridIQ moved to an EARLIER observation period than it was previously reading. This is never a market signal and usually means a stale input was reintroduced. | no |
first_observation | The first vintage recorded for this market. Nothing changed; this is where the record begins. | no |
unclassified_change | A value moved and the classification rules cannot determine why. Held for an editor rather than guessed. | unknown |
Direction matters, not difference. A later observation period on the same source is the
market moving. An earlier one is us reading the wrong year, which is never a market signal
and is recorded as input_regression — a defect signal. A vintage is never edited; a
correction is a new vintage, so "what did PowerGridIQ show on the day I decided" stays answerable
even when the answer is unflattering.
The validated core is ercot-west, ercot-central, spp, miso, isone, nyiso. Six organized markets, five ISO/RTOs, four capacity constructs.
It contains no vertically integrated market, for the reason above. It is the set we can defend
today, not a finished destination.
Intended use. Comparing markets against one another on a single declared case, early in a siting decision, and knowing how much of each comparison is evidence. It is a screening instrument.
Not intended. As a quotation, a budget line, or a substitute for an offer. No figure here is a price anyone has agreed to sell you. A real site has a real interconnection point, a real load shape and a real contract, and all three move the number.
provenance_summary.evidenced_share_pct. Read it before quoting a component.| Component evidence | cost-components-1.0 |
|---|---|
| Cost categories | cost-categories-1.0 |
| Line provenance | line-provenance-1.1 |
| Capacity conversion | capacity-auction-to-mwh-1.0 |
| Evidence state | evidence-state-1.0 |
| Cost vintages | cost-vintage-1.0 |
| Market-structure finding | us-vertically-integrated-cost-evidence-1.0 |
The European Power Price Index answers a different question: it is a wholesale day-ahead signal, not a delivered cost, and the two must not be compared. Everything above is a delivered cost for the declared case.
Machine-readable: GET /api/v1/ratings/{market} — read
realized_cost.component_status and cost_evidence_state. Screening:
GET /api/v1/screen. Build pgiq-20260926-211939.