Gestionar una cartera de criptomonedas en múltiples exchanges, carteras y protocolos DeFi puede ser un desafío. Esta guía completa te muestra cómo configurar y mantener un seguimiento preciso de tu cartera de criptomonedas usando el potente sistema de contabilidad de texto plano de Beancount.io.
Explora un libro mayor de ejemplo de criptomonedas en vivo:
Por Qué los Seguidores Tradicionales de Portafolios No Son Suficientes
Problemas Comunes con Herramientas de Portafolio Cripto
- Soporte limitado de exchanges: Muchas herramientas no admiten todos los exchanges o protocolos DeFi
- Base de costo inexacta: Los cálculos simplificados FIFO/LIFO pasan por alto escenarios complejos
- Transacciones faltantes: Limitaciones de las API y vacíos en la entrada manual
- Sin personalización: Categorías y estructuras de informes fijas
- Preocupaciones de privacidad: Compartir claves de API con servicios de terceros
- Dependencia del proveedor: Formatos de datos propietarios y opciones de exportación limitadas
Ventajas de Beancount.io
- Control total: Tus datos son tuyos en formato de texto plano
- Personalización ilimitada: Crea cualquier estructura de cuentas que necesites
- Base de costo precisa: Seguimiento por lotes con identificación específica
- Soporte multiprotocolo: Maneja cualquier exchange, cartera o protocolo DeFi
- Cálculos transparentes: Ve exactamente cómo se computan los números
- A prueba de futuro: El formato de texto plano garantiza accesibilidad a largo plazo
Configurando la Estructura de tu Portafolio Cripto
Jerarquía Básica de Cuentas
Comienza con una estructura de cuentas completa que refleje tu ecosistema de criptomonedas:
; 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:CryptoAquí hay una regla de nomenclatura que muerde, y el parser la aplica en lugar de la convención: cada componente de cuenta, y cada símbolo de mercancía, debe comenzar con una letra mayúscula o un dígito. Compound escribe su token de recibo cUSDC en toda su propia interfaz, pero Assets:DeFi:Compound:cUSDC y una mercancía cUSDC son ambos errores del lexer. Escríbelos CUSDC y conserva la ortografía propia del protocolo en el metadato name: de la mercancía.
Definiciones de Commodity con Metadatos
Define tus criptomonedas con metadatos enriquecidos para un mejor seguimiento:
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"Seguimiento de Portafolio Multi-Exchange
Registro de Compras en Distintos Exchanges
Rastrea la misma criptomoneda en diferentes exchanges con una base de costo 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 USDTransferencias entre Exchanges
Rastrea transferencias entre exchanges manteniendo la base de costo:
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 Arbitraje
Un arbitraje es un único evento económico en dos plazas, así que regístralo como una sola transacción. Esta entrada vende 10 ETH que ya tienes en Coinbase a $2,580.00 y restaura inmediatamente la posición en 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 basisTres cosas que copiar:
- Nunca dejes una línea en blanco entre asientos. Una línea en blanco termina la transacción, y Beancount reporta un error de sintaxis en los asientos posteriores. Usa comentarios
;indentados para etiquetar las patas en su lugar — que es lo que hacen las dos líneas de comentario anteriores. - La ganancia es la ganancia de la enajenación, $800.00, y es negativa porque las cuentas de
Incomemantienen créditos. Los $55.00 de comisiones son aparte: es lo que convierte $800.00 de diferencial bruto en $745.00 de beneficio, y ya está registrado en sus propios dos asientos. - La pata de venta reduce un lote que ya debes tener. Esta entrada asume 10 ETH comprados antes en Coinbase a $2,500.00; sin ese lote la reducción no tiene contra qué registrarse.
Gestión Avanzada de la Base de Costo
Seguimiento basado en lotes
El sistema por lotes de Beancount.io proporciona un seguimiento preciso de la base de costo:
; 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 USDLa convención de signo para ganancias y pérdidas
Las cuentas de Income mantienen créditos, así que Beancount los almacena como números negativos. Por lo tanto, cada ganancia a continuación es un asiento negativo a una cuenta de ingresos, y cada pérdida es un asiento positivo a una cuenta de gastos. La comisión es aparte de ambas: es un gasto por derecho propio, así que restarla también de la ganancia la deduciría dos veces y dejaría la transacción desbalanceada.
Para una enajenación la aritmética es siempre:
ganancia (o pérdida) = producto bruto - base de costo de los lotes eliminados
efectivo neto = producto bruto - comisionesMétodo de Identificación Específica
Vende lotes específicos para un tratamiento fiscal óptimo. Nombrar el costo del lote en el asiento de reducción es lo que significa "identificación específica" en Beancount, y funciona con la reserva STRICT predeterminada:
; 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 proceedsVenta del lote más antiguo o más reciente
Nombrar un costo diferente selecciona un lote diferente. Estas dos ventas toman el lote de $40,000.00 y luego el de $45,000.00 — los dos que siguen en pie después de que el de $50,000.00 se fuera en el ejemplo anterior — que es la misma selección que FIFO y LIFO harían automáticamente, escrita a mano:
; 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 basisMismo precio de venta, lote diferente, $2,500.00 de diferencia en la ganancia realizada. Si prefieres que Beancount elija el lote por ti, establece un método de reserva en la cuenta en lugar de nombrar un costo — "FIFO", "LIFO" o "HIFO" en la directiva open, descrito en Gestión de inventario.
Análisis del Rendimiento del Portafolio
Configuración del Seguimiento de Precios
Configura fuentes de precios automatizadas para una valoración precisa:
Para libros alojados, Precios en vivo suministra los pares compatibles automáticamente. Las directivas estáticas a continuación muestran los datos que usa una valoración y siguen siendo útiles para ejemplos locales reproducibles.
; 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 USDSeguimiento de la Distribución del Portafolio
Usa las funciones de informes de Beancount.io para analizar la asignación:
-- 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 Rendimiento
Rastrea indicadores clave de rendimiento:
-- 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"Integración de Staking y DeFi
Seguimiento de Recompensas por Staking
Registra las recompensas de staking con un reconocimiento de ingresos adecuado. Las unidades que llegan y los ingresos reconocidos son el mismo evento visto desde dos lados, así que sus pesos deben cancelarse: [unidades] × [precio] de activo entrante, la misma cantidad de dólares de ingresos salientes — y los ingresos son un crédito, así que son negativos.
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.50Los {2,500.00 USD} y {0.50 USD} son valoraciones externas. Beancount almacena lo que escribas; no busca un precio ni decide qué cotización es la correcta. Elige una fuente — el exchange en el que realmente venderías, o un índice publicado — y úsala de forma consistente, porque ese número es tanto tu ingreso como tu futura base de costo.
La base de la recompensa se reconoce una vez
Los $200.00 reconocidos arriba se convierten en la base de costo de los 0.08 ETH. Venderlos después realiza solo el movimiento desde la fecha de la 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 ganancia de capital, no $240.00 — los primeros $200.00 ya fueron ingresos en enero. Registrar los $240.00 completos como ganancia es la forma más común de que los ingresos por recompensas se cuenten dos veces. Cuándo se vuelve imponible la recompensa, y a qué tasa, varía según la jurisdicción; el libro mayor registra la recepción y la enajenación por separado para que cualquiera de los dos tratamientos pueda reportarse a partir de él.
Seguimiento de Rendimientos DeFi
Rastrea posiciones DeFi complejas:
Proporcionar liquidez intercambia dos mercancías por una tercera, así que cada pata debe pesar en la misma moneda antes de que la transacción pueda balancearse. Las patas de ETH y LP ya lo hacen, porque llevan un costo; la pata de la stablecoin necesita un @ 1.00 USD explícito, de lo contrario Beancount ve salir 25,000 unidades de USDC y llegar $25,000.00 de valor, que son mercancías diferentes y no se cancelan.
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.00Gestión Automatizada del Portafolio
Importación de datos del exchange
Beancount no incluye ningún cliente de API de exchanges, y no hay ningún archivo de configuración que lo haga hablar con Coinbase o Binance. La ruta admitida es un importer: descargas la exportación CSV del exchange (o la obtienes con tu propio script) y la conviertes en transacciones de Beancount con beangulp, el framework de importadores que sucedió al beancount.ingest integrado de Beancount 2. beancount.ingest no existe en Beancount 3.
Si escribes un script de obtención, su archivo de credenciales es solo tuyo — nada en la cadena de herramientas de Beancount lo lee:
# 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"Conciliación Automatizada
Configura la verificación 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 ADAEsos tres números provienen de tus pantallas de exchange, no de esta página, así que el bloque anterior no verificará contra nada hasta que tus propias transacciones estén en el libro mayor. Dos reglas deciden si verifica en absoluto. Una directiva balance afirma el saldo al comienzo del día nombrado, así que una afirmación fechada el 2024-01-31 no ve nada registrado el 2024-01-31 — fíjala el día siguiente al período que estás cerrando. Y toda cuenta afirmada debe estar abierta, que es la razón por la que Assets:Crypto:Kraken:ADA aparece en la sección Jerarquía básica de cuentas anterior.
Precios gestionados en un libro alojado
Usa Precios en vivo para elegir una moneda de valoración y los activos cripto compatibles, luego pega los includes generados en tu libro alojado. Los símbolos de los activos deben coincidir con tus tenencias. Las fuentes proporcionan precios de valoración con fecha; no establecen el monto del ingreso ni el costo de adquisición de recompensas de staking y airdrops.
Tu propio precio tiene precedencia para la misma fecha y par, incluido el par recíproco. Una cotización en caché puede estar obsoleta durante una interrupción, así que verifica su hora de observación. El flujo de trabajo de obtención local a continuación sigue siendo útil para Beancount y Fava originales.
Mantener los precios actualizados
Los precios viven en el libro mayor como directivas price. Beancount 3.2.3 original no los obtiene por sí mismo; los includes gestionados alojados usan la extensión del cargador de Beancount.io descrita arriba. No existe ninguna directiva custom "price-source" — un símbolo de mercancía desnudo ni siquiera es un valor custom válido, así que esa línea es un error de sintaxis — y no existe ningún módulo beancount.plugins.forecast; el cargador se detiene con un error de importación si lo nombras.
Habilita beanprice dentro del motor gestionado con bea engine enable beanprice, luego obtén cotizaciones con bea price main.beancount. Lee un campo de metadatos price: en cada directiva commodity, en la forma "<quote currency>:<source module>/<ticker>", y escribe directivas price que agregas a tu libro mayor:
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 USDCualquier otro metadato que adjuntes a una mercancía — sector, website, o el campo price-source usado antes en esta guía — es documentación de forma libre para tu propio beneficio. El cargador lo almacena y ninguna herramienta actúa sobre él.
Estrategias de Optimización Fiscal
Cosecha de Pérdidas Fiscales
Implementa una cosecha de pérdidas fiscales sistemática:
; 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 USDGanancias a Largo Plazo vs Corto Plazo
Rastrea los períodos de tenencia para la optimización 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 basisEl enlace ^long-term-btc en ambas entradas es lo que te permite recuperar juntas la compra y la venta más tarde; Beancount no rastrea los períodos de tenencia por sí mismo.
Informes y Análisis
Informes Resumidos de Cartera
Calcula la participación de cada criptomoneda en el portafolio en una sola moneda de valoración. Este ejemplo usa precios en USD disponibles el 31 de marzo de 2024, y tenencias antes del 1 de abril. Cambia ambas fechas juntas para una fecha de informe diferente. Ejecuta la sentencia SELECT de abajo en tu herramienta de consultas BQL local.
-- Portfolio allocation by cryptocurrency
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;Verifica que cada allocation_value distinto de cero esté en USD antes de calcular porcentajes. La conversión usa los precios registrados disponibles en o antes de la fecha de valoración. Una conversión faltante puede dejar un monto en su moneda original. Si queda algún monto que no sea USD en BTC, ETH u otro, la valoración está incompleta. Agrega los precios con fecha que falten y vuelve a ejecutar; no trates los activos sin precio como cero ni sumes unidades de monedas no relacionadas.
Suma los montos en USD para obtener el total del portafolio. Luego calcula la asignación de cada activo como valor USD del activo / valor USD total * 100. Conserva la precisión completa hasta mostrar el porcentaje. Por ejemplo, tenencias de 1 BTC y 3 ETH, con precios de 200 USD por BTC y 20 USD por ETH, dan:
| Activo | Valor en USD | Cálculo de asignación | Participación mostrada |
|---|---|---|---|
| BTC | 200 | 200 / 260 * 100 | 76.92% |
| ETH | 60 | 60 / 260 * 100 | 23.08% |
| Total | 260 | 260 / 260 * 100 | 100.00% |
Redondear las participaciones individuales a dos decimales puede hacer que su suma mostrada difiera ligeramente de 100%. Un inventario con valor cero puede mostrarse en blanco. Para un portafolio vacío o un total en USD de cero, reporta las asignaciones como no disponibles y no dividas por cero. Este ejemplo describe tenencias positivas de activos; los saldos negativos requieren interpretar exposiciones con signo en lugar de participaciones ordinarias del portafolio.
Análisis de Rendimiento
Reporta el valor de cierre del portafolio de cada mes usando todas las tenencias antes del mes siguiente. Establece la fecha de valoración al fin de mes para que los precios posteriores no puedan cambiar la instantánea. Estos ejemplos reportan en USD. Ejecuta cada SELECT por separado en tu herramienta de consultas BQL local.
Para el 31 de enero:
SELECT convert(sum(position), 'USD', 2024-01-31) AS portfolio_value
FROM close ON 2024-02-01
WHERE account ~ '^Assets:Crypto:';Para el 29 de febrero:
SELECT convert(sum(position), 'USD', 2024-02-29) AS portfolio_value
FROM close ON 2024-03-01
WHERE account ~ '^Assets:Crypto:';Para el 31 de marzo:
SELECT convert(sum(position), 'USD', 2024-03-31) AS portfolio_value
FROM close ON 2024-04-01
WHERE account ~ '^Assets:Crypto:';FROM close ON excluye los postings fechados en o después de su límite. La fecha dentro de convert selecciona los precios disponibles en o antes de la fecha de informe. Para otro mes, cambia ambas fechas juntas. Solicita cada mes que quieras reportar, incluidos los meses sin transacciones. Verifica si hay monedas sin convertir como se describe arriba antes de tratar el resultado como un total en USD.
Por ejemplo, supón que enero termina con 2 BTC a 100 USD cada uno y 3 ETH a 10 USD cada uno. Vender 1 BTC en febrero deja 1 BTC y 3 ETH. Si marzo no tiene operaciones pero los precios registrados suben a 200 USD por BTC y 20 USD por ETH, las instantáneas son:
| Fin de mes | Valor cripto de cierre |
|---|---|
| 31 de enero | 2 * 100 + 3 * 10 = 230 USD |
| 29 de febrero | 1 * 100 + 3 * 10 = 130 USD |
| 31 de marzo | 1 * 200 + 3 * 20 = 260 USD |
El valor de febrero asume que no hay nuevas directivas de precios ese mes. El precio @ de una venta registra sus ingresos; no crea una directiva de precio de mercado. Estas consultas cubren solo las cuentas Assets:Crypto:, así que los ingresos en efectivo mantenidos en otro lugar quedan excluidos.
Agrupar los postings por mes de transacción mide los movimientos de cada mes, no las tenencias de cierre acumuladas. También omite los meses sin transacciones. Los cambios entre valores de cierre incluyen compras, ventas, transferencias y cambios de precio. No son retornos de inversión ajustados por flujos de efectivo.
Análisis de Ingresos
Analiza las fuentes de ingresos:
-- Income breakdown by source
SELECT
account,
sum(position) as total_income
WHERE account ~ "Income:Crypto"
GROUP BY account
ORDER BY total_income DESC;Mejores Prácticas y Consejos
1. Registro Consistente
- Registra las transacciones inmediatamente después de su ejecución
- Usa descripciones de transacciones estandarizadas
- Incluye los hashes de transacción en los metadatos
2. Conciliación Regular
- Verifica los saldos semanalmente en todas las plataformas
- Usa afirmaciones de saldo para detectar discrepancias
- Vigila las transacciones faltantes
3. Respaldo y Seguridad
- Haz copias de seguridad de tus archivos de Beancount con regularidad
- Usa control de versiones (Git) para el seguimiento de cambios
- Cifra los datos sensibles
4. Documentación
- Documenta tus decisiones sobre la estructura de cuentas
- Mantén notas sobre transacciones complejas
- Conserva registros de las configuraciones de API
5. Preparación de Impuestos
- Genera informes trimestrales para la planificación fiscal
- Mantén registros detallados para fines de auditoría
- Consulta con profesionales fiscales para situaciones complejas
Conclusión
El seguimiento eficaz de una cartera de criptomonedas requiere precisión, consistencia y las herramientas adecuadas. Beancount.io ofrece la flexibilidad y la potencia necesarias para gestionar carteras de criptomonedas complejas en múltiples exchanges, carteras y protocolos DeFi.
Beneficios clave de usar Beancount.io para el seguimiento de carteras de criptomonedas:
- Propiedad total de los datos: Tus datos en formato de texto plano
- Base de costo precisa: Seguimiento por lotes con identificación específica
- Flexibilidad ilimitada: Estructuras de cuentas e informes personalizados
- Optimización fiscal: Estrategias avanzadas para minimizar la carga fiscal
- A prueba de futuro: El formato abierto garantiza accesibilidad a largo plazo
Comienza con una configuración básica y amplía gradualmente tu seguimiento a medida que tu cartera crece en complejidad. La inversión en una configuración adecuada dará sus frutos en informes precisos, optimización fiscal y conocimiento de la cartera.
¿Listo para tomar el control de tu cartera de criptomonedas? Comienza con Beancount.io hoy.