This project is written in French — it targets students and investors on the Casablanca market, and the tool’s own interface and README are French. An English executive summary follows.

English summary. FIN is a bash-powered terminal toolkit that puts live markets into the prompt itself and into a set of plain commands. It needs nothing beyond bash, curl and jq: quotes and sparklines from Yahoo Finance, crypto from CoinGecko, daily FX from the ECB (Frankfurter), and a dedicated Morocco module — ^MASI, the dirham pairs, and the whole Casablanca listing — pulled from TradingView’s CSEMA scan, because Yahoo dropped MASI in 2019. A morocco/ma command prints the full session (77 listed values in the README’s own output, adv/dec/flat counts, top gainers/losers, sector market-cap bars); the prompt shows SPX/VIX/MASI refreshed about every 60 s; mkt is a real-time TUI (precompiled Go binary for x86-64 Linux); worth.tsv tracks net worth across cash/stocks/ETFs/crypto with an allocation bar; an idempotent installer hooks it into ~/.bashrc in ~30 seconds. Known limits: free-tier rate limits (Yahoo 429s, mitigated by a cache TTL), MASI is TradingView-scan data rather than a licensed feed, FX from the ECB is daily not intraday, and historical data is not stored. Source: https://github.com/yirvisom/fin-terminal.

Le problème

Un étudiant en finance a besoin de suivre le marché en direct — pendant un cours, une séance de bourse, une simulation de trading. Les outils gratuits existent, mais ils ont chacun un angle mort, et pour un étudiant marocain c’est toujours le même : Yahoo a abandonné le MASI en 2019. Le principal agrégateur gratuit ne publie plus l’indice du Maroc, et la cote de Casablanca est absente de la plupart des terminaux « gratuits ».

La réponse habituelle est de passer par une plateforme web. FIN fait l’inverse : chez moi, le marché vit dans le terminal, dans le prompt lui-même — pas besoin de quitter son éditeur pour savoir où est le MASI.

L’architecture

Le projet est volontairement minimal dans ses dépendances : bash, curl, jq. Le moteur (fin.sh, ~1 270 lignes, 48 fonctions) parle directement aux API gratuites :

source de données usage
Yahoo Finance (query1/2.finance.yahoo.com, hosts rotatifs) cotations, sparklines S&P 500 / ^VIX
TradingView scanner (scanner.tradingview.com/global/scan) cote CSEMA de Casablanca + MASI + paires du dirham
CoinGecko (api.coingecko.com) prix crypto, variation 24 h, capitalisation
Frankfurter (taux BCE) convertisseur de devises quotidien
Yahoo RSS (feeds.finance.yahoo.com) titres d’actualité

Deux choix techniques à noter :

  • Les TTL de cache (FIN_TTL_QUOTE=45, FIN_TTL_CRYPTO=30, FIN_TTL_SIG=60) absorbent les limites des API gratuites. Quand Yahoo renâcle (429), la boîte du prompt affiche les valeurs en cache et la cote marocaine — servie par TradingView — continue de tourner.
  • mkt est un vrai TUI temps réel, un binaire Go statique précompilé pour x86-64 Linux (bin/mkt, ELF statiquement lié). Le reste est du bash pur, installé par un script idempotent qui copie le moteur vers ~/.fin/ et ajoute un hook dans ~/.bashrc une seule fois.

Ce que ça permet concrètement

Pour un étudiant — ou un investisseur — du marché marocain, la valeur est dans le module Casablanca natif :

  • morocco / ma / masi — toute la cote en une commande : chandelle du jour de ^MASI, nombre de valeurs listées, répartition adv/dec/flat, volume et capitalisation agrégés, meilleurs/pires de la séance, barres de capitalisation par secteur (banques, matériaux non-énergétiques…), puis une watchlist (FIN_MOROCCO) mappée automatiquement des noms Yahoo .CA vers les tickers CSEMA de TradingView.
  • Le dirham — USDMAD=X et EURMAD vivent dans markets et dans le prompt, adossés à TradingView FX plutôt qu’à Yahoo.
  • Le marché dans le prompt — SPX, VIX et MASI rafraîchis toutes les ~60 s, colorés vert/rouge selon la séance.
  • tape 5 / tape 8 — un flux de marché en boucle pour suivre une séance en direct.
  • worth — un registre de patrimoine (worth.tsv) qui valorise cash, actions, ETF et crypto en USD et dessine une barre d’allocation par classe. Parfait pour un portefeuille fictif de simulation.
  • journal add sold 2 AAPL — chaque décision horodatée dans un fichier mensuel, pour tracer le pourquoi des trades.
  • Résilience — la cote marocaine continue de fonctionner quand les endpoints Yahoo sont saturés ; c’est le point le plus utile en conditions réelles de séance.

Chaque chiffre ci-dessus est vérifiable dans le README (exemples de sortie, valeurs de TTL) et dans le code source (fin.sh, finrc).

Limites connues

  • Pas une licence de données. Le MASI et la cote Casablanca viennent du scan CSEMA de TradingView — d’excellente qualité pour de la veille temps réel, mais ce n’est pas un flux agréé. Pour une thèse chiffrée ou un benchmark officiel, recouper avec les publications de l’AMMC et de la Bourse de Casablanca.
  • Risque 429 de Yahoo. Les endpoints gratuits limitent le débit ; le cache TTL absorbe les pics, mais des lignes peuvent afficher n/a pendant les pannes — sauf la cote marocaine, qui tient sur TradingView.
  • FX au quotidien. Le convertisseur de devises s’appuie sur les taux BCE (Frankfurter) : un point par jour, pas de l’intraday.
  • Pas d’historique. Le cache /cache/ contient des snapshots de prix transitoires ; FIN ne constitue pas une base de données historique.
  • Plateforme. mkt, le TUI, est un binaire précompilé pour Linux x86-64 uniquement ; le reste (commandes, prompt) fonctionne partout où bash tourne.

Où le trouver

L’installeur est idempotent (relançable sans risque) et n’ajoute qu’un seul hook dans ~/.bashrc. Les dépendances se limitent à curl et jq. Comme toujours ici : outil de veille et de visualisation, pas un conseil en investissement — vérifiez avant de vous fier à un chiffre.