Files
FOUR-QUADRANT_BALANCE_SHEET…/tests/test_commodity.py
2026-02-22 23:39:47 -08:00

32 lines
869 B
Python

"""Tests for Sheet 6: Commodity shock channel (Part VI)."""
import pytest
from fqbm.state import FQBMState
from fqbm.sheets.commodity import (
inflation_composite,
commodity_step,
CommodityParams,
)
def test_inflation_composite():
pi = inflation_composite(0.02, 0.1, 0.05, 0.1, 0.2)
assert pi == pytest.approx(0.02 + 0.1 * 0.1 + 0.2 * 0.05)
assert pi > 0.02
def test_commodity_step():
state = FQBMState(O=1.0)
params = CommodityParams(d_O=0.1)
out = commodity_step(state, params)
assert out.O == pytest.approx(1.1)
params2 = CommodityParams(d_O=-0.05)
out2 = commodity_step(out, params2)
assert out2.O == pytest.approx(1.1 * 0.95)
def test_commodity_step_zero_o():
state = FQBMState(O=0.0)
params = CommodityParams(d_O=0.1)
out = commodity_step(state, params)
assert out.O == pytest.approx(1.1)