Funk-lab/tools/finlab
ALI YESILKAYA 3c55ee968d
feat(finlab): alertes de prix par email (watcher sidecar, boucle 5 min) (#71)
Permet de configurer des alertes « préviens-moi par mail quand NVDA atteint 200$ »
depuis la Console IA. Un sidecar surveille les cours en continu.

- finlab/watcher.py : boucle toutes les 5 min, lit price_alerts.yaml (workspace),
  évalue les seuils above/below, envoie un email au franchissement. Anti-spam
  (1 mail/seuil, état .watcher-state.json, ré-armé en ré-éditant). Modes --once / --test
- Email via le relais postfix du lab (storage-01:25, SMTP_HOST) qui réécrit
  l'expéditeur en Gmail — AUCUN secret (pods k8s dans mynetworks)
- price_alerts.yaml : config seedée dans le workspace (email_to + rules), éditée
  par la Console IA sur demande
- deployment : conteneur sidecar `watcher` (boucle 5 min, ressources minimes)
- Dockerfile : seed price_alerts.yaml ; persona console + admin/ia/finlab.md documentés

Logique testée en local (SMTP mocké) : franchissement → envoi, anti-spam au 2e run,
seuil non atteint → rien.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 16:00:41 +02:00
..
dashboard feat(finlab): boutons d'analyse rapide (digest/analyse/plan/fondamental/opport./alertes) (#70) 2026-06-30 11:51:40 +02:00
finlab feat(finlab): alertes de prix par email (watcher sidecar, boucle 5 min) (#71) 2026-06-30 16:00:41 +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): alertes de prix par email (watcher sidecar, boucle 5 min) (#71) 2026-06-30 16:00:41 +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): portefeuilles multi-comptes (courtier/banque) + onglets dashboard (#67) 2026-06-30 01:40:20 +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): console Claude Code finance in-cluster + toolkit d'analyse (#64) 2026-06-29 23:26:09 +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.