The contract a CRREM-aligned tool implements against.
Every input field, validation rule, lookup, and formula — written precisely enough that two independent tools built from this spec produce the same answer for the same asset.
- Want the plain-language version? The Assessment Guide tells the same story in prose.
- Want concrete numbers? Reference Implementations walks four real assets through end to end.
- Steps below are collapsed by default — click any to expand. Deep-link a step via
#asset-Nor#portfolio-Nand it will open automatically.
The spec consumes four reference datasets
The Blueprint describes how a CRREM-aligned tool must process its inputs. The inputs themselves — pathways, emission factors, and lookups — come from the Library's Pathways & Datasets component.
Supply these, then follow the spec
Three datasets are required for any assessment; a fourth is optional for climate-adjusted EUI projections. All are published open-access at /library/pathways-datasets.
Walk through every step
Asset-level assessment is six steps; portfolio-level aggregation is four. Each step below lists its exact input fields, validation rules, and formulas — click any row to expand.
#asset-N or #portfolio-N.
STEP 01
Asset-level data collection
Identification, location, floor area, and energy consumption — what you supply per asset.
| Field | Unit | Required | Description |
|---|---|---|---|
Identification Basic asset metadata | |||
| Asset_Name | — | yes | Free-text labelNo format constraint |
| Asset_ID | — | optional | Unique identifier per asset |
| GAV | currency | optional | Gross Asset Value. Not used in intensity calculationsMust be entered in a consistent currency across all assets in a portfolio |
Location Resolves CRREM region for pathway selection | |||
| Country | — | yes | Country name. Must match Pathways and Emission Factors sheets exactlyFor USA, Canada, and Australia, Country alone is not sufficient — Postal_Code is also required |
| Postal_Code | text | conditional | Required only for countries with sub-national pathways (USA, CAN, AUS)Store as text to preserve leading zeros. Resolved via ZIP Code Lookup in Step 5.1 |
Use and floor area Determines pathway and intensity denominator | |||
| Property_Type | — | yes | One of the standard CRREM property types, or "Mixed Use"See Property Types & Definitions reference |
| MU_[Type]_Pct | % | mixed-use only | Floor-area share per use type (e.g. MU_Office_Pct = 70%)All MU_* columns must sum to 100%. Ignored for single-use assets |
| GIA | m² | yes | Gross Internal Area. Denominator for all intensity calculationsMust be > 0. Excludes indoor parking |
| Reporting_Year | yyyy | yes | Year the consumption data refers toMust exist as a column in Pathways and Emission Factors datasets |
Energy consumption Whole-building (landlord + tenant), in kWh per year, ≥ 0 | |||
| Elec_Grid | kWh/yr | yes | Grid electricity consumption |
| Gas | kWh/yr | if applicable | Natural gas. Enter 0 if unused |
| Oil · District_Heating · District_Cooling · Biomass · Other_Fuels | kWh/yr | if applicable | One field per carrier. Enter 0 if unused |
| Renew_Consumed | kWh/yr | if applicable | On-site renewable energy generated AND consumed on-siteEF = 0 for carbon. Still counts toward Total_Energy |
| Renew_Exported | kWh/yr | if applicable | On-site renewable energy exported to gridNOT in Total_Energy. Used only for grid export credit in Step 4, capped at CO2_Elec |
STEP 02
Whole-building energy & EUI
Sum every carrier into a whole-building total, divide by GIA for Energy Use Intensity.
Sum every energy carrier from Step 1 into a single whole-building total, then divide by GIA for Energy Use Intensity. Renew_Consumed counts toward Total_Energy (EF = 0 for carbon); Renew_Exported does not — it is handled separately in Step 4 as a grid credit.
| Output | Unit | Role | Formula & description |
|---|---|---|---|
| Total_Energy | kWh/yr | intermediate | Sum of all energy carriers including on-site renewables consumed on-site. Total_Energy = Elec_Grid + Gas + Oil + District_Heating + District_Cooling + Biomass + Other_Fuels + Renew_Consumed Renew_Exported is excluded. Use whole-building (landlord + tenant) consumption only. |
| EUI | kWh/m²/yr | key output | Energy Use Intensity — the asset's energy performance metric. EUI = Total_Energy / GIA Compared against the CRREM EUI pathway to produce EUI_Misalignment_Year in Step 6. |
STEP 03
Emission factor data
Look up the carbon emission factor per carrier × country × reporting year.
Each carrier has a carbon emission factor (EF) in kgCO₂e/kWh. Grid electricity EFs decline annually and are looked up per country × reporting year. Combustion fuels are effectively constant. The Emission Factors sheet is a matrix: rows = country, columns = year. On-site renewables consumed on-site always have EF = 0.
| Carrier | Unit | Varies | Lookup logic |
|---|---|---|---|
| Grid Electricity | kgCO₂e/kWh | annually | INDEX/MATCH on the EF table: match Country row, Reporting_Year column. Declines annually as grids decarbonise. Use location-based EFs (grid average), not market-based. |
| Natural Gas | kgCO₂e/kWh | constant | Single value per carrier (or per carrier + country if dataset provides). Combustion-based. Approximately 0.202 kgCO₂e/kWh (CRREM default). |
| Oil / Heating Oil | kgCO₂e/kWh | constant | Single value per carrier. Approximately 0.281 kgCO₂e/kWh. |
| District Heating | kgCO₂e/kWh | country-specific | Match Country (and optionally Year) in the EF dataset. DH varies significantly by city, operator, and fuel mix. If no site-specific EF is supplied, use the legacy UK-ratio fallback (see Edge Cases). |
| District Cooling | kgCO₂e/kWh | country-specific | Same base-year lookup as District Heating, then held flat. Legacy CRREM tools applied the DH base-year fallback to DC. From v1.1 the DC factor stays at its Reporting_Year value through 2050 rather than declining with the grid. Site-specific preferred where available. |
| Biomass | kgCO₂e/kWh | constant | Single value per carrier. Typically low or zero depending on CRREM dataset treatment. |
| Other_Fuels | kgCO₂e/kWh | constant | Single value per carrier (coal, LPG, etc). Combustion-based. |
| Renew_Consumed | kgCO₂e/kWh | hard-coded | EF = 0 by definition. Included in energy for EUI purposes; zero carbon contribution by construction. |
STEP 04
Carbon intensity
Multiply consumption by emission factors, sum, apply the grid-export credit, divide by GIA.
Multiply each carrier's consumption by its emission factor, sum to a gross total, apply the grid export credit, divide by GIA. The export credit is capped at grid electricity emissions — surplus solar cannot offset gas, oil, or district heating.
| Output | Unit | Role | Formula & description |
|---|---|---|---|
4.1 Per-carrier emissions One row per carrier. Each multiplies consumption by its EF from Step 3. | |||
| CO2_Elec | kgCO₂e/yr | intermediate | Grid electricity emissions. CO2_Elec = Elec_Grid × EF_Electricity(country, Reporting_Year) |
| CO2_Gas | kgCO₂e/yr | intermediate | Natural gas emissions. CO2_Gas = Gas × EF_Gas |
| CO2_Oil | kgCO₂e/yr | intermediate | CO2_Oil = Oil × EF_Oil |
| CO2_DH | kgCO₂e/yr | intermediate | CO2_DH = District_Heating × EF_DH Use site-specific EF where available. Legacy fallback: EF_DH(country, t) = 0.20431 × EF_Grid(country, t) / EF_Grid(UK, 2020). See Edge Cases. |
| CO2_DC | kgCO₂e/yr | intermediate | CO2_DC = District_Cooling × EF_DC |
| CO2_Biomass | kgCO₂e/yr | intermediate | CO2_Biomass = Biomass × EF_Biomass |
| CO2_Other | kgCO₂e/yr | intermediate | CO2_Other = Other_Fuels × EF_Other |
| CO2_Renew | kgCO₂e/yr | intermediate | CO2_Renew = Renew_Consumed × 0 # always zero; included for audit trail |
| Total_CO2 | kgCO₂e/yr | intermediate | Gross emissions before grid export credit. Total_CO2 = SUM(CO2_Elec : CO2_Renew) |
4.2 Grid export credit Capped at grid electricity emissions — cannot offset other carriers. | |||
| Raw_Export_Credit | kgCO₂e/yr | intermediate | Uncapped credit for exported renewable electricity. Raw_Export_Credit = Renew_Exported × EF_Electricity |
| Max_Credit | kgCO₂e/yr | intermediate | Ceiling: credit cannot exceed grid electricity emissions. Max_Credit = Elec_Grid × EF_Electricity |
| Grid_Export_Credit | kgCO₂e/yr | critical | Actual credit applied. You cannot offset gas, oil, or district heating emissions with surplus solar export. Grid_Export_Credit = MIN(Raw_Export_Credit, Max_Credit) |
4.3 Net carbon & intensity Final asset-level outputs. | |||
| Net_CO2 | kgCO₂e/yr | intermediate | Net_CO2 = Total_CO2 − Grid_Export_Credit |
| Carbon_Intensity | kgCO₂e/m²/yr | key output | Asset-level carbon intensity. Carbon_Intensity = Net_CO2 / GIA Compared against the CRREM CO₂ pathway to produce CO2_Misalignment_Year in Step 6. |
STEP 05
Pathway selection
Resolve the CRREM region from country (and postal code), then fetch the year-by-year CO₂ and EUI pathways.
Resolve the CRREM region from Country (+ Postal_Code for USA, CAN, AUS), then INDEX/MATCH against the Pathways dataset on CRREM_Region × Property_Type to retrieve year-by-year CO₂ and EUI pathway budgets from 2020 to 2050. The full 4-step resolution procedure — including worked examples for USA, Canada, and Australia — is in the Pathway Resolution section below.
arrow_downward See Pathway Resolution — 4-step lookup procedure with worked examples for sub-national regions.| Output | Unit | Role | Formula & description |
|---|---|---|---|
5.1 Pathway lookup Applies to single-use assets and each constituent of mixed-use assets. | |||
| CRREM_Region | — | intermediate | For most countries, equals Country. For USA / CAN / AUS, resolved from Postal_Code via the ZIP Code Lookup table. Examples — USA ZIP 10005 → NYSTc_Mixed mild_4A · CAN FSA T2P → Alberta · AUS Postcode 2170 → NCC Zone 6. |
| CO2_Pathway(t) | kgCO₂e/m²/yr | key output | Year-by-year CO₂ budget from 2020 to 2050 for this asset. CO2_Pathway(t) = INDEX/MATCH(Pathways, CRREM_Region & Property_Type, year=t) |
| EUI_Pathway(t) | kWh/m²/yr | key output | Year-by-year EUI budget. Same lookup, separate sheet. |
5.2 Mixed-use blending For Property_Type = Mixed Use only. Compute a floor-area-weighted blend per year — component pathways decline at different rates. | |||
| Blended_CO2_Pathway(t) | kgCO₂e/m²/yr | critical | Blended_CO2_Pathway(t) = SUM( MU_Pct[i] × Pathway_CO2(Country, Type[i], t) ) # for every year t separately Example: 70% Office / 30% Retail → 0.70 × Pathway_CO2(Country, "Office", 2030) + 0.30 × Pathway_CO2(Country, "Retail High Street", 2030). |
| Blended_EUI_Pathway(t) | kWh/m²/yr | critical | Same weighting logic applied to EUI pathways. Blended_EUI_Pathway(t) = SUM( MU_Pct[i] × Pathway_EUI(Country, Type[i], t) ) |
STEP 06
Misalignment year
Project to 2050 under a no-retrofit baseline. The first year each curve crosses its pathway is the misalignment year.
Project forward from Reporting_Year to 2050 under the no-retrofit baseline (flat energy demand, declining grid EFs) and find the first year each intensity curve crosses its pathway budget. Two key outputs: CO2_Misalignment_Year and EUI_Misalignment_Year.
| Output | Unit | Role | Formula & description |
|---|---|---|---|
6.1 Forward projection (no-retrofit baseline) Recompute each year separately using that year's grid EF. | |||
| Carbon_Intensity(t) | kgCO₂e/m²/yr | intermediate | Projected asset carbon intensity for year t. for t in range(Reporting_Year, 2051): CO2(t) = Elec_Grid × EF_Elec(t) + Gas × EF_Gas + ... + Renew_Consumed × 0 Grid_Export_Credit(t) = MIN(Renew_Exported × EF_Elec(t), Elec_Grid × EF_Elec(t)) Carbon_Intensity(t) = (CO2(t) − Grid_Export_Credit(t)) / GIA |
| EUI(t) | kWh/m²/yr | intermediate | Flat demand: EUI(t) = Total_Energy / GIA for all t. Climate-adjusted variant below is optional — triggered by supplying HDD/CDD projections. |
6.1a Optional · climate-adjusted EUI (HDD/CDD) Replaces the flat-demand assumption when HDD/CDD projections are supplied. Uses baseline HDD/CDD at the asset location and a projected time series under a chosen SSP scenario. | |||
| HDD_Ratio(t) | ratio | optional | HDD_Ratio(t) = HDD(t, scenario) / HDD_Base If HDD_Base = 0 (no heating climate), set ratio to 0. |
| CDD_Ratio(t) | ratio | optional | CDD_Ratio(t) = CDD(t, scenario) / CDD_Base |
| Total_Energy(t) | kWh/yr | optional | Climate-adjusted total energy. Scales heating and cooling shares independently; baseload remains flat. Total_Energy(t) = Energy_Heating × HDD_Ratio(t) + Energy_Cooling × CDD_Ratio(t) + Energy_Baseload # Energy_Baseload = Total_Energy − Energy_Heating − Energy_Cooling |
6.2 Identifying the misalignment year Loop forward and find the first crossing. Report "Beyond 2050" if no crossing occurs. | |||
| CO2_Misalignment_Year | year | key output | First year the asset's projected carbon intensity exceeds its declining CRREM CO₂ pathway. CO2_Misalignment_Year = first t where Carbon_Intensity(t) > CO2_Pathway(t) Report Reporting_Year if already misaligned, or "Beyond 2050" if no crossing. |
| EUI_Misalignment_Year | year | key output | First year EUI(t) exceeds EUI_Pathway(t). EUI_Misalignment_Year = first t where EUI(t) > EUI_Pathway(t) |
STEP 01
Assemble asset-level results
Collect each asset’s key outputs and full pathway time series.
Collect these fields from each asset's completed asset-level assessment. Every portfolio asset must have a full asset-level result including its year-by-year pathway time series. Portfolio aggregation is GIA-weighted — GAV is optional and not used in the weighted outputs.
| Field | Unit | Source | Description |
|---|---|---|---|
Asset metadata Carried forward from the asset input. | |||
| Asset_ID | — | asset step 1 | Unique identifier per asset. Must match the asset-level output. |
| Asset_Name | — | asset step 1 | Free-text label. |
| GIA | m² | asset step 1 | Gross Internal Area. Weighting denominator for every portfolio metric. Must be > 0. |
Performance metrics Asset-level outputs that get GIA-weighted into portfolio metrics. | |||
| Carbon_Intensity | kgCO₂e/m²/yr | asset step 4 | Net carbon intensity per asset (= Net_CO2 / GIA). |
| EUI | kWh/m²/yr | asset step 2 | Energy Use Intensity per asset. |
Pathways (full time series) Year-by-year, 2020 to 2050, per asset. For mixed-use assets: the blended pathway. | |||
| CO2_Pathway(t) | kgCO₂e/m²/yr | asset step 5 | Full CRREM CO₂ pathway for this asset. Country/region × property type specific. |
| EUI_Pathway(t) | kWh/m²/yr | asset step 5 | Full CRREM EUI pathway. Same resolution as CO₂. |
Optional / reference Not used in GIA-weighted aggregation. | |||
| GAV | currency | optional | Gross Asset Value. Only include if performing a separate money-weighted aggregation. |
| CRREM_Region | — | reference | CRREM region resolved during asset-level Step 5. Carried for cross-check / reporting. Not directly used in weighting. |
STEP 02
GIA-weighted aggregation
GIA-weight asset metrics into a reporting-year snapshot and a full forward projection.
Weight each asset's performance by its share of total portfolio floor area. Larger assets pull the portfolio metric toward their performance. Produces a reporting-year snapshot (2.2) and a full time series from Reporting_Year to 2050 (2.3).
| Output | Unit | Role | Formula & description |
|---|---|---|---|
2.1 GIA weights Floor-area share per asset. Weights must sum to 100%. | |||
| Total_GIA | m² | intermediate | Total_GIA = SUM(GIAj) # for all assets j in portfolio |
| GIA_Weightj | % | intermediate | Floor-area share per asset. GIA_Weightj = GIAj / Total_GIA |
2.2 Reporting-year snapshot Single-value portfolio metrics for the reporting year. | |||
| Portfolio_Carbon_Intensity | kgCO₂e/m²/yr | key output | GIA-weighted average carbon intensity. Portfolio_Carbon_Intensity = SUM( GIA_Weightj × Carbon_Intensityj ) Mathematically equivalent to SUM(Net_CO2j) / SUM(GIAj). |
| Portfolio_EUI | kWh/m²/yr | key output | Portfolio_EUI = SUM( GIA_Weightj × EUIj ) |
2.3 Forward projection One value per year, Reporting_Year to 2050. Uses each asset's projected Carbon_Intensity(t) and EUI(t) from Asset Step 6. | |||
| Portfolio_Carbon_Intensity(t) | kgCO₂e/m²/yr | key output | Portfolio_Carbon_Intensity(t) = SUM( GIA_Weightj × Carbon_Intensityj(t) ) # for each t in Reporting_Year..2050 Full time series. Declines because grid EFs decline in Asset Step 6. |
| Portfolio_EUI(t) | kWh/m²/yr | key output | Default: flat from reporting year (no-retrofit baseline). Portfolio_EUI(t) = SUM( GIA_Weightj × EUIj(t) ) Climate-adjusted variant when asset-level Step 6.1a is used. |
STEP 03
Weighted portfolio CRREM pathway
GIA-weight each asset’s CRREM pathway into a portfolio-level pathway, year by year.
Apply the same GIA weights from Step 2.1 to each asset's individual CRREM pathway, year by year from 2020 to 2050. The output is a full time series — not a single number — that serves as the benchmark against which portfolio performance is compared in Step 4.
| Output | Unit | Role | Formula & description |
|---|---|---|---|
| Portfolio_CO2_Pathway(t) | kgCO₂e/m²/yr | key output | GIA-weighted average of each asset's CRREM CO₂ pathway, computed per year. Portfolio_CO2_Pathway(t) = SUM( GIA_Weightj × CO2_Pathwayj(t) ) # for each t in 2020..2050 Declines year by year. Not a single value — a full trajectory. |
| Portfolio_EUI_Pathway(t) | kWh/m²/yr | key output | Same logic for the EUI pathway. Portfolio_EUI_Pathway(t) = SUM( GIA_Weightj × EUI_Pathwayj(t) ) |
STEP 04
Compare against the pathway
Find the first year portfolio intensity crosses its weighted pathway.
Loop forward through the projected portfolio trajectories from Step 2.3 and compare against the weighted pathway from Step 3. The first crossing year is the portfolio misalignment year. The reporting-year snapshot (2.2) tells you where the portfolio stands today; misalignment year tells you when, under no-retrofit assumptions, it falls behind the pathway.
| Output | Unit | Role | Formula & description |
|---|---|---|---|
| Portfolio_CO2_Misalignment_Year | year | key output | First year the portfolio's projected carbon intensity exceeds its declining weighted CO₂ pathway. Portfolio_CO2_Misalignment_Year = first t where Portfolio_Carbon_Intensity(t) > Portfolio_CO2_Pathway(t) Report Reporting_Year if already misaligned, or "Beyond 2050" if no crossing. |
| Portfolio_EUI_Misalignment_Year | year | key output | First year portfolio EUI exceeds the weighted EUI pathway. Portfolio_EUI_Misalignment_Year = first t where Portfolio_EUI(t) > Portfolio_EUI_Pathway(t) |
Step 5 · resolving the CRREM region
For most countries, CRREM_Region equals the country code. For USA, Canada, and Australia, CRREM_Region is sub-national and a ZIP Code Lookup is required. This is the one calculation step that depends on an external lookup table.
Rules that change the answer
Four methodology rules and one optional extension. Miss any of these and the resulting assessment will disagree with the reference implementations.
Grid export credit cap
Credit for exported on-site renewables is capped at grid electricity emissions. You cannot offset gas, oil, or district heating emissions with surplus solar export.
Mixed-use pathway blending
For mixed-use buildings there is no single pathway row. Compute a floor-area-weighted blend of the per-use pathways, separately for every year from 2020 to 2050.
Renew_Consumed included in EUI, though has a CO₂ emission factor of zero
On-site renewables consumed on-site are real energy consumption and are included in Total_Energy. Their emission factor is 0, so they do not affect Carbon_Intensity. This asymmetry is by design.
District heating/cooling EF (pre-site-specific)
If no site-specific EF is supplied, the legacy fallback scales the UK default (0.20431) against the local grid trajectory:
Climate-adjusted EUI projection (HDD/CDD)
Default is flat demand. If HDD/CDD projections are supplied, scale heating and cooling shares of energy separately:
Forward projection basis
Energy demand held constant. Grid EFs decline annually per the Emission Factors dataset. All other EFs are constant (exception: DH/DC legacy fallback follows the grid trajectory). This produces a year-by-year declining Carbon_Intensity curve even without retrofits.
Test against the reference implementations
A tool that follows this Blueprint should reproduce the outputs of the four worked examples exactly. Use them as regression-test fixtures.
Four asset examples + one portfolio, full calculation traces
Midtown Tower · Pacific Plaza Mall · Northgate Quarter · Eastfield Logistics. Inputs and expected outputs for every step. Same Excel workbook as this Blueprint.
Specification and fixtures
How to reference this Blueprint
crrem.org/library/technical-blueprint/v1.0
Worked Examples v1.0
Asset Level · Portfolio Level Blueprint