ib-portfolio ยท diff

git:20260430.ef6e1c4 to git:20260615.cfe2890

9 added, 5 removed. Audit A to A.

---
name: ib-portfolio
description: Get portfolio positions from Interactive Brokers. Use when user asks about their portfolio, positions, holdings, or what stocks they own. Requires TWS or IB Gateway running locally.
dependencies: ["trading-skills"]
---
# IB Portfolio
Fetch current portfolio positions from Interactive Brokers.
- ## Prerequisites
+ ## IB Connection
- User must have TWS or IB Gateway running locally with API enabled:
- - Paper trading: port 7497
- - Live trading: port 7496
+ TWS or IB Gateway must be running locally with API enabled:
+ - **Paper trading** โ€” port 7497
+ - **Live trading** โ€” port 7496
+ **Port fallback:** If the configured port fails, automatically retry on the other port.
+ If the retry succeeds, save to memory which account type worked (live/paper) and reuse it for all IB skill calls in this and future sessions โ€” until the user explicitly asks for the other account.
+ If both ports fail, ask the user to verify that TWS or IB Gateway is running with API access enabled.
+
## Instructions
> **Note:** If `uv` is not installed or `pyproject.toml` is not found, replace `uv run python` with `python` in all commands below.
```bash
uv run python scripts/portfolio.py [--port PORT]
```
## Arguments
- - `--port` - IB port (default: 7496 for live trading)
+ - `--port` - IB port (default: 7497 for paper trading)
- `--account` - Specific IB account ID (optional, defaults to first account)
## Output
Returns JSON with:
- `connected` - Whether connection succeeded
- `positions` - Array of positions with symbol, quantity, avg_cost, market_value, unrealized_pnl
If not connected, explain that TWS/Gateway needs to be running.
## Dependencies
- `ib-async`
## Timezone
All timestamps and time-based calculations must use the `America/New_York` timezone. All JSON output must include `generated_at` (NY time string) and `data_delay` fields.