Passer au contenu principal

Gestion des stocks dans Beancount

Le système de gestion des stocks de Beancount est une fonctionnalité puissante pour le suivi des actifs qui sont achetés et vendus au fil du temps, tels que les actions, les fonds communs de placement ou les devises étrangères. Il permet un suivi précis du prix de base, ce qui est essentiel pour calculer les gains en capital et comprendre la performance du portefeuille. Ce tutoriel couvre les mécanismes de base de la gestion des stocks dans votre registre.

Concepts clés

inventories

Au cœur de la gestion des stocks se trouve le suivi des positions. Une "position" est simplement un montant d'une marchandise détenue dans un compte. Beancount distingue deux types fondamentaux de positions.

Types de positions

  1. Position simple (sans coût): Il s'agit d'une écriture de solde standard. Elle représente un montant d'une marchandise sans aucun coût d'acquisition associé. Elle convient à la trésorerie ou aux assertions de solde simples.

    Assets:Bank:Checking      100.00 USD
  2. Position avec prix de base: Ce type de position comprend non seulement le nombre d'unités et la marchandise, mais également le coût auquel elle a été acquise. C'est le fondement du suivi des stocks. Le coût est spécifié entre accolades {}.

    Assets:Invest:VTSAX      10 VTSAX {100.00 USD, "lot-1"}

    Dans cet exemple, nous détenons 10 unités de VTSAX. Chaque unité a été acquise à un coût de 100,00 USD. Ce lot spécifique d'actions est identifié comme un "lot".

Opérations d'inventaire

Il existe deux opérations principales que vous pouvez effectuer sur un inventaire :

  1. Augmentations (Ajout à l'inventaire) : Lorsque vous achetez une marchandise, vous augmentez votre inventaire. Vous créez un nouveau lot avec un nombre spécifique d'unités et un prix de base.

    2024-01-15 * "Buy shares"
    Assets:Invest:STOCK 50 STOCK {25.00 USD, "lot-1"}
    Assets:Bank:Checking -1250.00 USD

    Ici, nous achetons 50 unités de STOCK à un coût par unité de 25,00 USD. Cela crée un lot dans le compte Assets:Invest:STOCK.

  2. Réductions (Retrait de l'inventaire) : Lorsque vous vendez une marchandise, vous réduisez votre inventaire. Vous devez spécifier le lot à partir duquel vous vendez. Pour ce faire, fournissez des informations correspondantes entre accolades.

    2024-01-20 * "Sell shares"
    Assets:Invest:STOCK -25 STOCK {25.00 USD}
    Assets:Bank:Checking 625.00 USD

    Dans cette transaction, nous vendons 25 unités de STOCK du lot qui a été acheté à 25,00 USD par unité.

Méthodes de comptabilisation

Lorsque vous réduisez un inventaire, Beancount a besoin d'une règle pour décider quel lot spécifique retirer si plusieurs lots correspondent ou si la correspondance est ambiguë. Cette règle est appelée la "méthode de comptabilisation". Vous pouvez définir une méthode par défaut pour l'ensemble de votre fichier ou en spécifier une pour chaque compte.

1. STRICT (Par défaut)

La méthode STRICT est la méthode de comptabilisation par défaut et la plus sûre. Elle impose une correspondance explicite et non ambiguë.

2024-01-01 open Assets:Invest:STOCK "STRICT"
  • Nécessite une correspondance exacte des lots : Vous devez fournir suffisamment d'informations dans l'écriture de réduction ({...}) pour identifier de manière unique le lot vendu.
  • Erreurs en cas de correspondances ambiguës : Si les informations fournies correspondent à plusieurs lots, Beancount génère une erreur, vous obligeant à être plus précis.
  • Exception : Si une écriture de réduction supprime exactement le nombre total d'unités détenues dans un compte, un spécificateur de coût vide ({}) est autorisé.

2. FIFO (Premier entré, premier sorti)

La méthode FIFO comptabilise automatiquement les réductions par rapport aux lots disponibles les plus anciens en premier.

2024-01-01 open Assets:Invest:STOCK "FIFO"
  • Résolution automatique : Elle résout l'ambiguïté en sélectionnant les lots correspondants les plus anciens.
  • Correspondance chronologique : Il s'agit d'une méthode comptable courante dans laquelle vous supposez que vous vendez les actifs que vous détenez depuis le plus longtemps. Il s'agit de la méthode requise à des fins fiscales dans de nombreux pays.

3. LIFO (Dernier entré, premier sorti)

La méthode LIFO est l'opposé de FIFO. Elle comptabilise les réductions par rapport aux lots disponibles les plus récents en premier.

2024-01-01 open Assets:Invest:STOCK "LIFO"
  • Ordre chronologique inverse : Elle sélectionne les lots acquis le plus récemment qui correspondent aux critères de réduction.
  • Optimisation fiscale : Dans certaines juridictions, cette méthode peut être utilisée pour l'optimisation fiscale, par exemple, en vendant d'abord les actions avec le prix de base le plus élevé afin de minimiser les gains en capital.

4. NONE

La méthode NONE désactive complètement la correspondance des lots.

2024-01-01 open Assets:Invest:STOCK "NONE"
  • Aucune correspondance de lot : Beancount ne tente pas de faire correspondre les réductions aux augmentations.
  • Autorise les signes mixtes : Cela permet à un compte de détenir simultanément des soldes positifs et négatifs de la même marchandise. Ce comportement est similaire à la façon dont l'outil Ledger CLI gère les marchandises.

Spécification des lots

Un "lot" est un bloc spécifique d'une marchandise acquise à un moment et à un prix particuliers. Lorsque vous créez ou réduisez une position, vous pouvez spécifier ses attributs de lot en détail.

Spécification complète

Lors de l'augmentation d'un inventaire (achat), vous pouvez spécifier jusqu'à trois attributs pour le lot :

Assets:Invest:STOCK  10 STOCK {
100.00 USD, # Prix de base (coût par unité)
2024-01-15, # Date d'acquisition
"lot-identifier" # Une étiquette de chaîne unique
}

Bien que tous les trois soient facultatifs, il est d'usage courant de fournir au moins le prix de base.

Méthodes de correspondance

Lors de la réduction d'un inventaire (vente), vous utilisez la même syntaxe pour spécifier le(s) lot(s) à partir duquel/desquels vendre.

  • Correspondance par coût : C'est la méthode la plus courante.

    Assets:Invest:STOCK  -5 STOCK {100.00 USD}
  • Correspondance par date : Si les coûts sont identiques, vous pouvez lever l'ambiguïté en utilisant la date d'acquisition.

    Assets:Invest:STOCK  -5 STOCK {2024-01-15}
  • Correspondance par étiquette : Les étiquettes fournissent un moyen infaillible d'identifier un lot.

    Assets:Invest:STOCK  -5 STOCK {"lot-identifier"}
  • Faire correspondre n'importe quel lot : Un ensemble vide d'accolades {} correspond à n'importe quel lot disponible. Ceci est souvent utilisé avec la comptabilisation FIFO ou LIFO, où le lot spécifique est sélectionné automatiquement.

    Assets:Invest:STOCK  -5 STOCK {}

Gestion des prix

Il est essentiel de comprendre la différence entre le prix de base ({}) et le prix (@). Ils ont des objectifs différents et ne sont pas interchangeables.

Prix vs Coût

  • {cost} : Définit le coût d'acquisition d'un actif. Il fait partie du lot d'inventaire lui-même et est utilisé pour la comptabilisation des réductions et le calcul des gains en capital.
  • @ price : Une annotation qui enregistre un prix du marché au moment d'une transaction. Il est utilisé pour les conversions de devises ou pour noter la valeur marchande à une date particulière.

Voici les trois scénarios :

  1. Annotation de prix (Conversion) : Utilisez @ pour convertir d'une devise à une autre.

    Assets:Forex     1000 USD @ 0.85 EUR
  2. Prix de base (Acquisition) : Utilisez {} lors de l'achat d'un actif pour établir son coût.

    Assets:Invest    10 STOCK {100.00 USD}
  3. Les deux (Vente avec enregistrement du prix) : Lors de la vente d'un actif, utilisez {} pour identifier le lot vendu et @ pour enregistrer le prix de vente. Cela permet le calcul automatisé des gains en capital.

    Assets:Invest    -10 STOCK {100.00 USD} @ 105.00 USD

    Cette entrée vend 10 STOCK du lot qui a coûté 100,00 chacun,aˋunprixdeventede105,00chacun, à un prix de vente de 105,00 chacun.

Règles d'utilisation des prix

  1. Les annotations de prix (@) n'affectent pas le lot qui est comptabilisé. La correspondance des lots est gérée exclusivement par le prix de base ({}) et la méthode de comptabilisation du compte.
  2. Le symbole @ est utilisé uniquement pour :
  • Conversions de devises.
  • Enregistrement de la valeur marchande d'un actif au moment d'une transaction.
  • Fournir le prix de vente pour les calculs des gains en capital.

Configuration

Vous pouvez configurer les méthodes de comptabilisation globalement ou par compte.

Méthode de comptabilisation globale

Vous pouvez définir une méthode de comptabilisation par défaut pour l'ensemble de votre fichier Beancount à l'aide de la directive option.

option "booking_method" "STRICT"

Les options disponibles sont "STRICT", "FIFO", "LIFO" et "NONE".

Remplacement par compte

Il est souvent utile d'avoir des méthodes différentes pour différents comptes. Par exemple, vous pouvez souhaiter FIFO pour un compte de retraite, mais STRICT pour un compte de courtage imposable afin de vous assurer que vous vendez des lots fiscaux spécifiques. Vous pouvez définir la méthode de comptabilisation lorsque vous ouvrez le compte.

2024-01-01 open Assets:Retirement:401K "FIFO"
2024-01-01 open Assets:Taxable:Stock "STRICT"

Bonnes pratiques

  1. Organisation de l'inventaire : Pour que votre registre reste propre et simple, il est fortement recommandé d'utiliser des comptes distincts pour chaque marchandise unique que vous détenez.

    # BON : Comptes séparés par marchandise
    Assets:Invest:VTSAX ; Seules les positions VTSAX ici
    Assets:Invest:VFIAX ; Seules les positions VFIAX ici

    Évitez de mélanger différentes actions ou fonds dans le même compte, car cela complique la gestion des stocks.

  2. Gestion des lots :

  • Utilisez des étiquettes significatives pour les lots, en particulier pour les transactions spécifiques telles que la récolte de pertes fiscales ou les attributions d'actions aux employés.

    Assets:Invest:STOCK  10 STOCK {100.00 USD, "tax-loss-harvest-2024"}
  • Documentez vos transactions avec des commentaires. Cela rend votre registre plus facile à lire et à comprendre plus tard.

    Assets:Invest:STOCK  -10 STOCK {100.00 USD} @ 110.00 USD ; Gain : 10 %
  1. Débogage : Si vous rencontrez des erreurs ou un comportement inattendu, Beancount fournit des outils pour inspecter l'état de votre inventaire.
  • Examiner l'état de l'inventaire : L'outil bean-doctor peut vous montrer l'état exact de tous les inventaires à tout moment de votre fichier.

    Remplacez <LINENO> par le numéro de ligne juste après une transaction pour voir son effet.

  • Vérifier la correspondance des lots : L'outil bean-check valide l'ensemble de votre fichier. Il détectera toutes les erreurs de comptabilisation, telles que les correspondances de lots ambiguës en mode STRICT.