修复币本位期权残档判定:内在价值按币报价(S-K)/S,避免与美元点差混比误杀有效买一

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-08-20 16:21:54 +08:00
parent b0c331aa26
commit a7bec5e121
6 changed files with 115 additions and 20 deletions
+29
View File
@@ -267,6 +267,35 @@ def test_stub_bid_blocks_auto_close_estimate():
assert good["covered_sheets"] == 10
def test_intrinsic_px_coin_vs_usdc_units():
from lib.options.options_pricing_lib import intrinsic_px_per_unit, is_stub_bid_px
# USDC / 默认:美元点差
assert intrinsic_px_per_unit("C", 2250, 2274) == 24.0
assert intrinsic_px_per_unit("C", 2250, 2274, margin_mode="usdc") == 24.0
# 币本位:与盘口同单位的币报价 (S−K)/S
coin_iv = intrinsic_px_per_unit("C", 2250, 2274, quote_in_coin=True)
assert coin_iv is not None
assert abs(coin_iv - 24.0 / 2274.0) < 1e-12
assert abs(
intrinsic_px_per_unit("C", 2250, 2274, inst_id="ETH-USD-260822-2250-C") - 24.0 / 2274.0
) < 1e-12
# USD_UM 仍为点差
assert intrinsic_px_per_unit("C", 2250, 2274, inst_id="ETH-USD_UM-260822-2250-C") == 24.0
# 复现线上误杀:把点差当内在价值会把正常买一判残档
wrong_stub, _ = is_stub_bid_px(0.023, mark_px=0.0241, intrinsic_px=23.58)
assert wrong_stub is True
# 币报价内在价值后,买一贴近标记价应有效
ok_stub, _ = is_stub_bid_px(0.023, mark_px=0.0241, intrinsic_px=coin_iv)
assert ok_stub is False
put_iv = intrinsic_px_per_unit("P", 2300, 2274, quote_in_coin=True)
assert put_iv is not None
assert abs(put_iv - 26.0 / 2274.0) < 1e-12
def test_expiry_breakeven_from_ask():
from lib.options.options_pricing_lib import expiry_breakeven_from_ask