Permet de suivre plusieurs comptes (courtiers/banques) côte à côte, avec vue par compte et agrégée. Ajoute le PEA BNP Paribas à côté de Revolut. - portfolio.yaml : nouveau format `accounts` (name/type/cash/positions par compte). Compat ascendante : ancien format (cash/positions à la racine) lu comme compte unique « Principal » - data.py : load_accounts(), base_currency(), portfolio_tickers() (union dédupliquée) - tracker.py : build_account / build_all (par compte + agrégat global) ; build() reste la vue globale (digest/report) ; report() multi-comptes - scanner/technical/alerts : helpers « portfolio » → union de tous les comptes - dashboard /api/portfolio : renvoie accounts[] (positions+agg par compte) + global - dashboard front : onglets de comptes (Tous / Revolut / BNP Paribas), KPI + positions + secteurs qui suivent le périmètre sélectionné, badge de type par ligne en vue Tous - BNP Paribas (PEA) saisi depuis la capture : AI/PAEEM/DCAM/PCEU/PSP5/BNP/ENGI/TTE .PA (tickers Yahoo vérifiés, cours conformes à la capture) Vérifié : totaux conformes à la capture BNP (6 395,49 € ; P&L -39 €), global 22 444 € ; bascule d'onglet OK au navigateur (Playwright) ; compile + JS + CLI report OK. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.2 KiB
FinLab — dashboard finance + console Claude Code + toolkit d'analyse
Quoi : boîte à outils d'analyse de marché maison (finlab, données Yahoo Finance gratuites)
déployée in-cluster sous deux faces (une seule image) : un dashboard web (graphiques,
portefeuille, watchlists, actions) et une console Claude Code finance. Remplace l'approche
OpenAlice abandonnée (cf. admin/ia/openalice.md) par plus simple et plus puissant : ton vrai
Claude Code (sur ton abonnement, pas l'API au compteur) + une UI graphique gratuite.
- Dashboard (
finance.lab.local/) — graphiques chandeliers (MM50/200 + volume), portefeuille (P&L/poids/secteurs), watchlists thématiques scannées, alertes du jour, plan de trade R:R. FastAPIdashboard/server.py, aucun LLM/clé (analyse technique pure). - Console (
finance.lab.local/console/) — terminal web (ttyd) →claudeagentique, persona + outils finlab en MCP, login abonnement persisté.
Où :
- Source :
tools/finlab/(code finlab + Dockerfile + personaworkspace/CLAUDE.md). - Image : CI
.github/workflows/build-finlab.yml→ghcr.io/alkatrazz24/funk-finlab. - Déploiement : ns
ai,finance.lab.local, manifestsk8s/apps/finlab/, app ArgoCDk8s/apps-of-apps/apps/finlab.yaml. - MCP local :
.mcp.json(racine repo lab) → outils finlab dans les sessions Claude Code du lab.
Cadre : analyse/aide à la décision uniquement, aucun ordre réel (seul le paper trading
Alpaca fictif est exécutable). Persona dans tools/finlab/workspace/CLAUDE.md (profil swing
trader concentré tech/semis, philosophie R:R/concentration/discipline).
Architecture
| Composant | Détail |
|---|---|
initContainer seed |
Peuple le workspace (cp -rn), robuste au piège NFS (fsGroup non honoré → recrée le dossier s'il est root/non-inscriptible). Tourne avant les conteneurs |
container dashboard |
uvicorn dashboard.server:app :8800 — UI + API JSON finlab |
container console |
ttyd -b /console :7681 → claude dans le workspace |
| Cerveau (console) | Abonnement Claude Code (login OAuth persisté dans ~/.claude sur le PVC) — pas de clé API |
| Code vs data | Code (finlab + dashboard) dans l'image /opt/app (maj avec l'image) ; configs éditables via FINLAB_HOME=/home/finlab/workspace (PVC) |
PVC finlab-data |
5Gi NFS → /home/finlab : login + workspace (configs + .cache) |
| Auth | basicAuth Traefik (finlab-auth) sur les deux routes — un shell web ne s'expose pas nu |
| Routes | /console → 7681 · reste → 8800 |
Découplage code/data : finlab lit ses configs depuis FINLAB_HOME si défini (sinon repli
sur le dossier du package → dév local inchangé). Le workspace est seedé au 1er boot puis vit sur
le PVC (edits + login persistent ; une nouvelle image n'ajoute que les fichiers manquants).
Outils finlab
digest (vue d'ensemble compacte, à privilégier), portfolio_summary, opportunities/scan,
technical_analysis/tech (RSI/MACD/MM50-200/Bollinger/ATR), fundamentals (PER/PEG/ROE/dette/
cible), trade_plan/plan (entrée/stop ATR/objectifs/taille/R:R), alerts_today, price,
plus paper trading (paper_account/paper_positions/paper_order, clés Alpaca optionnelles).
Configs (workspace, éditables) : portfolio.yaml (multi-comptes : accounts avec
name/type/cash/positions — ex. Revolut + BNP Paribas PEA ; agrégats globaux + par compte),
watchlists.yaml (thèmes chaîne IA/datacenter), alerts.yaml (règles).
Onboarding (premier boot)
Checklist détaillée : k8s/apps/finlab/README.md.
- Secrets manuels dans
ai:ghcr-pull(pull GHCR) +finlab-auth(htpasswd basicAuth). - Ouvrir
finance.lab.local→claude→/login(abonnement, persisté sur le PVC).
Accès programmatique
- MCP dans le repo lab :
.mcp.jsonracine pointetools/finlab/.venv→ outils finlab dans les sessions Claude Code du lab (approbation MCP au 1er lancement). - Headless :
kubectl -n ai exec deploy/finlab -- python -m finlab.cli digest.
Liens
- Source historique : ex-projet
Projets/Finance(rapatrié ici). - Approche précédente abandonnée :
admin/ia/openalice.md.