Files
FOUR-QUADRANT_BALANCE_SHEET…/tests/test_differential_model.py

31 lines
1.0 KiB
Python
Raw Normal View History

"""Tests for Part XIV: differential model and stability checks."""
import numpy as np
from fqbm.state import FQBMState
from fqbm.system.differential_model import (
solve_trajectory,
check_stability,
DifferentialParams,
)
def test_solve_trajectory():
x0 = FQBMState(B=100, R=50, Loans=500, Deposits=600, E_b=50, S=1.0)
params = DifferentialParams(monetary_shock=1.0, credit_cycle=0.01)
t, X = solve_trajectory(x0, (0, 1), params, t_eval=np.linspace(0, 1, 11))
assert t.shape[0] == 11
assert X.shape == (11, 12)
assert X[-1, 0] > X[0, 0] # B increased
assert X[-1, 1] > X[0, 1] # R increased
assert X[-1, 3] >= X[0, 3] # Loans
def test_check_stability():
x = FQBMState(R=100, Loans=1000, E_b=100)
checks = check_stability(x, k=0.08, reserve_threshold=50, debt_gdp=0.5, r=0.05, g=0.02, primary_balance_gdp=0.02)
assert "CR_ok" in checks
assert "reserves_ok" in checks
assert "debt_sustainable" in checks
assert checks["CR_ok"] is True
assert checks["reserves_ok"] is True