Source code for bamengine.roles.shareholder
"""
Shareholder role for households.
Tracks per-period dividend income received by each household from firm
profit distribution. This role serves as a foundation for a future
Capitalist extension with explicit firm ownership relationships.
"""
from bamengine.core.decorators import role
from bamengine.typing import Float1D
[docs]
@role
class Shareholder:
"""
Shareholder role for households.
Tracks per-period dividend income for each household. The ``dividends``
array is overwritten each period by ``firms_pay_dividends`` with the
current period's dividend amount (total dividends / n_households).
Parameters
----------
dividends : Float1D
Per-period dividend received by each household (overwritten each
period, not cumulative).
Examples
--------
Access from simulation:
>>> import bamengine as bam
>>> sim = bam.Simulation.init(n_households=500, seed=42)
>>> sh = sim.sh
>>> sh.dividends.shape
(500,)
Notes
-----
The Shareholder role is one of three roles assigned to households:
- Worker: employment and labor supply (see Worker)
- Consumer: consumption and savings
- Shareholder: per-period dividend income tracking
Currently dividends are distributed equally to all households. A future
Capitalist extension will introduce firm ownership relationships to
allow dividends to flow to specific households (shareholders).
See Also
--------
:class:`~bamengine.roles.consumer.Consumer` : Consumption role for households
:class:`~bamengine.roles.worker.Worker` : Employment role for households
:class:`~bamengine.events.revenue.FirmsPayDividends` : Dividend distribution event
"""
dividends: Float1D
"""Per-period dividend received by each household (overwritten each period)."""