Files
FOUR-QUADRANT_BALANCE_SHEET…/src/fqbm/sheets/commercial_bank.py

43 lines
1.1 KiB
Python
Raw Normal View History

"""
Sheet 2: Commercial Bank Model.
Part II 2.2. Loan creation: dLoans = dDeposits.
Capital constraint: CR = Equity / RWA >= k. Loans_max = Equity / k.
"""
from dataclasses import dataclass
from typing import Optional
from fqbm.state import FQBMState
@dataclass
class CommercialBankParams:
"""Parameters for commercial bank credit."""
k: float = 0.08 # minimum capital ratio (e.g. 8%)
d_deposits: float = 0.0 # exogenous deposit change → dLoans = dDeposits
def commercial_bank_step(
state: FQBMState,
params: Optional[CommercialBankParams] = None,
) -> FQBMState:
"""
Apply one period: dLoans = dDeposits (endogenous money). Equity unchanged unless losses.
"""
params = params or CommercialBankParams()
out = state.copy()
out.Loans += params.d_deposits
out.Deposits += params.d_deposits
return out
def loans_max(equity: float, k: float) -> float:
"""Maximum credit capacity: Loans_max = Equity / k (Part II — 2.2)."""
return equity / k if k > 0 else 0.0
def capital_ratio(equity: float, rwa: float) -> float:
"""CR = Equity / RWA."""
return equity / rwa if rwa > 0 else 0.0