Hub funds and dashboard: include OKX options balances in USDT totals.
Merge options USDC/USDT at 1:1 into fund overview snapshots, dashboard aggregation, and monitor board totals while keeping a separate options breakdown in the UI. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
from unittest import TestCase
|
||||
|
||||
from lib.hub.hub_options_funds_lib import (
|
||||
merge_board_row_balances,
|
||||
merge_perp_options_balances,
|
||||
options_balances_usdt_equiv,
|
||||
)
|
||||
|
||||
|
||||
class HubOptionsFundsLibTests(TestCase):
|
||||
def test_options_balances_usdt_equiv(self):
|
||||
snap = {
|
||||
"ok": True,
|
||||
"enabled": True,
|
||||
"balances": {"funding_usdc": 10, "trading_usdt": 5, "trading_usdc": 2},
|
||||
}
|
||||
out = options_balances_usdt_equiv(snap)
|
||||
self.assertTrue(out["ok"])
|
||||
self.assertEqual(out["funding_usdt"], 10.0)
|
||||
self.assertEqual(out["trading_usdt"], 7.0)
|
||||
|
||||
def test_merge_perp_options_balances(self):
|
||||
out = merge_perp_options_balances(
|
||||
100,
|
||||
50,
|
||||
{
|
||||
"ok": True,
|
||||
"enabled": True,
|
||||
"balances": {"funding_usdc": 8, "trading_usdc": 4},
|
||||
},
|
||||
)
|
||||
self.assertEqual(out["funding_usdt"], 108.0)
|
||||
self.assertEqual(out["trading_usdt"], 54.0)
|
||||
self.assertEqual(out["total_usdt"], 162.0)
|
||||
|
||||
def test_merge_board_row_balances(self):
|
||||
row = {
|
||||
"account_ok": True,
|
||||
"funding_usdt": 20,
|
||||
"trading_usdt": 30,
|
||||
"capabilities": ["options"],
|
||||
"options": {
|
||||
"ok": True,
|
||||
"enabled": True,
|
||||
"balances": {"funding_usdc": 1, "trading_usdc": 2},
|
||||
"positions": [{"inst_id": "X"}],
|
||||
"upl_total_usdc": 0.5,
|
||||
},
|
||||
}
|
||||
out = merge_board_row_balances(row)
|
||||
self.assertEqual(out["total_usdt"], 53.0)
|
||||
self.assertEqual(out["options_open_position_count"], 1)
|
||||
self.assertEqual(out["options_float_pnl_u"], 0.5)
|
||||
Reference in New Issue
Block a user