여러 거래소, 지갑, DeFi 프로토콜에 걸쳐 암호화폐 포트폴리오를 관리하는 것은 어려울 수 있습니다. 이 종합 가이드는 Beancount.io의 강력한 평문(plain-text) 회계 시스템을 사용하여 정확한 암호화폐 포트폴리오 추적을 설정하고 유지하는 방법을 보여줍니다.
실제 암호화폐 예제 원장을 살펴보세요:
전통적인 포트폴리오 추적기가 부족한 이유
암호화폐 포트폴리오 도구의 일반적인 문제점
- 제한적인 거래소 지원: 많은 도구가 모든 거래소나 DeFi 프로토콜을 지원하지 않습니다
- 부정확한 취득원가: 단순화된 FIFO/LIFO 계산은 복잡한 시나리오를 놓칩니다
- 누락된 거래: API 제한과 수동 입력의 공백
- 커스터마이징 불가: 고정된 카테고리와 보고 구조
- 프라이버시 우려: 제3자 서비스와 API 키 공유
- 벤더 종속: 독점적 데이터 형식과 제한된 내보내기 옵션
Beancount.io의 장점
- 완전한 통제: 평문 형식으로 데이터를 직접 소유
- 무한한 커스터마이징: 필요한 모든 계정 구조 생성 가능
- 정확한 취득원가: 특정 식별(specific identification)을 통한 로트 기반 추적
- 다중 프로토콜 지원: 모든 거래소, 지갑, DeFi 프로토콜 처리
- 투명한 계산: 숫자가 어떻게 계산되는지 정확히 확인 가능
- 미래 지향적: 평문 형식이 장기적 접근성을 보장
암호화폐 포트폴리오 구조 설정
기본 계정 계층 구조
암호화폐 생태계를 반영하는 포괄적인 계정 구조로 시작하세요:
; Exchange Accounts - Organized by Platform
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:Coinbase:ADA
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:Kraken:USD
1970-01-01 open Assets:Crypto:Kraken:BTC
1970-01-01 open Assets:Crypto:Kraken:ETH
1970-01-01 open Assets:Crypto:Kraken:ADA
1970-01-01 open Assets:Crypto:Binance:ADA
; Wallet Accounts - Organized by Type
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
1970-01-01 open Assets:Crypto:Wallet:TrustWallet:BNB
; 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
1970-01-01 open Assets:Staking:Cardano:ADA
; Income Tracking
1970-01-01 open Income:Crypto:Staking:ETH
1970-01-01 open Income:Crypto:Staking:ADA
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:Crypto:Arbitrage
1970-01-01 open Income:CapitalGains:Crypto
1970-01-01 open Income:CapitalGains:LongTerm
; Expense Tracking
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:CapitalLoss:Crypto여기서 주의해야 할 명명 규칙이 하나 있는데, 이는 관례가 아니라 파서가 강제하는 규칙입니다: 모든 계정 구성 요소와 모든 상품(commodity) 기호는 대문자나 숫자로 시작해야 합니다. Compound는 자체 인터페이스 전반에서 영수증 토큰을 cUSDC로 표기하지만, Assets:DeFi:Compound:cUSDC와 cUSDC 상품은 모두 렉서(lexer) 오류입니다. 이들은 CUSDC로 표기하고, 프로토콜 자체의 표기는 상품의 name: 메타데이터에 유지하세요.
메타데이터가 포함된 상품 정의
더 나은 추적을 위해 풍부한 메타데이터로 암호화폐를 정의하세요:
1970-01-01 commodity BTC
name: "Bitcoin"
asset-class: "cryptocurrency"
sector: "digital-currency"
price-source: "coinbase"
website: "https://bitcoin.org"
1970-01-01 commodity ETH
name: "Ethereum"
asset-class: "cryptocurrency"
sector: "smart-contract-platform"
price-source: "coinbase"
website: "https://ethereum.org"
1970-01-01 commodity ADA
name: "Cardano"
asset-class: "cryptocurrency"
sector: "smart-contract-platform"
price-source: "binance"
website: "https://cardano.org"
1970-01-01 commodity DOT
name: "Polkadot"
asset-class: "cryptocurrency"
sector: "interoperability"
price-source: "kraken"
website: "https://polkadot.network"다중 거래소 포트폴리오 추적
거래소 간 구매 기록하기
정확한 취득원가로 서로 다른 거래소에서 동일한 암호화폐를 추적하세요:
; Bitcoin purchases on different exchanges
2024-01-15 * "Buy 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
2024-01-20 * "Buy BTC on Binance"
Assets:Crypto:Binance:BTC 0.5 BTC {46000.00 USD}
Assets:Crypto:Binance:USD -23000.00 USD
Expenses:Crypto:Fees:Trading 25.00 USD
Assets:Crypto:Binance:USD -25.00 USD
2024-01-25 * "Buy BTC on Kraken"
Assets:Crypto:Kraken:BTC 0.8 BTC {44000.00 USD}
Assets:Crypto:Kraken:USD -35200.00 USD
Expenses:Crypto:Fees:Trading 30.00 USD
Assets:Crypto:Kraken:USD -30.00 USD거래소 간 전송
취득원가를 유지하면서 거래소 간 이체를 추적하세요:
2024-02-01 * "Transfer BTC from Coinbase to Ledger"
Assets:Crypto:Coinbase:BTC -0.5 BTC {45000.00 USD}
Assets:Crypto:Wallet:Ledger:BTC 0.5 BTC {45000.00 USD}
Expenses:Crypto:Fees:Withdrawal 0.0005 BTC {45000.00 USD}
Assets:Crypto:Coinbase:BTC -0.0005 BTC {45000.00 USD}차익 거래 기회
차익거래는 두 거래 장소에 걸친 하나의 경제적 사건이므로 하나의 거래로 기록합니다. 이 항목은 이미 Coinbase에 보유 중인 10 ETH를 $2,580.00에 매도하고, 즉시 Binance에서 $2,500.00에 포지션을 복원합니다:
2024-02-10 * "Arbitrage: Buy ETH on Binance, Sell on Coinbase"
; Buy leg on Binance
Assets:Crypto:Binance:ETH 10 ETH {2500.00 USD}
Assets:Crypto:Binance:USD -25000.00 USD
Expenses:Crypto:Fees:Trading 25.00 USD
Assets:Crypto:Binance:USD -25.00 USD
; Sell leg on Coinbase, at the higher price
Assets:Crypto:Coinbase:ETH -10 ETH {2500.00 USD} @ 2580.00 USD
Assets:Crypto:Coinbase:USD 25800.00 USD
Expenses:Crypto:Fees:Trading 30.00 USD
Assets:Crypto:Coinbase:USD -30.00 USD
Income:Crypto:Arbitrage -800.00 USD ; 25,800.00 proceeds - 25,000.00 basis세 가지를 기억하세요:
- 전기(posting) 사이에 절대 빈 줄을 남기지 마세요. 빈 줄은 거래를 종료시키며, Beancount는 그 뒤의 전기에 대해 구문 오류를 보고합니다. 대신 들여쓰기된
;주석으로 각 레그(leg)에 라벨을 붙이세요 — 위의 두 주석 줄이 바로 그 역할을 합니다. - 이익은 처분(disposal)의 이익인 $800.00이며,
Income계정은 대변(credit)을 담기 때문에 음수입니다. $55.00의 수수료는 별개입니다: 이는 $800.00의 총 스프레드를 $745.00의 이익으로 바꾸는 요소이며, 이미 자체적인 두 개의 전기에 기록되어 있습니다. - 매도 레그는 이미 보유하고 있어야 하는 로트를 감소시킵니다. 이 항목은 이전에 Coinbase에서 $2,500.00에 매수한 10 ETH를 가정합니다; 그 로트가 없으면 감소시킬 대상이 없습니다.
고급 원가 기준 관리
LOT 기반 추적
Beancount.io의 로트 기반 시스템은 정확한 취득원가 추적을 제공합니다:
; Multiple purchases at different prices
2024-01-01 * "BTC Purchase Lot 1"
Assets:Crypto:Coinbase:BTC 1.0 BTC {40000.00 USD}
Assets:Crypto:Coinbase:USD -40000.00 USD
2024-02-01 * "BTC Purchase Lot 2"
Assets:Crypto:Coinbase:BTC 1.0 BTC {45000.00 USD}
Assets:Crypto:Coinbase:USD -45000.00 USD
2024-03-01 * "BTC Purchase Lot 3"
Assets:Crypto:Coinbase:BTC 1.0 BTC {50000.00 USD}
Assets:Crypto:Coinbase:USD -50000.00 USD이익과 손실의 부호 규약
Income 계정은 대변을 담으므로 Beancount는 이를 음수로 저장합니다. 따라서 아래의 모든 이익은 수익 계정에 대한 음수 전기이고, 모든 손실은 비용 계정에 대한 양수 전기입니다. 수수료는 둘 모두와 별개입니다: 그 자체로 비용이므로, 이익에서 추가로 차감하면 이중으로 공제되어 거래가 불균형해집니다.
하나의 처분에 대해 산술은 항상 다음과 같습니다:
gain (or loss) = gross proceeds - cost basis of the lots removed
net cash = gross proceeds - fees특정 LOT 지정 방식
최적의 세무 관리를 위해 특정 로트를 매도하세요. 감소 전기에 로트의 원가를 명시하는 것이 Beancount에서 "특정 식별"이 의미하는 바이며, 기본 STRICT 부킹(booking)에서도 작동합니다:
; Sell the most expensive lot: 1.0 BTC bought at $50,000.00
2024-04-01 * "Sell BTC Lot 3 for tax optimization"
Assets:Crypto:Coinbase:BTC -1.0 BTC {50000.00 USD} @ 48000.00 USD
Assets:Crypto:Coinbase:USD 48000.00 USD ; gross proceeds
Expenses:Crypto:Fees:Trading 50.00 USD
Assets:Crypto:Coinbase:USD -50.00 USD
Expenses:CapitalLoss:Crypto 2000.00 USD ; 50,000.00 basis - 48,000.00 proceeds가장 오래되거나 가장 최신 LOT 판매
다른 원가를 명시하면 다른 로트를 선택합니다. 이 두 매도는 $40,000.00 로트를, 그다음 $45,000.00 로트를 선택합니다 — 위 예제에서 $50,000.00 로트가 들어간 후 남아 있는 두 로트로, 이는 FIFO와 LIFO가 자동으로 선택할 것과 동일한 선택을 손으로 명시한 것입니다:
; Sell the oldest lot (bought 2024-01-01 at $40,000.00)
2024-05-01 * "Sell 0.5 BTC from the oldest lot"
Assets:Crypto:Coinbase:BTC -0.5 BTC {40000.00 USD} @ 52000.00 USD
Assets:Crypto:Coinbase:USD 26000.00 USD ; gross proceeds, 0.5 * 52,000.00
Expenses:Crypto:Fees:Trading 30.00 USD
Assets:Crypto:Coinbase:USD -30.00 USD
Income:CapitalGains:Crypto -6000.00 USD ; 26,000.00 proceeds - 20,000.00 basis
; Sell the newest remaining lot (bought 2024-02-01 at $45,000.00)
2024-05-02 * "Sell 0.5 BTC from the newest lot"
Assets:Crypto:Coinbase:BTC -0.5 BTC {45000.00 USD} @ 52000.00 USD
Assets:Crypto:Coinbase:USD 26000.00 USD
Expenses:Crypto:Fees:Trading 30.00 USD
Assets:Crypto:Coinbase:USD -30.00 USD
Income:CapitalGains:Crypto -3500.00 USD ; 26,000.00 proceeds - 22,500.00 basis동일한 매도 가격, 다른 로트, 실현 이익에서 $2,500.00의 차이. Beancount가 로트를 대신 선택하길 원한다면, 원가를 명시하는 대신 계정에 부킹 방법을 설정하세요 — open 지시어에 "FIFO", "LIFO" 또는 "HIFO"를 지정하며, 자세한 내용은 인벤토리 관리에 설명되어 있습니다.
포트폴리오 성과 분석
가격 추적 설정
정확한 평가를 위해 자동 가격 피드를 설정하세요:
호스팅 원장의 경우, 실시간 가격이 지원되는 페어를 자동으로 제공합니다. 아래의 정적 지시어는 평가에 사용되는 데이터를 보여주며, 재현 가능한 로컬 예제에 유용합니다.
; Daily price updates
2024-01-15 price BTC 45000.00 USD
2024-01-15 price ETH 2500.00 USD
2024-01-15 price ADA 0.50 USD
2024-01-16 price BTC 46000.00 USD
2024-01-16 price ETH 2550.00 USD
2024-01-16 price ADA 0.52 USD포트폴리오 할당 추적
Beancount.io의 보고 기능을 사용하여 배분을 분석하세요:
-- Query for portfolio allocation by asset
SELECT
account,
sum(position) as balance,
value(sum(position)) as market_value
WHERE account ~ "Assets:Crypto"
GROUP BY 1
ORDER BY market_value DESC성과 지표
핵심 성과 지표를 추적하세요:
-- Total portfolio value query
SELECT
sum(value(position)) as total_portfolio_value
WHERE account ~ "Assets:Crypto"
-- Realized gains/losses
SELECT
sum(position) as realized_gains
WHERE account ~ "Income:CapitalGains:Crypto"스테이킹 및 DeFi 통합
스테이킹 보상 추적
적절한 수익 인식으로 스테이킹 보상을 기록하세요. 들어오는 단위와 인식되는 수익은 동일한 사건을 두 측면에서 본 것이므로, 그 가중치가 상쇄되어야 합니다: 자산의 [단위] × [가격]이 들어오고, 동일한 금액의 달러 수익이 나가며 — 수익은 대변이므로 음수입니다.
2024-01-31 * "ETH Staking Rewards - January"
Assets:Staking:Ethereum:ETH 0.08 ETH {2500.00 USD}
Income:Crypto:Staking:ETH -200.00 USD ; 0.08 * 2,500.00
2024-01-31 * "ADA Staking Rewards - January"
Assets:Staking:Cardano:ADA 25 ADA {0.50 USD}
Income:Crypto:Staking:ADA -12.50 USD ; 25 * 0.50{2,500.00 USD}와 {0.50 USD}는 외부 평가액입니다. Beancount는 작성한 값을 그대로 저장합니다; 가격을 가져오거나 어느 시세가 올바른지 판단하지 않습니다. 출처를 선택하세요 — 실제로 매도할 거래소나 공개된 지수 — 그리고 일관되게 사용하세요. 그 숫자가 곧 수익이자 미래의 취득원가이기 때문입니다.
보상의 원가는 한 번 인식됩니다
위에서 인식한 $200.00이 0.08 ETH의 취득원가가 됩니다. 나중에 매도하면 보상 날짜 이후의 변동만 실현됩니다:
2024-06-30 * "Sell the January ETH staking reward"
Assets:Staking:Ethereum:ETH -0.08 ETH {2500.00 USD} @ 3000.00 USD
Assets:Crypto:Coinbase:USD 240.00 USD ; gross proceeds, 0.08 * 3,000.00
Income:CapitalGains:Crypto -40.00 USD ; 240.00 proceeds - 200.00 basis$240.00이 아니라 $40.00의 자본 이익입니다 — 처음 $200.00은 1월에 이미 수익이었습니다. 전체 $240.00을 이익으로 부킹하는 것이 보상 수익이 이중으로 계산되는 가장 흔한 방식입니다. 보상이 언제, 어떤 세율로 과세되는지는 관할권에 따라 다릅니다; 원장은 수령과 처분을 별도로 기록하므로 어느 처리 방식이든 여기서부터 보고할 수 있습니다.
DeFi 수익 추적
복잡한 DeFi 포지션을 추적하세요:
유동성 공급은 두 상품을 세 번째 상품으로 교환하므로, 거래가 균형을 이루려면 모든 레그가 동일한 통화로 가중치를 가져야 합니다. ETH와 LP 레그는 이미 그렇게 되어 있는데, 원가를 담고 있기 때문입니다; 스테이블코인 레그는 명시적인 @ 1.00 USD가 필요합니다. 그렇지 않으면 Beancount는 USDC 25,000단위가 나가고 $25,000.00의 가치가 들어오는 것으로 보는데, 이는 서로 다른 상품이라 상쇄되지 않습니다.
2024-02-01 * "Uniswap LP Position"
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-V2-ETH-USDC {500.00 USD}
2024-02-28 * "Uniswap LP Rewards - February"
Assets:Crypto:Wallet:MetaMask:UNI 50 UNI {8.00 USD}
Income:Crypto:DeFi:Yield -400.00 USD ; 50 * 8.00자동화된 포트폴리오 관리
거래소 데이터 가져오기
Beancount는 거래소 API 클라이언트를 제공하지 않으며, Coinbase나 Binance와 통신하게 만드는 구성 파일도 없습니다. 지원되는 경로는 **임포터(importer)**입니다: 거래소의 CSV 내보내기를 다운로드하고(또는 자체 스크립트로 가져오고) Beancount 2의 내장 beancount.ingest를 계승한 임포터 프레임워크인 beangulp로 Beancount 거래로 변환합니다. beancount.ingest는 Beancount 3에 존재하지 않습니다.
가져오기 스크립트를 직접 작성한다면, 그 자격 증명 파일은 오직 본인만의 것입니다 — Beancount 툴체인의 어떤 것도 이를 읽지 않습니다:
# Configuration for YOUR OWN fetch script. No Beancount tool reads this file.
exchanges:
coinbase:
api_key: "your_api_key"
api_secret: "your_api_secret"
passphrase: "your_passphrase"
binance:
api_key: "your_api_key"
api_secret: "your_api_secret"자동 계정 조정
자동화된 잔액 검증을 설정하세요:
; Balance assertions for automated 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:Kraken:ADA 1000.0 ADA이 세 숫자는 이 페이지가 아니라 본인의 거래소 화면에서 나오므로, 위 블록은 자신의 거래가 원장에 들어가기 전까지는 어떤 것과도 검증되지 않습니다. 검증 여부를 결정하는 두 가지 규칙이 있습니다. balance 지시어는 명시된 날의 시작 시점 잔액을 단언하므로, 2024-01-31로 날짜가 지정된 단언은 2024-01-31에 전기된 어떤 것도 보지 못합니다 — 마감하려는 기간의 다음 날로 날짜를 지정하세요. 그리고 단언된 모든 계정은 열려 있어야 하며, 이것이 위의 기본 계정 계층 구조 섹션에 Assets:Crypto:Kraken:ADA가 나타나는 이유입니다.
호스팅 원장에서의 관리형 가격
실시간 가격을 사용하여 평가 통화와 지원되는 암호화폐 자산을 선택한 다음, 생성된 include를 호스팅 원장에 붙여넣으세요. 자산 기호는 보유 자산과 일치해야 합니다. 피드는 날짜별 평가 가격을 제공하지만, 스테이킹 보상과 에어드롭의 수익 금액이나 취득원가를 설정하지는 않습니다.
동일한 날짜와 페어(역방향 페어 포함)에 대해서는 본인의 가격이 우선합니다. 캐시된 시세는 중단 기간 동안 오래된 것일 수 있으므로 관측 시각을 확인하세요. 아래의 로컬 가져오기 워크플로는 업스트림 Beancount와 Fava에 여전히 유용합니다.
가격 최신 상태 유지하기
가격은 원장에 price 지시어로 존재합니다. 업스트림 Beancount 3.2.3은 이를 직접 가져오지 않습니다; 호스팅 관리형 include는 위에서 설명한 Beancount.io 로더 확장을 사용합니다. custom "price-source" 지시어는 없습니다 — 상품 기호만 단독으로는 유효한 custom 값조차 아니므로 그 줄은 구문 오류입니다 — 그리고 beancount.plugins.forecast 모듈도 없습니다; 이를 명시하면 로더가 임포트 오류로 중단됩니다.
관리형 엔진 내에서 bea engine enable beanprice로 beanprice를 활성화한 다음, bea price main.beancount로 시세를 가져오세요. 이는 각 commodity 지시어의 price: 메타데이터 필드를 "<quote currency>:<source module>/<ticker>" 형식으로 읽고, 원장에 추가할 price 지시어를 작성합니다:
1970-01-01 commodity BTC
name: "Bitcoin"
asset-class: "cryptocurrency"
price: "USD:beanprice.sources.coinbase/BTC-USD"
1970-01-01 commodity ETH
name: "Ethereum"
asset-class: "cryptocurrency"
price: "USD:beanprice.sources.coinbase/ETH-USD"
; Example quotes to append after reviewing the output of bea price - and what you would otherwise type by hand
2024-01-15 price BTC 45000.00 USD
2024-01-15 price ETH 2500.00 USD상품에 붙이는 다른 모든 메타데이터 — sector, website, 또는 이 가이드 앞부분에서 사용한 price-source 필드 — 는 본인을 위한 자유 형식 문서입니다. 로더는 이를 저장하지만 어떤 도구도 이에 따라 작동하지 않습니다.
세금 최적화 전략
손실 수확 (Tax Loss Harvesting)
체계적인 세무상 손실 수확을 구현하세요:
; The lot being harvested, so this block stands on its own
2024-03-01 * "Buy ADA on Binance"
Assets:Crypto:Binance:ADA 1000 ADA {0.60 USD}
Assets:Crypto:Binance:USD -600.00 USD
; Identify positions with unrealized losses
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
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
; Repurchase after wash sale period (31 days)
2025-01-16 * "Repurchase ADA after wash sale period"
Assets:Crypto:Binance:ADA 1000 ADA {0.45 USD}
Assets:Crypto:Binance:USD -450.00 USD
Expenses:Crypto:Fees:Trading 5.00 USD
Assets:Crypto:Binance:USD -5.00 USD장기 이익과 단기 이익
세무 최적화를 위해 보유 기간을 추적하세요:
; Use metadata to track purchase dates
2024-01-01 * "BTC Purchase - Long-term hold" ^long-term-btc
Assets:Crypto:Coinbase:BTC 1.0 BTC {40000.00 USD}
Assets:Crypto:Coinbase:USD -40000.00 USD
; Sell after one year for long-term capital gains treatment
2025-01-02 * "BTC Sale - Long-term capital gains" ^long-term-btc
Assets:Crypto:Coinbase:BTC -1.0 BTC {40000.00 USD} @ 55000.00 USD
Assets:Crypto:Coinbase:USD 55000.00 USD
Income:CapitalGains:LongTerm -15000.00 USD ; 55,000.00 proceeds - 40,000.00 basis두 항목의 ^long-term-btc 링크가 나중에 매수와 매도를 함께 끌어올 수 있게 해줍니다; Beancount 자체는 보유 기간을 추적하지 않습니다.
보고 및 분석
포트폴리오 요약 보고서
포괄적인 포트폴리오 보고서를 생성하세요:
-- Portfolio allocation by cryptocurrency
SELECT
commodity,
sum(position) as total_units,
value(sum(position)) as market_value,
value(sum(position)) / (
SELECT value(sum(position))
FROM positions
WHERE account ~ "Assets:Crypto"
) * 100 as allocation_percentage
WHERE account ~ "Assets:Crypto"
GROUP BY commodity
ORDER BY market_value DESC;성과 분석
시간 경과에 따른 포트폴리오 성과를 추적하세요:
-- Monthly portfolio performance
SELECT
year(date) as year,
month(date) as month,
value(sum(position)) as portfolio_value
WHERE account ~ "Assets:Crypto"
GROUP BY year, month
ORDER BY year, month;수입 분석
수익원을 분석하세요:
-- Income breakdown by source
SELECT
account,
sum(position) as total_income
WHERE account ~ "Income:Crypto"
GROUP BY account
ORDER BY total_income DESC;모범 사례 및 팁
1. 일관된 기록
- 체결 직후 거래를 기록하세요
- 표준화된 거래 설명을 사용하세요
- 메타데이터에 거래 해시를 포함하세요
2. 정기 조정
- 모든 플랫폼에서 매주 잔액을 검증하세요
- 잔액 단언을 사용하여 불일치를 발견하세요
- 누락된 거래를 모니터링하세요
3. 백업 및 보안
- Beancount 파일을 정기적으로 백업하세요
- 변경 추적을 위해 버전 관리(Git)를 사용하세요
- 민감한 데이터를 암호화하세요
4. 문서화
- 계정 구조 결정을 문서화하세요
- 복잡한 거래에 대한 메모를 유지하세요
- API 구성 기록을 보관하세요
5. 세금 준비
- 세무 계획을 위해 분기별로 보고서를 생성하세요
- 감사 목적을 위해 상세 기록을 유지하세요
- 복잡한 상황에는 세무 전문가와 상담하세요
결론
효과적인 암호화폐 포트폴리오 추적에는 정확성, 일관성, 그리고 올바른 도구가 필요합니다. Beancount.io는 여러 거래소, 지갑, DeFi 프로토콜에 걸친 복잡한 암호화폐 포트폴리오를 관리하는 데 필요한 유연성과 강력함을 제공합니다.
암호화폐 포트폴리오 추적에 Beancount.io를 사용할 때의 주요 이점:
- 완전한 데이터 소유권: 평문 형식의 데이터
- 정확한 취득원가: 특정 식별을 통한 로트 기반 추적
- 무한한 유연성: 사용자 정의 계정 구조와 보고
- 세무 최적화: 세금 부담을 최소화하는 고급 전략
- 미래 지향적: 개방형 형식이 장기적 접근성을 보장
기본 설정으로 시작하여 포트폴리오의 복잡성이 커짐에 따라 추적을 점진적으로 확장하세요. 적절한 설정에 대한 투자는 정확한 보고, 세무 최적화, 포트폴리오 통찰력으로 보답할 것입니다.
암호화폐 포트폴리오를 직접 통제할 준비가 되셨나요? 지금 바로 Beancount.io 시작하기를 확인하세요.