权利金折 U 优先用开仓 budget_usdt,避免随币价浮动。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-03 03:23:46 +08:00
parent a71042c3e1
commit 91ff1cdecc
2 changed files with 35 additions and 1 deletions
+14 -1
View File
@@ -140,7 +140,14 @@ def display_pnl_usdt_from_option_row(row: dict[str, Any]) -> float | None:
def premium_paid_usdt_from_option_row(row: dict[str, Any]) -> float | None:
"""开仓权利金折 USDT:币本位 × 指数;USDC 原样."""
"""开仓权利金折 USDT.
优先用开仓时兑换/预算占用的 budget_usdt(不随币价浮动);
否则 USDC 原样;币本位无预算记录时才回退 × 当前指数.
"""
entry = _safe_float(row.get("premium_entry_usdt") or row.get("budget_usdt"))
if entry is not None:
return round(float(entry), 4)
paid = _safe_float(row.get("premium_paid"))
if paid is None:
return None
@@ -207,6 +214,8 @@ def build_display_option_positions(
raw_positions: list[dict[str, Any]],
) -> list[dict[str, Any]]:
"""与实例 /api/options/positions 相同 enrichment + close_preview."""
from lib.options.options_db import init_options_tables, sum_open_budget_usdt, sum_open_premium_paid
meta_cache: dict[str, dict[str, Any] | None] = {}
rows: list[dict[str, Any]] = []
conn = cfg["get_db"]()
@@ -215,6 +224,7 @@ def build_display_option_positions(
for p in raw_positions:
inst = str(p.get("instId") or "").strip()
premium_override = sum_open_premium_paid(conn, inst) if inst else None
budget_usdt = sum_open_budget_usdt(conn, inst) if inst else None
row = enrich_position_row_display(
cfg,
ex,
@@ -222,6 +232,9 @@ def build_display_option_positions(
meta_cache=meta_cache,
premium_override=premium_override,
)
if budget_usdt is not None:
row["budget_usdt"] = round(float(budget_usdt), 4)
row["premium_entry_usdt"] = round(float(budget_usdt), 4)
attach_close_preview(cfg, ex, row, premium_paid=_safe_float(row.get("premium_paid")))
rows.append(row)
finally: