Skip to content

Commit 893ccc0

Browse files
committed
refactor: move HestonModelHelper tests from test_models.py to test_models_equity.py
1 parent abfbb08 commit 893ccc0

2 files changed

Lines changed: 74 additions & 74 deletions

File tree

tests/test_models.py

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -94,77 +94,3 @@ def test_piecewise_heston_model(piecewise_heston_env):
9494
assert model.kappa(0.5) == pytest.approx(2.0)
9595
assert model.sigma(0.5) == pytest.approx(0.3)
9696
assert model.rho(0.5) == pytest.approx(-0.7)
97-
98-
99-
# =============================================================================
100-
# HestonModelHelper
101-
# =============================================================================
102-
103-
104-
@pytest.fixture
105-
def heston_helper_env():
106-
"""Environment for HestonModelHelper tests."""
107-
today = ql.Date(15, ql.January, 2026)
108-
ql.Settings.instance().evaluationDate = today
109-
110-
dc = ql.Actual365Fixed()
111-
risk_free = ql.FlatForward(today, 0.05, dc)
112-
dividend = ql.FlatForward(today, 0.02, dc)
113-
vol_quote = ql.SimpleQuote(0.20)
114-
115-
return {
116-
"today": today,
117-
"risk_free": risk_free,
118-
"dividend": dividend,
119-
"vol_quote": vol_quote,
120-
}
121-
122-
123-
def test_hestonmodelhelper_construction_real_s0(heston_helper_env):
124-
"""Test HestonModelHelper construction with Real spot price."""
125-
env = heston_helper_env
126-
127-
helper = ql.HestonModelHelper(
128-
maturity=ql.Period(1, ql.Years),
129-
calendar=ql.TARGET(),
130-
s0=100.0,
131-
strikePrice=105.0,
132-
volatility=env["vol_quote"],
133-
riskFreeRate=env["risk_free"],
134-
dividendYield=env["dividend"],
135-
)
136-
assert helper is not None
137-
assert isinstance(helper, ql.base.BlackCalibrationHelper)
138-
139-
140-
def test_hestonmodelhelper_construction_handle_s0(heston_helper_env):
141-
"""Test HestonModelHelper construction with Handle<Quote> spot price."""
142-
env = heston_helper_env
143-
144-
helper = ql.HestonModelHelper(
145-
maturity=ql.Period(1, ql.Years),
146-
calendar=ql.TARGET(),
147-
s0=ql.QuoteHandle(ql.SimpleQuote(100.0)),
148-
strikePrice=105.0,
149-
volatility=ql.QuoteHandle(env["vol_quote"]),
150-
riskFreeRate=ql.YieldTermStructureHandle(env["risk_free"]),
151-
dividendYield=ql.YieldTermStructureHandle(env["dividend"]),
152-
)
153-
assert helper is not None
154-
assert isinstance(helper, ql.base.BlackCalibrationHelper)
155-
156-
157-
def test_hestonmodelhelper_maturity(heston_helper_env):
158-
"""Test HestonModelHelper maturity accessor."""
159-
env = heston_helper_env
160-
161-
helper = ql.HestonModelHelper(
162-
maturity=ql.Period(1, ql.Years),
163-
calendar=ql.TARGET(),
164-
s0=100.0,
165-
strikePrice=105.0,
166-
volatility=env["vol_quote"],
167-
riskFreeRate=env["risk_free"],
168-
dividendYield=env["dividend"],
169-
)
170-
assert helper.maturity() == pytest.approx(1.0, abs=0.01)

tests/test_models_equity.py

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,77 @@ def test_gjrgarchmodel_process(gjrgarch_model_env):
5656
process = model.process()
5757
assert process is not None
5858
assert isinstance(process, ql.GJRGARCHProcess)
59+
60+
61+
# =============================================================================
62+
# HestonModelHelper
63+
# =============================================================================
64+
65+
66+
@pytest.fixture
67+
def heston_helper_env():
68+
"""Environment for HestonModelHelper tests."""
69+
today = ql.Date(15, ql.January, 2026)
70+
ql.Settings.instance().evaluationDate = today
71+
72+
dc = ql.Actual365Fixed()
73+
risk_free = ql.FlatForward(today, 0.05, dc)
74+
dividend = ql.FlatForward(today, 0.02, dc)
75+
vol_quote = ql.SimpleQuote(0.20)
76+
77+
return {
78+
"today": today,
79+
"risk_free": risk_free,
80+
"dividend": dividend,
81+
"vol_quote": vol_quote,
82+
}
83+
84+
85+
def test_hestonmodelhelper_construction_real_s0(heston_helper_env):
86+
"""Test HestonModelHelper construction with Real spot price."""
87+
env = heston_helper_env
88+
89+
helper = ql.HestonModelHelper(
90+
maturity=ql.Period(1, ql.Years),
91+
calendar=ql.TARGET(),
92+
s0=100.0,
93+
strikePrice=105.0,
94+
volatility=env["vol_quote"],
95+
riskFreeRate=env["risk_free"],
96+
dividendYield=env["dividend"],
97+
)
98+
assert helper is not None
99+
assert isinstance(helper, ql.base.BlackCalibrationHelper)
100+
101+
102+
def test_hestonmodelhelper_construction_handle_s0(heston_helper_env):
103+
"""Test HestonModelHelper construction with Handle<Quote> spot price."""
104+
env = heston_helper_env
105+
106+
helper = ql.HestonModelHelper(
107+
maturity=ql.Period(1, ql.Years),
108+
calendar=ql.TARGET(),
109+
s0=ql.QuoteHandle(ql.SimpleQuote(100.0)),
110+
strikePrice=105.0,
111+
volatility=ql.QuoteHandle(env["vol_quote"]),
112+
riskFreeRate=ql.YieldTermStructureHandle(env["risk_free"]),
113+
dividendYield=ql.YieldTermStructureHandle(env["dividend"]),
114+
)
115+
assert helper is not None
116+
assert isinstance(helper, ql.base.BlackCalibrationHelper)
117+
118+
119+
def test_hestonmodelhelper_maturity(heston_helper_env):
120+
"""Test HestonModelHelper maturity accessor."""
121+
env = heston_helper_env
122+
123+
helper = ql.HestonModelHelper(
124+
maturity=ql.Period(1, ql.Years),
125+
calendar=ql.TARGET(),
126+
s0=100.0,
127+
strikePrice=105.0,
128+
volatility=env["vol_quote"],
129+
riskFreeRate=env["risk_free"],
130+
dividendYield=env["dividend"],
131+
)
132+
assert helper.maturity() == pytest.approx(1.0, abs=0.01)

0 commit comments

Comments
 (0)