# Sf Portfolio

> One-screen account view across StrategyFactory — exchanges, cached USDT balances, bots (with status), and open positions per exchange. Use when the user asks "where do I stand / show my portfolio / what bots are running / what's my balance / what positions are open / portfolio snapshot". Read-only.

- Skill: `daviddme/sf-portfolio` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add daviddme/sf-portfolio`
- Raw SKILL.md: https://api.skillmd.com/api/skills/daviddme/sf-portfolio/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: daviddme (https://skillmd.com/u/daviddme)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/daviddme/sf-portfolio

---


# sf-portfolio

The dashboard. One command, four data sources merged:

- `GET /exchanges` — what's connected
- `GET /exchanges/balances` — USDT cached balances (10-min cache)
- `GET /bots` — every bot with normalized status (ACTIVE/PAUSED/DRAFT/DISABLED)
- `GET /positions` — live open positions per exchange

## When to use

- "Show my portfolio"
- "What bots are running where?"
- "Balance across all exchanges"
- "Open positions snapshot"

## How to run

```
python sf-portfolio/portfolio.py [--json]
```

## Output

Three blocks: exchanges + balances, bots grouped by exchange, open
positions grouped by exchange. Balances mark `cached` and `checkedAt`;
positions are always live (not cached server-side).

## Notes

- Balances are cached 10 minutes server-side; force-refresh by calling
  `POST /exchanges/balances/cache/clear` (use `--clear-cache`).
- This view never returns API keys, secrets, or passphrases.

