Ajoute une interface graphique à finlab, en plus de la console Claude Code (les deux cohabitent sur finance.lab.local) : - dashboard/ : backend FastAPI (sans LLM/clé) exposant les données finlab en JSON (/api/portfolio, /api/scan, /api/ohlc, /api/plan, /api/alerts) + front statique (lightweight-charts) : graphiques chandeliers MM50/200 + volume, portefeuille (P&L/poids/secteurs), watchlists thématiques scannées, alertes, plan de trade R:R - Découplage code/data : finlab lit ses configs depuis FINLAB_HOME si défini (workspace persistant) ; repli sur le dossier du package en dév local - Image double usage (un build, deux conteneurs) : code → /opt/app, seed minimal (configs + persona + MCP) → workspace - Fix seed NFS (cause racine du workspace vide) : WORKDIR n'est plus sur le volume (le runtime le créait en root sur NFS) ; seed déplacé dans un initContainer robuste (recrée le dossier s'il est non-inscriptible) - Deployment : initContainer seed + 2 conteneurs (console ttyd -b /console, dashboard uvicorn) ; Service 2 ports ; IngressRoute 2 routes (/console + dashboard), basicAuth Validé en local (podman) : seed OK, dashboard /api/portfolio → 16k€/10 positions via FINLAB_HOME, endpoints ohlc/scan/plan/alerts OK, ttyd/claude/finlab présents. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
4 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 (positions Revolut), 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.