Funk-lab/tools
alkatrazz efec4a5dfe feat(finlab): import déterministe d'un relevé de compte Revolut → positions
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:26:26 +02:00
..
finlab feat(finlab): import déterministe d'un relevé de compte Revolut → positions 2026-06-30 16:26:26 +02:00
hermes-auto-improve feat(hermes-auto-improve): passe quotidienne complète à 22h (tous les docs) 2026-06-10 13:46:14 +02:00
hermes-exec feat(stt): actions cluster via Hermes — contexte « agent » + exécuteur hermes-exec (#42) 2026-06-21 04:00:14 +02:00
hermes-voice feat(voice): mode VEILLE/CONVERSATION + webrtcvad 2026-06-02 19:23:26 +02:00