merton.extensions.climate¶
ClimateOverlay — climate stress wrapper around any structural model.
The overlay composes a ClimateScenario
with a base StructuralModel (Merton,
Black-Cox, CreditGrades, Leland-Toft, etc.). It applies the scenario’s
asset writedown to the firm’s equity before calibration, then scales
the resulting PD by the scenario’s sectoral PD multiplier.
Mathematics¶
Given a scenario s and a base structural fit returning
(A, σ_A, PD_base), the overlay produces
where m_s is the sectoral PD multiplier and the apply transformation
writes down equity by the scenario’s transition + physical writedown.
The DD reported by the overlay is -Φ⁻¹(PD_climate) for comparability
with the underlying Merton/extension DDs.
Examples
>>> from merton import Firm
>>> from merton.extensions import LelandToftModel
>>> from merton.extensions.climate import ClimateOverlay
>>> from merton.scenarios.climate import Sector
>>> from merton.scenarios.predefined.ngfs import delayed_transition
>>> firm = Firm(equity=100, debt_short=10, debt_long=30, equity_vol=0.25)
>>> base = LelandToftModel()
>>> overlay = ClimateOverlay(base, scenario=delayed_transition(), sector=Sector.ENERGY)
>>> stressed = overlay.fit(firm)
>>> stressed.pd >= base.fit(firm).pd # climate scenarios should not reduce PD
True
Classes¶
Wrap a base structural model with a |
Module Contents¶
- class merton.extensions.climate.ClimateOverlay[source]¶
Bases:
merton.extensions.base.StructuralModelWrap a base structural model with a
ClimateScenario.- Parameters:
base – Any
StructuralModel(orMertonModel— anything with afit(firm) -> StructuralResult- compatible interface).scenario – Climate scenario to apply.
sector – Sector tag for the firm (drives intensity & PD-multiplier lookup).
intensity – Override the default sector emission intensity (tCO₂e per $M EV).
- sector: merton.scenarios.climate.Sector | str[source]¶
- fit(firm: merton.core.firm.Firm) merton.extensions.base.StructuralResult[source]¶
Return a
StructuralResultforfirm.