Gerenciar uma carteira de criptomoedas em várias exchanges, carteiras e protocolos DeFi pode ser desafiador. Este guia abrangente mostra como configurar e manter um acompanhamento preciso de carteira de criptomoedas usando o poderoso sistema de contabilidade em texto simples do Beancount.io.
Explore um exemplo ao vivo de razão de criptomoedas:
Por que os Rastreadores de Portfólio Tradicionais São Insuficientes
Problemas Comuns em Ferramentas de Portfólio de Cripto
- Suporte limitado a exchanges: Muitas ferramentas não suportam todas as exchanges ou protocolos DeFi
- Base de custo imprecisa: Cálculos simplificados de FIFO/LIFO deixam de fora cenários complexos
- Transações ausentes: Limitações de API e lacunas na entrada manual
- Sem personalização: Categorias e estruturas de relatórios fixas
- Preocupações com privacidade: Compartilhar chaves de API com serviços de terceiros
- Aprisionamento a fornecedor: Formatos de dados proprietários e opções limitadas de exportação
Vantagens do Beancount.io
- Controle total: Seus dados em formato de texto simples
- Personalização ilimitada: Crie qualquer estrutura de contas que precisar
- Base de custo precisa: Rastreamento por lotes com identificação específica
- Suporte multiprotocolo: Lide com qualquer exchange, carteira ou protocolo DeFi
- Cálculos transparentes: Veja exatamente como os números são computados
- À prova de futuro: O formato de texto simples garante acessibilidade a longo prazo
Configurando a Estrutura do Seu Portfólio Cripto
Hierarquia Básica de Contas
Comece com uma estrutura de contas abrangente que reflita seu ecossistema de criptomoedas:
; 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:CryptoUma regra de nomenclatura incomoda aqui, e o parser a impõe em vez de ser apenas convenção: cada componente de conta, e cada símbolo de commodity, deve começar com uma letra maiúscula ou um dígito. A Compound escreve seu token de recibo cUSDC em toda a sua própria interface, mas Assets:DeFi:Compound:cUSDC e uma commodity cUSDC são ambos erros de lexer. Escreva-os como CUSDC e mantenha a grafia própria do protocolo nos metadados name: da commodity.
Definições de Commodity com Metadados
Defina suas criptomoedas com metadados ricos para um melhor rastreamento:
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"Rastreamento de Portfólio Multi-Exchange
Registrando Compras Entre Exchanges
Acompanhe a mesma criptomoeda em diferentes exchanges com base de custo precisa:
; 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 USDTransferências Entre Exchanges
Acompanhe transferências entre exchanges mantendo a base de custo:
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}Oportunidades de Arbitragem
Uma arbitragem é um único evento econômico em dois locais, então registre-a como uma única transação. Este lançamento vende 10 ETH que você já possui na Coinbase a $2.580,00 e imediatamente restaura a posição na Binance a $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 basisTrês coisas a copiar:
- Nunca deixe uma linha em branco entre os lançamentos. Uma linha em branco encerra a transação, e o Beancount reporta um erro de sintaxe nos lançamentos seguintes. Use comentários
;indentados para rotular as pernas — que é o que as duas linhas de comentário acima estão fazendo. - O ganho é o ganho da alienação, $800,00, e é negativo porque contas de
Incomemantêm créditos. Os $55,00 de taxas são separados: é o que transforma $800,00 de spread bruto em $745,00 de lucro, e já está registrado em seus próprios dois lançamentos. - A perna de venda reduz um lote que você já deve possuir. Este lançamento pressupõe 10 ETH comprados anteriormente na Coinbase a $2.500,00; sem esse lote, a redução não tem contra o que ser lançada.
Gestão Avançada da Base de Custo
Rastreamento Baseado em Lotes
O sistema por lotes do Beancount.io fornece rastreamento preciso da base de custo:
; 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 USDA convenção de sinais para ganhos e perdas
Contas de Income mantêm créditos, então o Beancount as armazena como números negativos. Cada ganho abaixo é, portanto, um lançamento negativo em uma conta de receita, e cada perda é um lançamento positivo em uma conta de despesa. A taxa é separada de ambos: é uma despesa por direito próprio, então subtraí-la do ganho também a deduziria duas vezes e deixaria a transação desbalanceada.
Para uma alienação, a aritmética é sempre:
gain (or loss) = gross proceeds - cost basis of the lots removed
net cash = gross proceeds - feesMétodo de Identificação Específica
Venda lotes específicos para gestão fiscal ideal. Nomear o custo do lote no lançamento de redução é o que significa "identificação específica" no Beancount, e funciona sob o booking padrão STRICT:
; 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 proceedsVendendo o lote mais antigo ou o mais recente
Nomear um custo diferente seleciona um lote diferente. Estas duas vendas pegam o lote de $40.000,00 e depois o lote de $45.000,00 — os dois ainda existentes depois que o de $50.000,00 entrou no exemplo acima — que é a mesma seleção que FIFO e LIFO fariam automaticamente, escrita à mão:
; 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 basisMesmo preço de venda, lote diferente, $2.500,00 de diferença no ganho realizado. Se você preferir que o Beancount escolha o lote por você, defina um método de booking na conta em vez de nomear um custo — "FIFO", "LIFO" ou "HIFO" na diretiva open, descrita em Gerenciamento de Inventário.
Análise de Desempenho do Portfólio
Configuração de Acompanhamento de Preços
Configure feeds de preços automatizados para uma avaliação precisa:
Para livros hospedados, o Live Prices fornece pares suportados automaticamente. As diretivas estáticas abaixo mostram os dados que uma avaliação usa e continuam úteis para exemplos locais reproduzíveis.
; 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 USDAcompanhamento da Alocação do Portfólio
Use os recursos de relatórios do Beancount.io para analisar a alocação:
-- 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 DESCMétricas de Desempenho
Acompanhe indicadores-chave de desempenho:
-- 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"Integração de Staking e DeFi
Acompanhamento de Recompensas de Staking
Registre recompensas de staking com reconhecimento adequado de receita. As unidades que chegam e a receita reconhecida são o mesmo evento visto de dois lados, então seus pesos devem se cancelar: [unidades] × [preço] do ativo entrando, o mesmo número de dólares de receita saindo — e receita é um crédito, então é negativa.
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.50Os {2,500.00 USD} e {0.50 USD} são avaliações externas. O Beancount armazena o que você escrever; ele não busca um preço nem decide qual cotação é a correta. Escolha uma fonte — a exchange em que você realmente venderia, ou um índice publicado — e use-a consistentemente, porque esse número é tanto sua receita quanto sua futura base de custo.
A base da recompensa é reconhecida uma vez
Os $200,00 reconhecidos acima tornam-se a base de custo dos 0,08 ETH. Vendê-los depois realiza apenas a variação desde a data da recompensa:
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$40,00 de ganho de capital, não $240,00 — os primeiros $200,00 já foram receita em janeiro. Lançar os $240,00 inteiros como ganho é a forma mais comum de a receita de recompensa ser contada duas vezes. Quando a recompensa se torna tributável, e a que alíquota, varia por jurisdição; o razão registra recebimento e alienação separadamente para que qualquer tratamento possa ser reportado a partir dele.
Acompanhamento de Rendimento DeFi
Acompanhe posições DeFi complexas:
Fornecer liquidez troca duas commodities por uma terceira, então cada perna tem que pesar na mesma moeda antes que a transação possa balancear. As pernas de ETH e LP já o fazem, porque carregam um custo; a perna da stablecoin precisa de um @ 1.00 USD explícito, caso contrário o Beancount vê 25.000 unidades de USDC saindo e $25.000,00 de valor chegando, que são commodities diferentes e não se cancelam.
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.00Gestão Automatizada do Portfólio
Importação de dados de exchange
O Beancount não inclui nenhum cliente de API de exchange, e não há arquivo de configuração que o faça conversar com a Coinbase ou a Binance. O caminho suportado é um importer: você baixa a exportação CSV da exchange (ou a busca com seu próprio script) e a converte em transações Beancount com beangulp, o framework de importer que sucedeu o beancount.ingest embutido do Beancount 2. O beancount.ingest não existe no Beancount 3.
Se você realmente escrever um script de busca, seu arquivo de credenciais é só seu — nada na cadeia de ferramentas do Beancount o lê:
# 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"Reconciliação Automatizada
Configure verificação automatizada de saldos:
; 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 ADAEsses três números vêm das suas telas de exchange, não desta página, então o bloco acima não verificará contra nada até que suas próprias transações estejam no razão. Duas regras decidem se ele verifica sequer. Uma diretiva balance afirma o saldo no início do dia nomeado, então uma afirmação datada de 2024-01-31 não vê nada lançado em 2024-01-31 — date-a o dia seguinte ao período que você está encerrando. E toda conta afirmada deve estar aberta, que é por que Assets:Crypto:Kraken:ADA aparece na seção Hierarquia básica de contas acima.
Preços gerenciados em um razão hospedado
Use o Live Prices para escolher uma moeda de avaliação e ativos cripto suportados, depois cole os includes gerados no seu razão hospedado. Os símbolos dos ativos devem corresponder às suas participações. Os feeds fornecem preços de avaliação datados; eles não definem o valor da receita nem o custo de aquisição de recompensas de staking e airdrops.
Seu próprio preço tem precedência para a mesma data e par, incluindo o par recíproco. Uma cotação em cache pode estar desatualizada durante uma interrupção, então verifique seu horário de observação. O fluxo de trabalho de busca local abaixo continua útil para o Beancount upstream e o Fava.
Mantendo preços atualizados
Os preços ficam no razão como diretivas price. O Beancount 3.2.3 upstream não os busca por conta própria; os includes gerenciados hospedados usam a extensão do loader do Beancount.io descrita acima. Não existe nenhuma diretiva custom "price-source" — um símbolo de commodity puro não é sequer um valor custom válido, então essa linha é um erro de sintaxe — e nenhum módulo beancount.plugins.forecast; o loader para com um erro de importação se você nomeá-lo.
Ative o beanprice dentro do motor gerenciado com bea engine enable beanprice, depois busque cotações com bea price main.beancount. Ele lê um campo de metadados price: em cada diretiva commodity, na forma "<moeda de cotação>:<módulo de origem>/<ticker>", e escreve diretivas price que você anexa ao seu razão:
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 USDQualquer outro metadado que você anexe a uma commodity — sector, website, ou o campo price-source usado anteriormente neste guia — é documentação de forma livre para seu próprio benefício. O loader o armazena e nenhuma ferramenta age sobre ele.
Estratégias de Otimização Fiscal
Colheita sistemática de prejuízos fiscais
Implemente colheita sistemática de perdas fiscais:
; 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 USDGanhos de longo prazo vs curto prazo
Acompanhe períodos de manutenção para otimização fiscal:
; 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 basisO link ^long-term-btc em ambos os lançamentos é o que permite puxar a compra e a venda juntas depois; o Beancount não acompanha períodos de manutenção por conta própria.
Relatórios e Análises
Relatórios resumidos de portfólio
Calcule a participação de cada criptomoeda no portfólio em uma única moeda de avaliação. Este exemplo usa preços em USD disponíveis em 31 de março de 2024, e posições antes de 1º de abril. Altere ambas as datas juntas para uma data de relatório diferente. Execute a instrução SELECT abaixo na sua ferramenta de consulta BQL local.
-- Alocação do portfólio por criptomoeda
SELECT
currency,
units(sum(position)) AS total_units,
convert(sum(position), 'USD', 2024-03-31) AS allocation_value
FROM close ON 2024-04-01
WHERE account ~ '^Assets:Crypto:'
GROUP BY currency
ORDER BY currency;Verifique que todo allocation_value diferente de zero está em USD antes de calcular percentuais. A conversão usa preços registrados disponíveis na data de avaliação ou antes. Uma conversão ausente pode deixar um valor em sua moeda original. Se qualquer quantia em BTC, ETH ou outra que não seja USD permanecer, a avaliação está incompleta. Adicione os preços datados ausentes e execute novamente; não trate ativos sem preço como zero nem adicione unidades de moeda não relacionadas.
Some os valores em USD para obter o total do portfólio. Então calcule a alocação de cada ativo como valor em USD do ativo / valor total em USD * 100. Mantenha a precisão total até exibir o percentual. Por exemplo, posições de 1 BTC e 3 ETH, com preços de 200 USD por BTC e 20 USD por ETH, dão:
| Ativo | Valor em USD | Cálculo da alocação | Participação exibida |
|---|---|---|---|
| BTC | 200 | 200 / 260 * 100 | 76,92% |
| ETH | 60 | 60 / 260 * 100 | 23,08% |
| Total | 260 | 260 / 260 * 100 | 100,00% |
Arredondar participações individuais para duas casas decimais pode fazer sua soma exibida diferir ligeiramente de 100%. Um inventário com valor zero pode aparecer em branco. Para um portfólio vazio ou um total em USD zero, reporte as alocações como indisponíveis e não divida por zero. Este exemplo descreve posições positivas de ativos; saldos negativos exigem interpretar exposições com sinal em vez de participações comuns de portfólio.
Análise de desempenho
Reporte o valor de fechamento do portfólio de cada mês usando todas as posições antes do mês seguinte. Defina a data de avaliação como o fim do mês para que preços posteriores não possam alterar o snapshot. Estes exemplos reportam em USD. Execute cada SELECT separadamente na sua ferramenta de consulta BQL local.
Para 31 de janeiro:
SELECT convert(sum(position), 'USD', 2024-01-31) AS portfolio_value
FROM close ON 2024-02-01
WHERE account ~ '^Assets:Crypto:';Para 29 de fevereiro:
SELECT convert(sum(position), 'USD', 2024-02-29) AS portfolio_value
FROM close ON 2024-03-01
WHERE account ~ '^Assets:Crypto:';Para 31 de março:
SELECT convert(sum(position), 'USD', 2024-03-31) AS portfolio_value
FROM close ON 2024-04-01
WHERE account ~ '^Assets:Crypto:';FROM close ON exclui lançamentos datados no seu corte ou depois dele. A data dentro de convert seleciona preços disponíveis na data de relatório ou antes. Para outro mês, altere ambas as datas juntas. Solicite cada mês que deseja reportar, incluindo meses sem transações. Verifique moedas não convertidas como descrito acima antes de tratar o resultado como um total em USD.
Por exemplo, suponha que janeiro termine com 2 BTC com preço de 100 USD cada e 3 ETH a 10 USD cada. Vender 1 BTC em fevereiro deixa 1 BTC e 3 ETH. Se março não tiver negociações mas os preços registrados subirem para 200 USD por BTC e 20 USD por ETH, os snapshots são:
| Fim do mês | Valor cripto de fechamento |
|---|---|
| 31 de janeiro | 2 * 100 + 3 * 10 = 230 USD |
| 29 de fevereiro | 1 * 100 + 3 * 10 = 130 USD |
| 31 de março | 1 * 200 + 3 * 20 = 260 USD |
O valor de fevereiro assume nenhuma nova diretiva de preço naquele mês. O preço @ de uma venda registra sua receita; ele não cria uma diretiva de preço de mercado. Estas consultas cobrem apenas contas Assets:Crypto:, então receitas em caixa mantidas em outros lugares são excluídas.
Agrupar lançamentos por mês de transação mede os movimentos de cada mês, não as posições cumulativas de fechamento. Também omite meses sem transações. Mudanças entre valores de fechamento incluem compras, vendas, transferências e variações de preço. Não são retornos de investimento ajustados por fluxos de caixa.
Análise de renda
Analise fontes de receita:
-- Income breakdown by source
SELECT
account,
sum(position) as total_income
WHERE account ~ "Income:Crypto"
GROUP BY account
ORDER BY total_income DESC;Melhores Práticas e Dicas
1. Registro consistente
- Registre transações imediatamente após a execução
- Use descrições padronizadas de transações
- Inclua hashes de transação nos metadados
2. Reconciliação regular
- Verifique saldos semanalmente em todas as plataformas
- Use afirmações de saldo para detectar discrepâncias
- Monitore transações ausentes
3. Backup e Segurança
- Faça backup regularmente dos seus arquivos Beancount
- Use controle de versão (Git) para rastreamento de mudanças
- Criptografe dados sensíveis
4. Documentação
- Documente suas decisões de estrutura de contas
- Mantenha notas sobre transações complexas
- Guarde registros de configurações de API
5. Preparação Fiscal
- Gere relatórios trimestralmente para planejamento fiscal
- Mantenha registros detalhados para fins de auditoria
- Consulte profissionais de tributos para situações complexas
Conclusão
O acompanhamento eficaz de carteiras de criptomoedas exige precisão, consistência e as ferramentas certas. O Beancount.io oferece a flexibilidade e o poder necessários para gerenciar carteiras cripto complexas em várias exchanges, carteiras e protocolos DeFi.
Principais benefícios de usar o Beancount.io para acompanhamento de carteira cripto:
- Propriedade completa dos dados: Seus dados em formato de texto simples
- Base de custo precisa: Rastreamento por lotes com identificação específica
- Flexibilidade ilimitada: Estruturas de contas e relatórios personalizados
- Otimização fiscal: Estratégias avançadas para minimizar a carga tributária
- À prova de futuro: Formato aberto garante acessibilidade a longo prazo
Comece com uma configuração básica e expanda gradualmente seu acompanhamento conforme sua carteira cresce em complexidade. O investimento em uma configuração adequada renderá dividendos em relatórios precisos, otimização fiscal e insights de carteira.
Pronto para assumir o controle da sua carteira de criptomoedas? Comece com o Beancount.io hoje.