32 lines
869 B
Python
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) |