"""
Define the government's actions.
"""
"""
prev_vars!(agent::Government) → nothing
Update the government's previous variables.
"""
function prev_vars!(agent::Government)
agent.bills_prev = agent.bills
return nothing
end
"""
bills!(agent::Government, model) → agent.bills
The government issues treasury bills.
"""
function bills!(agent::Government, model)
agent.bills += model.g + model.ib * agent.bills_prev -
agent.taxes - sum(a.profits for a in allagents(model) if a isa CentralBank)
return agent.bills
end
"""
taxes!(agent::Government, model) → agent.taxes
The government collect households' wage taxes.
"""
function taxes!(agent::Government, model)
agent.taxes = sum(a.taxes for a in allagents(model) if a isa Household)
return agent.taxes
end
"""
networth!(agent::Government) → agent.networth
The government updates its networth, i.e. government debt.
"""
function networth!(agent::Government)
agent.networth = agent.bills
return agent.networth
end
"""
balance!(agent::Government, model) → agent.balance_current
Update the balance of the government for SFC checks.
"""
function balance!(agent::Government, model)
agent.balance_current = (agent.bills - agent.bills_prev) + agent.taxes + sum(a.profits for a in allagents(model) if a isa CentralBank) -
model.ib * agent.bills_prev - model.g
return agent.balance_current
end
"""
SFC!(agent::Government, model) → model
Define the government's SFC actions and update its accounting.
"""
function SFC!(agent::Government, model)
CViM.prev_vars!(agent)
CViM.taxes!(agent, model)
CViM.bills!(agent, model)
CViM.networth!(agent)
CViM.balance!(agent, model)
return model
end