CViM / src / model / structs.jl
structs.jl
Raw
"""
Define base structure and properties of agent types.
"""
Base.@kwdef mutable struct Government <: AbstractAgent
    id::Int
    taxes::Float64 = 0.0
    bills::Float64 = 0.0
    bills_prev::Float64 = 0.0
    networth::Float64 = 0.0
    balance_current::Float64 = 0.0
end

Base.@kwdef mutable struct CentralBank <: AbstractAgent
    id::Int
    bills::Float64 = 0.0
    bills_prev::Float64 = 0.0
    hpm::Float64 = 0.0
    hpm_prev::Float64 = 0.0
    advances::Float64 = 0.0
    advances_prev::Float64 = 0.0
    lending_facility::Float64 = 0.0
    deposit_facility::Float64 = 0.0
    lending_facility_prev::Float64 = 0.0
    deposit_facility_prev::Float64 = 0.0
    profits::Float64 = 0.0
    networth::Float64 = 0.0
    balance_current::Float64 = 0.0
    balance_capital::Float64 = 0.0
end

Base.@kwdef mutable struct Firm <: AbstractAgent
    id::Int
    value::Symbol
    belongToBank::Union{Missing, Int} = missing
    lev::Float64 = 0.0
    customers::Vector{Int} = []
    inventories::Float64 = 0.0
    inventories_prev::Float64 = 0.0
    GDP::Float64 = 0.0
    GDP_prev::Float64 = 0.0
    wages::Float64 = 0.0
    wages_prev::Float64 = 0.0
    consumption::Float64 = 0.0
    deposits::Float64 = 0.0
    deposits_prev::Float64 = 0.0
    loans::Float64 = 0.0
    loans_prev::Float64 = 0.0
    loans_demand::Float64 = 0.0
    loans_interests::Float64 = 0.0
    deposits_interests::Float64 = 0.0
    repayment::Float64 = 0.0
    profits::Float64 = 0.0
    networth::Float64 = 0.0
    balance_current::Float64 = 0.0
    balance_capital::Float64 = 0.0
    defaulted_loans::Float64 = 0.0
end

Base.@kwdef mutable struct Household <: AbstractAgent
    id::Int
    value::Symbol
    belongToBank::Union{Missing, Int} = missing
    belongToFirm::Union{Missing, Int} = missing
    lev::Float64 = 0.0
    consumption::Float64 = 0.0
    wages::Float64 = 0.0
    taxes::Float64 = 0.0
    income::Float64 = 0.0
    income_prev::Float64 = 0.0
    deposits::Float64 = 0.0
    deposits_prev::Float64 = 0.0
    loans::Float64 = 0.0
    loans_prev::Float64 = 0.0
    loans_demand::Float64 = 0.0
    loans_interests::Float64 = 0.0
    deposits_interests::Float64 = 0.0
    repayment::Float64 = 0.0
    networth::Float64 = 0.0
    networth_prev::Float64 = 0.0
    balance_current::Float64 = 0.0
    defaulted_loans::Float64 = 0.0
end

Base.@kwdef mutable struct Bank <: AbstractAgent
    id::Int
    type::Symbol
    value::Symbol
    status::Symbol = :neutral
    liq_values::Float64 = 0.0
    liq_pref::Float64 = 0.0
    belongToBank::Union{Missing, Int} = missing
    firms_customers::Vector{Int} = []
    hh_customers::Vector{Int} = []
    ib_customers::Vector{Int} = []
    deposits::Float64 = 0.0
    deposits_prev::Float64 = 0.0
    bills::Float64 = 0.0
    bills_prev = 0.0
    hpm::Float64 = 0.0
    hpm_prev::Float64 = 0.0
    networth::Float64 = 0.0
    loans::Float64 = 0.0
    loans_prev::Float64 = 0.0
    ON_interbank::Float64 = 0.0
    Term_interbank::Float64 = 0.0
    funding_costs::Float64 = 0.0
    funding_costs_prev::Float64 = 0.0
    repayment::Float64 = 0.0
    ilf_rate::Float64 = 0.0
    ilf_rate_prev::Float64 = 0.0
    ilh_rate::Float64 = 0.0
    ilh_rate_prev::Float64 = 0.0
    id_rate::Float64 = 0.0
    id_rate_prev::Float64 = 0.0
    profits::Float64 = 0.0
    balance_current::Float64 = 0.0
    balance_capital::Float64 = 0.0
    flow::Float64 = 0.0
    advances::Float64 = 0.0
    advances_prev::Float64 = 0.0
    ib_tot_demand::Float64 = 0.0
    ib_tot_supply::Float64 = 0.0
    ib_on_demand::Float64 = 0.0
    ib_term_demand::Float64 = 0.0
    ib_on_supply::Float64 = 0.0
    ib_term_supply::Float64 = 0.0
    loans_interests::Float64 = 0.0
    deposits_interests::Float64 = 0.0
    bills_interests::Float64 = 0.0
    hpm_interests::Float64 = 0.0
    advances_interests::Float64 = 0.0
    lending_facility::Float64 = 0.0
    deposit_facility::Float64 = 0.0
    lending_facility_prev::Float64 = 0.0
    deposit_facility_prev::Float64 = 0.0
    lending_facility_interests::Float64 = 0.0
    deposit_facility_interests::Float64 = 0.0
    defaulted_loans::Float64 = 0.0
end