diff --git a/services/kevin_signal_bridge/main.py b/services/kevin_signal_bridge/main.py index 90d29a4..c011f42 100644 --- a/services/kevin_signal_bridge/main.py +++ b/services/kevin_signal_bridge/main.py @@ -158,7 +158,13 @@ class KevinBridge: async def _snapshot_account(self) -> KevinAccountState: acct = await self.broker.get_account() positions = await self.broker.get_positions() - held = {p.symbol: Decimal(str(getattr(p, "cost_basis", 0))) for p in positions} + # PositionInfo schema uses `ticker` + `market_value` (no `cost_basis`). + # Cost basis ≈ qty * avg_entry; this is what the strategy's per-ticker cap compares against. + held = { + p.ticker: Decimal(str(p.qty)) * Decimal(str(p.avg_entry)) + for p in positions + if p.qty != 0 + } blocklist = ( await self.blocklist.active_set() if self.blocklist else set() )