Holdings, average cost basis, and unrealized P&L — derived automatically from your transaction history. No separate holdings table to maintain.
firma show portfolio
Displays all current positions with quantity, average cost per share, current market price, and unrealized P&L. Run firma sync first to refresh prices.
| TICKER | QTY | AVG | PRICE | P&L |
|---|---|---|---|---|
| TSLA | 392 | $245.68 | $376.30 | +$55,870.94 (+60.97%) |
| NVDA | 156 | $128.05 | $208.27 | +$12,514.80 (+62.65%) |
| MSFT | 18 | $380.00 | $412.50 | +$585.00 (+8.6%) |
| AAPL | 43 | ─ | ─ | ─ |
| Value | $179,999.72 | |||
| P&L | +$68,385.75 +61.27% | |||
| Synced | 4/25/2026, 8:35 AM | |||
Tickers without a price haven't been synced yet — run firma sync. AVG is the weighted average cost across all buy and deposit transactions.
firma sync
Fetches current market prices for every ticker in your portfolio from Finnhub and caches them locally. Requires a Finnhub API key — set it once withfirma config set finnhub-key <key>.
Prices are cached locally — firma never calls Finnhub unless you runfirma sync or ask Claude to sync_prices. Free Finnhub keys support up to 60 API calls/minute.