mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 22:34:41 +02:00
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>
This commit is contained in:
parent
1c4a9d647e
commit
efec4a5dfe
8 changed files with 324 additions and 29 deletions
|
|
@ -58,6 +58,21 @@ Checklist détaillée : `k8s/apps/finlab/README.md`.
|
|||
1. Secrets manuels dans `ai` : `ghcr-pull` (pull GHCR) + `finlab-auth` (htpasswd basicAuth).
|
||||
2. Ouvrir `finance.lab.local` → `claude` → `/login` (abonnement, persisté sur le PVC).
|
||||
|
||||
## Import de portefeuille — relevé Revolut (déterministe)
|
||||
|
||||
`finlab/revolut.py` reconstruit les positions depuis un **relevé de compte Revolut** (account
|
||||
statement CSV, export sur toute la période) 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
|
||||
(défaut « Revolut »), préserve les autres comptes/cash/commentaires (round-trip ruamel).
|
||||
|
||||
- **Dashboard** : bouton « Importer un relevé » accepte les **CSV** → endpoints
|
||||
`/api/revolut/preview` (aperçu) + `/api/revolut/apply` (écrit portfolio.yaml). Sans IA.
|
||||
- **CLI** : `python -m finlab.cli import-revolut <csv> [--write] [--account Revolut]`.
|
||||
|
||||
C'est la **procédure de mise à jour « à chaque trade »** : ré-exporter le relevé complet → importer.
|
||||
Le P&L statement et les exports mono-mois ne suffisent pas (positions incomplètes).
|
||||
|
||||
## Alertes de prix par email
|
||||
|
||||
Sidecar **`watcher`** (`finlab/watcher.py`) : boucle **toutes les 5 min**, lit
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue