Funk-lab/tools/finlab
ALI YESILKAYA 9d55cc803d
feat(finlab): import déterministe d'un relevé de compte Revolut → positions (#72)
Procédure de mise à jour du portefeuille « à chaque trade » à partir des relevés
Revolut, sans IA (exact).

- finlab/revolut.py : reconstruit les positions depuis le « trading account
  statement » (toutes transactions) par COÛT MOYEN (achats − ventes, PRU pondéré),
  mappe les tickers Revolut→Yahoo (ASME→ASML.AS, TOTB→TTE.PA, BNP→BNP.PA, AXA→CS.PA,
  FTE→ORA.PA, AIR1→AI.PA) et vérifie les cours. Idempotent, ne touche qu'un compte,
  préserve les autres comptes/cash/commentaires (round-trip ruamel.yaml)
- CLI : python -m finlab.cli import-revolut <csv> [--write] [--account]
- Dashboard : le bouton « Importer un relevé » accepte les CSV → endpoints
  /api/revolut/preview (aperçu) + /api/revolut/apply (écrit), avec garde anti-évasion
  de chemin ; le front affiche les positions + bouton « Appliquer »
- portfolio.yaml : compte Revolut reconstruit depuis l'historique complet → ajoute
  AMAT (achetée le 29/06, manquait) ; valeurs alignées au centime
- requirements : + ruamel.yaml ; persona console + admin/ia/finlab.md documentés

Validé sur l'historique réel : 11 positions reconstruites = portfolio.yaml existant
(cours vérifiés, 0 warning) + AMAT. Flux dashboard upload→preview→apply testé
(TestClient), JS OK.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 16:31:01 +02:00
..
dashboard feat(finlab): import déterministe d'un relevé de compte Revolut → positions (#72) 2026-06-30 16:31:01 +02:00
finlab feat(finlab): import déterministe d'un relevé de compte Revolut → positions (#72) 2026-06-30 16:31:01 +02:00
webapp feat(finlab): console Claude Code finance in-cluster + toolkit d'analyse (#64) 2026-06-29 23:26:09 +02:00
workspace feat(finlab): import déterministe d'un relevé de compte Revolut → positions (#72) 2026-06-30 16:31:01 +02:00
.dockerignore feat(finlab): console Claude Code finance in-cluster + toolkit d'analyse (#64) 2026-06-29 23:26:09 +02:00
.gitignore feat(finlab): console Claude Code finance in-cluster + toolkit d'analyse (#64) 2026-06-29 23:26:09 +02:00
alerts.yaml feat(finlab): console Claude Code finance in-cluster + toolkit d'analyse (#64) 2026-06-29 23:26:09 +02:00
Dockerfile feat(finlab): alertes de prix par email (watcher sidecar, boucle 5 min) (#71) 2026-06-30 16:00:41 +02:00
entrypoint-console.sh feat(finlab): dashboard web (graphiques/portefeuille/actions) + fix seed NFS (#65) 2026-06-30 00:57:23 +02:00
entrypoint-seed.sh feat(finlab): dashboard web (graphiques/portefeuille/actions) + fix seed NFS (#65) 2026-06-30 00:57:23 +02:00
portfolio.yaml feat(finlab): import déterministe d'un relevé de compte Revolut → positions (#72) 2026-06-30 16:31:01 +02:00
price_alerts.yaml feat(finlab): alertes de prix par email (watcher sidecar, boucle 5 min) (#71) 2026-06-30 16:00:41 +02:00
README.md feat(finlab): dashboard web (graphiques/portefeuille/actions) + fix seed NFS (#65) 2026-06-30 00:57:23 +02:00
requirements.txt feat(finlab): import déterministe d'un relevé de compte Revolut → positions (#72) 2026-06-30 16:31:01 +02:00
watchlists.yaml feat(finlab): console Claude Code finance in-cluster + toolkit d'analyse (#64) 2026-06-29 23:26:09 +02:00

finlab — boîte à outils d'analyse de marché

Analyse de marché locale (données Yahoo Finance, gratuit/sans clé) + une console Claude Code finance déployée in-cluster. Paper trading optionnel via Alpaca (argent fictif).

⚠️ Outil d'analyse et d'aide à la décision. Ne passe aucun ordre réel. Tu restes seul décideur de tes opérations réelles (Revolut ou ailleurs).

Les 4 briques (finlab/)

Brique Module Ce que ça fait
Suivi de portefeuille tracker Valeur, P&L, poids, expo sectorielle, concentration
Analyse technique technical RSI, MACD, MM50/200, Bollinger, ATR + signaux
Analyse fondamentale fundamental PER, PEG, marges, ROE, croissance, dette, cible analystes
Paper trading paper Compte/positions/ordres fictifs Alpaca

Glu : data (fetch + cache), scanner (watchlists), digest (rapport compact), alerts, plan (plan de trade R:R), cli, mcp_server.

Quatre façons de l'utiliser

  1. Dashboard web (déploiement) — finance.lab.local/ : graphiques chandeliers, portefeuille, watchlists, alertes, plan de trade. Backend dashboard/server.py (FastAPI, sans LLM).
  2. Console Claude Code web (déploiement) — finance.lab.local/console/ : vraie session Claude Code spécialisée finance, outils finlab en MCP. Voir k8s/apps/finlab/README.md.
  3. CLIpython -m finlab.cli digest|portfolio|tech|fundamentals|scan|plan|alerts.
  4. MCP — serveur stdio finlab.mcp_server, branché dans le .mcp.json du repo lab → outils finlab dans les sessions Claude Code du lab.

Le code lit ses configs depuis FINLAB_HOME si défini (déploiement : workspace persistant), sinon depuis le dossier du package (dév local). Le dashboard se lance en local : FINLAB_HOME=$PWD PYTHONPATH=$PWD .venv/bin/uvicorn dashboard.server:app --port 8800.

Le portefeuille se modifie dans portfolio.yaml, les watchlists dans watchlists.yaml (thèmes : energy_power, chips, cables_optical_network, software_cloud, datacenter_infra), les règles d'alerte dans alerts.yaml.

Dév local

python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
PYTHONPATH=. .venv/bin/python -m finlab.cli digest

App web FastAPI (alternative, non déployée)

webapp/server.py — chat Claude Opus via API Anthropic (facturé), persona webapp/finance_soul.md, tool-use finlab, SSE. Conservée comme surface HTTP requêtable optionnelle ; le déploiement in-cluster utilise la console Claude Code (abonnement, non facturé) et non cette app. Lancer en local : ANTHROPIC_API_KEY=... .venv/bin/python -m webapp.server.

Limites

  • Yahoo peut brider/différer ; certains champs fondamentaux sont vides.
  • Le P&L EUR utilise le taux de change actuel (léger écart sur le PRU vs Revolut).
  • Indicateurs techniques et cibles analystes ne sont pas des recommandations.