fix模拟盘盈亏:收回×卖回价 − 开仓U权利金 − 手续费,历史按U展示。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -26,6 +26,7 @@ class FeeConvertTests(unittest.TestCase):
|
||||
|
||||
class SettleClosedPnlTests(unittest.TestCase):
|
||||
def test_sim_net_times_close_index(self):
|
||||
# 无开仓指数时回退净币×平仓价
|
||||
s = settle_closed_pnl(
|
||||
premium_paid=0.01,
|
||||
premium_received=0.02,
|
||||
@@ -37,6 +38,35 @@ class SettleClosedPnlTests(unittest.TestCase):
|
||||
self.assertAlmostEqual(float(s["realized_pnl"]), 0.009, places=8)
|
||||
self.assertAlmostEqual(float(s["realized_pnl_usdt"]), 27.0, places=4)
|
||||
|
||||
def test_sim_proceeds_minus_open_premium_usdt(self):
|
||||
"""盈利=(收回币)×卖回价 − 已付币×开仓指数 − 手续费U."""
|
||||
s = settle_closed_pnl(
|
||||
premium_paid=0.011005,
|
||||
premium_received=0.02270864,
|
||||
open_fee=0,
|
||||
close_fee=0,
|
||||
premium_ccy="BTC",
|
||||
index_px=81000, # 卖回价
|
||||
open_index_px=86000, # 初始 U 权利金用开仓指数
|
||||
)
|
||||
# 0.02270864*81000 - 0.011005*86000
|
||||
expect = 0.02270864 * 81000 - 0.011005 * 86000
|
||||
self.assertAlmostEqual(float(s["realized_pnl_usdt"]), expect, places=2)
|
||||
|
||||
def test_sim_loss_remaining_minus_fees(self):
|
||||
"""亏损:剩余权利金U − 手续费U − 初始U(同一式)."""
|
||||
s = settle_closed_pnl(
|
||||
premium_paid=0.01,
|
||||
premium_received=0.004,
|
||||
open_fee=0.0001,
|
||||
close_fee=0.0001,
|
||||
premium_ccy="ETH",
|
||||
index_px=2500,
|
||||
open_index_px=3000,
|
||||
)
|
||||
# 0.004*2500 - 0.01*3000 - (0.0001*3000+0.0001*2500) = 10 - 30 - 0.55 = -20.55
|
||||
self.assertAlmostEqual(float(s["realized_pnl_usdt"]), -20.55, places=2)
|
||||
|
||||
def test_budget_ignored_for_usdt(self):
|
||||
# budget 不得抬高开仓成本
|
||||
s = settle_closed_pnl(
|
||||
|
||||
Reference in New Issue
Block a user