Kortex
snapshot · 2026-07-18
Kortex · methodology register · one entry per material derived metric

How every number is made

Every material derived metric on the platform, in one register: what it means in plain English, the formula, its evidence class, what feeds it, when it fails closed, and what is known to be wrong with it. Versions bump when a formula changes meaning; never silently. Where a metric has been tested against independent ground truth, the entry links its validation study, including the misses.

Market value

Capture price

transformedcapture_price_v1
Meaning
What the market actually paid a technology's output; never its cost, never realised project revenue (PPAs/CfDs/balancing sit on top).
Formula
Σ(gen_h × price_h) / Σ(gen_h) over hourly-joined ENTSO-E generation × day-ahead price, per fuel, grid and period.
Inputs
entsoe_generation, entsoe_price (observed hourly series); sub-hourly averaged to the hour before joining; negative prices kept.
Fails closed
Grid-years with <85% of hours joined, <10 GWh of the fuel's output, or non-positive base price are flagged and never ranked (capture-decline).
Limits
Energy-market revenue only. Pumped hydro/batteries valued at gross discharge; charging cost not netted (disclosed on-page).
Used by
Grid day · Capture decline

Capture rate

transformedcapture_rate_v1
Meaning
Capture price as a share of the same period's time-weighted average price; unit-free, so zones settling in EUR, GBP or RON compare honestly.
Formula
capture_price / time_weighted_avg_price × 100; one dominant price series per zone-year (currency chosen by row count, disclosed on-row).
Limits
Descriptive market-value erosion, not causal cannibalisation; penetration, demand, fuel prices and interconnection co-evolve (disclosed on-page).
Used by
Capture decline

Delivery wedge & share of bill

transformednetwork_econ_v1
Meaning
What sits between the wholesale price and the delivered price of a networked commodity; and the unit-free share it takes of the final bill.
Formula
wedge = delivered − upstream (sign-free; negative = capped retail), share = wedge / delivered. Gas normalised to USD/MWh-thermal for cross-network comparison.
Limits
Zone grain, never per-line; US wires revenue uses utility-REPORTED delivery filings (EIA-861) where available; higher fidelity tier, on-row.
Used by
Globe economics layers · /v2/spatial/network-economics

Portfolio structure

Effective independent weather positions (N_eff)

measuredn_eff_v2 · measured_corr_v1
Meaning
How many genuinely independent weather bets a renewable portfolio holds, capacity-weighted.
Formula
N_eff = 1 / (wᵀRw), w = capacity shares, R from direct pairwise edges only; transitive chaining rejected (closure merges continents).
Evidence
R is measured: ERA5-derived daily series 2015–2025 at 1° asset-anchored cells, standardised day-of-year anomalies (±7-day climatology — removes the seasonal cycle), Pearson r on ≥1,000 overlapping days; same-cell assets share their series (r = 1.0); negative r floored at zero. Tail co-lull and DJF/JJA splits are computed and stored alongside (analytics_weather_corr). Supersedes the v1 distance-band proxy (0.9/0.7/0.5/0.3), retired 2026-07-13.
Used by
Weather portfolios (BETA)

Water-system concentration

inferred + validated subsetwater_sys_v2
Meaning
How much of an operator's thermal capacity depends on one hydrological system that fails in the same drought.
Formula
Water system = level-6 Pfafstetter sub-basin ∪ explicit same-river chains (river transitivity is meaningful, unlike weather chaining). Same N_eff form as weather.
Fails closed
<60% of fleet MW linked or <5 linked plants → under-evidenced, never ranked.
Validation
Study 8: every judgeable US cooling link tested against the utility's own EIA-860 filing; 35% contradicted and quarantined. Non-US links remain unvalidated (research grade).
Used by
One river (BETA)

Corporate structure

Ownership network centrality & controlled fleet

derivedigraph_pagerank_wcc_louvain_mw_v2
Meaning
Which entities sit at the centre of the corporate-control web; which stand or fall together (a family is every entity reachable through reported control links, a cluster the denser owner group within it); and — new in v2 — how much generating capacity sits under each entity's control, directly and through its reported group.
Formula
PageRank (damping 0.85) over GLEIF relationship-record direct-control edges, child → parent (ultimate-parent links excluded as transitive closure); families = weakly connected components; clusters = Louvain. v2 adds: fleet_mw_direct = generation MW attached via the audited asset stitch, quarantined edges excluded, an asset controlled by k entities contributing mw/k to each; fleet_mw_group = direct MW summed over the entity's GLEIF-reported ultimate-parent children plus itself (the registry's own closure, no path arithmetic of ours); mw_pagerank = PageRank personalised on fleet MW. 345,709 entities, computed deterministically off-graph, written back with full provenance.
Evidence
Verified-tier and stitched-tier capacity are carried as separate columns, never blended (blind study 7: low-confidence stitches are often wrong). Fleet quantities are gross screening measures — no stake percentages exist in GLEIF direct-control records, so nothing is pro-rated by ownership share. Known limit: GLEIF child entities that carry a group's consolidated capacity can overstate a parent's rollup (disclosed, under review).
Limits
GLEIF coverage only — relationships entities choose to report; custody and fund-administration structures rank centrally in the structural metrics (correctly but literally); centrality is structural position, never an ownership percentage. Supersedes v1 (structure-only, retired 2026-07-14).
Used by
Ownership · entity profiles · diligence screen (network position + controlled fleet) · /v2/demo/ownership-map

Cross-border flow model (corridor sensitivity)

modelledzonal_ptdf_calibrated_v1
Meaning
Which borders physically carry a zone-to-zone power exchange — loop flows included. Roughly half of a Germany→France exchange takes the direct border; the rest travels via Switzerland, the Netherlands/Belgium and Austria. The platform's first modelled metric: a physics simulation, not an observation or a join.
Formula
DC power flow on the PyPSA-Eur prebuilt OSM network (2,741 buses, real line reactances, HVDC excluded as controlled devices; ODbL): 100 MW injected at the sending zone on generator-capacity weights, withdrawn at the receiving zone on night-lights load weights; each border's reading scaled by a calibration slope chosen out-of-sample per border.
Evidence
Validated against observed 2025 ENTSO-E cross-border physical flows on a held-out test window: median r +0.88, sign agreement 92%, median error reduction from calibration 57%. Phase-shifter-controlled borders (BE-NL, CZ-PL, AT-CZ) carry an empirical response term fitted to German loop-flow pressure — disclosed as such, never a device model. Every response row carries its border's own validation r.
Fails closed
Luxembourg borders are unvalidated intra-market-zone meterings and serve uncalibrated with that label; borders below the noise floor are dropped, never zero-filled.
Limits
Screening-grade: DC linearisation (no losses, voltages, or reactive power); 2025-vintage network; injection on existing capacity weights, so a specific new plant at a specific bus will differ. Never an injection study, a capacity allocation, or an intra-zonal claim — the CEII/ISO-study lane is explicitly out of scope.
Used by
GET /v2/insights/corridor-sensitivity (CWE+: DE FR BE NL LU AT CH CZ PL)

Counterparty pre-diligence screen

gate- and evidence-drivendiligence_screen_v1
Meaning
An exception ledger over submitted counterparties: which contain visible disqualifiers, which deserve full KYC and primary-document work, and which critical facts remain unknown. Four verdicts — proceed / investigate / reject / insufficient_evidence — from hard gates and abstention. There is no risk score.
Formula
Identity resolves by LEI, Companies House number, or exact legal name (punctuation-normalised; ambiguity is abstained on with candidates listed, never guessed). Gates: exact primary sanctions-list match (OFAC SDN / UK OFSI — tested on the submitted name even when identity is unresolved) and registry-dead (GLEIF INACTIVE). Checks: registry status incl. the CH insolvency ladder; sanctions (primary quoted, OpenSanctions as match flags only — licence rail); ICIJ offshore-leaks candidates; UK PSC beneficial control incl. unresolved-control statements; GLEIF parent chain + reporting exceptions verbatim + ownership-network position; CH charge counts; observed asset footprint from the graph; jurisdiction context.
Fails closed
Unresolved or ambiguous identity → abstention, never a guess; fewer than three checks with evidence → abstention, never a thin “proceed”.
Limits
Not KYC/AML determination and not legal advice; exact-name sanctions testing does not cover transliteration, aliases or the OFAC 50% rule; PSC and charges are UK-register grain; HMLR land control is a declared next check (registration in progress); “proceed” means no visible screening-level disqualifier, never a clean bill.
Used by
POST /v2/insights/diligence/entities (Template 2 — sibling of the site screen’s exception ledger)

Network structure

Grid criticality (single points of failure)

derivedigraph_articulation_bridges_v1
Meaning
Substations and lines whose loss would structurally disconnect part of their network, and how much — substations and attached generation MW cut off.
Formula
Articulation points and bridge edges over the OpenInfraMap line topology (undirected, per network component); severity = the severed side's substation count and generator MW. Exact graph theory, no sampling.
Limits
Topology, never power flow: a graph cut is not an outage — re-dispatch, lower-voltage paths and lines absent from OSM all add redundancy this cannot see. The mapped network is fragmented (11.5k components; largest 3.7k substations), so severity is relative to the mapped island, and severed MW is a floor (only mapped generator attachments count). Screening-grade: which nodes deserve an N-1 study.
Used by
Asset profiles · declared feed for a future "load-bearing nodes" insight page

Siting & capacity

Installed dispatchable low-carbon capacity

source-reported → transformedclean_firm_v2
Meaning
Nameplate MW of hydro, nuclear, geothermal and biomass in a zone; wind and solar never counted firm. Installed, canonical, operational units only.
Limits
Never availability, deliverability, capacity accreditation or contractibility; the homepage and siting screen say "installed" for exactly this reason.
Used by
Siting · Power & digital

Suitability score & evidence confidence

modelled (deterministic)siting_v3
Meaning
Two SEPARATE numbers: how a zone scores on the decision weights taking evidence at face value, and how complete/reliable that evidence is.
Formula
suitability = 0.42·dispatchable_low_carbon + 0.24·price + 0.16·EHV + 0.18·water (disclosed, inspectable weights; no learned parameters). evidence_confidence down-weights imputed price (×0.7), unresolved water (×0.85), absent queue coverage (×0.9).
Limits
Screening-grade zone pre-ranking: which zones deserve a connection study. Not a power-flow study, headroom claim or connection guarantee. Queue evidence US-only today; zones without it say so per-row.
Used by
Siting

Queue completion rates

transformedqueue_cohort_v1
Meaning
Of capacity entering an interconnection queue, the share that reached operation vs withdrew; per cohort, technology and region.
Formula
Cohort rollups of LBNL Queued Up records; active projects are right-censored; undecided, never counted as failed. History (LBNL) and current snapshots (direct ISO) are never blended.
Limits
US only; end-2024 vintage (refresh declared); hybrid secondary components under-collected (known LBNL limitation, disclosed).
Used by
Queue reality

Money & carbon (modelled)

Modelled generation revenue

modelledgen_rev_v2
Meaning
Screening-grade estimate of a generator's energy-market revenue. Never reported financials; filed financials are served beside it, never blended.
Formula
capacity × technology capacity factor × zone price signal, empirical prices where held (ENTSO-E/EIA/AEMO), benchmarks elsewhere (basis on-row).
Validation
Study 3 vs SEC-reported revenue; reconciliation of revenue universes stated on the homepage.
Limits
Generic capacity factors misestimate reserve-heavy fleets; see the carbon entry's Finland miss; the observed-CF layer (EPA CEMS, US) is the correction template.

Modelled carbon cost

modelledcarbon_cost_v2
Meaning
Estimated annual carbon-pricing exposure per generator under its jurisdiction's mechanism.
Formula
capacity × CF × emission factor × mechanism price (mechanism and price basis on-row).
Validation
Study 9 vs the EU ETS compliance record: 26/27 countries in the expected band with the physics-correct structure; published miss: Finland at 1.93×; generic capacity factors ≈2× overestimate reserve-heavy fossil fleets.
Used by
Entity profiles · exposure screens

Hourly clean supply

Hourly-matched coverage

transformedclean_hours_v1
Meaning
Share of an illustrative flat load coverable from domestic clean surplus after existing demand, hour by hour; deliberately conservative; not a procurement calculation and not contractual 24/7 CFE matching.
Formula
Calendar-slot arrays (8,784 leap / 8,760 standard); missing hours stay null, never interpolated. Imports carry no fuel attribution (meshed-flow tracing out of scope).
Used by
Clean hours

Observed capacity factor (US)

observedcems_cf_v1
Meaning
Actual utilisation of US fossil units from measured stack data; the antidote to generic capacity factors.
Formula
EPA CEMS gross load unit-days aggregated per plant/unit-year ÷ nameplate hours.
Used by
Asset profiles; declared correction path for the modelled revenue/carbon entries above.

Appendix · The three-layer revenue model in full

Three-layer empirical model with explicit confidence tiers.

Layer 1: Generation revenue. Per-generator output (capacity × fuel-specific capacity factor) × grid-zone wholesale price (empirical: ENTSO-E, EIA, AEMO, or IEA/EIA benchmarks where hourly data unavailable). Covers $2.19T across 210K generators.

Layer 2: Network revenue. Per-substation share of grid-zone T&D revenue (retail price minus wholesale price × zonal demand ÷ substation count). Covers $1.17T across 734K substations.

Layer 3: Retail revenue. Country-level retail electricity revenue from World Bank / IEA. $3.36T globally; consistent with IEA estimates (~3.1% of global GDP).

How these figures relate. The headline "$2.38T revenue modelled" is the subset of layers 1–2 attributed to 16,061 resolved operator groups (generation $1.21T + network $0.84T). The $2.19T and $1.17T layer totals cover ALL assets including those without a resolved operator; the $3.36T retail figure is a country-level benchmark that includes generation, network, supply margins and taxes; it is a consistency check, never added to the others.

Layers are additive where data permits, with revenue tier flags: tier_1 (empirical hourly prices, highest confidence), tier_2 (country-level benchmarks), tier_3 (modelled from regional proxies).

Revenue figures are modelled screening estimates for relative comparison; not audited financial revenue, and not suitable as valuation input without independent verification against operator filings.

Entity resolution uses GLEIF LEI matching (3.3M entities) with manual curation (134 corporate group mappings, 25+ groups). Revenue consolidates across subsidiaries to ultimate parent. All source data, matching methodology, and confidence tiers are queryable via the API.
Evidence classes: observed · source-reported · transformed · inferred · heuristic · modelled; definitions in the API contract and on every material metric's response. Versions are stable identifiers: a changed meaning is a new version and a changelog entry, never a silent edit. Coverage per domain: /coverage. Misses live at /validation. A machine-readable register is the declared next step for this page.