Files
2026-08-01 10:33:19 +08:00

28 lines
967 B
Python

from apps.collector.selectors import pick_atm_strike, select_atm_pair
def test_pick_atm_strike():
assert pick_atm_strike([3490, 3500, 3510], 3502) == 3500
assert pick_atm_strike([3490, 3510], 3500) == 3490 # 等距取较小
def test_select_atm_pair():
# 构造远到期,避免 min_hours 过滤
contracts = []
for k in (3490.0, 3500.0, 3510.0):
for side in ("C", "P"):
contracts.append(
{
"inst_id": f"ETH-USD_UM-991231-{int(k)}-{side}",
"expiry_ymd": "991231",
"expiry_ms": 4102358400000, # 远未来
"strike": k,
"side": side,
}
)
pair = select_atm_pair(contracts, index_px=3501.0, min_hours=0)
assert pair is not None
assert pair.strike == 3500.0
assert pair.call_inst_id.endswith("-C")
assert pair.put_inst_id.endswith("-P")