AI-система моделирования климатических рисков
Климатические риски разделяются на физические (наводнения, жара, ветер) и транзиционные (изменение регулирования, углеродные налоги). Финансовые регуляторы (TCFD, CSRD, Банк России) требуют их раскрытия в корпоративной отчётности. ML позволяет перейти от качественных оценок к количественным — с привязкой к конкретным активам, горизонтам и сценариям выбросов.
Физические климатические риски
Классификация по горизонту:
- Краткосрочные (< 5 лет): экстремальные осадки, волны жары, паводки
- Среднесрочные (5-30 лет): изменение частоты ураганов, засух, рост уровня моря
- Долгосрочные (> 30 лет): структурные изменения климатических зон, опустынивание
Сценарии IPCC:
| Сценарий | Потепление к 2100 | Применение |
|---|---|---|
| SSP1-2.6 | +1.5-2.0°C | оптимистичный (Net Zero) |
| SSP2-4.5 | +2.5-3.0°C | политика как сейчас |
| SSP3-7.0 | +3.5-4.0°C | высокие выбросы |
| SSP5-8.5 | +4.5°C+ | worst case |
Для каждого сценария — набор климатических проекций (CMIP6 модели), используемых как основа для региональных downscaling.
Архитектура системы физических рисков
Шаг 1: Asset Geocoding и Location Intelligence
# Привязка активов к координатам
assets = {
'asset_id': 'plant_001',
'lat': 55.7522, 'lon': 37.6156,
'asset_type': 'manufacturing',
'replacement_value': 50_000_000, # USD
'operational_lifespan': 30 # лет
}
# Геопространственный joining с климатическими слоями
# GADM административные границы, OpenStreetMap elevation
Шаг 2: Hazard Modeling
Flood risk:
# FATHOM, JBA Risk, CatRisk — глобальные flood models
# AQUEDUCT (WRI): публичные данные flood exposure по RP10/50/100/500
# Для конкретной точки: flood depth × probability distribution
def flood_risk_score(lat, lon, scenario='SSP2-4.5', year=2050):
flood_depths = aqueduct_api.get_flood_depth(lat, lon, scenario, year)
# flood_depths: dict {RP10: 0.3m, RP50: 1.2m, RP100: 2.1m}
return flood_depths
Heat stress:
def compute_heat_hazard(lat, lon, scenario, year):
# WBGT (Wet Bulb Globe Temperature) — интегральный показатель теплового стресса
# NOAA CMORPH osadki + ERA5 temperature + humidity projections
baseline_hdd = get_hot_days_above_35(lat, lon, '1990-2020')
projected_hdd = climate_model.project(lat, lon, scenario, year, '35c_exceedance_days')
delta_hot_days = projected_hdd - baseline_hdd
return delta_hot_days
Wildfire: FWI (Fire Weather Index) на основе CMIP6-проекций климатических переменных. Изменение FFMC, DMC, DC при потеплении → рост числа высокопожароопасных дней.
Шаг 3: Vulnerability Assessment
Физическая уязвимость — функция глубина наводнения → ущерб (%):
# Damage function (Huizinga 2017 curves — EU flood damage)
depth_damage_curve = {
0.0: 0.00,
0.5: 0.15,
1.0: 0.30,
2.0: 0.55,
3.0: 0.75,
5.0: 0.95
}
def physical_damage(flood_depth, asset_value):
damage_fraction = interpolate(depth_damage_curve, flood_depth)
return asset_value * damage_fraction
Шаг 4: Expected Annual Loss (EAL)
def expected_annual_loss(damage_by_return_period):
"""
Integration по вероятностям
EAL = Σ P(RP) × Damage(RP)
"""
return_periods = [10, 50, 100, 250, 500]
probs = [1/rp for rp in return_periods]
damages = [damage_by_return_period[rp] for rp in return_periods]
return np.trapz(damages, probs) # площадь под кривой
Транзиционные риски
Углеродная стоимость: Компании с высоким Scope 1+2 эмиссиями подвержены риску роста цены углерода:
def carbon_cost_impact(scope12_emissions_tCO2, carbon_price_scenarios):
"""
Сценарии цены CO₂: 2030 = $50-150/tCO2 (NGFS Central/Net Zero)
"""
return {
scenario: emissions * price
for scenario, price in carbon_price_scenarios.items()
}
Stranded Assets: Нефтегазовые, угольные активы — риск обесценивания при ужесточении климатического регулирования. Discounted Cash Flow при разных сценариях углеродных цен.
Policy risk: NLP-анализ климатического законодательства (GDPR Carbon Border Adjustment Mechanism, EU ETS Phase 4, российский ЭКОсбор) → оценка вероятности и сроков введения ограничений для конкретных отраслей.
Портфельный анализ рисков
Climate Value-at-Risk (ClimateVaR):
# Методология MSCI ClimateVaR / BlackRock Climate Risk framework
def portfolio_climate_var(portfolio, scenarios, horizon=2050):
asset_impacts = {}
for asset in portfolio:
physical_impact = physical_risk_model.predict(asset, scenarios, horizon)
transition_impact = transition_risk_model.predict(asset, scenarios, horizon)
asset_impacts[asset.id] = physical_impact + transition_impact
# Агрегация с учётом корреляций (climate risks коррелированы географически)
portfolio_var = aggregate_with_correlations(asset_impacts)
return portfolio_var
TCFD Reporting: Результаты — в стандартизированном формате Task Force on Climate-related Financial Disclosures:
- Governance (управление)
- Strategy (материальность рисков)
- Risk Management (процесс)
- Metrics and Targets (количественные показатели)
Данные и инструменты
Климатические данные:
- CMIP6 models (доступны через Copernicus Climate Data Store)
- ERA5 reanalysis (исторические данные)
- CHELSA, WorldClim: downscaled климатические данные 1 км
Инструменты:
- xarray, zarr: работа с многомерными климатическими данными (NetCDF)
- GeoPandas, Rasterio: геопространственные вычисления
- PyMC / stan: байесовское моделирование неопределённости
Платформы: Moody's ESG, MSCI ClimateVaR, Jupiter Intelligence — коммерческие data providers. Для кастомных решений: интеграция публичных климатических моделей (CMIP6 + AQUEDUCT + NASA).
Сроки: базовая физическая оценка рисков по flood/heat для портфеля активов — 6-8 недель. Многосценарный анализ (SSP1-8.5), транзиционные риски, ClimateVaR, TCFD-reporting модуль — 4-6 месяцев.







