Preskočiť na hlavný obsah

Šablóny kryptotransakcií Beancount pripravené na kopírovanie

Vypĺňateľné šablóny Beancount, každá s načítateľným príkladom, pre nákupy kryptomien, predaje, výmeny, prevody, staking, DeFi požičiavanie, ťažbu a airdropy.

Táto príručka poskytuje praktické šablóny Beancount a príklady z reálneho sveta pre bežné scenáre s kryptomenami. Skopírujte a prispôsobte si tieto šablóny pre svoje vlastné potreby krypto účtovníctva.

Ako čítať tieto bloky​

Každý ohraničený blok nižšie je jednou z troch vecí a nie sú vzájomne zameniteľné:

  • Šablóny obsahujú zástupné symboly [V H RANIATYCH ZÁVORKÁCH] a dátumy YYYY-MM-DD. Nenačítajú sa, kým nenahradíte skutočné hodnoty — zátvorky nie sú syntaxou Beancount.
  • Príklady sa nachádzajú priamo pod svojou šablónou, majú skutočné dátumy a sumy a sú napísané tak, aby sa načítali. Každý z nich však stále potrebuje, aby účty, ktorých sa dotýka, boli otvorené, a práve na to slúži Šablóna štruktúry účtov nižšie. Jedinou výnimkou je blok reconciliácie, ktorý overuje zostatky, ktoré dokáže splniť len vaša vlastná kniha.
  • Blok Arbitráž s flash úverom je pseudokód a je tak označený aj na mieste, kde sa nachádza.

Všetkými nimi prechádzajú dve konvencie:

  • Príjmové účty obsahujú kreditné položky, takže sú záporné. Realizovaný zisk je záporná položka na Income:CapitalGains:…; realizovaná strata je kladná položka na Expenses:CapitalLoss:…. Zámena tohto poradia je tým najbežnejším spôsobom, akým krypto zápis zlyhá pri vyrovnaní.
  • Poplatok sa zaznamenáva raz ako náklad a raz ako zníženie hotovosti. Hrubý výnos ide na hotovostný účet, poplatok sa z neho odoberie a rozdiel je to, čo skutočne pristane na vašom účte.

Preskúmajte živú príkladovú knihu kryptomien:

Otvoriť Príkladová kniha kryptomien 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á v obstarávacej cene hodnotu 22 500,00 USD, predaj prináša hrubý výnos 24 000,00 USD a 30,00 USD z toho ide burze — takže prichádza 23 970,00 USD v hotovosti a realizuje sa zisk 1 500,00 USD. Nezapočítavajte poplatok do zisku: poplatok je už nákladom a jeho odpočítanie druhýkrát je to, čo ponecháva transakciu nevyrovnanú.

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-na-krypto vyraďuje prvú komoditu, takže realizuje zisk presne ako predaj za hotovosť: 20 ETH nadobudnutých za 2 400,00 USD je 48 000,00 USD prijatej hodnoty proti 46 000,00 USD základu BTC. 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 nerealizuje nič: tá istá obstarávacia cena {45000.00 USD} cestuje s mincami a prijímajúci účet dedí základ. Z toho vyplývajú dva dôsledky. Poplatok za výber sa platí v BTC a účtuje sa do nákladov v tej istej obstarávacej cene, takže tiež nerealizuje žiadny zisk — ak váš prístup hovorí inak, ocenite poplatok pomocou @ a pridajte položku zisku. A odosielajúci účet už musí obsahovať 1,0005 BTC v presne tejto obstarávacej cene, nie 1,0, pretože poplatok pochádza z tej istej dávky. Zníženie bez zodpovedajúcej dávky sa nezaznamená, nech sa súčty sčítavajú akokoľvek dobre.

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 obe položky 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 kreditná položka — záporná. {2,600.00 USD} je externá cena, ktorú si musíte zadovážiť sami; Beancount ju zaznamenáva, ale nevyhľadáva ju. Poznamenajte si ju z burzy alebo indexu, ktoré skutočne používate, a počas celého roka používajte ten istý zdroj.

Tých 208,00 USD je odteraz aj obstarávacou cenou odmeny. Keď napokon predáte 0,08 ETH, ziskom je len pohyb od tohto dátumu — 208,00 USD už bolo zdanených ako príjem a nesmie sa vykázať dvakrát. Či je príjem zdaniteľný pri prijatí alebo pri vyradení, sa líši podľa jurisdikcie; kniha zaznamenáva fakty v oboch prípadoch.

Š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}

Toto zreconciliujte po jednej komodite naraz: 25 000,00 USD v ETH plus 25 000,00 USD v USDC odchádza, 50 000,00 USD v LP tokene prichádza a poplatok za gas presúva 50,00 USD v ETH z peňaženky do nákladov. Vetva stablecoinu nesie @ 1.00 USD, pretože je držaná bez obstarávacej ceny — bez cenovej anotácie je jej váha 25 000 USDC, čo nedokáže vyrušiť 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 obstarávaciu cenu ďalej, takže ak váš prístup vyžaduje položky zisku, pridajte ich.

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}

Dve veci spôsobujú, že sa tento zápis načíta. Vetva USDC nesie @ 1.00 USD, aby obe strany swapu vážili v tej istej mene — bez toho Beancount vidí 10 000,00 USD v CUSDC, ktoré sa objavujú proti 10 000 jednotkám USDC, ktoré miznú, čo sú rôzne komodity a nevyrušia sa. A prijímací token je CUSDC, nie cUSDC: malé prvé písmeno je chybou lexera tak v komponente účtu, ako aj v symbole komodity, nech ho protokol vo 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

Tak ako pri odmene zo stakingu, uznaná hodnota airdropu sa stáva jeho obstarávacou cenou. Zaznamenajte cenu, ktorú dokážete 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 sled pohybov hodnoty v rámci flash úveru. Nenačíta sa ani po nahradení hodnôt, pretože prázdne riadky medzi skupinami ukončujú transakciu — Beancount hlási syntaktickú chybu na položkách, ktoré za jednou nasledujú. Zaznamenajte skutočný flash úver ako jednu transakciu bez prázdnych riadkov (vetvy označte odsadenými komentármi ;) a vypustite medzikroky, ktoré sa v rámci toho istého bloku vyrušia na nulu.

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 úver dotkol, je na konci bloku preč, takže to, čo kniha skutočne potrebuje zaznamenať, je zisk a poplatok protokolu. Príklad arbitráže v príručke o sledovaní portfólia ukazuje tvar jednej 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 600,00 USD základu, prichádza 450,00 USD hrubého výnosu a rozdiel 150,00 USD je kladná položka na nákladovom účte. Skutočne pristane 445,00 USD v hotovosti, po 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 náklad, takže jeho započítanie do zisku by ho odpočítalo dvakrát. Income:CapitalGains:LongTerm je samostatný účet od Income:CapitalGains:Crypto len preto, aby bolo obdobie držby viditeľné v reporte — Beancount vám obdobia držby nevypočítava, a preto sa metadáta date-acquired a holding-period oplatí niesť so sebou.

Š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é hovoria obrazovky vašej vlastnej burzy, a overenie zlyhá, kým vaše transakcie nie sú v knihe — čo je celý jeho zmysel. Všimnite si, že balance kontroluje zostatok na začiatku uvedeného dňa, takže overenie datujte na 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

Pre hostovanú knihu môže Live Prices automaticky udržiavať podporované oceňovacie ceny kryptomien. Statické ceny vyššie si ponechajte pre reprodukovateľné príklady. Spravované ceny nevyplnia cenu obchodu, príjem zo stakingu ani obstarávaciu cenu airdropu; tieto hodnoty transakcií zaznamenajte explicitne.

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ý Beancount, kým nezmizne YYYY-MM-DD a každý token [V ZÁTVORKÁCH] — zátvorky nie sú syntaxou Beancount a ten, ktorý zostane, je chybou parsovania, nie ticho ignorovanou hodnotou. Nahradenie je mechanické:

    Zástupný symbolNahradiťPríklad
    YYYY-MM-DDdátumom transakcie2024-03-20
    [AMOUNT]jednotkami komodity, bez úvodzoviek0.5
    [CRYPTO]symbolom komodity, veľkými písmenamiBTC
    [EXCHANGE]komponentom účtu pre miestoCoinbase
    [COST_BASIS]obstarávacou cenou dávky, ktorú vyraďujete, za jednotku45000.00
    [SALE_PRICE]cenou, za ktorú ste predali, za jednotku48000.00
    [GROSS_PROCEEDS][AMOUNT] × [SALE_PRICE], pred poplatkami24000.00
    [FEE]poplatkom miesta, v mene, v ktorej bol účtovaný30.00
    [GAIN][GROSS_PROCEEDS] − [AMOUNT] × [COST_BASIS]1500.00

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

  3. Upravte názvy účtov tak, 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 načítania, nie upozornením

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

  5. Overte výpočty pomocou bea --file your-file.bean check pred finalizáciou zápisov. Zápis, ktorý sa nevyrovná, alebo ktorý znižuje dávku, ktorú nedržíte, tam zlyhá, namiesto toho, aby ticho vyprodukoval nesprávny report

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
  • Udržiavajte pravidelné zálohy svojich súborov

Tieto šablóny poskytujú pevný základ pre účtovníctvo kryptomien v Beancount.io. Prispôsobte si ich podľa svojich konkrétnych potrieb a vzorcov obchodovania.

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