|
@@ -32,12 +32,22 @@ class PositionsCommands(InfoCommandsBase):
|
|
exchange_positions = self.trading_engine.get_positions() or []
|
|
exchange_positions = self.trading_engine.get_positions() or []
|
|
exchange_orders = self.trading_engine.get_orders() or []
|
|
exchange_orders = self.trading_engine.get_orders() or []
|
|
|
|
|
|
|
|
+ # Debug: Log the exchange positions data structure
|
|
|
|
+ logger.info(f"🔍 Exchange positions data: {[{k: v for k, v in pos.items() if k in ['coin', 'symbol', 'returnOnEquity', 'szi']} for pos in exchange_positions[:2]]}")
|
|
|
|
+
|
|
# Create lookup for exchange data by symbol
|
|
# Create lookup for exchange data by symbol
|
|
exchange_data_by_symbol = {}
|
|
exchange_data_by_symbol = {}
|
|
for ex_pos in exchange_positions:
|
|
for ex_pos in exchange_positions:
|
|
- symbol_key = ex_pos.get('coin', '')
|
|
|
|
|
|
+ # Try both 'coin' and 'symbol' fields for mapping
|
|
|
|
+ symbol_key = ex_pos.get('coin', '') or ex_pos.get('symbol', '')
|
|
if symbol_key:
|
|
if symbol_key:
|
|
|
|
+ # Also try extracting base asset from symbol if it's in format "TOKEN/USDC:USDC"
|
|
|
|
+ if '/' in symbol_key:
|
|
|
|
+ base_token = symbol_key.split('/')[0]
|
|
|
|
+ exchange_data_by_symbol[base_token] = ex_pos
|
|
exchange_data_by_symbol[symbol_key] = ex_pos
|
|
exchange_data_by_symbol[symbol_key] = ex_pos
|
|
|
|
+
|
|
|
|
+ logger.info(f"🔍 Exchange data keys: {list(exchange_data_by_symbol.keys())}")
|
|
|
|
|
|
# Initialize totals
|
|
# Initialize totals
|
|
total_position_value = 0.0
|
|
total_position_value = 0.0
|
|
@@ -101,6 +111,9 @@ class PositionsCommands(InfoCommandsBase):
|
|
|
|
|
|
# Get exchange data for this position (used for ROE and mark price)
|
|
# Get exchange data for this position (used for ROE and mark price)
|
|
exchange_data = exchange_data_by_symbol.get(base_asset)
|
|
exchange_data = exchange_data_by_symbol.get(base_asset)
|
|
|
|
+ logger.info(f"🔍 Looking for '{base_asset}' in exchange data. Found: {exchange_data is not None}")
|
|
|
|
+ if exchange_data:
|
|
|
|
+ logger.info(f"🔍 Exchange data for {base_asset}: ROE={exchange_data.get('returnOnEquity')}, markPrice={exchange_data.get('markPrice')}")
|
|
|
|
|
|
# Get price data with defaults - prioritize live exchange data
|
|
# Get price data with defaults - prioritize live exchange data
|
|
mark_price = entry_price # Default to entry price
|
|
mark_price = entry_price # Default to entry price
|