Управлението на портфейл от криптовалути между множество борси, портфейли и DeFi протоколи може да бъде предизвикателство. Това изчерпателно ръководство ви показва как да настроите и поддържате точно проследяване на криптовалутен портфейл с помощта на мощната система за счетоводство с обикновен текст на Beancount.io.
Разгледайте примерен регистър на живо за криптовалути:
Защо традиционните тракери за портфолио са недостатъчни
Чести проблеми с инструментите за крипто портфолио
- Ограничена поддръжка на борси: Много инструменти не поддържат всички борси или DeFi протоколи
- Неточна данъчна основа: Опростените изчисления по FIFO/LIFO пропускат сложни сценарии
- Липсващи транзакции: Ограничения на API и пропуски при ръчно въвеждане
- Без персонализация: Фиксирани категории и структури за отчетност
- Притеснения за поверителността: Споделяне на API ключове с услуги на трети страни
- Обвързване с доставчик: Патентовани формати на данни и ограничени опции за експортиране
Предимства на Beancount.io
- Пълен контрол: Притежавайте данните си във формат с обикновен текст
- Неограничена персонализация: Създайте всякаква структура на сметки, която ви е нужна
- Точна данъчна основа: Проследяване на база лотове със специфична идентификация
- Поддръжка на множество протоколи: Работете с всяка борса, портфейл или 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Тук едно правило за именуване създава проблеми и парсерът го налага, а не конвенцията: всеки компонент на сметката и всеки символ на стока трябва да започва с главна буква или цифра. Compound изписва своя токен за разписка cUSDC в целия си собствен интерфейс, но Assets:DeFi:Compound:cUSDC и стока cUSDC са и двете лексерни грешки. Изписвайте ги 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}Възможности за арбитраж
Арбитражът е едно икономическо събитие на две места, така че го записвайте като една транзакция. Този запис продава 10 ETH, които вече държите в Coinbase, при $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Три неща за копиране:
- Никога не оставяйте празен ред между постингите. Празният ред завършва транзакцията и Beancount отчита синтактична грешка за постингите след него. Вместо това използвайте отстъпени
;коментари, за да обозначите краката — което правят двата коментарни реда по-горе. - Печалбата е печалбата от освобождаването, $800.00, и е отрицателна, защото сметките
Incomeсъдържат кредити. $55.00 такси са отделно: те превръщат $800.00 брутен спред в $745.00 печалба и вече са записани в собствените им два постинга. - Кракът за продажба намалява лот, който трябва вече да притежавате. Този запис предполага 10 ETH, купени по-рано в Coinbase при $2,500.00; без този лот намалението няма срещу какво да се осчетоводи.
Разширено управление на себестойността
Проследяване по лотове
Системата на база лотове на 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Метод за специфична идентификация
Продавайте конкретни лотове за оптимално управление на данъците. Посочването на цената на лота в постинга за намаление е това, което означава "специфична идентификация" в Beancount, и работи при подразбиращия се режим на резервация 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 proceedsПродажба на най-стария или най-новия лот
Посочването на различна цена избира различен лот. Тези две продажби вземат лота за $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 да избере лота вместо вас, задайте метод на резервация на сметката, вместо да посочвате цена — "FIFO", "LIFO" или "HIFO" в директивата open, описана в Управление на инвентара.
Анализ на представянето на портфейла
Настройка на проследяване на цените
Настройте автоматични потоци от цени за точна оценка:
За хоствани книги Live Prices предоставя поддържаните двойки автоматично. Статичните директиви по-долу показват данните, които една оценка използва, и остават полезни за възпроизводими локални примери.
; 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
Проследяване на наградите от залагания
Записвайте наградите от стейкинг с правилно признаване на приходи. Пристигащите единици и признатият приход са едно и също събитие, видяно от две страни, така че тежестите им трябва да се компенсират: [units] × [price] на актива влизащ, същият брой долари приход излизащ — а приходът е кредит, така че е отрицателен.
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$40.00 капиталова печалба, а не $240.00 — първите $200.00 вече бяха приход през януари. Осчетоводяването на цялата сума от $240.00 като печалба е най-честият начин приходът от награди да бъде преброен два пъти. Кога наградата става облагаема и с каква ставка варира според юрисдикцията; регистърът записва получаването и освобождаването отделно, така че и двата подхода могат да бъдат отчетени от него.
Проследяване на доходността от DeFi
Проследявайте сложни DeFi позиции:
Предоставянето на ликвидност заменя две стоки за трета, така че всеки крак трябва да тежи в една и съща валута, преди транзакцията да може да се балансира. Краковете на ETH и LP вече го правят, защото носят цена; кракът на стейбълкойна се нуждае от ясен @ 1.00 USD, иначе Beancount вижда 25,000 единици USDC да напускат и $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. Поддържаният път е импортер: изтегляте CSV експорта на борсата (или го извличате със собствен скрипт) и го преобразувате в Beancount транзакции с beangulp, рамката за импортиране, наследила вградения beancount.ingest на Beancount 2. 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 се появява в секцията Основна йерархия на сметките по-горе.
Управлявани цени в хостван регистър
Използвайте Live Prices, за да изберете валута за оценка и поддържани крипто активи, след което поставете генерираните включвания във вашия хостван регистър. Символите на активите трябва да съвпадат с вашите притежания. Потоците предоставят датирани цени за оценка; те не задават размера на прихода или цената на придобиване на награди от стейкинг и аирдропи.
Вашата собствена цена има предимство за същата дата и двойка, включително реципрочната двойка. Кеширана котировка може да е остаряла по време на прекъсване, така че проверете времето на наблюдението ѝ. Локалният работен процес за извличане по-долу остава полезен за upstream Beancount и Fava.
Поддържане на цените актуални
Цените живеят в регистъра като директиви price. Upstream Beancount 3.2.3 не ги извлича сам; хостваните управлявани включвания използват разширението на зареждача на Beancount.io, описано по-горе. Няма директива custom "price-source" — гол символ на стока дори не е валидна стойност на custom, така че този ред е синтактична грешка — и няма модул beancount.plugins.forecast; зареждачът спира с грешка при импортиране, ако го посочите.
Активирайте beanprice в управлявания двигател с bea engine enable beanprice, след което извлечете котировки с bea price main.beancount. Той чете поле за метаданни price: на всяка директива commodity, във формата "<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, използвано по-рано в това ръководство — са свободна документация за ваша собствена полза. Зареждачът ги съхранява и нито един инструмент не действа въз основа на тях.
Стратегии за оптимизация на данъците
Събиране на данъчни загуби
Приложете систематично събиране на данъчни загуби:
; 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 не проследява сам периодите на държане.
Докладване и анализи
Доклади за обобщение на портфейла
Изчислете дела на всяка криптовалута в портфейла в една валута за оценка. Този пример използва наличните USD цени към 31 март 2024 г. и притежанията преди 1 април. Променете двете дати заедно за различна дата на отчитане. Изпълнете инструкцията SELECT по-долу в локалния си инструмент за BQL заявки.
-- 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;Проверете дали всяка ненулева стойност allocation_value е в USD, преди да изчислявате проценти. Преобразуването използва записани цени, налични на или преди датата на оценка. Липсващо преобразуване може да остави сума в първоначалната ѝ валута. Ако остане някаква сума в BTC, ETH или друга не-USD валута, оценката е непълна. Добавете липсващите датирани цени и изпълнете отново; не третирайте активите без цена като нула и не добавяйте несвързани валутни единици.
Съберете USD сумите, за да получите общата стойност на портфейла. След това изчислете разпределението на всеки актив като USD стойност на актива / обща USD стойност * 100. Запазете пълната точност, докато показвате процента. Например притежания от 1 BTC и 3 ETH, оценени на 200 USD за BTC и 20 USD за ETH, дават:
| Актив | USD стойност | Изчисление на разпределението | Показан дял |
|---|---|---|---|
| BTC | 200 | 200 / 260 * 100 | 76.92% |
| ETH | 60 | 60 / 260 * 100 | 23.08% |
| Общо | 260 | 260 / 260 * 100 | 100.00% |
Закръгляването на отделните дялове до два знака след десетичната запетая може да направи показания им сбор леко различен от 100%. Инвентар с нулева стойност може да се покаже като празен. За празен портфейл или нулева обща USD стойност отчитайте разпределенията като недостъпни и не делете на нула. Този пример описва положителни притежания на активи; отрицателните баланси изискват тълкуване на позиции със знак, вместо на обикновени дялове в портфейла.
Анализ на представянето
Отчитайте стойността на портфейла в края на всеки месец, като използвате всички притежания преди следващия месец. Задайте датата на оценка на края на месеца, така че по-късните цени да не могат да променят моментната снимка. Тези примери отчитат в USD. Изпълнете всяка SELECT отделно в локалния си инструмент за BQL заявки.
За 31 януари:
SELECT convert(sum(position), 'USD', 2024-01-31) AS portfolio_value
FROM close ON 2024-02-01
WHERE account ~ '^Assets:Crypto:';За 29 февруари:
SELECT convert(sum(position), 'USD', 2024-02-29) AS portfolio_value
FROM close ON 2024-03-01
WHERE account ~ '^Assets:Crypto:';За 31 март:
SELECT convert(sum(position), 'USD', 2024-03-31) AS portfolio_value
FROM close ON 2024-04-01
WHERE account ~ '^Assets:Crypto:';FROM close ON изключва записите с дата на или след неговата граница. Датата в convert избира цени, налични на или преди датата на отчитане. За друг месец променете двете дати заедно. Заявете всеки месец, който искате да отчетете, включително месеци без транзакции. Проверете за непреобразувани валути, както е описано по-горе, преди да третирате резултата като обща USD стойност.
Например, да предположим, че януари завършва с 2 BTC, оценени на 100 USD всеки, и 3 ETH на 10 USD всеки. Продажбата на 1 BTC през февруари оставя 1 BTC и 3 ETH. Ако март няма сделки, но записаните цени се покачат до 200 USD за BTC и 20 USD за ETH, моментните снимки са:
| Край на месеца | Стойност на криптото в края |
|---|---|
| 31 януари | 2 * 100 + 3 * 10 = 230 USD |
| 29 февруари | 1 * 100 + 3 * 10 = 130 USD |
| 31 март | 1 * 200 + 3 * 20 = 260 USD |
Стойността за февруари предполага липсата на нови директиви за цени през този месец. Цената @ на една продажба записва нейните постъпления; тя не създава директива за пазарна цена. Тези заявки обхващат само сметки Assets:Crypto:, така че паричните постъпления, държани другаде, са изключени.
Групирането на записите по месец на транзакцията измерва движенията на всеки месец, а не кумулативните притежания в края. То също пропуска месеци без транзакции. Промените между стойностите в края включват покупки, продажби, трансфери и промени в цените. Те не са инвестиционни възвръщаемости, коригирани за парични потоци.
Анализ на доходите
Анализирайте източниците на приходи:
-- 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 още днес.