Salta al contingut principal

Segueix una cartera cripto amb base de cost a Beancount

Segueix una cartera de criptomonedes a Beancount entre intercanvis, amb base de cost, lots i anàlisi de rendiment en un sol llibre major.

Gestionar una cartera de criptomonedes en múltiples exchanges, carteres i protocols DeFi pot ser tot un repte. Aquesta guia completa et mostra com configurar i mantenir un seguiment precís d'una cartera de criptomonedes utilitzant el potent sistema de comptabilitat de text pla de Beancount.io.

Explora un llibre major d'exemple de criptomonedes en directe:

Obre Llibre major d'exemple de criptomonedes en una pestanya nova

Per què els rastrejadors tradicionals de carteres queden curts​

Problemes comuns amb les eines de cartera cripto​

  • Suport limitat d'exchanges: Moltes eines no donen suport a tots els exchanges o protocols DeFi
  • Base de cost imprecisa: Els càlculs simplificats FIFO/LIFO no cobreixen escenaris complexos
  • Transaccions que falten: Limitacions de les API i buits en l'entrada manual
  • Sense personalització: Categories i estructures d'informes fixes
  • Preocupacions de privacitat: Compartir claus API amb serveis de tercers
  • Dependència del proveïdor: Formats de dades propietaris i opcions d'exportació limitades

Avantatges de Beancount.io​

  • Control complet: Les teves dades en format de text pla
  • Personalització il·limitada: Crea qualsevol estructura de comptes que necessitis
  • Base de cost precisa: Seguiment per lots amb identificació específica
  • Suport multiprotocol: Gestiona qualsevol exchange, cartera o protocol DeFi
  • Càlculs transparents: Veu exactament com es calculen els números
  • A prova de futur: El format de text pla garanteix l'accessibilitat a llarg termini

Configuració de l'estructura de la teva cartera cripto​

Jerarquia bàsica de comptes​

Comença amb una estructura de comptes completa que reflecteixi el teu ecosistema cripto:

; Exchange Accounts - Organized by Platform
1970-01-01 open Assets:Crypto:Coinbase:USD
1970-01-01 open Assets:Crypto:Coinbase:BTC
1970-01-01 open Assets:Crypto:Coinbase:ETH
1970-01-01 open Assets:Crypto:Coinbase:ADA
 
1970-01-01 open Assets:Crypto:Binance:USD
1970-01-01 open Assets:Crypto:Binance:BTC
1970-01-01 open Assets:Crypto:Binance:ETH
1970-01-01 open Assets:Crypto:Binance:BNB
 
1970-01-01 open Assets:Crypto:Kraken:USD
1970-01-01 open Assets:Crypto:Kraken:BTC
1970-01-01 open Assets:Crypto:Kraken:ETH
1970-01-01 open Assets:Crypto:Kraken:ADA
1970-01-01 open Assets:Crypto:Binance:ADA
 
; Wallet Accounts - Organized by Type
1970-01-01 open Assets:Crypto:Wallet:Ledger:BTC
1970-01-01 open Assets:Crypto:Wallet:Ledger:ETH
1970-01-01 open Assets:Crypto:Wallet:MetaMask:ETH
1970-01-01 open Assets:Crypto:Wallet:MetaMask:USDC
1970-01-01 open Assets:Crypto:Wallet:MetaMask:UNI
1970-01-01 open Assets:Crypto:Wallet:TrustWallet:BNB
 
; DeFi Protocol Accounts
1970-01-01 open Assets:DeFi:Uniswap:ETH-USDC-LP
1970-01-01 open Assets:DeFi:Compound:CUSDC
1970-01-01 open Assets:Staking:Ethereum:ETH
1970-01-01 open Assets:Staking:Cardano:ADA
 
; Income Tracking
1970-01-01 open Income:Crypto:Staking:ETH
1970-01-01 open Income:Crypto:Staking:ADA
1970-01-01 open Income:Crypto:Mining:BTC
1970-01-01 open Income:Crypto:Airdrops
1970-01-01 open Income:Crypto:DeFi:Yield
1970-01-01 open Income:Crypto:Arbitrage
1970-01-01 open Income:CapitalGains:Crypto
1970-01-01 open Income:CapitalGains:LongTerm
 
; Expense Tracking
1970-01-01 open Expenses:Crypto:Fees:Trading
1970-01-01 open Expenses:Crypto:Fees:Network
1970-01-01 open Expenses:Crypto:Fees:Withdrawal
1970-01-01 open Expenses:CapitalLoss:Crypto

Una regla de nomenclatura mossega aquí, i l'analitzador sintàctic la fa complir en lloc de la convenció: cada component de compte, i cada símbol de mercaderia, ha de començar amb una lletra majúscula o un dígit. Compound escriu el seu token de rebut cUSDC a tota la seva pròpia interfície, però Assets:DeFi:Compound:cUSDC i una mercaderia cUSDC són tots dos errors del lexer. Escriu-los CUSDC i mantén l'ortografia pròpia del protocol a la metadada name: de la mercaderia.

Definicions de mercaderies amb metadades​

Defineix les teves criptomonedes amb metadades riques per a un millor seguiment:

1970-01-01 commodity BTC
  name: "Bitcoin"
  asset-class: "cryptocurrency"
  sector: "digital-currency"
  price-source: "coinbase"
  website: "https://bitcoin.org"
 
1970-01-01 commodity ETH
  name: "Ethereum"
  asset-class: "cryptocurrency"
  sector: "smart-contract-platform"
  price-source: "coinbase"
  website: "https://ethereum.org"
 
1970-01-01 commodity ADA
  name: "Cardano"
  asset-class: "cryptocurrency"
  sector: "smart-contract-platform"
  price-source: "binance"
  website: "https://cardano.org"
 
1970-01-01 commodity DOT
  name: "Polkadot"
  asset-class: "cryptocurrency"
  sector: "interoperability"
  price-source: "kraken"
  website: "https://polkadot.network"

Seguiment de cartera multi-borsa​

Registre de compres entre borses​

Segueix la mateixa criptomoneda en diferents exchanges amb una base de cost precisa:

; Bitcoin purchases on different exchanges
2024-01-15 * "Buy BTC on Coinbase"
  Assets:Crypto:Coinbase:BTC      1.0 BTC {45000.00 USD}
  Assets:Crypto:Coinbase:USD  -45000.00 USD
  Expenses:Crypto:Fees:Trading    50.00 USD
  Assets:Crypto:Coinbase:USD     -50.00 USD
 
2024-01-20 * "Buy BTC on Binance"
  Assets:Crypto:Binance:BTC       0.5 BTC {46000.00 USD}
  Assets:Crypto:Binance:USD   -23000.00 USD
  Expenses:Crypto:Fees:Trading    25.00 USD
  Assets:Crypto:Binance:USD      -25.00 USD
 
2024-01-25 * "Buy BTC on Kraken"
  Assets:Crypto:Kraken:BTC        0.8 BTC {44000.00 USD}
  Assets:Crypto:Kraken:USD    -35200.00 USD
  Expenses:Crypto:Fees:Trading    30.00 USD
  Assets:Crypto:Kraken:USD       -30.00 USD

Transferències entre borses​

Segueix les transferències entre exchanges mantenint la base de cost:

2024-02-01 * "Transfer BTC from Coinbase to Ledger"
  Assets:Crypto:Coinbase:BTC      -0.5 BTC {45000.00 USD}
  Assets:Crypto:Wallet:Ledger:BTC  0.5 BTC {45000.00 USD}
  Expenses:Crypto:Fees:Withdrawal  0.0005 BTC {45000.00 USD}
  Assets:Crypto:Coinbase:BTC      -0.0005 BTC {45000.00 USD}

Oportunitats d'arbitratge​

Un arbitratge és un sol esdeveniment econòmic en dos mercats, així que registra'l com a una sola transacció. Aquesta entrada ven 10 ETH que ja tens a Coinbase a 2.580,00 $ i immediatament restaura la posició a Binance a 2.500,00 $:

2024-02-10 * "Arbitrage: Buy ETH on Binance, Sell on Coinbase"
  ; Buy leg on Binance
  Assets:Crypto:Binance:ETH       10 ETH {2500.00 USD}
  Assets:Crypto:Binance:USD   -25000.00 USD
  Expenses:Crypto:Fees:Trading    25.00 USD
  Assets:Crypto:Binance:USD      -25.00 USD
  ; Sell leg on Coinbase, at the higher price
  Assets:Crypto:Coinbase:ETH     -10 ETH {2500.00 USD} @ 2580.00 USD
  Assets:Crypto:Coinbase:USD   25800.00 USD
  Expenses:Crypto:Fees:Trading    30.00 USD
  Assets:Crypto:Coinbase:USD     -30.00 USD
  Income:Crypto:Arbitrage       -800.00 USD  ; 25,800.00 proceeds - 25,000.00 basis

Tres coses a copiar:

  • No deixis mai una línia en blanc entre els apunts. Una línia en blanc acaba la transacció, i Beancount informa d'un error de sintaxi en els apunts posteriors. Fes servir comentaris ; indentats per etiquetar les potes — que és el que fan les dues línies de comentari de dalt.
  • El guany és el guany de la disposició, 800,00 $, i és negatiu perquè els comptes d'Income contenen abonaments. Els 55,00 $ de comissions són a part: és el que converteix 800,00 $ de diferencial brut en 745,00 $ de benefici, i ja està registrat en els seus propis dos apunts.
  • La pota de venda redueix un lot que ja has de tenir. Aquesta entrada assumeix 10 ETH comprats abans a Coinbase a 2.500,00 $; sense aquest lot, la reducció no té res contra què registrar-se.

Gestió avançada de la base de cost​

Seguiment basat en lots​

El sistema per lots de Beancount.io proporciona un seguiment precís de la base de cost:

; Multiple purchases at different prices
2024-01-01 * "BTC Purchase Lot 1"
  Assets:Crypto:Coinbase:BTC  1.0 BTC {40000.00 USD}
  Assets:Crypto:Coinbase:USD -40000.00 USD
 
2024-02-01 * "BTC Purchase Lot 2"
  Assets:Crypto:Coinbase:BTC  1.0 BTC {45000.00 USD}
  Assets:Crypto:Coinbase:USD -45000.00 USD
 
2024-03-01 * "BTC Purchase Lot 3"
  Assets:Crypto:Coinbase:BTC  1.0 BTC {50000.00 USD}
  Assets:Crypto:Coinbase:USD -50000.00 USD

La convenció de signes per a guanys i pèrdues​

Els comptes d'Income contenen abonaments, així que Beancount els emmagatzema com a números negatius. Cada guany a continuació és, per tant, un apunt negatiu a un compte d'ingressos, i cada pèrdua és un apunt positiu a un compte de despeses. La comissió és a part de tots dos: és una despesa per dret propi, així que restar-la també del guany la deduiria dues vegades i deixaria la transacció desequilibrada.

Per a una disposició, l'aritmètica sempre és:

gain (or loss) = gross proceeds - cost basis of the lots removed
net cash       = gross proceeds - fees

Mètode d’identificació específica​

Ven lots específics per a una gestió fiscal òptima. Anomenar el cost del lot a l'apunt de reducció és el que significa "identificació específica" a Beancount, i funciona sota el booking STRICT per defecte:

; Sell the most expensive lot: 1.0 BTC bought at $50,000.00
2024-04-01 * "Sell BTC Lot 3 for tax optimization"
  Assets:Crypto:Coinbase:BTC    -1.0 BTC {50000.00 USD} @ 48000.00 USD
  Assets:Crypto:Coinbase:USD   48000.00 USD  ; gross proceeds
  Expenses:Crypto:Fees:Trading    50.00 USD
  Assets:Crypto:Coinbase:USD     -50.00 USD
  Expenses:CapitalLoss:Crypto   2000.00 USD  ; 50,000.00 basis - 48,000.00 proceeds

Vendre el lot més antic o el més recent​

Anomenar un cost diferent selecciona un lot diferent. Aquestes dues vendes prenen el lot de 40.000,00 $ i després el lot de 45.000,00 $ — els dos que encara queden després que el de 50.000,00 $ entrés a l'exemple de dalt — que és la mateixa selecció que FIFO i LIFO farien automàticament, escrita a mà:

; Sell the oldest lot (bought 2024-01-01 at $40,000.00)
2024-05-01 * "Sell 0.5 BTC from the oldest lot"
  Assets:Crypto:Coinbase:BTC    -0.5 BTC {40000.00 USD} @ 52000.00 USD
  Assets:Crypto:Coinbase:USD   26000.00 USD  ; gross proceeds, 0.5 * 52,000.00
  Expenses:Crypto:Fees:Trading    30.00 USD
  Assets:Crypto:Coinbase:USD     -30.00 USD
  Income:CapitalGains:Crypto   -6000.00 USD  ; 26,000.00 proceeds - 20,000.00 basis
 
; Sell the newest remaining lot (bought 2024-02-01 at $45,000.00)
2024-05-02 * "Sell 0.5 BTC from the newest lot"
  Assets:Crypto:Coinbase:BTC    -0.5 BTC {45000.00 USD} @ 52000.00 USD
  Assets:Crypto:Coinbase:USD   26000.00 USD
  Expenses:Crypto:Fees:Trading    30.00 USD
  Assets:Crypto:Coinbase:USD     -30.00 USD
  Income:CapitalGains:Crypto   -3500.00 USD  ; 26,000.00 proceeds - 22,500.00 basis

Mateix preu de venda, lot diferent, 2.500,00 $ de diferència en el guany realitzat. Si prefereixes que Beancount triï el lot per tu, estableix un mètode de booking al compte en lloc d'anomenar un cost — "FIFO", "LIFO" o "HIFO" a la directiva open, descrit a Gestió d'inventari.

Anàlisi del Rendiment del Portafolis​

Configuració de Seguiment de Preus​

Configura fonts de preus automatitzades per a una valoració precisa:

Per a llibres allotjats, Preus en directe subministra parells compatibles automàticament. Les directives estàtiques de baix mostren les dades que utilitza una valoració i continuen sent útils per a exemples locals reproduïbles.

; Daily price updates
2024-01-15 price BTC 45000.00 USD
2024-01-15 price ETH 2500.00 USD
2024-01-15 price ADA 0.50 USD
 
2024-01-16 price BTC 46000.00 USD
2024-01-16 price ETH 2550.00 USD
2024-01-16 price ADA 0.52 USD

Seguiment de l'Assignació del Portafolis​

Utilitza les funcions d'informes de Beancount.io per analitzar l'assignació:

-- Query for portfolio allocation by asset
SELECT
  account,
  sum(position) as balance,
  value(sum(position)) as market_value
WHERE account ~ "Assets:Crypto"
GROUP BY 1
ORDER BY market_value DESC

Mètriques de Rendiment​

Segueix els indicadors clau de rendiment:

-- Total portfolio value query
SELECT
  sum(value(position)) as total_portfolio_value
WHERE account ~ "Assets:Crypto"
 
-- Realized gains/losses
SELECT
  sum(position) as realized_gains
WHERE account ~ "Income:CapitalGains:Crypto"

Integració de Staking i DeFi​

Seguiment de Recompenses de Staking​

Registra les recompenses d'staking amb un reconeixement d'ingressos adequat. Les unitats que arriben i els ingressos reconeguts són el mateix esdeveniment vist des de dos costats, així que els seus pesos han de cancel·lar-se: [unitats] × [preu] d'actiu que entra, el mateix nombre de dòlars d'ingressos que surt — i els ingressos són un abonament, així que és negatiu.

2024-01-31 * "ETH Staking Rewards - January"
  Assets:Staking:Ethereum:ETH     0.08 ETH {2500.00 USD}
  Income:Crypto:Staking:ETH     -200.00 USD  ; 0.08 * 2,500.00
 
2024-01-31 * "ADA Staking Rewards - January"
  Assets:Staking:Cardano:ADA        25 ADA {0.50 USD}
  Income:Crypto:Staking:ADA      -12.50 USD  ; 25 * 0.50

Els {2.500,00 USD} i {0,50 USD} són valoracions externes. Beancount emmagatzema el que escriguis; no obté un preu ni decideix quina cotització és la correcta. Tria una font — l'exchange on realment vendries, o un índex publicat — i utilitza-la de manera consistent, perquè aquest número és alhora el teu ingrés i la teva futura base de cost.

La base de la recompensa es reconeix una vegada​

Els 200,00 $ reconeguts a dalt es converteixen en la base de cost dels 0,08 ETH. Vendré'ls més tard només realitza el moviment des de la data de la recompensa:

2024-06-30 * "Sell the January ETH staking reward"
  Assets:Staking:Ethereum:ETH   -0.08 ETH {2500.00 USD} @ 3000.00 USD
  Assets:Crypto:Coinbase:USD     240.00 USD  ; gross proceeds, 0.08 * 3,000.00
  Income:CapitalGains:Crypto     -40.00 USD  ; 240.00 proceeds - 200.00 basis

40,00 $ de guany de capital, no 240,00 $ — els primers 200,00 $ ja van ser ingressos al gener. Registrar els 240,00 $ sencers com a guany és la manera més comuna que els ingressos per recompenses es comptin dues vegades. Quan la recompensa esdevé imposable, i a quina taxa, varia segons la jurisdicció; el llibre major registra la recepció i la disposició per separat, de manera que qualsevol dels dos tractaments es pot informar a partir d'ell.

Seguiment de Rendiments DeFi​

Segueix posicions DeFi complexes:

Proporcionar liquiditat intercanvia dues mercaderies per una tercera, així que cada pota ha de pesar en la mateixa moneda abans que la transacció es pugui equilibrar. Les potes d'ETH i LP ja ho fan, perquè porten un cost; la pota d'establecoin necessita un @ 1,00 USD explícit, altrament Beancount veu 25.000 unitats de USDC que surten i 25.000,00 $ de valor que arriben, que són mercaderies diferents i no es cancel·len.

2024-02-01 * "Uniswap LP Position"
  Assets:Crypto:Wallet:MetaMask:ETH    -10 ETH {2500.00 USD}
  Assets:Crypto:Wallet:MetaMask:USDC -25000 USDC @ 1.00 USD
  Assets:DeFi:Uniswap:ETH-USDC-LP      100 UNI-V2-ETH-USDC {500.00 USD}
 
2024-02-28 * "Uniswap LP Rewards - February"
  Assets:Crypto:Wallet:MetaMask:UNI    50 UNI {8.00 USD}
  Income:Crypto:DeFi:Yield          -400.00 USD  ; 50 * 8.00

Gestió Automàtica del Portafolis​

Importació de dades d'intercanvi​

Beancount no inclou cap client d'API d'exchanges, i no hi ha cap fitxer de configuració que el faci parlar amb Coinbase o Binance. El camí suportat és un importador: descarregues l'exportació CSV de l'exchange (o l'obtens amb el teu propi script) i la converteixes en transaccions de Beancount amb beangulp, el marc d'importadors que va succeir el beancount.ingest integrat de Beancount 2. beancount.ingest no existeix a Beancount 3.

Si escrius un script d'obtenció, el seu fitxer de credencials és només teu — res a la cadena d'eines de Beancount el llegeix:

# Configuration for YOUR OWN fetch script. No Beancount tool reads this file.
exchanges:
  coinbase:
    api_key: "your_api_key"
    api_secret: "your_api_secret"
    passphrase: "your_passphrase"
  binance:
    api_key: "your_api_key"
    api_secret: "your_api_secret"

Reconciliació automatitzada​

Configura la verificació automatitzada de saldos:

; Balance assertions for automated verification
2024-01-31 balance Assets:Crypto:Coinbase:BTC    2.5 BTC
2024-01-31 balance Assets:Crypto:Binance:ETH    15.0 ETH
2024-01-31 balance Assets:Crypto:Kraken:ADA   1000.0 ADA

Aquests tres números provenen de les teves pantalles d'exchange, no d'aquesta pàgina, així que el bloc de dalt no es verificarà contra res fins que les teves pròpies transaccions estiguin al llibre major. Dues regles decideixen si es verifica. Una directiva balance afirma el saldo a l'inici del dia indicat, així que una afirmació datada el 2024-01-31 no veu res publicat el 2024-01-31 — data-la el dia després del període que estàs tancant. I cada compte afirmat ha d'estar obert, que és per què Assets:Crypto:Kraken:ADA apareix a la secció Jerarquia bàsica de comptes de dalt.

Preus gestionats en un llibre major allotjat​

Utilitza Preus en directe per triar una moneda de valoració i actius cripto compatibles, i després enganxa els includes generats al teu llibre major allotjat. Els símbols dels actius han de coincidir amb les teves possessions. Les fonts proporcionen preus de valoració datats; no estableixen l'import d'ingressos ni el cost d'adquisició de recompenses d'staking i airdrops.

El teu propi preu té prioritat per a la mateixa data i parell, incloent-hi el parell recíproc. Una cotització en memòria cau pot estar desactualitzada durant una interrupció, així que comprova el seu moment d'observació. El flux de treball d'obtenció local de baix continua sent útil per a Beancount i Fava upstream.

Mantenir els preus actualitzats​

Els preus viuen al llibre major com a directives price. Beancount 3.2.3 upstream no els obté ell mateix; els includes gestionats allotjats utilitzen l'extensió del carregador de Beancount.io descrita a dalt. No hi ha cap directiva custom "price-source" — un símbol de mercaderia nu no és ni tan sols un valor custom vàlid, així que aquesta línia és un error de sintaxi — i no hi ha cap mòdul beancount.plugins.forecast; el carregador s'atura amb un error d'importació si l'anomenes.

Activa beanprice dins del motor gestionat amb bea engine enable beanprice, i després obtén cotitzacions amb bea price main.beancount. Llegeix un camp de metadades price: a cada directiva commodity, en la forma "<moneda de cotització>:<mòdul font>/<ticker>", i escriu directives price que afegeixes al teu llibre major:

1970-01-01 commodity BTC
  name: "Bitcoin"
  asset-class: "cryptocurrency"
  price: "USD:beanprice.sources.coinbase/BTC-USD"
 
1970-01-01 commodity ETH
  name: "Ethereum"
  asset-class: "cryptocurrency"
  price: "USD:beanprice.sources.coinbase/ETH-USD"
 
; Example quotes to append after reviewing the output of bea price - and what you would otherwise type by hand
2024-01-15 price BTC 45000.00 USD
2024-01-15 price ETH 2500.00 USD

Qualsevol altra metadada que adjuntis a una mercaderia — sector, website, o el camp price-source usat abans en aquesta guia — és documentació de forma lliure per al teu propi benefici. El carregador l'emmagatzema i cap eina hi actua.

Estratègies d’optimització fiscal​

Recol·lecció sistemàtica de pèrdues fiscals​

Implementa la collita sistemàtica de pèrdues fiscals:

; The lot being harvested, so this block stands on its own
2024-03-01 * "Buy ADA on Binance"
  Assets:Crypto:Binance:ADA       1000 ADA {0.60 USD}
  Assets:Crypto:Binance:USD    -600.00 USD
 
; Identify positions with unrealized losses
2024-12-15 * "Tax loss harvesting - Sell ADA at loss"
  Assets:Crypto:Binance:ADA      -1000 ADA {0.60 USD} @ 0.45 USD
  Assets:Crypto:Binance:USD       450.00 USD  ; gross proceeds
  Expenses:Crypto:Fees:Trading      5.00 USD
  Assets:Crypto:Binance:USD        -5.00 USD
  Expenses:CapitalLoss:Crypto     150.00 USD  ; 600.00 basis - 450.00 proceeds
 
; Repurchase after wash sale period (31 days)
2025-01-16 * "Repurchase ADA after wash sale period"
  Assets:Crypto:Binance:ADA      1000 ADA {0.45 USD}
  Assets:Crypto:Binance:USD     -450.00 USD
  Expenses:Crypto:Fees:Trading     5.00 USD
  Assets:Crypto:Binance:USD       -5.00 USD

Guanys a llarg termini versus a curt termini​

Segueix els períodes de tinença per a l'optimització fiscal:

; Use metadata to track purchase dates
2024-01-01 * "BTC Purchase - Long-term hold" ^long-term-btc
  Assets:Crypto:Coinbase:BTC  1.0 BTC {40000.00 USD}
  Assets:Crypto:Coinbase:USD -40000.00 USD
 
; Sell after one year for long-term capital gains treatment
2025-01-02 * "BTC Sale - Long-term capital gains" ^long-term-btc
  Assets:Crypto:Coinbase:BTC    -1.0 BTC {40000.00 USD} @ 55000.00 USD
  Assets:Crypto:Coinbase:USD   55000.00 USD
  Income:CapitalGains:LongTerm -15000.00 USD  ; 55,000.00 proceeds - 40,000.00 basis

L'enllaç ^long-term-btc a totes dues entrades és el que et permet recuperar la compra i la venda juntes més tard; Beancount no segueix els períodes de tinença ell mateix.

Informes i anàlisis​

Informes resum del portafoli​

Calcula la quota de cada criptomoneda de la cartera en una sola moneda de valoració. Aquest exemple utilitza preus en USD disponibles el 31 de març de 2024, i tinençes abans de l'1 d'abril. Canvia totes dues dates alhora per a una data d'informe diferent. Executa la sentència SELECT de sota a la teva eina local de consultes BQL.

-- Portfolio allocation by cryptocurrency
SELECT
  currency,
  units(sum(position)) AS total_units,
  convert(sum(position), 'USD', 2024-03-31) AS allocation_value
FROM close ON 2024-04-01
WHERE account ~ '^Assets:Crypto:'
GROUP BY currency
ORDER BY currency;

Comprova que cada allocation_value diferent de zero estigui en USD abans de calcular percentatges. La conversió utilitza preus registrats disponibles en o abans de la data de valoració. Una conversió que falta pot deixar un import en la seva moneda original. Si queda algun import de BTC, ETH o una altra cosa que no sigui USD, la valoració està incompleta. Afegeix els preus datats que falten i torna a executar; no tractis els actius sense preu com a zero ni afegeixis unitats de moneda no relacionades.

Suma els imports en USD per obtenir el total de la cartera. Després calcula l'assignació de cada actiu com valor de l'actiu en USD / valor total en USD * 100. Mantén la precisió completa fins a mostrar el percentatge. Per exemple, tinençes d'1 BTC i 3 ETH, amb preus de 200 USD per BTC i 20 USD per ETH, donen:

ActiuValor en USDCàlcul de l'assignacióQuota mostrada
BTC200200 / 260 * 10076,92%
ETH6060 / 260 * 10023,08%
Total260260 / 260 * 100100,00%

Arrodonir les quotes individuals a dos decimals pot fer que la seva suma mostrada difereixi lleugerament del 100%. Un invent amb valor zero pot mostrar-se en blanc. Per a una cartera buida o un total en USD zero, informa les assignacions com a no disponibles i no divideixis per zero. Aquest exemple descriu tinençes d'actius positives; els saldos negatius requereixen interpretar exposicions amb signe en lloc de quotes de cartera ordinàries.

Anàlisi del rendiment​

Informa del valor de tancament de la cartera de cada mes utilitzant totes les tinençes abans del mes següent. Estableix la data de valoració a final de mes perquè els preus posteriors no puguin canviar la instantània. Aquests exemples informen en USD. Executa cada SELECT per separat a la teva eina local de consultes BQL.

Per al 31 de gener:

SELECT convert(sum(position), 'USD', 2024-01-31) AS portfolio_value
FROM close ON 2024-02-01
WHERE account ~ '^Assets:Crypto:';

Per al 29 de febrer:

SELECT convert(sum(position), 'USD', 2024-02-29) AS portfolio_value
FROM close ON 2024-03-01
WHERE account ~ '^Assets:Crypto:';

Per al 31 de març:

SELECT convert(sum(position), 'USD', 2024-03-31) AS portfolio_value
FROM close ON 2024-04-01
WHERE account ~ '^Assets:Crypto:';

FROM close ON exclou els assentaments datats en o després del seu punt de tall. La data dins de convert selecciona els preus disponibles en o abans de la data d'informe. Per a un altre mes, canvia totes dues dates alhora. Demana cada mes que vulguis informar, incloent-hi els mesos sense transaccions. Comprova si hi ha monedes no convertides tal com es descriu a dalt abans de tractar el resultat com un total en USD.

Per exemple, suposa que el gener acaba amb 2 BTC amb un preu de 100 USD cadascun i 3 ETH a 10 USD cadascun. Vendre 1 BTC al febrer deixa 1 BTC i 3 ETH. Si el març no té operacions però els preus registrats pugen a 200 USD per BTC i 20 USD per ETH, les instantànies són:

Final de mesValor cripto de tancament
31 de gener2 * 100 + 3 * 10 = 230 USD
29 de febrer1 * 100 + 3 * 10 = 130 USD
31 de març1 * 200 + 3 * 20 = 260 USD

El valor de febrer assumeix que no hi ha noves directives de preu aquell mes. El preu @ d'una venda registra els seus ingressos; no crea una directiva de preu de mercat. Aquestes consultes només cobreixen els comptes Assets:Crypto:, així que els ingressos en efectiu mantinguts en un altre lloc queden exclosos.

Agrupar els assentaments pel mes de la transacció mesura els moviments de cada mes, no les tinençes acumulades de tancament. També omet els mesos sense transaccions. Els canvis entre valors de tancament inclouen compres, vendes, transferències i canvis de preu. No són rendiments d'inversió ajustats per fluxos d'efectiu.

Anàlisi d’ingressos​

Analitza les fonts d'ingressos:

-- Income breakdown by source
SELECT
  account,
  sum(position) as total_income
WHERE account ~ "Income:Crypto"
GROUP BY account
ORDER BY total_income DESC;

Bones pràctiques i consells​

1. Registre consistent​

  • Registra les transaccions immediatament després de l'execució
  • Utilitza descripcions de transaccions estandarditzades
  • Inclou els hashes de transacció a les metadades

2. Reconciliació regular​

  • Verifica els saldos setmanalment a totes les plataformes
  • Utilitza afirmacions de saldo per detectar discrepàncies
  • Monitora transaccions que falten

3. Còpia de seguretat i seguretat​

  • Fes còpies de seguretat regularment dels teus fitxers de Beancount
  • Utilitza control de versions (Git) per al seguiment de canvis
  • Xifra les dades sensibles

4. Documentació​

  • Documenta les decisions sobre l'estructura de comptes
  • Mantén notes sobre transaccions complexes
  • Guarda registres de les configuracions d'API

5. Preparació fiscal​

  • Genera informes trimestralment per a la planificació fiscal
  • Mantén registres detallats per a propòsits d'auditoria
  • Consulta amb professionals fiscals per a situacions complexes

Conclusió​

El seguiment efectiu d'una cartera de criptomonedes requereix precisió, consistència i les eines adequades. Beancount.io proporciona la flexibilitat i la potència necessàries per gestionar carteres cripto complexes en múltiples exchanges, carteres i protocols DeFi.

Beneficis clau d'utilitzar Beancount.io per al seguiment de carteres cripto:

  • Propietat completa de les dades: Les teves dades en format de text pla
  • Base de cost precisa: Seguiment per lots amb identificació específica
  • Flexibilitat il·limitada: Estructures de comptes i informes personalitzats
  • Optimització fiscal: Estratègies avançades per minimitzar la càrrega fiscal
  • A prova de futur: El format obert garanteix l'accessibilitat a llarg termini

Comença amb una configuració bàsica i amplia gradualment el teu seguiment a mesura que la teva cartera es torna més complexa. La inversió en una configuració adequada donarà dividends en informes precisos, optimització fiscal i perspectives de cartera.

A punt per prendre el control de la teva cartera de criptomonedes? Comença amb Beancount.io avui.

Font: https://beancount.io/ca/docs/Solutions/cryptocurrency-portfolio-tracking