Gestió d'Inventari a Beancount
El sistema d'inventari de Beancount és una funció potent per al seguiment d'actius que es compren i es venen al llarg del temps, com ara accions, fons d'inversió o divises estrangeres. Permet un seguiment precís de la base de cost, que és essencial per calcular les plusvàlues i comprendre el rendiment de la cartera. Aquest tutorial cobreix la mecànica bàsica de la gestió d'inventaris al teu llibre major.
Conceptes Bàsics
En essència, la gestió d'inventari gira entorn del seguiment de posicions. Una "posició" és simplement una quantitat d'una mercaderia mantinguda en un compte. Beancount distingeix entre dos tipus fonamentals de posicions.
Tipus de Posició
-
Posició Simple (Sense Cost): Aquesta és una publicació de saldo estàndard. Representa una quantitat d'una mercaderia sense cap cost d'adquisició associat. És adequat per a diners en efectiu o afirmacions de saldo senzilles.
Assets:Bank:Checking 100.00 USD -
Posició amb Base de Cost: Aquest tipus de posició inclou no només el nombre d'unitats i la mercaderia, sinó també el cost al qual es va adquirir. Aquesta és la base del seguiment d'inventari. El cost s'especifica entre claus
{}.Assets:Invest:VTSAX 10 VTSAX {100.00 USD, "lot-1"}En aquest exemple, tenim 10 unitats de
VTSAX. Cada unitat es va adquirir a un cost de 100.00 USD. Aquest lot específic d'accions s'identifica com a "lot".
Operacions d'Inventari
Hi ha dues operacions principals que pots realitzar en un inventari:
-
Augmentacions (Afegir a l'inventari): Quan compres una mercaderia, augmentes el teu inventari. Crees un nou lot amb un nombre específic d'unitats i una base de cost.
2024-01-15 * "Buy shares"
Assets:Invest:STOCK 50 STOCK {25.00 USD, "lot-1"}
Assets:Bank:Checking -1250.00 USDAquí, comprem 50 unitats de
STOCKa un cost per unitat de 25.00 USD. Això crea un lot al compteAssets:Invest:STOCK. -
Reduccions (Eliminar de l'inventari): Quan vens una mercaderia, redueixes el teu inventari. Has d'especificar de quin lot estàs venent. Això es fa proporcionant informació coincident entre claus.
2024-01-20 * "Sell shares"
Assets:Invest:STOCK -25 STOCK {25.00 USD}
Assets:Bank:Checking 625.00 USDEn aquesta transacció, estem venent 25 unitats de
STOCKdel lot que es va comprar a 25.00 USD per unitat.
Mètodes de Comptabilització
Quan redueixes un inventari, Beancount necessita una regla per decidir de quin lot específic treure si hi ha múltiples lots que coincideixen o si la coincidència és ambigua. Aquesta regla s'anomena "mètode de comptabilització". Pots establir un mètode per defecte per a tot el teu fitxer o especificar-ne un per a cada compte.
1. STRICT (Per Defecte)
El mètode STRICT és el mètode de comptabilització per defecte i més segur. Aplica una coincidència explícita i inequívoca.
2024-01-01 open Assets:Invest:STOCK "STRICT"
- Requereix Coincidència Exacta de Lot: Has de proporcionar prou informació a la publicació de reducció (
{...}) per identificar de manera única el lot que s'està venent. - Errors en Coincidències Ambígües: Si la informació proporcionada coincideix amb múltiples lots, Beancount generarà un error, obligant-te a ser més específic.
- Excepció: Si una publicació de reducció elimina exactament el nombre total d'unitats mantingudes en un compte, es permet un especificador de cost buit (
{}).
2. FIFO (Primer Entrat, Primer Sortit)
El mètode FIFO comptabilitza automàticament les reduccions contra els lots disponibles més antics primer.
2024-01-01 open Assets:Invest:STOCK "FIFO"
- Resolució Automàtica: Resol l'ambigüitat seleccionant els lots coincidents més antics.
- Coincidència Cronològica: Aquest és un mètode de comptabilitat comú on assumeixes que estàs venent els actius que has tingut durant més temps. Aquest és el mètode requerit per a propòsits fiscals a molts països.
3. LIFO (Últim Entrat, Primer Sortit)
El mètode LIFO és l'oposat de FIFO. Comptabilitza les reduccions contra els lots disponibles més nous primer.
2024-01-01 open Assets:Invest:STOCK "LIFO"
- Ordre Cronològic Invers: Selecciona els lots adquirits més recentment que coincideixen amb els criteris de reducció.
- Optimització Fiscal: En algunes jurisdiccions, aquest mètode es pot utilitzar per a l'optimització fiscal, per exemple, venent les accions amb la base de cost més alta primer per minimitzar les plusvàlues.
4. NONE
El mètode NONE desactiva completament la coincidència de lots.
2024-01-01 open Assets:Invest:STOCK "NONE"
- Sense Coincidència de Lots: Beancount no intenta fer coincidir les reduccions amb les augmentacions.
- Permet Signes Mixtos: Això permet que un compte tingui saldos tant positius com negatius de la mateixa mercaderia simultàniament. Aquest comportament és similar a com l'eina Ledger CLI gestiona les mercaderies.
Especificació de Lot
Un "lot" és un bloc específic d'una mercaderia adquirida en un moment i preu particulars. Quan crees o redueixes una posició, pots especificar els seus atributs de lot amb detall.
Especificació Completa
Quan augmentes un inventari (compra), pots especificar fins a tres atributs per al lot:
Assets:Invest:STOCK 10 STOCK {
100.00 USD, # Base de cost (cost per unitat)
2024-01-15, # Data d'adquisició
"lot-identifier" # Una etiqueta de cadena única
}
Si bé els tres són opcionals, proporcionar almenys la base de cost és una pràctica estàndard.
Mètodes de Coincidència
Quan redueixes un inventari (venda), utilitzes la mateixa sintaxi per especificar de quin(s) lot(s) vendre.
-
Coincidència per cost: Aquest és el mètode més comú.
Assets:Invest:STOCK -5 STOCK {100.00 USD} -
Coincidència per data: Si els costos són idèntics, pots desambiguar utilitzant la data d'adquisició.
Assets:Invest:STOCK -5 STOCK {2024-01-15} -
Coincidència per etiqueta: Les etiquetes proporcionen una manera infal·lible d'identificar un lot.
Assets:Invest:STOCK -5 STOCK {"lot-identifier"} -
Coincidència amb qualsevol lot: Un conjunt buit de claus
{}coincidirà amb qualsevol lot disponible. Això s'utilitza sovint amb la comptabilitzacióFIFOoLIFO, on el lot específic se selecciona automàticament.Assets:Invest:STOCK -5 STOCK {}
Gestió de Preus
És crucial entendre la diferència entre base de cost ({}) i preu (@). Tenen propòsits diferents i no són intercanviables.
Preu vs Cost
{cost}: Defineix el cost d'adquisició d'un actiu. Forma part del lot d'inventari i s'utilitza per a la comptabilització de reduccions i el càlcul de plusvàlues.@ price: Una anotació que registra un preu de mercat en el moment d'una transacció. S'utilitza per a conversions de divises o per assenyalar el valor de mercat en una data concreta.
Aquí hi ha els tres escenaris:
-
Anotació de Preu (Conversió): Utilitza
@per convertir d'una moneda a una altra.Assets:Forex 1000 USD @ 0.85 EUR -
Base de Cost (Adquisició): Utilitza
{}quan compres un actiu per establir el seu cost.Assets:Invest 10 STOCK {100.00 USD} -
Tots dos (Venda amb Registre de Preu): Quan vens un actiu, utilitza
{}per identificar el lot que s'està venent i@per registrar el preu de venda. Això permet el càlcul automatitzat de plusvàlues.Assets:Invest -10 STOCK {100.00 USD} @ 105.00 USDAquesta entrada ven 10
STOCKdel lot que va costar 100.00 USD cadascun, a un preu de venda de 105.00 USD cadascun.
Regles d'Ús del Preu
- Les anotacions de preu (
@) no afecten quin lot es comptabilitza. La coincidència de lots es gestiona exclusivament per la base de cost ({}) i el mètode de comptabilització del compte. - El símbol
@s'utilitza només per a:
- Conversions de divises.
- Registrar el valor de mercat d'un actiu en el moment d'una transacció.
- Proporcionar el preu de venda per al càlcul de plusvàlues.
Configuraci ó
Pots configurar mètodes de comptabilització globalment o per compte.
Mètode de Comptabilització Global
Pots establir un mètode de comptabilització per defecte per a tot el teu fitxer Beancount utilitzant la directiva option.
option "booking_method" "STRICT"
Les opcions disponibles són "STRICT", "FIFO", "LIFO" i "NONE".
Substitució Per Compte
Sovint és útil tenir mètodes diferents per a comptes diferents. Per exemple, és possible que vulguis FIFO per a un compte de jubilació, però STRICT per a un compte de corretatge imposable per assegurar-te que estàs venent lots fiscals específics. Pots establir el mètode de comptabilització quan obris el compte.
2024-01-01 open Assets:Retirement:401K "FIFO"
2024-01-01 open Assets:Taxable:Stock "STRICT"
Bones Pràctiques
-
Organització d'Inventari: Per mantenir el teu llibre major net i senzill, és molt recomanable utilitzar comptes separats per a cada mercaderia única que tinguis.
# BÉ: Comptes separats per mercaderia
Assets:Invest:VTSAX ; Només posicions VTSAX aquí
Assets:Invest:VFIAX ; Només posicions VFIAX aquíEvita barrejar diferents accions o fons al mateix compte, ja que complica la gestió de l'inventari.
-
Gestió de Lots:
-
Utilitza etiquetes significatives per als lots, especialment per a transaccions específiques com ara la collita de pèrdues fiscals o les subvencions d'accions per a empleats.
Assets:Invest:STOCK 10 STOCK {100.00 USD, "tax-loss-harvest-2024"} -
Documenta les teves operacions amb comentaris. Això fa que el teu llibre major sigui més fàcil de llegir i entendre més endavant.
Assets:Invest:STOCK -10 STOCK {100.00 USD} @ 110.00 USD ; Guany: 10%
- Depuració: Si trobes errors o un comportament inesperat, Beancount proporciona eines per inspeccionar l'estat del teu inventari.
-
Examina l'Estat de l'Inventari: L'eina
bean-doctorpot mostrar-te l'estat exacte de tots els inventaris en qualsevol punt del teu fitxer.Substitueix
<LINENO>amb el número de línia just després d'una transacció per veure el seu efecte. -
Verifica la Coincidència de Lots: L'eina
bean-checkvalida tot el teu fitxer. Detectarà qualsevol error de comptabilització, com ara coincidències de lots ambigües en modeSTRICT.