Funk-lab/tools/finlab/README.md
ALI YESILKAYA 56cb32eacc
feat(finlab): dashboard web (graphiques/portefeuille/actions) + fix seed NFS (#65)
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>
2026-06-30 00:57:23 +02:00

57 lines
2.9 KiB
Markdown

# 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. **CLI**`python -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
```bash
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.