이 가이드는 일반적인 암호화폐 시나리오를 위한 실용적인 Beancount 템플릿과 실제 예시를 제공합니다. 여러분의 암호화폐 회계 요구에 맞게 이 템플릿들을 복사하고 수정하세요.
이 블록들을 읽는 방법
아래의 모든 펜스 블록은 세 가지 중 하나이며, 서로 바꿔 쓸 수 없습니다:
- 템플릿은
[대괄호]자리 표시자와YYYY-MM-DD날짜를 포함합니다. 실제 값으로 대체하기 전까지는 로드되지 않습니다 — 대괄호는 Beancount 문법이 아닙니다. - 예시는 해당 템플릿 바로 아래에 있으며, 실제 날짜와 금액을 담고 있고 로드되도록 작성되었습니다. 각 예시는 여전히 거래가 건드리는 계정들이 개설되어 있어야 하며, 이를 위한 것이 아래의 계정 구조 템플릿입니다. 유일한 예외는 여러분 자신의 원장만이 충족할 수 있는 잔액을 검증하는 조정(reconciliation) 블록입니다.
- 플래시 론 차익거래 블록은 의사코드이며, 해당 위치에 그렇게 표시되어 있습니다.
모든 템플릿에 걸쳐 두 가지 관례가 있습니다:
- 수익 계정은 대변(credit)을 가지므로 음수입니다. 실현 이익은
Income:CapitalGains:…에 대한 음수 전기이고, 실현 손실은Expenses:CapitalLoss:…에 대한 양수 전기입니다. 이것을 거꾸로 하는 것이 암호화폐 분개가 균형을 맞추지 못하는 가장 흔한 원인입니다. - 수수료는 한 번은 비용으로, 한 번은 현금 감소로 기록됩니다. 총 수익금은 현금 계정으로 들어가고, 수수료가 다시 나오며, 그 차액이 실제로 여러분의 계정에 입금되는 금액입니다.
실제 암호화폐 예시 원장을 살펴보세요:
기본 설정 템플릿
계정 구조 템플릿
; =============================================================================
; 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"거래 템플릿
기본 암호화폐 구매
; 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암호화폐 판매
; 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처분된 로트(lot)의 원가는 $22,500.00이고, 판매로 $24,000.00의 총액이 들어오며, 그중 $30.00이 거래소로 갑니다 — 따라서 $23,970.00의 현금이 도착하고 $1,500.00의 이익이 실현됩니다. 수수료를 이익에 상계하지 마세요: 수수료는 이미 비용으로 기록되었으며, 이를 두 번째로 차감하는 것이 거래의 균형을 깨뜨리는 원인입니다.
암호화폐 간 거래
; 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암호화폐 간 거래는 첫 번째 상품을 처분하므로, 현금 판매와 정확히 동일하게 이익을 실현합니다: $2,400.00에 취득한 20 ETH는 $46,000.00의 BTC 원가 기준에 대해 받은 $48,000.00의 가치입니다. $40.00의 수수료는 현금으로 지불되며 이익을 변경하지 않습니다.
전송 템플릿
거래소에서 지갑으로 전송
; 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}이체는 처분이 아니므로 아무것도 실현하지 않습니다: 동일한 {45000.00 USD} 원가가 코인과 함께 이동하고 수취 계정이 원가 기준을 상속합니다. 두 가지 결과가 따릅니다. 출금 수수료는 BTC로 지불되며 동일한 원가로 비용 처리되므로 역시 아무 이익도 실현하지 않습니다 — 여러분의 처리 방식이 다르다면 @로 수수료를 가격 매기고 이익 전기를 추가하세요. 그리고 송신 계정은 이미 1.0005 BTC를 그 정확한 원가로 보유하고 있어야 하며, 1.0이 아닙니다 — 수수료가 동일한 로트에서 나오기 때문입니다. 일치하는 로트 없이 감소시키면 합계가 아무리 잘 맞아도 기장에 실패합니다.
거래소 간 전송
; 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}스테이킹 템플릿
이더리움 스테이킹
; 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}스테이킹 보상
; 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보상은 현물로 받은 소득이므로, 두 전기는 양쪽에서 동일한 사건을 설명합니다: 0.08 ETH가 단위당 $2,600.00의 원가 기준으로 도착하고, 이에 대응하는 $208.00의 소득은 대변 — 즉 음수입니다. {2,600.00 USD}는 여러분이 직접 조달해야 하는 외부 가격입니다; Beancount는 이를 기록할 뿐 가져오지 않습니다. 실제로 사용하는 거래소나 지수에서 이를 확인하고, 연중 내내 동일한 출처를 유지하세요.
그 $208.00은 또한 이 시점부터 보상의 원가 기준입니다. 나중에 0.08 ETH를 팔 때, 이 날짜 이후의 변동만이 이익입니다 — $208.00은 이미 소득으로 과세되었으므로 두 번 인식되어서는 안 됩니다. 소득이 수령 시점에 과세되는지 처분 시점에 과세되는지는 관할권에 따라 다릅니다; 원장은 어느 경우든 사실을 기록합니다.
DeFi 템플릿
Uniswap 유동성 공급
; 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}이것을 한 번에 하나의 상품씩 조정하세요: $25,000.00의 ETH와 $25,000.00의 USDC가 나가고, $50,000.00의 LP 토큰이 들어오며, 가스 수수료가 $50.00의 ETH를 지갑에서 비용으로 이동시킵니다. 스테이블코인 부분은 원가 기준 없이 보유되므로 @ 1.00 USD를 달고 있습니다 — 가격 주석이 없으면 그 가중치는 25,000 USDC이므로 달러를 상쇄할 수 없습니다. 많은 관할권에서 풀에 예치하는 것 자체가 두 토큰 모두의 처분입니다; 이 분개는 의도적으로 대신 원가 기준을 이월하므로, 여러분의 처리 방식이 요구한다면 이익 전기를 추가하세요.
Compound 대출
; 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}이것이 로드되게 만드는 두 가지가 있습니다. USDC 부분은 @ 1.00 USD를 달고 있어 스왑의 양쪽이 동일한 통화로 가중됩니다 — 이것이 없으면 Beancount는 10,000 단위의 USDC가 사라지는 것에 대해 $10,000.00의 CUSDC가 나타나는 것으로 보는데, 이들은 서로 다른 상품이며 상쇄되지 않습니다. 그리고 수취 토큰은 cUSDC가 아니라 CUSDC입니다: 소문자 첫 글자는 계정 구성 요소와 상품 기호 모두에서 렉서 오류입니다 — 프로토콜이 자체 인터페이스에서 어떻게 표기하든지 말이죠.
채굴 템플릿
채굴 보상
; 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채굴 비용
; 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에어드랍 템플릿
토큰 에어드랍
; 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스테이킹 보상과 마찬가지로, 에어드롭의 인식된 가치는 원가 기준이 됩니다. 반올림한 숫자가 아니라, 여러분이 방어할 수 있는 가격을 — 이름을 댈 수 있는 출처의 토큰 첫 유동성 호가를 — 기록하세요.
고급 템플릿
플래시 론 차익거래
이 블록은 템플릿이 아니라 의사코드입니다. 플래시 론 내부의 가치 이동 순서를 개략적으로 보여줍니다. 값을 대체한 후에도 로드되지 않는데, 그룹 사이의 빈 줄이 거래를 끝내기 때문입니다 — Beancount는 빈 줄 뒤에 오는 전기에 대해 구문 오류를 보고합니다. 실제 플래시 론은 빈 줄 없이 단일 거래로 기록하고(들여쓴 ; 주석으로 각 부분에 라벨을 붙임), 동일 블록 내에서 0으로 상쇄되는 중간 부분은 생략하세요.
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대출이 건드린 모든 것은 블록이 끝날 때까지 사라지므로, 원장이 실제로 기록해야 하는 것은 이익과 프로토콜 수수료입니다. 포트폴리오 추적 가이드의 차익거래 예시는 단일 거래 형태를 보여줍니다.
크로스체인 브리지
; 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}세금 최적화 템플릿
세금 손실 수확
; 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손실은 이익의 거울상입니다: $600.00의 원가 기준이 나가고, $450.00의 총 수익금이 들어오며, $150.00의 차액은 비용 계정에 대한 양수 전기입니다. $5.00의 수수료 후 실제로 입금되는 것은 $445.00의 현금입니다.
장기 자본 이익
; 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이익은 $9,950.00이 아니라 $10,000.00입니다: $50.00의 수수료는 이미 비용으로 기록되었으므로, 이를 이익에 상계하면 두 번 공제하게 됩니다. Income:CapitalGains:LongTerm이 Income:CapitalGains:Crypto와 별도의 계정인 이유는 보유 기간이 보고서에서 보이게 하기 위해서일 뿐입니다 — Beancount는 여러분을 위해 보유 기간을 계산하지 않으며, 이것이 date-acquired 및 holding-period 메타데이터를 유지할 가치가 있는 이유입니다.
조정 템플릿
월간 잔액 검증
; 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여기 다른 예시들과 달리, 이것은 설계상 자족적이지 않습니다: 금액은 여러분 자신의 거래소 화면이 말하는 대로이며, 여러분의 거래가 원장에 들어가기 전까지는 검증이 실패합니다 — 바로 그것이 이 예시의 존재 이유입니다. balance는 명시된 날짜의 시작 시점 잔액을 확인하므로, 마감하는 기간의 다음 날로 검증 날짜를 지정하세요.
가격 업데이트
; 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호스팅된 원장의 경우, 실시간 가격이 지원되는 암호화폐 평가 가격을 자동으로 유지할 수 있습니다. 재현 가능한 예시를 위해 위의 정적 가격을 유지하세요. 관리되는 가격은 거래 가격, 스테이킹 소득, 또는 에어드롭 원가 기준을 채우지 않습니다; 그러한 거래 가치는 명시적으로 기록하세요.
사용 지침
-
거래 유형에 맞는 템플릿을 복사하세요
-
모든 자리 표시자를 대체하세요.
YYYY-MM-DD와 각[대괄호]토큰이 사라지기 전까지 템플릿은 유효한 Beancount가 아닙니다 — 대괄호는 Beancount 문법이 아니며, 남은 하나는 조용히 무시되는 값이 아니라 파싱 오류입니다. 대체는 기계적입니다:자리 표시자 대체값 예시 YYYY-MM-DD거래 날짜 2024-03-20[AMOUNT]상품의 단위 수, 따옴표 없이 0.5[CRYPTO]상품 기호, 대문자 BTC[EXCHANGE]거래 장소의 계정 구성 요소 Coinbase[COST_BASIS]제거하는 로트의 단위당 원가 45000.00[SALE_PRICE]판매한 단위당 가격 48000.00[GROSS_PROCEEDS]수수료 전 [AMOUNT]×[SALE_PRICE]24000.00[FEE]거래 장소의 수수료, 부과된 통화로 30.00[GAIN][GROSS_PROCEEDS]−[AMOUNT]×[COST_BASIS]1500.00그 열을 암호화폐 판매 템플릿에 대입하면 그 아래 인쇄된 계산 예시가 재현되며, 이것이 템플릿을 올바르게 읽었는지 확인하는 가장 빠른 방법입니다.
-
여러분의 계정 구조에 맞게 계정 이름을 조정하고, 각 계정이 계정 구조 템플릿에 의해 개설되는지 확인하세요 — 한 번도 개설되지 않은 계정은 경고가 아니라 로드 오류입니다
-
세금 보고 또는 추적을 위해 필요에 따라 메타데이터를 추가하세요
-
분개를 확정하기 전에
bea --file your-file.bean check로 계산을 검증하세요. 균형이 맞지 않거나 보유하지 않은 로트를 감소시키는 분개는 조용히 잘못된 보고서를 생성하는 대신 여기서 실패합니다
모범 사례
- 일관된 명명 규칙을 사용하세요
- 메타데이터에 거래 ID를 포함하세요
- 복잡한 거래를 철저히 문서화하세요
- 환율과 가격을 검증하세요
- 파일을 정기적으로 백업하세요
이 템플릿들은 Beancount.io에서 암호화폐 회계를 위한 견고한 기반을 제공합니다. 여러분의 특정 요구와 거래 패턴에 맞게 사용자 정의하세요.