fix复盘真盈亏改为期权币盈亏×平仓价,不再绑卖回与初始权利金差。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -15,7 +15,7 @@ class AccountPnlSettleTests(unittest.TestCase):
|
||||
conn = sqlite3.connect(":memory:")
|
||||
conn.row_factory = sqlite3.Row
|
||||
init_options_tables(conn)
|
||||
# coin_pnl=0.01, open=90000, close=80000 → A=700; 账户差分会是 947 但不采用
|
||||
# coin_pnl=0.01, close=80000 → U=800; 账户差分不采用
|
||||
conn.execute(
|
||||
"""
|
||||
INSERT INTO options_trades(
|
||||
@@ -40,7 +40,7 @@ class AccountPnlSettleTests(unittest.TestCase):
|
||||
"SELECT trading_usdt_after, realized_pnl_usdt, pnl_settled FROM options_trades WHERE id=1"
|
||||
).fetchone()
|
||||
self.assertAlmostEqual(float(row["trading_usdt_after"]), 1947.05, places=2)
|
||||
self.assertAlmostEqual(float(row["realized_pnl_usdt"]), 700.0, places=2)
|
||||
self.assertAlmostEqual(float(row["realized_pnl_usdt"]), 800.0, places=2)
|
||||
self.assertEqual(int(row["pnl_settled"]), 1)
|
||||
|
||||
# 已冻结不再改
|
||||
@@ -51,7 +51,7 @@ class AccountPnlSettleTests(unittest.TestCase):
|
||||
row2 = conn.execute(
|
||||
"SELECT realized_pnl_usdt FROM options_trades WHERE id=1"
|
||||
).fetchone()
|
||||
self.assertAlmostEqual(float(row2["realized_pnl_usdt"]), 700.0, places=2)
|
||||
self.assertAlmostEqual(float(row2["realized_pnl_usdt"]), 800.0, places=2)
|
||||
conn.close()
|
||||
|
||||
def test_stats_use_coin_times_sell_px_not_account(self):
|
||||
@@ -158,17 +158,15 @@ class AccountPnlSettleTests(unittest.TestCase):
|
||||
true_pnl_usdt_premium_move,
|
||||
)
|
||||
|
||||
# (0.01+0.01)*80000 - 0.01*90000 = 700
|
||||
# 0.01*80000 = 800
|
||||
self.assertAlmostEqual(
|
||||
float(
|
||||
true_pnl_usdt_premium_move(
|
||||
coin_pnl=0.01,
|
||||
premium_paid=0.01,
|
||||
sell_back_px=80000,
|
||||
initial_premium_usdt=900.0,
|
||||
)
|
||||
),
|
||||
700.0,
|
||||
800.0,
|
||||
places=4,
|
||||
)
|
||||
pnl, src = resolve_true_pnl_usdt_from_trade(
|
||||
@@ -180,7 +178,7 @@ class AccountPnlSettleTests(unittest.TestCase):
|
||||
premium_ccy="BTC",
|
||||
)
|
||||
self.assertEqual(src, "premium_move")
|
||||
self.assertAlmostEqual(float(pnl), 700.0, places=4)
|
||||
self.assertAlmostEqual(float(pnl), 800.0, places=4)
|
||||
|
||||
def test_settle_blocked_when_sellable_coin(self):
|
||||
from lib.options.options_account_pnl_lib import try_settle_after_sellback
|
||||
|
||||
Reference in New Issue
Block a user