initial: alpaclaudia paper-trading bot + dashboard
Python bot (bot/alpaclaudia): alpaca-py client, wheel strategy (CSP + covered calls) plus equity trailing stops, risk gates (cash buffer, cost-basis guard, per-symbol concentration cap), SQLite state log, Typer CLI (tick/loop/status/ report/dump-state), Discord daily report, pytest suite. Next.js 14 dashboard (dashboard/): read-only — reads the bot's SQLite directly and pulls live account/positions/orders from Alpaca. KPIs, equity chart, positions, bot-intents audit table, and orders table. Dark UI with Tailwind. systemd/: user-unit templates for the polling loop and the post-close report timer. docs/STRATEGY.md: wheel mechanics, risk invariants, later candidates. Defaults to BOT_MODE=dry — nothing is submitted to Alpaca until explicitly enabled in .env. ALPACA_ENV=paper by default; flipping to live requires an explicit second guard.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# alpaclaudia — dashboard
|
||||
|
||||
Next.js 14 dashboard that renders the bot's Alpaca snapshot (live via REST) and
|
||||
its SQLite state log (read-only).
|
||||
|
||||
## Dev
|
||||
|
||||
```bash
|
||||
cd dashboard
|
||||
npm install
|
||||
cp .env.example .env.local # fill ALPACA_API_KEY + ALPACA_API_SECRET
|
||||
npm run dev # http://localhost:3030
|
||||
```
|
||||
|
||||
The dashboard never places orders — it only reads. Write-paths are owned by
|
||||
the Python bot (see `../bot`).
|
||||
|
||||
## Environment
|
||||
|
||||
| Var | Purpose |
|
||||
|---|---|
|
||||
| `ALPACLAUDIA_DB` | Path to bot SQLite DB (default `../data/alpaclaudia.db`) |
|
||||
| `ALPACA_API_KEY` / `ALPACA_API_SECRET` | Paper API creds |
|
||||
| `ALPACA_BASE_URL` | `https://paper-api.alpaca.markets` |
|
||||
|
||||
## Production
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
npm start # serves on :3030
|
||||
```
|
||||
|
||||
Reverse-proxy behind Caddy / nginx as needed; the process is single-tenant.
|
||||
Reference in New Issue
Block a user