Source code for bamengine.events.economy_stats

"""
Economy statistics events for aggregate metrics calculation.

This module defines economy-level statistics events that calculate and track
aggregate economic indicators like average prices.

Examples
--------
>>> import bamengine as be
>>> sim = be.Simulation.init(seed=42)
>>> sim.step()  # Stats events run as part of default pipeline
>>> sim.ec.avg_mkt_price  # doctest: +SKIP
1.05
"""

from __future__ import annotations

from typing import TYPE_CHECKING

from bamengine.core.decorators import event

if TYPE_CHECKING:  # pragma: no cover
    from bamengine.simulation import Simulation


[docs] @event class UpdateAvgMktPrice: """ Update exponentially smoothed average market price. The average market price is calculated from all firm prices and tracked in economy history for inflation calculations. Examples -------- >>> import bamengine as be >>> sim = be.Simulation.init(n_firms=100, seed=42) >>> event = sim.get_event("update_avg_mkt_price") >>> event.execute(sim) >>> sim.ec.avg_mkt_price # doctest: +SKIP 1.02 See Also -------- CalcInflationRate : Uses price history for inflation bamengine.events._internal.production.update_avg_mkt_price : Implementation """
[docs] def execute(self, sim: Simulation) -> None: from bamengine.events._internal.production import update_avg_mkt_price update_avg_mkt_price(sim.ec, sim.prod)