Source code for macrostat.models.NK3E.scenarios

"""Scenarios class for the New Keynesian 3-Equation (NK3E) model."""

__author__ = ["Mitja Devetak"]
__credits__ = ["Mitja Devetak"]
__license__ = "MIT"
__maintainer__ = ["Mitja Devetak"]

import logging

from macrostat.core.scenarios import Scenarios
from macrostat.models.NK3E.parameters import ParametersNK3E

logger = logging.getLogger(__name__)


[docs] class ScenariosNK3E(Scenarios): """Scenarios class for the New Keynesian 3-Equation (NK3E) model.""" version = "NK3E" def __init__( self, scenario_info: dict | None = None, parameters: ParametersNK3E | None = None, *args, **kwargs, ): """Initialize the scenarios of the New Keynesian 3-Equation (NK3E) model.""" if parameters is None: parameters = ParametersNK3E() super().__init__( scenario_info=scenario_info, parameters=parameters, *args, **kwargs, ) # Add the three named scenarios matching the table self.add_three_parameterizations()
[docs] def get_default_scenario_values(self): """Return the default scenario values.""" # Baseline (no shock): A=10, pi_T=2, y_e=5 return { "A_add": 0.0, "pi_T_add": 0.0, "y_e_add": 0.0, }
[docs] def add_three_parameterizations(self): """Register the three default NK3E scenarios.""" # Scenario 1: rise in A (A: 12 vs baseline 10 -> +2) self.add_scenario( timeseries={ "A_add": 2.0, }, name="Scenario.1: Rise in A", ) # Scenario 2: higher inflation target (pi_T: 3 vs 2 -> +1) self.add_scenario( timeseries={ "pi_T_add": 1.0, }, name="Scenario.2: Higher pi_T", ) # Scenario 3: rise in equilibrium output (y_e: 7 vs 5 -> +2) self.add_scenario( timeseries={ "y_e_add": 2.0, }, name="Scenario.3: Rise in y_e", )