Double Materiality | Fiegenbaum Solutions

How to Use RCP & SSP Climate Data for Corporate Risk Assessment [Step-by-Step + Templates]

Written by Johannes Fiegenbaum | 5/25/25 2:34 PM

Translating Representative Concentration Pathways (RCPs) and Shared Socioeconomic Pathways (SSPs) from scientific projections into actionable business intelligence requires practical data skills, the right tools, and systematic workflows. This guide provides the technical "how-to" that transforms abstract climate scenarios into quantified risk assessments meeting CSRD, EU Taxonomy, and investor expectations.

This article is part of our comprehensive Climate Scenarios Series, providing the complete foundation for scenario-based climate risk analysis. For guidance on which scenarios to select, see our companion article on choosing the right RCP scenario.

What distinguishes this guide: Rather than explaining what RCP and SSP scenarios are (covered comprehensively in our hub article), this spoke article focuses exclusively on how to access, process, and integrate climate data into your corporate risk assessment workflows. You'll learn practical techniques including:

  • Accessing CMIP6 climate model outputs programmatically via APIs
  • Processing multi-model ensemble data with Python and R
  • Downscaling global projections to facility-specific coordinates
  • Integrating socioeconomic SSP variables into financial modelling
  • Building Excel dashboards for scenario comparison
  • Automating data updates for ongoing monitoring

The gap between "we need scenario analysis" and "we have quantified scenario-based risks" typically involves data wrangling, technical translation, and workflow design—precisely what this guide addresses.

Current regulatory context (2025): CSRD's ESRS E1 requires companies to disclose climate scenario analysis with specific time horizons (2030, 2040, 2050+), quantified impacts where feasible, and clear assumptions. This isn't theoretical—auditors now scrutinise data sources, methodology documentation, and calculation transparency. Companies without defensible technical workflows face compliance gaps.

The difference between superficial scenario analysis (qualitative narratives without data foundation) and robust assessment (quantified risks with clear data provenance) increasingly determines audit outcomes, investor confidence, and strategic credibility.

Step 1: Accessing Global Climate Projection Data

Understanding CMIP6 Data Architecture

The Coupled Model Intercomparison Project Phase 6 (CMIP6) provides the authoritative climate model outputs underlying IPCC projections. Unlike simplified climate calculators, CMIP6 offers:

  • Multi-model ensembles: 30+ global climate models from institutions worldwide
  • Full scenario coverage: All SSP-RCP combinations (SSP1-1.9 through SSP5-8.5)
  • Multiple variables: Temperature, precipitation, sea level, extreme indices, and 50+ additional climate parameters
  • Spatial resolution: Typically 100-250km grid cells, with regional models offering finer resolution
  • Temporal coverage: Monthly, seasonal, annual, and decadal data from historical periods through 2100

Key distinction: Raw CMIP6 data is voluminous (petabytes) and complex. Practical corporate use requires accessing pre-processed subsets via climate data services rather than attempting direct manipulation of full model archives.

Primary Data Sources and Access Methods

1. Copernicus Climate Data Store (CDS)

What it provides:

  • Pre-processed CMIP6 outputs for policy-relevant applications
  • European focus with global coverage
  • Free registration and API access
  • Direct download or programmatic retrieval

How to access:

import cdsapi

# Initialize CDS API client
c = cdsapi.Client()

# Request temperature data under SSP2-4.5 scenario
c.retrieve(
'projections-cmip6',
{
'format': 'zip',
'temporal_resolution': 'monthly',
'experiment': 'ssp2_4_5',
'variable': '2m_temperature',
'model': ['access_cm2', 'mpi_esm1_2_hr', 'hadgem3_gc31_ll'],
'year': ['2030', '2040', '2050'],
'month': ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],
'area': [55, 5, 45, 15], # North, West, South, East - covers Germany/Central Europe
},
'temperature_ssp245.zip')

Best for: European companies requiring regional European data with straightforward API access.

2. ESGF (Earth System Grid Federation)

What it provides:

  • Comprehensive CMIP6 archive (all models, variables, scenarios)
  • Global institutional collaboration
  • Direct model output access
  • Advanced users with specific research requirements

Access method:

  • Web portal: https://esgf-node.llnl.gov/search/cmip6/
  • OpenDAP protocol for programmatic access
  • Python libraries: xarray, intake-esm
import intake
import xarray as xr

# Load ESGF catalog
cat_url = "https://storage.googleapis.com/cmip6/pangeo-cmip6.json"
col = intake.open_esm_datastore(cat_url)

# Search for specific experiment
cat_subset = col.search(
experiment_id=['ssp245', 'ssp585'],
table_id='Amon',
variable_id='tas', # near-surface temperature
source_id=['MPI-ESM1-2-HR', 'UKESM1-0-LL']
)

# Load data as xarray dataset
dset_dict = cat_subset.to_dataset_dict(zarr_kwargs={'consolidated': True})

Best for: Technical teams with climate science expertise requiring maximum flexibility and comprehensive variable access.

3. Climate Explorer / KNMI

What it provides:

  • User-friendly interface for non-technical users
  • Pre-computed climate indices (hot days, precipitation extremes, drought indicators)
  • Regional focus including detailed Europe coverage
  • Downloadable time series for specific locations

Access method:

  • Web interface: https://climexp.knmi.nl
  • Direct coordinate selection via interactive maps
  • CSV/NetCDF download options

Best for: Initial screening and location-specific quick assessments without programming requirements.

4. World Bank Climate Change Knowledge Portal

What it provides:

  • Country and regional summaries of climate projections
  • Development-focused indicators (water stress, agricultural impacts, health risks)
  • Integrated SSP socioeconomic data
  • Policy-ready visualisations and reports

Access method:

  • Web portal with export functions
  • API for programmatic bulk downloads
  • Pre-formatted data for 180+ countries

Best for: Companies operating in developing markets requiring socioeconomic context alongside climate data.

Processing Multi-Model Ensembles

Individual climate models contain inherent uncertainty. Best practice uses multi-model ensembles averaging across multiple models to produce robust central estimates whilst capturing uncertainty ranges.

Python workflow for ensemble processing:

import xarray as xr
import numpy as np
import pandas as pd

# Load multiple model outputs
models = ['MPI-ESM1-2-HR', 'UKESM1-0-LL', 'ACCESS-CM2', 'MIROC6']
datasets = []

for model in models:
ds = xr.open_dataset(f'temperature_ssp245_{model}.nc')
# Select specific location (e.g., Frankfurt: 50.11°N, 8.68°E)
ds_location = ds.sel(lat=50.11, lon=8.68, method='nearest')
datasets.append(ds_location)

# Calculate ensemble mean and spread
ensemble = xr.concat(datasets, dim='model')
ensemble_mean = ensemble.mean(dim='model')
ensemble_std = ensemble.std(dim='model')
ensemble_5th = ensemble.quantile(0.05, dim='model')
ensemble_95th = ensemble.quantile(0.95, dim='model')

# Convert to pandas for analysis
df = pd.DataFrame({
'year': ensemble_mean.time.dt.year,
'temperature_mean': ensemble_mean['tas'].values - 273.15, # Convert K to °C
'temperature_5th': ensemble_5th['tas'].values - 273.15,
'temperature_95th': ensemble_95th['tas'].values - 273.15,
'uncertainty': ensemble_std['tas'].values
})

# Calculate decadal averages
df['decade'] = (df['year'] // 10) * 10
decadal_summary = df.groupby('decade').agg({
'temperature_mean': 'mean',
'temperature_5th': 'mean',
'temperature_95th': 'mean',
'uncertainty': 'mean'
}).round(2)

print(decadal_summary)

Output interpretation:

  • Mean values: Central estimate for planning
  • 5th/95th percentiles: Uncertainty bounds for risk assessment
  • Standard deviation: Model agreement indicator (low = high confidence, high = large uncertainty)

This approach provides defensible quantitative inputs for scenario analysis whilst transparently communicating uncertainty—essential for audit-ready documentation.

Step 2: Downscaling to Asset-Level Granularity

The Downscaling Challenge

Global climate models operate at 100-250km resolution—useful for understanding regional trends but insufficient for facility-specific risk assessment. A manufacturing plant in southern Germany requires location-specific projections, not grid-cell averages covering multiple climate zones.

Downscaling approaches:

Statistical downscaling: Uses historical relationships between large-scale climate patterns and local observations to translate coarse model outputs into fine-scale projections.

Dynamical downscaling: Runs high-resolution regional climate models nested within global models, producing physically consistent fine-scale projections.

Bias correction: Adjusts raw model outputs to match observed historical climate at specific locations, then applies same correction to future projections.

Practical Downscaling Workflow

For European locations:

The Euro-CORDEX initiative provides downscaled CMIP6 projections at 12km resolution covering Europe. Accessing these through Copernicus CDS:

import cdsapi

c = cdsapi.Client()

# Request high-resolution regional data
c.retrieve(
'projections-cordex-domains-single-levels',
{
'domain': 'europe',
'experiment': 'rcp_4_5',
'horizontal_resolution': '0_11_degree_x_0_11_degree',
'temporal_resolution': 'daily',
'variable': [
'2m_temperature',
'mean_precipitation_flux',
'maximum_2m_temperature_in_the_last_24_hours',
],
'gcm_model': 'mpi_m_mpi_esm_lr',
'rcm_model': 'gerics_remo2015',
'ensemble_member': 'r1i1p1',
'start_year': '2041',
'end_year': '2050',
'area': [50.5, 8.5, 50, 9], # Frankfurt region, high precision
},
'frankfurt_cordex.nc')

For precise facility coordinates:

Bias-correct global model outputs using historical observations:

import xarray as xr
import numpy as np

# Load historical observations (e.g., from DWD for German stations)
obs_hist = pd.read_csv('station_historical_temp.csv') # 1981-2010 baseline
obs_mean = obs_hist['temperature'].mean()

# Load model historical simulation
model_hist = xr.open_dataset('model_historical_1981_2010.nc')
model_hist_location = model_hist.sel(lat=50.11, lon=8.68, method='nearest')
model_hist_mean = model_hist_location['tas'].mean().values - 273.15

# Calculate bias
bias = obs_mean - model_hist_mean

# Load future projections
model_future = xr.open_dataset('model_ssp245_2041_2050.nc')
model_future_location = model_future.sel(lat=50.11, lon=8.68, method='nearest')

# Apply bias correction
model_future_corrected = model_future_location['tas'] - 273.15 + bias

# Calculate change from baseline
future_anomaly = model_future_corrected.mean().values - obs_mean

print(f"Projected temperature increase at facility: {future_anomaly:.2f}°C by 2045")

Commercial alternatives:

For companies without in-house technical capacity:

  • Jupiter Intelligence: Asset-level physical risk scores with proprietary downscaling
  • ClimateAi: Agricultural focus with hyperlocal projections
  • S&P Global Climanomics: Financial services orientation with comprehensive hazard coverage

These platforms provide user-friendly interfaces whilst handling complex downscaling internally, suitable for companies prioritising speed over customisation.

Step 3: Integrating SSP Socioeconomic Data

Accessing IIASA SSP Database

The International Institute for Applied Systems Analysis (IIASA) maintains the authoritative SSP database with projections for:

  • Population by age and education level
  • GDP and economic growth rates
  • Energy system composition and emissions
  • Land use and agricultural production
  • Urbanisation and infrastructure development

R workflow for SSP data retrieval:

library(httr)
library(jsonlite)
library(tidyverse)

# IIASA SSP Database API endpoint
base_url <- "https://tntcat.iiasa.ac.at/SspDb/dsd?Action=htmlpage&page=welcome"

# Example: Query GDP projections for Germany under SSP2
query_url <- paste0(
"https://tntcat.iiasa.ac.at/SspDb/rest/v2.1/runs/",
"?model=OECD ENV-Growth&",
"scenario=SSP2-Baseline&",
"region=OECD90&",
"variable=GDP|PPP"
)

response <- GET(query_url)
ssp_data <- content(response, "parsed")

# Process into dataframe
df_ssp <- data.frame(
year = ssp_data$data$years,
gdp = ssp_data$data$values,
scenario = "SSP2",
region = "Germany"
)

# Calculate growth rates
df_ssp <- df_ssp %>%
mutate(gdp_growth = (gdp - lag(gdp)) / lag(gdp) * 100)

# Visualise trajectory
ggplot(df_ssp, aes(x=year, y=gdp)) +
geom_line(size=1.2, color="steelblue") +
labs(title="GDP Projection for Germany under SSP2-4.5",
x="Year", y="GDP (billion 2005 USD, PPP)") +
theme_minimal()

Key variables for business analysis:

Variable Business Application SSP Database Location
GDP growth Market size projections, demand forecasting GDP|PPP by region
Population Labour availability, consumer demographics Population by age/education
Energy prices Operating cost projections Energy|Price by fuel type
Carbon prices Transition risk quantification Carbon Price by region/scenario
Agricultural productivity Food industry supply chain risks Crop|Production by commodity
Urbanisation rate Real estate market evolution Urban Population share

Building Scenario-Specific Financial Models

Excel template structure for scenario comparison:

Download the Climate Scenario Analysis Template which includes:

Tab 1: Scenario Assumptions

  • RCP selection and temperature outcomes
  • SSP narrative and key socioeconomic parameters
  • Time horizons (2030, 2040, 2050, 2100)
  • Carbon price trajectories by scenario

Tab 2: Physical Risk Quantification

  • Facility locations and exposure mapping
  • Climate hazard indicators (temperature, precipitation, flooding, heat stress)
  • Damage functions and expected annual losses
  • Adaptation investment requirements

Tab 3: Transition Risk Quantification

  • Energy consumption and carbon emissions by scope
  • Carbon price impact calculations
  • Technology substitution timelines and costs
  • Market shift revenue sensitivities

Tab 4: Financial Integration

  • NPV calculations under different scenarios
  • Cash flow impacts by time period
  • Capital allocation priorities
  • Scenario-weighted risk metrics

Tab 5: Reporting Dashboard

  • Visual comparisons across scenarios
  • Key metrics summary for CSRD disclosure
  • Uncertainty ranges and confidence levels
  • Strategic implications by scenario

Formula example for carbon cost calculation:

# In Excel cell calculating 2030 carbon costs under SSP1-2.6:

=('Physical Data'!B15 * 'Assumptions SSP1-2.6'!$C$8) +
('Physical Data'!B16 * 'Assumptions SSP1-2.6'!$C$9)

Where:
- B15 = Scope 1 emissions (tonnes CO2e)
- B16 = Scope 2 emissions (tonnes CO2e)
- $C$8 = Carbon price 2030 under SSP1-2.6 (€/tonne)
- $C$9 = Carbon price 2030 for electricity (€/tonne, market-based)

This systematic approach enables transparent, auditable calculations that satisfy both internal decision-makers and external auditors.

Step 4: Automating Data Workflows for Ongoing Monitoring

Building Production-Ready Pipelines

Scenario analysis isn't one-time—effective climate risk management requires regular updates as:

  • New climate science emerges (IPCC reports, CMIP phases)
  • Regional projections improve (higher resolution models)
  • Socioeconomic trajectories shift (policy changes, technology breakthroughs)
  • Business operations evolve (new facilities, changed supply chains)

Python automation framework:

import schedule
import time
from datetime import datetime
import logging

# Configure logging
logging.basicConfig(
filename='climate_data_pipeline.log',
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)

def update_climate_projections():
"""
Automated workflow for updating climate scenario data
"""
try:
logging.info("Starting climate data update")

# Step 1: Check for new CMIP6 data releases
check_cmip6_updates()

# Step 2: Download updated projections for facility locations
for facility in facility_locations:
download_facility_data(facility['lat'], facility['lon'], facility['id'])

# Step 3: Recalculate ensemble statistics
process_ensemble_data()

# Step 4: Update SSP socioeconomic projections
update_ssp_database()

# Step 5: Recalculate financial impacts
recalculate_scenario_impacts()

# Step 6: Generate updated dashboards
generate_executive_dashboard()

# Step 7: Flag significant changes for review
identify_material_changes()

logging.info("Climate data update completed successfully")

# Send notification
send_update_notification("Climate scenario data updated - review flagged items")

except Exception as e:
logging.error(f"Update failed: {str(e)}")
send_error_alert(str(e))

# Schedule quarterly updates
schedule.every(3).months.do(update_climate_projections)

# Manual trigger option
if __name__ == "__main__":
update_climate_projections()

# Keep scheduler running
while True:
schedule.run_pending()
time.sleep(86400) # Check daily for scheduled tasks

Monitoring Scenario Evolution

Track observable indicators showing which scenario pathway is unfolding:

Climate indicators:

  • Global mean temperature compared to RCP projections
  • Sea level rise compared to RCP projections
  • Extreme event frequencies compared to model ensembles

Socioeconomic indicators:

  • Actual emissions vs SSP emission trajectories
  • Renewable energy deployment rates vs SSP technology assumptions
  • Carbon pricing implementation vs SSP policy scenarios
  • GDP and population growth vs SSP demographic projections

Automated signpost tracking:

import pandas as pd
import numpy as np

def track_scenario_alignment():
"""
Compare observed data against scenario projections
"""
# Load observed data (from monitoring sources)
obs_temp = load_observed_temperature()
obs_emissions = load_emissions_data()
obs_renewables = load_renewable_capacity()

# Load scenario projections
scenarios = ['SSP1-2.6', 'SSP2-4.5', 'SSP3-7.0', 'SSP5-8.5']
proj_temp = load_scenario_temperature(scenarios)
proj_emissions = load_scenario_emissions(scenarios)
proj_renewables = load_scenario_renewables(scenarios)

# Calculate alignment scores (RMSE from projections)
alignment_scores = {}

for scenario in scenarios:
temp_rmse = np.sqrt(np.mean((obs_temp - proj_temp[scenario])**2))
emis_rmse = np.sqrt(np.mean((obs_emissions - proj_emissions[scenario])**2))
renew_rmse = np.sqrt(np.mean((obs_renewables - proj_renewables[scenario])**2))

# Weighted composite score
alignment_scores[scenario] = (
0.4 * (1 / temp_rmse) +
0.4 * (1 / emis_rmse) +
0.2 * (1 / renew_rmse)
)

# Identify most aligned scenario
best_fit = max(alignment_scores, key=alignment_scores.get)

report = f"""
Scenario Alignment Analysis - {datetime.now().strftime('%Y-%m-%d')}

Current observations most closely align with: {best_fit}

Alignment scores (higher = better fit):
"""

for scenario, score in sorted(alignment_scores.items(), key=lambda x: x[1], reverse=True):
report += f"\n{scenario}: {score:.3f}"

return report

# Run analysis and distribute
alignment_report = track_scenario_alignment()
distribute_report(alignment_report, recipients=['strategy@company.com', 'risk@company.com'])

This systematic monitoring enables adaptive management—updating strategic responses as uncertainty resolves and particular scenarios become more or less likely.

Step 5: CSRD-Compliant Documentation

Audit-Ready Methodology Documentation

Regulatory auditors scrutinise scenario analysis methodology, requiring transparent documentation of:

Data sources and versions:

Climate projections:
- Source: CMIP6 via Copernicus Climate Data Store
- Models used: MPI-ESM1-2-HR, UKESM1-0-LL, ACCESS-CM2, MIROC6 (4-model ensemble)
- Version: CMIP6 (2021 release)
- Variables: Near-surface temperature, precipitation, sea level
- Downscaling: Euro-CORDEX 12km for European facilities
- Access date: 2024-11-15

Socioeconomic data:
- Source: IIASA SSP Database v2.0
- Scenarios: SSP1-2.6, SSP2-4.5, SSP5-8.5
- Variables: GDP, population, carbon prices, energy prices
- Regions: Germany, European Union, Global
- Access date: 2024-11-20

Scenario selection rationale:

Scenarios selected for analysis:

1. SSP1-2.6 (Paris-aligned, 1.5-2°C):
Rationale: Assesses transition risks under aggressive climate policy consistent
with EU policy goals. Tests resilience of business model to rapid decarbonisation,
high carbon pricing (€150-300/tonne by 2040), and technology disruption.

2. SSP2-4.5 (baseline, 2.4-2.7°C):
Rationale: Represents most likely trajectory based on current policy commitments
and technology trends. Balances physical and transition risks for medium-term
planning (2030-2050). Used as central case for financial planning.

3. SSP5-8.5 (high emissions, 4.4°C):
Rationale: Stress-tests physical risk resilience under severe climate impacts.
Despite lower likelihood (given policy momentum and renewable economics),
retained for EU Taxonomy physical risk criteria and tail-risk assessment.
Used specifically for infrastructure resilience evaluation and adaptation
investment prioritisation.

Assumptions and limitations:

Key assumptions:
- Climate sensitivity: Using CMIP6 multi-model mean (ECS = 3.7°C per CO2 doubling)
- Facility locations: Static (no relocation assumed except where specifically modelled)
- Supply chain: Current suppliers maintained unless specified in adaptation scenarios
- Technology availability: Following SSP narratives for technology deployment rates

Limitations:
- Does not model tipping points or abrupt climate shifts
- Socioeconomic projections subject to high uncertainty beyond 2050
- Regional downscaling introduces additional uncertainty (±20% typical)
- Cascade and systemic risks partially captured but not comprehensively modelled

Confidence levels:
- Near-term (2030): High confidence in physical projections, medium in socioeconomic
- Medium-term (2040-2050): Medium confidence in both physical and socioeconomic
- Long-term (2050+): Low-medium confidence, used primarily for directional insights

Translating Technical Analysis into Executive Communication

CSRD reports require accessibility for non-technical stakeholders whilst maintaining technical rigour for auditors. Effective dual-layered approach:

Executive Summary (CSRD main report):

  • Scenario descriptions in plain language
  • Key findings visualised (temperature changes, financial impacts, strategic implications)
  • Risk ratings by scenario and time horizon
  • Strategic responses summarised

Technical Annex (supporting documentation):

  • Full methodology including code and calculations
  • Data provenance and version control
  • Detailed uncertainty quantification
  • Sensitivity analyses and robustness checks
  • References to scientific literature

Example executive summary language:

"We assessed climate resilience using three scenarios representing different levels of global climate action: an optimistic pathway limiting warming to 1.5-2°C (SSP1-2.6), a middle-ground scenario reaching 2.4-2.7°C (SSP2-4.5), and a high-impact scenario exceeding 4°C (SSP5-8.5).

Under the optimistic scenario, our primary risks are transitional—carbon pricing reaching €150-200 per tonne by 2040 would increase energy costs by 25-30%, requiring €80-100 million investment in efficiency improvements and renewable energy procurement between 2025-2035. These investments are financially viable with 7-9 year payback periods.

Under middle-ground and high-impact scenarios, physical risks dominate. By 2050, our southern European facilities face 15-20 additional extreme heat days annually, reducing productivity 3-5% without adaptation. Coastal logistics infrastructure faces flooding exposure increasing expected annual losses from €2 million (current) to €8-12 million (2050). We have prioritised €45 million in adaptation investments addressing the highest-exposure assets, with detailed implementation timelines in Section 4.2.

Our strategy remains resilient across all scenarios through a portfolio of no-regret actions (energy efficiency, supply chain diversification) combined with scenario-contingent investments triggered by observable indicators."

This structure satisfies both regulatory requirements and practical decision-making needs.

Common Implementation Challenges and Solutions

Challenge 1: Data Volume and Technical Complexity

Problem: Raw CMIP6 datasets measure in terabytes. Processing requires significant computational resources and technical expertise that many organisations lack.

Solutions:

Option A: Use pre-processed data services

  • Copernicus CDS provides policy-relevant subsets
  • Commercial platforms (Jupiter Intelligence, S&P Global) handle processing internally
  • Trade-off: Less customisation, suitable for ~80% of use cases

Option B: Cloud-based processing

  • Google Earth Engine, Microsoft Planetary Computer offer scalable infrastructure
  • Process data where it's stored rather than downloading
  • Python/R scripts run in cloud environment
  • Cost: Typically $50-500/month depending on usage

Option C: Engage technical consultants

  • Fiegenbaum Solutions and similar firms provide end-to-end data processing
  • One-time setup with internal team training for ongoing maintenance
  • Cost: €15,000-50,000 depending on complexity

Challenge 2: Translating Climate Variables into Financial Impacts

Problem: Climate models output temperature, precipitation, sea level—not business-relevant metrics like production downtime, damage costs, or revenue losses.

Solutions:

Develop damage functions: Map physical hazards to operational impacts using historical data:

def calculate_heat_productivity_loss(temperature, baseline_temp=25):
"""
Estimate productivity loss from heat stress
Based on research: 2% productivity loss per °C above 25°C threshold
"""
if temperature <= baseline_temp:
return 0
else:
excess_temp = temperature - baseline_temp
productivity_loss = min(0.02 * excess_temp, 0.30) # Cap at 30% loss
return productivity_loss

# Apply to facility data
facility_impact = []
for year in projection_years:
temp = facility_temperature[year]
loss_pct = calculate_heat_productivity_loss(temp)
annual_revenue = facility_revenue # Constant revenue assumption
impact_value = annual_revenue * loss_pct
facility_impact.append({'year': year, 'impact_€': impact_value})

total_npv_impact = calculate_npv(facility_impact, discount_rate=0.05)

Use sectoral impact literature:

  • IPCC Working Group II reports provide sector-specific climate impact relationships
  • Academic literature on agricultural yields, building energy demand, labour productivity
  • Industry association studies (e.g., insurance sector catastrophe models)

Engage operational teams: Internal experts know actual vulnerability better than generic models:

  • "At what temperature do we need to shut down production?"
  • "How many supply disruptions can we handle before missing customer commitments?"
  • "What's the cost of activating backup sourcing?"

Challenge 3: Keeping Analysis Current

Problem: Climate science advances rapidly. Analysis using 2019 CMIP5 data is now outdated but updating requires repeating entire workflow.

Solutions:

Version control everything:

# Git repository structure
climate-scenarios/
├── data/
│ ├── cmip6_raw/ # Original downloaded files
│ ├── processed/ # Cleaned and downscaled data
│ └── ssp/ # Socioeconomic projections
├── scripts/
│ ├── 01_download.py # Data acquisition
│ ├── 02_process.py # Cleaning and calculations
│ ├── 03_visualise.py # Dashboard generation
│ └── 04_report.py # CSRD output formatting
├── outputs/
│ ├── figures/
│ ├── tables/
│ └── csrd_disclosure.docx
├── documentation/
│ ├── methodology.md
│ ├── data_sources.md
│ └── changelog.md
└── README.md

Document everything:

  • Which data version was used
  • When analysis was last updated
  • What changed between updates
  • How to reproduce results

Schedule regular reviews:

  • Quarterly: Check for new data releases
  • Annually: Full refresh of projections
  • After major events: Re-assess assumptions (e.g., post-COP policy changes)

For comprehensive support navigating these implementation challenges, return to our climate scenarios hub for strategic framework guidance.

Sector-Specific Implementation Examples

Manufacturing: Multi-Site Physical Risk Assessment

Challenge: European manufacturing company with 12 facilities across 6 countries needs site-specific climate projections for all RCP scenarios.

Workflow:

import pandas as pd
import xarray as xr

# Facility inventory
facilities = pd.DataFrame({
'site_id': ['DE01', 'FR01', 'IT01', 'PL01', 'ES01', 'NL01'],
'lat': [51.0, 48.8, 45.5, 52.2, 41.4, 52.1],
'lon': [7.0, 2.3, 9.2, 21.0, 2.2, 5.2],
'country': ['Germany', 'France', 'Italy', 'Poland', 'Spain', 'Netherlands']
})

# Download Euro-CORDEX data for each location
for idx, facility in facilities.iterrows():
# Temperature projections
download_cordex_data(
variable='temperature',
lat=facility['lat'],
lon=facility['lon'],
scenarios=['rcp26', 'rcp45', 'rcp85'],
output_file=f"climate_data_{facility['site_id']}.nc"
)

# Extreme heat days (>35°C)
calculate_extreme_heat_days(
input_file=f"climate_data_{facility['site_id']}.nc",
threshold=35,
output_file=f"heat_days_{facility['site_id']}.csv"
)

# Precipitation intensity (heavy rain events)
calculate_heavy_precipitation(
input_file=f"climate_data_{facility['site_id']}.nc",
percentile=95,
output_file=f"heavy_rain_{facility['site_id']}.csv"
)

# Aggregate for portfolio view
portfolio_risk = compile_multi_site_analysis(facilities)
generate_executive_dashboard(portfolio_risk, output='manufacturing_climate_risk.xlsx')

Key outputs:

  • Site-specific risk rankings by scenario
  • Investment prioritisation for adaptation measures
  • Supply chain vulnerability assessment (which suppliers in high-risk zones)
  • Insurance strategy recommendations

Financial Services: Portfolio Climate Risk Screening

Challenge: Asset manager with €5 billion portfolio needs to assess climate transition risk across 200+ holdings under multiple scenarios.

Workflow using NGFS scenarios:

library(tidyverse)
library(readxl)

# Load portfolio holdings
portfolio <- read_excel("portfolio_holdings.xlsx")

# Load NGFS scenario data (carbon prices, sectoral impacts)
ngfs_carbon_prices <- read_csv("ngfs_carbon_prices.csv")
ngfs_sector_impacts <- read_csv("ngfs_sector_impacts.csv")

# Calculate transition risk exposure
transition_risk <- portfolio %>%
left_join(ngfs_sector_impacts, by = c("sector", "region")) %>%
mutate(
# Carbon cost impact under different scenarios
carbon_cost_orderly = revenue * carbon_intensity * ngfs_carbon_prices$orderly_2030,
carbon_cost_disorderly = revenue * carbon_intensity * ngfs_carbon_prices$disorderly_2030,

# Revenue risk from market transition
revenue_at_risk_orderly = revenue * sector_transition_risk_orderly,
revenue_at_risk_disorderly = revenue * sector_transition_risk_disorderly,

# Combined transition risk score
total_risk_orderly = carbon_cost_orderly + revenue_at_risk_orderly,
total_risk_disorderly = carbon_cost_disorderly + revenue_at_risk_disorderly
)

# Portfolio-level metrics
portfolio_summary <- transition_risk %>%
summarise(
total_nav = sum(market_value),
avg_carbon_intensity = weighted.mean(carbon_intensity, market_value),
nav_at_risk_orderly = sum(total_risk_orderly * market_value) / total_nav,
nav_at_risk_disorderly = sum(total_risk_disorderly * market_value) / total_nav
)

# High-risk holdings requiring engagement
high_risk_holdings <- transition_risk %>%
filter(total_risk_disorderly > 0.15 * revenue) %>% # >15% revenue at risk
select(company, sector, total_risk_orderly, total_risk_disorderly) %>%
arrange(desc(total_risk_disorderly))

write_csv(high_risk_holdings, "engagement_priority_list.csv")

Key outputs:

  • Portfolio-weighted carbon intensity and scenario-based Value-at-Risk
  • Company-specific engagement priorities
  • Sector allocation recommendations under different transition pathways
  • LP reporting materials demonstrating climate risk management

Frequently Asked Questions

Q: Where can I download pre-processed RCP and SSP data for business use?

The most accessible sources for corporate applications are: (1) Copernicus Climate Data Store (CDS) at climate.copernicus.eu for processed CMIP6 climate projections with straightforward API access; (2) IIASA SSP Database at tntcat.iiasa.ac.at/SspDb for socioeconomic variables including GDP, population, energy, and carbon prices; (3) World Bank Climate Change Knowledge Portal at climateknowledgeportal.worldbank.org for country-level summaries combining climate and socioeconomic data. All three sources provide free access with registration. For European-specific data, the Regional Climate Atlas Germany at www.climate-service-center.de offers 401 district-level projections particularly valuable for facility-specific assessments.

Q: What programming skills are required to process climate scenario data?

Basic competency with Python or R enables most corporate applications. Essential skills include: data manipulation (pandas in Python, tidyverse in R), working with NetCDF files (xarray in Python, ncdf4 in R), basic statistical analysis (calculating means, percentiles, trends), and visualisation (matplotlib/seaborn in Python, ggplot2 in R). For companies without internal programming capacity, Excel-based approaches using downloaded CSV files are feasible for simpler analyses. Commercial platforms like Jupiter Intelligence or ClimateAi provide graphical interfaces eliminating programming requirements entirely, though with less customisation flexibility.

Q: How do I validate that my scenario analysis methodology is CSRD-compliant?

CSRD compliance requires: (1) Using at least two scenarios including one Paris-aligned pathway (RCP 1.9 or 2.6), (2) Assessing multiple time horizons (minimum 2030, 2040, 2050), (3) Evaluating both physical and transition risks with quantification where feasible, (4) Transparent documentation of data sources, assumptions, and limitations, (5) Clear connection between scenario findings and strategic decisions. Have your methodology reviewed by sustainability auditors familiar with ESRS E1 requirements. Our CSRD compliance framework provides detailed technical specifications that auditors expect to see documented.

Q: What's the difference between using raw CMIP6 data versus commercial climate risk platforms?

Raw CMIP6 data provides maximum flexibility and no ongoing licensing costs but requires significant technical expertise, computational resources, and time investment (typical setup: 1-3 months for experienced teams). Commercial platforms offer processed, business-ready outputs with user-friendly interfaces, integrated SSP data, and turnkey reporting tools (typical setup: days to weeks). Cost trade-off: CMIP6 is free but staff time-intensive; commercial platforms range €5,000-50,000+ annually depending on features and company size. Most organisations benefit from hybrid approaches—using commercial platforms for initial assessments whilst developing internal CMIP6 capabilities for specific deep-dive analyses or customisation needs.

Q: How precise should my facility-level climate projections be?

Precision requirements depend on decision context and risk materiality. For initial screening and CSRD disclosure, regional projections (50-100km resolution) typically suffice to identify material risks. For major capital investments (facility siting, significant infrastructure) or high-exposure locations (coastal, water-stressed), higher resolution (10-20km) improves decision confidence. Remember that climate projections contain inherent uncertainty—multi-model ensembles showing ±1.5°C range at a location should inform adaptation strategies emphasising flexibility rather than point-optimised designs. Focus precision investment on factors most material to your specific risks: coastal companies prioritise sea level rise precision; agricultural companies prioritise precipitation patterns; manufacturing prioritises extreme heat events.

Q: Can I use simplified climate calculators instead of accessing raw scenario data?

Simplified calculators work for high-level screening but rarely satisfy CSRD audit requirements or enable sophisticated strategy development. Most calculators provide limited scenario coverage, use outdated CMIP5 rather than CMIP6 data, lack SSP socioeconomic integration, and don't support site-specific analysis at required precision. They're appropriate for initial awareness-building or very small companies with minimal exposure. For CSRD-covered companies or those with material climate exposure, accessing authoritative data sources (Copernicus, IIASA) directly or through commercial platforms provides necessary rigour. That said, tools like the KNMI Climate Explorer offer good middle ground—simplified interface with access to robust underlying data.

Q: How do I communicate technical climate analysis to non-technical executives?

Effective executive communication follows this structure: (1) Start with business impacts, not climate science—lead with "€50M exposure under high-emissions scenario" rather than "RCP 8.5 projects 4.2°C warming"; (2) Visualise scenario comparisons using clear dashboards showing how risk varies across pathways; (3) Link quantified risks to specific strategic decisions and capital allocation priorities; (4) Present uncertainty ranges transparently whilst recommending clear action (e.g., "Under all scenarios analysed, energy efficiency investments deliver 6-9 year payback"); (5) Provide technical appendix for those wanting methodological detail. Executive summaries should translate climate jargon: use "severe warming scenario" instead of "RCP 8.5," "rapid decarbonisation pathway" instead of "SSP1-2.6."

Q: What update frequency is required for scenario analysis to remain current?

Formal scenario analysis updates should occur every 2-3 years to incorporate: new IPCC Assessment Reports (published ~7 year cycles), updated CMIP phases, improved regional downscaling, and evolved SSP socioeconomic projections. Additionally, update after: material business changes (acquisitions, new facilities, market entries), significant policy shifts (major climate legislation, carbon pricing changes), or extreme climate events testing assumptions. Between formal updates, maintain quarterly monitoring of key indicators comparing observations against scenario projections—this "signpost tracking" identifies when accelerated updates are warranted. First-time implementations should plan interim updates after 12-18 months as methodology refinement and stakeholder feedback identify improvements.

Conclusion: Building Technical Capability for Strategic Advantage

Mastering the practical data skills for climate scenario analysis transforms regulatory compliance from burden into competitive advantage. Companies that can independently access CMIP6 projections, process SSP socioeconomic data, and integrate findings into financial models gain strategic benefits beyond CSRD compliance:

Decision-Making Confidence: Quantified scenario-based risks enable defensible capital allocation, facility planning, and strategic positioning rather than vague qualitative assessments.

Audit Resilience: Transparent, reproducible data workflows satisfy increasingly rigorous regulatory scrutiny whilst reducing external consulting dependencies and costs.

Adaptive Capacity: Internal technical capabilities enable rapid re-analysis as climate science evolves, policies shift, or business circumstances change—maintaining analysis currency without vendor dependencies.

Stakeholder Credibility: Technical sophistication signals operational maturity to investors, customers, and regulators, differentiating sophisticated risk management from superficial compliance.

The initial investment in building these capabilities—whether through internal skill development, commercial platform adoption, or expert consulting support—pays dividends through reduced analysis costs, improved strategic insights, and enhanced organisational resilience.

For companies at the beginning of this journey, start with manageable steps: access pre-processed Copernicus data for your top-exposure facilities, download SSP GDP and carbon price trajectories relevant to your markets, build simple Excel models linking climate variables to key operational metrics. Build complexity progressively as capability and confidence grow.

For organisations requiring comprehensive implementation support—from data infrastructure setup through CSRD-compliant reporting—Fiegenbaum Solutions provides end-to-end guidance combining climate science expertise, technical implementation, and strategic interpretation tailored to your industry and exposure profile.

The technical barrier to sophisticated scenario analysis has never been lower. The strategic imperative to master these capabilities has never been higher. Companies that act now position themselves to thrive in the climate-affected economy ahead.

Return to our complete climate scenarios framework for strategic guidance on building comprehensive, scenario-informed climate resilience.

Ready to implement robust climate scenario analysis with expert technical support? Contact Fiegenbaum Solutions for customised data integration, methodology development, and CSRD-compliant reporting frameworks that transform climate data into strategic advantage.