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átumyYYYY-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 naExpenses: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:
Š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 USDPredaj 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 basisVyradená 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 USDObchod 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.00Odmena 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.00Vý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.00Tak 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] USDVš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 proceedsStrata 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 basisZisk 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 BTCNa 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 USDPre 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
-
Skopírujte príslušnú šablónu pre váš typ transakcie
-
Nahraďte každý zástupný symbol. Šablóna nie je platný Beancount, kým nezmizne
YYYY-MM-DDa 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ý symbol Nahradiť Príklad YYYY-MM-DDdátumom transakcie 2024-03-20[AMOUNT]jednotkami komodity, bez úvodzoviek 0.5[CRYPTO]symbolom komodity, veľkými písmenami BTC[EXCHANGE]komponentom účtu pre miesto Coinbase[COST_BASIS]obstarávacou cenou dávky, ktorú vyraďujete, za jednotku 45000.00[SALE_PRICE]cenou, za ktorú ste predali, za jednotku 48000.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.00Nahradenie 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.
-
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
-
Pridajte metadáta podľa potreby pre daňové vykazovanie alebo sledovanie
-
Overte výpočty pomocou
bea --file your-file.bean checkpred 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.