Preskočiť na hlavný obsah

Šablóny a príklady pre kryptomeny

Praktické šablóny Beancount a reálne príklady pre bežné scenáre s kryptomenami vrátane obchodovania, ťažby, stakovania, airdropov a aktivít v DeFi.

Táto príručka poskytuje praktické šablóny Beancount a reálne príklady pre bežné scenáre s kryptomenami. Skopírujte a upravte tieto šablóny pre svoje vlastné potreby účtovníctva kryptomien.

Ako čítať tieto bloky

Každý oddelený blok nižšie je jednou z troch vecí, ktoré nie sú vzájomne zameniteľné:

  • Šablóny obsahujú zástupné symboly [V HRANATÝCH ZÁTVORKÁCH] a dátumy RRRR-MM-DD. Nenačítajú sa, kým nenahradíte skutočné hodnoty – hranaté zátvorky nie sú syntaxou Beancount.
  • Príklady sa nachádzajú priamo pod svojou šablónou, obsahujú skutočné dátumy a sumy a sú napísané tak, aby sa načítali. Každý z nich stále vyžaduje, aby boli účty, ktorých sa dotýka, otvorené, na čo slúži Šablóna štruktúry účtov nižšie. Jedinou výnimkou je blok reconciliácie, ktorý tvrdí zostatky, ktoré môže uspokojiť len vaša vlastná kniha.
  • Blok Flash Loan Arbitráž je pseudokód a je ako taký označený tam, kde sa vyskytuje.

Celým obsahom sa tiahnu dve konvencie:

  • Výnosové účty držia kredity, preto sú záporné. Realizovaný zisk je záporný zápis na Income:CapitalGains:…; realizovaná strata je kladný zápis na Expenses:CapitalLoss:…. Obrátenie tohto pravidla je najčastejším spôsobom, ako zápis o kryptomene nesedí.
  • Poplatok sa zaznamená raz ako výdavok a raz ako zníženie hotovosti. Hrubé príjmy idú na hotovostný účet, poplatok sa z neho odpočíta a rozdiel je to, čo skutočne pristane na vašom účte.

Preskúmajte živý príklad účtovnej knihy s kryptomenami:

Otvoriť Príklad účtovnej knihy s kryptomenami v novej karte

Šablóna základného nastavenia

Šablóna štruktúry účtov

; =============================================================================
; CRYPTOCURRENCY ACCOUNT SETUP TEMPLATE
; =============================================================================
 
; Bank Accounts
1970-01-01 open Assets:Checking
 
; Exchange Accounts
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: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:Binance:ADA
 
; On-Chain and Mining Accounts
1970-01-01 open Assets:Crypto:Ethereum:ETH
1970-01-01 open Assets:Crypto:Polygon:ETH
1970-01-01 open Assets:Crypto:Mining:BTC
 
; Wallet Accounts
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
 
; 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
 
; Income Accounts
1970-01-01 open Income:Crypto:Staking:ETH
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:CapitalGains:Crypto
1970-01-01 open Income:CapitalGains:LongTerm
 
; Expense Accounts
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:Crypto:Bridge:Fees
1970-01-01 open Expenses:Crypto:Mining:Electricity
1970-01-01 open Expenses:CapitalLoss:Crypto
 
; Commodity Definitions
1970-01-01 commodity BTC
  name: "Bitcoin"
  asset-class: "cryptocurrency"
 
1970-01-01 commodity ETH
  name: "Ethereum"
  asset-class: "cryptocurrency"
 
1970-01-01 commodity USDC
  name: "USD Coin"
  asset-class: "stablecoin"
 
; Compound writes this receipt token "cUSDC", but a Beancount commodity
; and every account component must start with a capital letter or a digit,
; so the ledger spells it CUSDC and keeps the display name in metadata.
1970-01-01 commodity CUSDC
  name: "cUSDC (Compound USD Coin)"
  asset-class: "defi-receipt"

Šablóny obchodovania

Základný nákup kryptomeny

; Template: Buy cryptocurrency on exchange
YYYY-MM-DD * "Buy [AMOUNT] [CRYPTO] on [EXCHANGE]"
  Assets:Crypto:[EXCHANGE]:[CRYPTO]     [AMOUNT] [CRYPTO] {[PRICE] USD}
  Assets:Crypto:[EXCHANGE]:USD         -[TOTAL_COST] USD
  Expenses:Crypto:Fees:Trading          [FEE] USD
  Assets:Crypto:[EXCHANGE]:USD         -[FEE] USD
 
; Example: Buy 1 BTC on Coinbase
2024-01-15 * "Buy 1 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

Predaj kryptomeny

; Template: Sell cryptocurrency on exchange
YYYY-MM-DD * "Sell [AMOUNT] [CRYPTO] on [EXCHANGE]"
  Assets:Crypto:[EXCHANGE]:[CRYPTO]    -[AMOUNT] [CRYPTO] {[COST_BASIS] USD} @ [SALE_PRICE] USD
  Assets:Crypto:[EXCHANGE]:USD          [GROSS_PROCEEDS] USD
  Expenses:Crypto:Fees:Trading          [FEE] USD
  Assets:Crypto:[EXCHANGE]:USD         -[FEE] USD
  Income:CapitalGains:Crypto           -[GAIN] USD  ; a loss is a positive Expenses:CapitalLoss:Crypto instead
 
; Example: Sell 0.5 BTC with a gain
2024-03-20 * "Sell 0.5 BTC on Coinbase"
  Assets:Crypto:Coinbase:BTC     -0.5 BTC {45000.00 USD} @ 48000.00 USD
  Assets:Crypto:Coinbase:USD   24000.00 USD  ; gross proceeds, 0.5 * 48,000.00
  Expenses:Crypto:Fees:Trading    30.00 USD
  Assets:Crypto:Coinbase:USD     -30.00 USD  ; the fee leaves the same cash account
  Income:CapitalGains:Crypto   -1500.00 USD  ; 24,000.00 proceeds - 22,500.00 basis

Vyradená dávka má hodnotu 22 500,00 USD v nákladoch, predaj prináša 24 000,00 USD v hrubom a 30,00 USD z toho ide burze – takže príde 23 970,00 USD v hotovosti a realizuje sa zisk 1 500,00 USD. Nezapočítavajte poplatok do zisku: poplatok je už výdavkom a jeho druhé odpočítanie spôsobí, že transakcia nebude sedieť.

Obchod krypto za krypto

; Template: Trade one crypto for another
YYYY-MM-DD * "Trade [AMOUNT1] [CRYPTO1] for [AMOUNT2] [CRYPTO2]"
  Assets:Crypto:[EXCHANGE]:[CRYPTO1]   -[AMOUNT1] [CRYPTO1] {[COST_BASIS] USD}
  Assets:Crypto:[EXCHANGE]:[CRYPTO2]    [AMOUNT2] [CRYPTO2] {[NEW_PRICE] USD}
  Income:CapitalGains:Crypto           -[GAIN] USD  ; taxable event; a loss is a positive Expenses:CapitalLoss:Crypto
  Expenses:Crypto:Fees:Trading          [FEE] USD
  Assets:Crypto:[EXCHANGE]:USD         -[FEE] USD
 
; Example: Trade BTC for ETH
2024-02-10 * "Trade 1 BTC for 20 ETH on Binance"
  Assets:Crypto:Binance:BTC     -1.0 BTC {46000.00 USD}
  Assets:Crypto:Binance:ETH      20 ETH {2400.00 USD}
  Income:CapitalGains:Crypto  -2000.00 USD  ; 48,000.00 received - 46,000.00 basis
  Expenses:Crypto:Fees:Trading    40.00 USD
  Assets:Crypto:Binance:USD      -40.00 USD

Obchod krypto za krypto vyraďuje prvý komoditný nástroj, takže realizuje zisk presne ako predaj za hotovosť: 20 ETH získaných za 2 400,00 USD predstavuje hodnotu 48 000,00 USD prijatú proti základu BTC 46 000,00 USD. Poplatok 40,00 USD sa platí v hotovosti a nemení zisk.

Šablóny prevodov

Prevod z burzy do peňaženky

; Template: Transfer crypto from exchange to wallet
YYYY-MM-DD * "Transfer [AMOUNT] [CRYPTO] from [EXCHANGE] to [WALLET]"
  Assets:Crypto:[EXCHANGE]:[CRYPTO]      -[AMOUNT] [CRYPTO] {[COST_BASIS] USD}
  Assets:Crypto:Wallet:[WALLET]:[CRYPTO]  [AMOUNT] [CRYPTO] {[COST_BASIS] USD}
  Expenses:Crypto:Fees:Withdrawal         [FEE] [CRYPTO] {[COST_BASIS] USD}
  Assets:Crypto:[EXCHANGE]:[CRYPTO]      -[FEE] [CRYPTO] {[COST_BASIS] USD}
 
; Example: Transfer BTC to Ledger
2024-01-20 * "Transfer 1 BTC from Coinbase to Ledger"
  Assets:Crypto:Coinbase:BTC      -1.0 BTC {45000.00 USD}
  Assets:Crypto:Wallet:Ledger:BTC  1.0 BTC {45000.00 USD}
  Expenses:Crypto:Fees:Withdrawal  0.0005 BTC {45000.00 USD}
  Assets:Crypto:Coinbase:BTC      -0.0005 BTC {45000.00 USD}

Prevod nie je vyradením, takže nič nerealizuje: rovnaký náklad {45000.00 USD} cestuje s mincami a prijímajúci účet preberá základ. Z toho vyplývajú dva dôsledky. Výberový poplatok sa platí v BTC a je nákladom pri rovnakých nákladoch, takže tiež nerealizuje žiadny zisk – ak váš postup hovorí inak, ocenite poplatok pomocou @ a pridajte zápis o zisku. A odosielajúci účet musí už držať 1,0005 BTC pri presne týchto nákladoch, nie 1,0, pretože poplatok pochádza z tej istej dávky. Zníženie bez zodpovedajúcej dávky sa nezúčtuje, nech sa súčty akokoľvek zhodujú.

Prevod medzi burzami

; Template: Transfer between exchanges
YYYY-MM-DD * "Transfer [AMOUNT] [CRYPTO] from [EXCHANGE1] to [EXCHANGE2]"
  Assets:Crypto:[EXCHANGE1]:[CRYPTO]  -[AMOUNT] [CRYPTO] {[COST_BASIS] USD}
  Assets:Crypto:[EXCHANGE2]:[CRYPTO]   [AMOUNT] [CRYPTO] {[COST_BASIS] USD}
  Expenses:Crypto:Fees:Network         [FEE] [CRYPTO] {[COST_BASIS] USD}
  Assets:Crypto:[EXCHANGE1]:[CRYPTO]  -[FEE] [CRYPTO] {[COST_BASIS] USD}
 
; Example: Transfer ETH from Coinbase to Binance
2024-02-05 * "Transfer 10 ETH from Coinbase to Binance"
  Assets:Crypto:Coinbase:ETH   -10 ETH {2500.00 USD}
  Assets:Crypto:Binance:ETH     10 ETH {2500.00 USD}
  Expenses:Crypto:Fees:Network  0.01 ETH {2500.00 USD}
  Assets:Crypto:Coinbase:ETH   -0.01 ETH {2500.00 USD}

Šablóny stakovania

Stakovanie Etherea

; Template: Stake ETH
YYYY-MM-DD * "Stake [AMOUNT] ETH"
  Assets:Crypto:Wallet:MetaMask:ETH    -[AMOUNT] ETH {[PRICE] USD}
  Assets:Staking:Ethereum:ETH           [AMOUNT] ETH {[PRICE] USD}
  Expenses:Crypto:Fees:Network          [FEE] ETH {[PRICE] USD}
  Assets:Crypto:Wallet:MetaMask:ETH    -[FEE] ETH {[PRICE] USD}
 
; Example: Stake 32 ETH
2024-01-10 * "Stake 32 ETH on Ethereum 2.0"
  Assets:Crypto:Wallet:MetaMask:ETH    -32 ETH {2500.00 USD}
  Assets:Staking:Ethereum:ETH           32 ETH {2500.00 USD}
  Expenses:Crypto:Fees:Network          0.01 ETH {2500.00 USD}
  Assets:Crypto:Wallet:MetaMask:ETH    -0.01 ETH {2500.00 USD}

Odmeny za stakovanie

; Template: Receive staking rewards
YYYY-MM-DD * "[CRYPTO] Staking Rewards - [PERIOD]"
  Assets:Staking:[PROTOCOL]:[CRYPTO]    [AMOUNT] [CRYPTO] {[PRICE] USD}
  Income:Crypto:Staking:[CRYPTO]       -[VALUE] USD  ; [VALUE] = [AMOUNT] * [PRICE]
 
; Example: ETH staking rewards
2024-02-01 * "ETH Staking Rewards - January"
  Assets:Staking:Ethereum:ETH     0.08 ETH {2600.00 USD}
  Income:Crypto:Staking:ETH     -208.00 USD  ; 0.08 * 2,600.00

Odmena je príjem prijatý v naturáliách, takže dva zápisy opisujú tú istú udalosť z oboch strán: prichádza 0,08 ETH so základom 2 600,00 USD za jednotku a zodpovedajúci príjem 208,00 USD je kredit – záporný. {2,600.00 USD} je externá cena, ktorú musíte získať sami; Beancount ju zaznamenáva, nezískava ju. Zaznamenajte ju z burzy alebo indexu, ktorý skutočne používate, a dodržiavajte rovnaký zdroj počas celého roka.

Tých 208,00 USD je odteraz aj daňovým základom odmeny. Keď nakoniec predáte 0,08 ETH, ziskom je iba pohyb od tohto dátumu – 208,00 USD už bolo zdanených ako príjem a nesmie byť uznaných dvakrát. Či je príjem zdaniteľný pri prijatí alebo pri vyradení, závisí od jurisdikcie; kniha v oboch prípadoch zaznamenáva fakty.

Šablóny DeFi

Poskytovanie likvidity na Uniswape

; Template: Add liquidity to Uniswap pool
YYYY-MM-DD * "Add liquidity to [TOKEN1]-[TOKEN2] pool"
  Assets:Crypto:Wallet:MetaMask:[TOKEN1]    -[AMOUNT1] [TOKEN1] {[PRICE1] USD}
  Assets:Crypto:Wallet:MetaMask:[TOKEN2]    -[AMOUNT2] [TOKEN2] {[PRICE2] USD}
  Assets:DeFi:Uniswap:[TOKEN1]-[TOKEN2]-LP   [LP_AMOUNT] [LP_TOKEN] {[LP_PRICE] USD}
  Expenses:Crypto:Fees:Network               [FEE] ETH {[ETH_PRICE] USD}
  Assets:Crypto:Wallet:MetaMask:ETH         -[FEE] ETH {[ETH_PRICE] USD}
 
; Example: Add ETH-USDC liquidity
2024-01-15 * "Add liquidity to ETH-USDC pool"
  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-V3-ETH-USDC {500.00 USD}
  Expenses:Crypto:Fees:Network          0.02 ETH {2500.00 USD}
  Assets:Crypto:Wallet:MetaMask:ETH    -0.02 ETH {2500.00 USD}

Odhadnite tento komoditný nástroj po jednom: odchádza 25 000,00 USD v ETH plus 25 000,00 USD v USDC, prichádza 50 000,00 USD v LP tokenoch a plynový poplatok presúva 50,00 USD v ETH z peňaženky do výdavkov. Časť so stablecoinom nesie @ 1.00 USD, pretože je držaná bez nákladového základu – bez cenovej anotácie by jej váha bola 25 000 USDC, čo nemôže vykryť doláre. V mnohých jurisdikciách je vklad do poolu sám o sebe vyradením oboch tokenov; tento zápis zámerne prenáša základ ďalej, takže pridajte zápisy o zisku, ak to váš postup vyžaduje.

Pôžičky na Compounde

; Template: Supply assets to Compound
YYYY-MM-DD * "Supply [AMOUNT] [TOKEN] to Compound"
  Assets:Crypto:Wallet:MetaMask:[TOKEN]  -[AMOUNT] [TOKEN] @ [TOKEN_PRICE] USD
  Assets:DeFi:Compound:C[TOKEN]           [C_AMOUNT] C[TOKEN] {[C_PRICE] USD}
  Expenses:Crypto:Fees:Network            [FEE] ETH {[ETH_PRICE] USD}
  Assets:Crypto:Wallet:MetaMask:ETH      -[FEE] ETH {[ETH_PRICE] USD}
 
; Example: Supply USDC to Compound
2024-01-20 * "Supply 10000 USDC to Compound"
  Assets:Crypto:Wallet:MetaMask:USDC  -10000 USDC @ 1.00 USD
  Assets:DeFi:Compound:CUSDC             500 CUSDC {20.00 USD}
  Expenses:Crypto:Fees:Network          0.008 ETH {2500.00 USD}
  Assets:Crypto:Wallet:MetaMask:ETH    -0.008 ETH {2500.00 USD}

Tento zápis sa načíta vďaka dvom veciam. Časť s USDC nesie @ 1.00 USD, takže obe strany swapu majú váhu v rovnakej mene – bez toho Beancount vidí vznik 10 000,00 USD v CUSDC proti zániku 10 000 jednotiek USDC, čo sú rôzne komoditné nástroje a navzájom sa nevykryjú. A prijatý token je CUSDC, nie cUSDC: malé začiatočné písmeno je lexikálnou chybou v komponente účtu aj v symbole komoditného nástroja, nech ho protokol vo svojom vlastnom rozhraní píše akokoľvek.

Šablóny ťažby

Odmeny za ťažbu

; Template: Receive mining rewards
YYYY-MM-DD * "[CRYPTO] Mining Reward - [POOL/SOLO]"
  Assets:Crypto:Mining:[CRYPTO]     [AMOUNT] [CRYPTO] {[PRICE] USD}
  Income:Crypto:Mining:[CRYPTO]    -[VALUE] USD  ; [VALUE] = [AMOUNT] * [PRICE]
 
; Example: Bitcoin mining reward
2024-01-15 * "BTC Mining Reward - Slush Pool"
  Assets:Crypto:Mining:BTC    0.01 BTC {45000.00 USD}
  Income:Crypto:Mining:BTC  -450.00 USD  ; 0.01 * 45,000.00

Výdavky na ťažbu

; Template: Mining operational expenses
YYYY-MM-DD * "Mining [EXPENSE_TYPE] - [PERIOD]"
  Expenses:Crypto:Mining:[EXPENSE_TYPE]  [AMOUNT] USD
  Assets:Checking                       -[AMOUNT] USD
 
; Example: Mining electricity costs
2024-01-31 * "Mining Electricity - January"
  Expenses:Crypto:Mining:Electricity  800.00 USD
  Assets:Checking                    -800.00 USD

Šablóny airdropov

Tokenové airdropy

; Template: Receive token airdrop
YYYY-MM-DD * "[TOKEN] Airdrop from [PROJECT]"
  Assets:Crypto:Wallet:[WALLET]:[TOKEN]  [AMOUNT] [TOKEN] {[PRICE] USD}
  Income:Crypto:Airdrops                -[VALUE] USD  ; [VALUE] = [AMOUNT] * [PRICE]
 
; Example: UNI token airdrop
2024-03-01 * "UNI Airdrop from Uniswap"
  Assets:Crypto:Wallet:MetaMask:UNI   400 UNI {8.00 USD}
  Income:Crypto:Airdrops            -3200.00 USD  ; 400 * 8.00

Rovnako ako pri odmene za stakovanie sa uznaná hodnota airdropu stáva jeho nákladovým základom. Zaznamenajte cenu, ktorú viete obhájiť – prvú likvidnú kotáciu tokenu, zo zdroja, ktorý uvediete – a nie zaokrúhlené číslo.

Pokročilé šablóny

Flash Loan Arbitráž

Tento blok je pseudokód, nie šablóna. Načrtáva postupnosť pohybov hodnôt v rámci flash loanu. Nenačíta sa ani po nahradení hodnôt, pretože prázdne riadky medzi skupinami ukončujú transakciu – Beancount hlási syntaktickú chybu na zápisoch, ktoré nasledujú. Zaznamenajte skutočný flash loan ako jedinú transakciu bez prázdnych riadkov (označte časti odsadenými komentármi ;) a vypustite medziľahlé časti, ktoré sa v rámci toho istého bloku vynulujú.

Pseudocode: flash loan arbitrage
 
  borrow      Assets:Crypto:Temp:FlashLoan       +[LOAN_AMOUNT] [TOKEN]
              Liabilities:DeFi:[PROTOCOL]:Flash  -[LOAN_AMOUNT] [TOKEN]
 
  execute     Assets:Crypto:Temp:FlashLoan       -[LOAN_AMOUNT] [TOKEN]
              Assets:Crypto:Temp:Arbitrage       +[RETURN_AMOUNT] [TOKEN]
 
  repay       Liabilities:DeFi:[PROTOCOL]:Flash  +[LOAN_AMOUNT] [TOKEN]
              Assets:Crypto:Temp:Arbitrage       -[LOAN_PLUS_FEE] [TOKEN]
 
  keep        Assets:Crypto:Wallet:[WALLET]:[TOKEN]  +[PROFIT] [TOKEN]
              Income:Crypto:Arbitrage                -[PROFIT_USD] USD

Všetko, čoho sa pôžička dotkla, je na konci bloku preč, takže kniha v skutočnosti potrebuje zaznamenať len zisk a poplatok protokolu. Príklad arbitráže v príručke o sledovaní portfólia ukazuje tvar jedinej transakcie.

Cross-Chain Bridge

; Template: Bridge assets across chains
YYYY-MM-DD * "Bridge [AMOUNT] [TOKEN] from [CHAIN1] to [CHAIN2]"
  Assets:Crypto:[CHAIN1]:[TOKEN]     -[AMOUNT] [TOKEN] {[PRICE] USD}
  Assets:Crypto:[CHAIN2]:[TOKEN]      [AMOUNT] [TOKEN] {[PRICE] USD}
  Expenses:Crypto:Bridge:Fees         [FEE] [TOKEN] {[PRICE] USD}
  Assets:Crypto:[CHAIN1]:[TOKEN]     -[FEE] [TOKEN] {[PRICE] USD}
 
; Example: Bridge ETH to Polygon
2024-02-05 * "Bridge 5 ETH from Ethereum to Polygon"
  Assets:Crypto:Ethereum:ETH     -5 ETH {2600.00 USD}
  Assets:Crypto:Polygon:ETH       5 ETH {2600.00 USD}
  Expenses:Crypto:Bridge:Fees    0.01 ETH {2600.00 USD}
  Assets:Crypto:Ethereum:ETH    -0.01 ETH {2600.00 USD}

Šablóny optimalizované na dane

Zber daňových strát

; Template: Tax loss harvesting
YYYY-MM-DD * "Tax loss harvesting - Sell [CRYPTO] at loss"
  Assets:Crypto:[EXCHANGE]:[CRYPTO]    -[AMOUNT] [CRYPTO] {[HIGH_COST_BASIS] USD}
  Assets:Crypto:[EXCHANGE]:USD          [PROCEEDS] USD
  Expenses:Crypto:Fees:Trading          [FEE] USD
  Assets:Crypto:[EXCHANGE]:USD         -[FEE] USD
  Expenses:CapitalLoss:Crypto           [LOSS] USD
 
; Example: Harvest ADA loss
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, 1,000 * 0.45
  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

Strata je zrkadlovým obrazom zisku: odchádza základ 600,00 USD, prichádzajú hrubé príjmy 450,00 USD a rozdiel 150,00 USD je kladný zápis na výdavkový účet. 445,00 USD v hotovosti je to, čo skutočne pristane, po odpočítaní poplatku 5,00 USD.

Dlhodobé kapitálové zisky

; Template: Long-term capital gains sale
YYYY-MM-DD * "Long-term sale - [CRYPTO] held > 1 year"
  date-acquired: "[PURCHASE_DATE]"
  holding-period: "[DAYS] days"
  Assets:Crypto:[EXCHANGE]:[CRYPTO]    -[AMOUNT] [CRYPTO] {[COST_BASIS] USD} @ [SALE_PRICE] USD
  Assets:Crypto:[EXCHANGE]:USD          [GROSS_PROCEEDS] USD
  Expenses:Crypto:Fees:Trading          [FEE] USD
  Assets:Crypto:[EXCHANGE]:USD         -[FEE] USD
  Income:CapitalGains:LongTerm         -[GAIN] USD
 
; Example: Long-term BTC sale
2025-02-01 * "Long-term sale - BTC held 382 days"
  date-acquired: "2024-01-15"
  holding-period: "382 days"
  Assets:Crypto:Coinbase:BTC     -1.0 BTC {45000.00 USD} @ 55000.00 USD
  Assets:Crypto:Coinbase:USD   55000.00 USD
  Expenses:Crypto:Fees:Trading    50.00 USD
  Assets:Crypto:Coinbase:USD     -50.00 USD
  Income:CapitalGains:LongTerm -10000.00 USD  ; 55,000.00 proceeds - 45,000.00 basis

Zisk je 10 000,00 USD, nie 9 950,00 USD: poplatok 50,00 USD je už zaznamenaný ako výdavok, takže jeho započítanie do zisku by ho odpočítalo dvakrát. Income:CapitalGains:LongTerm je samostatným účtom od Income:CapitalGains:Crypto len preto, aby bola doba držby viditeľná v prehľade – Beancount dobu držby za vás nevypočítava, a preto sa oplatí viesť metadáta date-acquired a holding-period.

Šablóny reconciliácie

Mesačné overenie zostatkov

; Template: Monthly balance assertions
YYYY-MM-DD balance Assets:Crypto:[EXCHANGE]:[CRYPTO]  [EXPECTED_BALANCE] [CRYPTO]
YYYY-MM-DD balance Assets:Crypto:Wallet:[WALLET]:[CRYPTO]  [EXPECTED_BALANCE] [CRYPTO]
 
; Example: January balance 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:Wallet:Ledger:BTC  1.0 BTC

Na rozdiel od ostatných príkladov tu tento nie je zámerne sebestačný: sumy sú také, aké ukazujú obrazovky vašej vlastnej burzy, a tvrdenie zlyháva, kým vaše transakcie nie sú v knihe – čo je celý jeho zmysel. Všimnite si, že balance kontroluje zostatok na začiatku menovaného dňa, takže tvrdenie datujte deň po období, ktoré uzatvárate.

Aktualizácie cien

; Template: Daily price updates
YYYY-MM-DD price [CRYPTO] [PRICE] USD
 
; Example: Daily prices
2024-01-15 price BTC 45000.00 USD
2024-01-15 price ETH 2500.00 USD
2024-01-15 price ADA 0.50 USD

Pokyny na použitie

  1. Skopírujte príslušnú šablónu pre váš typ transakcie

  2. Nahraďte každý zástupný symbol. Šablóna nie je platným Beancountom, kým nezmizne RRRR-MM-DD a každý token [V HRANATÝCH ZÁTVORKÁCH] – hranaté zátvorky nie sú syntaxou Beancount a zvyšná zátvorka je chybou pri parsovaní, nie ticho ignorovanou hodnotou. Nahradenie je mechanické:

    Zástupný symbolNahradeniePríklad
    RRRR-MM-DDdátum transakcie2024-03-20
    [MNOŽSTVO]jednotky komoditného nástroja, bez úvodzoviek0.5
    [KRYPTO]symbol komoditného nástroja, veľkými písmenamiBTC
    [BURZA]komponent účtu pre miesto obchoduCoinbase
    [NÁKLADOVÝ_ZÁKLAD]jednotkové náklady dávky, ktorú vyraďujete45000.00
    [PREDAJNÁ_CENA]jednotková cena, za ktorú ste predali48000.00
    [HRUBÉ_PRÍJMY][MNOŽSTVO] × [PREDAJNÁ_CENA], pred poplatkami24000.00
    [POPLATOK]poplatok burzy, v mene, v ktorej bol účtovaný30.00
    [ZISK][HRUBÉ_PRÍJMY][MNOŽSTVO] × [NÁKLADOVÝ_ZÁKLAD]1500.00

    Nahradenie tohto stĺpca do šablóny Predaj kryptomeny reprodukuje vypracovaný príklad vytlačený pod ňou, čo je najrýchlejší spôsob, ako skontrolovať, že ste šablónu prečítali správne.

  3. Upravte názvy účtov, aby zodpovedali vašej štruktúre účtov, a uistite sa, že každý z nich je otvorený pomocou Šablóny štruktúry účtov – účet, ktorý nikdy nebol otvorený, je chybou pri načítaní, nie varovaním

  4. Pridajte metadáta podľa potreby pre daňové vykazovanie alebo sledovanie

  5. Overte výpočty pomocou bea --file vas-subor.bean check pred finalizáciou zápisov. Zápis, ktorý nevyrovnáva, alebo ktorý znižuje dávku, ktorú nedržíte, zlyhá tam, a nie potichu vyprodukuje nesprávny prehľad

Najlepšie postupy

  • Používajte konzistentné konvencie pomenovania
  • Zahrňte ID transakcií do metadát
  • Dôkladne dokumentujte zložité transakcie
  • Overujte výmenné kurzy a ceny
  • Pravidelne si robte zálohy svojich súborov

Tieto šablóny poskytujú pevný základ pre účtovníctvo kryptomien v Beancount.io. Prispôsobte ich svojim špecifickým potrebám a vzorcom obchodovania.

Zdroj: https://beancount.io/sk/docs/Tips/cryptocurrency-templates-examples