Aller au contenu principal

Les registres hébergés résolvent désormais les includes de prix gérés

Publié Dernière mise à jour 11 minutes de lectureMike ThriftMike Thrift
Les registres hébergés résolvent désormais les includes de prix gérés
Sur cette page

Soyons honnêtes : vos avoirs sont déjà parfaitement enregistrés dans votre registre. Ce sont les prix qui vous maintiennent dans un cycle de ressaisie sans fin.

Cette asymétrie est la corvée la plus ancienne et la plus frustrante de la comptabilité en texte brut. Vous écrivez un achat une fois, et il est gravé dans le marbre pour toujours : 120 NWRB {41.80 USD, 2024-03-12} fige définitivement une quantité, un coût et une date. Rien de ce qui se passe ensuite ne change ces faits. Un prix, en revanche, est exactement l'inverse — il est correct pour exactement un jour, puis devient silencieusement faux. Pire encore, il est faux d'une manière qu'aucune vérification de solde ne détectera jamais, car un registre avec des prix périmés s'équilibre toujours parfaitement.

Historiquement, la méthode Beancount pour gérer cela consistait à récupérer les prix avec un script et à committer le résultat. Cela fonctionne, et beaucoup de gens l'ont automatisé. Mais au bout du compte, c'est toujours un script que vous devez surveiller, une tâche cron que vous maintenez, et un fichier que vous fusionnez constamment.

Fini. Pour les registres hébergés sur beancount.io, notre moteur gère désormais cette résolution nativement. Cet article couvre exactement ce qui vient d'être livré, ce que nous avons délibérément évité de toucher et — tout aussi important — ce que nous n'avons pas encore construit.


Ce qui a été livré​

Un registre beancount.io hébergé peut désormais porter une directive include qui pointe vers une URL au lieu d'un nom de fichier local :

; main.bean, in a hosted beancount.io ledger.
;
; This page is French, so the quote currency is EUR. On another language of
; this site, use the currency in the list under the fence.
 
option "title" "Taxable brokerage"
option "operating_currency" "EUR"
 
; Only the hosted engine resolves the URL form, and upstream `include` takes a
; file glob — so the line is shown commented out here and this file still
; loads if you copy it to your own machine. Uncomment it in a hosted ledger.
; include "https://beancount.io/prices/AAPL-EUR"

Attention : Vous devrez vous connecter avant d'accéder à cette URL. Les requêtes anonymes redirigent vers la page de connexion. Cette page est en français, donc l'exemple cite des euros — la devise dans laquelle les lecteurs d'ici tiennent le plus souvent leurs comptes. Une fois authentifié, ouvrez https://beancount.io/prices/AAPL-EUR et confirmez que vous regardez des directives price standard. Ajoutez ensuite cette ligne à votre registre hébergé.

Si vous lisez dans une autre langue, utilisez la devise habituelle de cette langue, et uniquement lorsque le catalogue la liste comme cotation :

Le catalogue à https://beancount.io/prices/ se trouve derrière cette même connexion. AAPL-USD est lui-même une cotation directe Databento, pas un croisement. Les autres actions de premier rang fonctionnent de la même manière — changez le ticker, gardez la devise de cotation pour votre langue. ACME-USD renvoie une 404.

L'include de Beancount en amont attend techniquement un nom de fichier, donc un include d'URL est un comportement strictement propre au moteur hébergé. Il ne prétend jamais être du Beancount pur. Voici exactement ce que fait notre moteur sous le capot :

  • Il matérialise le flux comme un fichier virtuel en lecture seule. L'URL est résolue via le propre chemin de résolution d'include du moteur — atterrissant exactement là où un fichier local l'aurait fait — de sorte que chaque directive conserve une véritable localisation source. Vos octets d'origine ne sont jamais réécrits. Le fichier que vous avez écrit reste le fichier que vous avez écrit.
  • Validation stricte de la charge utile. Le corps récupéré est validé comme prix uniquement. Nous autorisons strictement les directives price, les commentaires et quatre clés de métadonnées spécifiques (price-source, price-kind, observed-at et provisional). Tout le reste rejette l'intégralité du corps. Il n'y a pas d'ingestion partielle, ce qui signifie qu'un flux malveillant ne peut jamais faire passer une transaction en contrebande dans vos comptes.
  • Mise en cache intelligente. Les flux sont mis en cache sous forme de révision immuable avec un pointeur mobile. Les cycles de rafraîchissement sont pilotés par des horodatages plutôt que par l'expiration du cache, garantissant qu'une panne en amont n'effacera pas votre dernière bonne révision.
  • Fraîcheur auditable. La fraîcheur est calculée dynamiquement lors de la lecture du registre (récente, périmée ou indisponible) en parallèle de l'heure d'observation rapportée par le flux. Un prix que vous ne pouvez pas dater est un prix que vous ne pouvez pas auditer.
  • Strictement en lecture seule. Les entrées gérées ne peuvent être ni modifiées ni supprimées (toute tentative lève une erreur nommant la source). De plus, elles ne comptent pas dans vos limites de directives — nous ne laissons pas les flux consommer le budget de votre registre.

Rien de tout cela ne change ce que signifie fondamentalement une directive price dans Beancount. Le seul travail du moteur est de placer des prix corrects, datés et attribuables devant le chargeur.


Votre propre prix l'emporte toujours​

C'est le critère décisif pour quiconque prend son registre au sérieux, alors soyons parfaitement clairs :

Pour la même date et la même paire de commodities (y compris son réciproque), un prix que vous avez écrit vous-même l'emporte toujours sur le flux géré.

Pas « habituellement », et pas « seulement si vous placez votre include en dernier ». Cette décision d'occultation intervient avant la construction de la carte des prix, ce qui signifie qu'elle est complètement indépendante de l'emplacement de l'include dans votre fichier. Mettez-le en haut, mettez-le en bas, ou répartissez-le sur trois fichiers — votre prix écrit à la main l'emporte toujours.

La règle du réciproque est facile à manquer mais vitale. Un flux de AAPL-USD est un prix d'AAPL en USD. Si vous avez écrit un prix dans l'autre sens — USD en AAPL, même date — votre entrée bat quand même le flux. Il en va de même pour la cotation que vous avez incluse, CNY ou JPY compris.

Pourquoi cette règle ? Parce qu'un prix dans votre propre fichier est une décision consciente. Il peut s'agir du cours de clôture exact que votre courtier a imprimé sur un relevé que vous êtes en train de rapprocher, d'une cotation contemporaine pour un actif peu échangé, ou d'un chiffre spécifique exigé par votre comptable. Un flux ne connaît pas votre contexte. Un système qui écrase silencieusement un chiffre rédigé par un humain cesse d'être un registre et devient une opinion. Le flux est là pour combler les lacunes ; il ne vous corrige pas.


Les prix modifient la valorisation, et rien d'autre​

Cette prochaine assurance est structurelle plutôt qu'un choix de politique, et il est préférable de la montrer avec de vrais chiffres. Jetez un œil à notre registre d'exemple crypto, comportant des lots datés, du staking, des positions DeFi et des airdrops :

Prenons une entrée spécifique. Un airdrop de token de gouvernance arrive et est enregistré comme revenu à la juste valeur de marché le jour où il atterrit :

2024-03-20 * "Uniswap" "Receive UNI governance token airdrop"
  Assets:Crypto:Wallet:MetaMask:UNI       50.00 UNI {12.50 USD, 2024-03-20}
  Income:Crypto:Airdrops                -625.00 USD
 

Ces 625,00 $ de revenu, et la base de 12,50 $ par unité attachée au lot, sont désormais des faits immuables concernant le 2024-03-20. Chaque directive price du registre — qu'elle soit gérée, écrite à la main ou totalement absente — laisse les deux intacts.

Les prix modifient la valeur de marché ; ils ne modifient jamais les quantités, la base de coût, les flux de trésorerie, les frais ou les plus-values réalisées. C'est précisément pourquoi un flux de prix est un outil sûr sur lequel s'appuyer : le pire qu'un mauvais prix puisse faire est de mal indiquer temporairement ce que vaut une position aujourd'hui. Il ne peut jamais corrompre les chiffres durs que vous mettrez sur votre déclaration de revenus.


Où un mauvais modèle de prix vous induit réellement en erreur​

Le registre d'exemple actions et ETF illustre la version la plus pointue de ce point précis :

Il contient une division d'actions 4 pour 1, enregistrée de la bonne manière — comme un changement de quantité qui préserve la base totale sans toucher aucun compte de revenu :

2025-07-15 * "Broker" "NWRB 4-for-1 share split — quantity change, not income"
  Assets:Brokerage:NWRB                   -120 NWRB {41.80 USD, 2024-03-12}
  Assets:Brokerage:NWRB                    480 NWRB {10.45 USD, 2024-03-12}
 

Les deux côtés totalisent 5 016,00 $. La valeur de marché reste inchangée à travers la division (7 440,00 $ dans les deux cas), et la date d'acquisition entre accolades survit — ce qui maintient une vente de ces actions en 2026 classée comme long terme.

Le piège courant consiste à enregistrer une division comme un événement de prix, en s'appuyant fortement sur une série de prix « ajustée des divisions » pour que les calculs tombent juste. Cela ne fonctionne que tant que chaque prix que vous regardez a été ajusté exactement de la même manière. Dès qu'un chiffre non ajusté atteint votre registre — un ancien reçu de confirmation, une capture d'écran, ou un flux tiers qui ne retraite pas les données historiques — la position est soudainement valorisée à quatre fois sa valeur réelle. Pire encore, le nombre d'actions dans le registre ne correspond plus au relevé de votre courtier, ce qui signifie que vos assertions de solde de fin d'année échoueront silencieusement.

C'est le véritable argument pour s'appuyer sur un flux de prix avec une source déclarée, un type déclaré et une heure d'observation visible. Il ne s'agit pas seulement de commodité ; il s'agit de savoir exactement quelle convention mathématique utilisent vos chiffres importés.

(Une note rapide sur les intégrations : la visionneuse de registre hébergée affiche les soldes de compte au coût et n'offre actuellement pas de contrôles de valorisation sur la page. Les registres ci-dessus sont destinés à présenter les mécanismes sous-jacents — les lots, la division, les ventes. Les deux sont publics, et vous pouvez les cloner et les exécuter localement.)


Ce qui n'est pas encore là​

Nous croyons qu'un changelog est pire qu'inutile s'il promet trop. Voici donc la vérité sans fard sur ce que nous n'avons pas encore construit, sans échéances attachées :

  • L'authentification est obligatoire. Les requêtes anonymes à https://beancount.io/prices/<ALIAS> vous renverront vers une page de connexion.
  • Pas de support CLI local. Le CLI local bea lit les fichiers depuis le disque, ce qui signifie qu'un include d'URL échouera localement comme un glob de fichier non apparié. Ajouter le support du chargeur au CLI est sur notre feuille de route.
  • Pas de surface API. Nous n'avons actuellement pas de champ REST, GraphQL ou MCP pour les prix gérés.
  • Pas de tableau de bord UI. Il n'y a pas d'écran « connecter-un-flux » et pas encore d'étiquette de fraîcheur dans l'UI. (Les données de fraîcheur que notre moteur calcule n'ont actuellement nulle part où être affichées).
  • Pas d'instantanés, d'exports ou de points de terminaison de rafraîchissement manuel.

Ce que nous avons livré aujourd'hui est strictement la couche moteur : résolution d'include, validation, mise en cache de révision, règles de priorité et calcul de fraîcheur. C'est l'infrastructure fondamentale sur laquelle tout le reste doit reposer, et c'est exactement pourquoi nous l'avons construite en premier.


Où regarder ensuite​

Les deux registres intégrés ci-dessus font partie de notre galerie d'exemples — six modèles entièrement élaborés que vous pouvez cloner et exécuter localement. (Les deux sont intentionnellement livrés avec des fichiers de prix statiques et versionnés, garantissant qu'un clone effectué dans deux ans produira exactement le même rapport qu'aujourd'hui). Tout le reste de ce que nous livrons atterrit directement sur notre changelog.

Si vous êtes parfaitement satisfait de maintenir vos prix à jour avec votre propre récupérateur, restez-y. Cela reste la meilleure réponse pour un registre strictement local. La propre documentation de récupération des prix de Beancount et l'outil beanprice maintenu sont les meilleurs points de départ.

Gardez la partie ennuyeuse ennuyeuse​

Les prix valent la peine d'être automatisés précisément parce qu'ils sont la seule partie d'un registre en texte brut qui se dégrade avec le temps. Beancount.io est conçu pour vous offrir une comptabilité en texte brut qui reste la vôtre — auditable, versionnée et jamais réécrite dans votre dos. C'était le standard de base qu'un flux géré devait atteindre avant que nous acceptions de le livrer.

Commencez gratuitement, et gardez vos comptes dans des fichiers que vous pouvez réellement lire.

Source : https://beancount.io/fr/blog/2026/09/17/managed-price-includes-hosted-ledgers

Publié: 17 septembre 2026

Dernière mise à jour: 19 septembre 2026