이 가이드는 일반적인 암호화폐 시나리오에 대한 실용적인 Beancount 템플릿과 실제 예시를 제공합니다. 이 템플릿을 복사하여 자신의 암호화폐 회계 요구에 맞게 조정하세요.
이 블록들을 읽는 방법
아래의 모든 펜스 블록은 세 가지 유형 중 하나이며, 서로 대체할 수 없습니다:
- 템플릿은
[대괄호]자리 표시자와YYYY-MM-DD날짜를 포함합니다. 실제 값을 대체하기 전까지는 로드되지 않습니다 — 대괄호는 Beancount 구문이 아닙니다. - 예시는 템플릿 바로 아래에 있으며, 실제 날짜와 금액을 포함하고 로드되도록 작성되었습니다. 각 예시는 여전히 관련 계정이 개설되어 있어야 하며, 이를 위한 것이 아래의 계정 구조 템플릿입니다. 유일한 예외는 조정 블록으로, 이는 자신의 원장만이 충족할 수 있는 잔액을 주장합니다.
- 플래시 론 차익거래 블록은 의사 코드이며, 해당 위치에 그렇게 표시되어 있습니다.
모든 블록을 관통하는 두 가지 관례가 있습니다:
- 수익 계정은 대변을 보유하므로 음수입니다. 실현 이익은
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처분된 로트의 원가는 $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.00의 CUSDC가 나타나고 10,000 단위의 USDC가 사라지는 것을 보는데, 이는 서로 다른 상품이므로 상쇄되지 않습니다. 그리고 수령 토큰은 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이익은 $10,000.00이며 $9,950.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해당 열을 암호화폐 판매 템플릿에 대체하면 아래에 인쇄된 작업 예시가 재현되며, 이는 템플릿을 올바르게 읽었는지 확인하는 가장 빠른 방법입니다.
-
계정 이름을 조정하여 계정 구조와 일치시키고, 각 계정이 계정 구조 템플릿에 의해 개설되었는지 확인하세요 — 개설되지 않은 계정은 경고가 아닌 로드 오류입니다
-
세금 신고 또는 추적을 위해 필요에 따라 메타데이터를 추가하세요
-
항목을 확정하기 전에
bean-check your-file.bean으로 계산을 검증하세요. 균형이 맞지 않거나 보유하지 않은 로트를 줄이는 항목은 잘못된 보고서를 조용히 생성하는 대신 여기서 실패합니다
모범 사례
- 일관된 명명 규칙을 사용하세요
- 메타데이터에 거래 ID를 포함하세요
- 복잡한 거래를 철저히 문서화하세요
- 환율과 가격을 검증하세요
- 파일을 정기적으로 백업하세요
이 템플릿은 Beancount.io에서 암호화폐 회계를 위한 견고한 기반을 제공합니다. 특정 요구와 거래 패턴에 따라 사용자 정의하세요.