Stock Market
unlistedby Pierre
Affiche un tableau de gains/pertes pour chaque transaction boursière.
Stock Market — Plugin Obsidian
Affiche un tableau de positions boursières calculées à partir de tes fichiers de transactions. Le plugin regroupe les achats et ventes par ticker, calcule le prix moyen pondéré (PMP), et affiche les gains latents (positions ouvertes) et réalisés (positions fermées).
Installation
- Copier le dossier
stock-market/dans.obsidian/plugins/ - Dans Obsidian → Réglages → Plugins communautaires → désactiver le mode sans échec → activer Stock Market
Prérequis
Le plugin s'attend à deux éléments dans le vault :
1. Fichiers de transactions
Chaque transaction est une note Markdown dans 090 - Finance/Stocks/Transactions/ avec ce frontmatter :
---
date: 2024-08-12
ticker: VFV
action: buy # "buy" ou "sell"
quantity: 10
unit_price: 160.00
total: 1600.00
currency: CAD # "CAD" ou "USD"
note: Achat mensuel # optionnel — affiché en tooltip (ⓘ)
---
2. Fichier de prix actuels
Le fichier 090 - Finance/Stocks/symbols.json contient les cours en temps réel :
{
"symbols": [
{
"symbol": "VFV.TO",
"currency": "CAD",
"price": 182.90,
"price_cad": 182.90,
"updated_at": "2026-06-07T02:32:46Z"
},
{
"symbol": "NVDA",
"currency": "USD",
"price": 205.10,
"price_cad": 285.77,
"updated_at": "2026-06-07T02:32:46Z"
}
]
}
Utilisation
Dans n'importe quelle note Obsidian, insère ce bloc de code :
```stock-gains
```
Le tableau s'affiche automatiquement avec toutes les positions.
Affichage pleine largeur + mode lecture automatique
Pour la note dédiée, ajouter en frontmatter :
---
cssclasses: stock-transactions
---
Cela active :
- Largeur pleine page — le tableau utilise tout l'espace disponible
- Mode lecture automatique — la note s'ouvre toujours en consultation (jamais en édition)
- Propriétés masquées — le frontmatter n'est pas affiché
- Bouton d'ajout de transaction dans la barre native Obsidian (icône
+)
Ajouter une transaction
Sur toute note avec cssclasses: stock-transactions, un bouton ⊕ apparaît dans la barre d'outils native d'Obsidian. Le cliquer ouvre un formulaire avec les champs :
| Champ | Détails |
|---|---|
| Date | Pré-rempli avec la date du jour (format YYYY-MM-DD) |
| Ticker | Accepte les formats VFV.TO, NVDA, TSE:VGRO |
| Action | Achat / Vente |
| Devise | CAD ou USD |
| Quantité | Nombre d'unités |
| Prix unitaire | Prix par unité |
| Total | Calculé automatiquement — modifiable si des frais s'appliquent |
| Note | Optionnel — affiché en tooltip ⓘ dans le tableau |
À la soumission (bouton ou touche Entrée) :
- Crée un fichier
.mddans le dossier Transactions (YYYY-MM-DD TICKER action.md) - Ajoute le ticker à
symbols.jsons'il n'y est pas encore (avecprice: 0— à mettre à jour manuellement) - Rafraîchit le tableau de positions sans recharger la page
Normalisation du ticker pour symbols.json : TSE:VGRO → VGRO.TO
Résolution des tickers
Le plugin fait correspondre le ticker de la transaction à un symbole dans symbols.json selon ces règles, dans l'ordre :
| Ticker dans la transaction | Logique | Exemple de match |
|---|---|---|
TSE:VGRO | Préfixe XXX: → BASE.TO | VGRO.TO |
VFV + CAD | Cherche VFV.TO puis VFV.NE | VFV.TO |
NVDA + CAD | Cherche NVDA.TO puis NVDA.NE | NVDA.NE |
NVDA + USD | Match direct | NVDA |
Calcul du Prix Moyen Pondéré (PMP)
Pour chaque ticker, les transactions sont traitées chronologiquement :
Achat :
totalCost += quantité × prix_unitaire
openQty += quantité
pmp = totalCost / openQty
Vente :
gainRéalisé += (prix_vente - pmp) × quantité
totalCost -= pmp × quantité
openQty -= quantité
Le PMP reste inchangé lors d'une vente — seul le coût total est ajusté proportionnellement. C'est la méthode recommandée par l'ARC pour le calcul des gains en capital.
Structure du tableau
Positions ouvertes
| Ticker | Qté | Prix moy. | Prix actuel | Gain latent $ | Gain latent % |
|---|
Cliquer sur une position déroule le détail de chaque transaction individuelle.
Positions fermées
Apparaît uniquement si tu as vendu la totalité d'une position.
| Ticker | Qté vendue | Prix moy. | Gain réalisé $ | Gain réalisé % |
|---|
Détail (tiroir)
Visible en cliquant sur le ▶ d'une position :
| Date | Action | Qté | Prix unitaire | Coût total | Gain latent $ | Gain latent % |
|---|
Les transactions avec un champ note affichent un indicateur ⓘ — survoler avec la souris révèle la note.
Performance globale du portefeuille
Affiche un graphique linéaire de la valeur totale du portefeuille (CAD), avec des boutons pour changer la période : 7 jours (par défaut), 1 mois, 1 an. Les données sont récupérées en direct depuis l'API chart de Yahoo Finance — nécessite une connexion réseau. La conversion des tickers USD utilise le taux de change courant (pas le taux historique réel).
Yahoo limite le nombre de requêtes par adresse IP. Les cours sont donc demandés deux à la fois plutôt que tous d'un coup, gardés en mémoire 15 minutes (revenir à une période déjà affichée ne redemande rien), et repris automatiquement en cas de refus passager. Si Yahoo bloque quand même — ce qui arrive surtout sur un réseau cellulaire, dont l'adresse est partagée entre abonnés — le graphique le dit et propose Réessayer au lieu d'un message vague. Un titre absent est nommé sous le graphique même quand la courbe a pu être tracée sans lui.
Développement
npm install
npm run dev # mode watch (hot-reload)
npm run build # build de production
Prérequis : Node.js ≥ 18
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.