مدیریت پرتفوی ارز دیجیتال در چندین صرافی، کیف پول و پروتکلهای دیفای میتواند چالشبرانگیز باشد. این راهنمای جامع نحوه راهاندازی و نگهداری پیگیری دقیق پرتفوی ارز دیجیتال با استفاده از سیستم حسابداری متنمحور قدرتمند Beancount.io را به شما نشان میدهد.
مثال زنده دفتر کل ارز دیجیتال را بررسی کنید:
چرا ردیابهای سنتی پرتفوی ناکافی هستند
مشکلات رایج ابزارهای پرتفوی کریپتو
- پشتیبانی محدود از صرافیها: بسیاری از ابزارها همه صرافیها یا پروتکلهای دیفای را پشتیبانی نمیکنند
- مبنای هزینه نادرست: محاسبات ساده FIFO/LIFO پیچیدگیها را از دست میدهد
- معاملات جاافتاده: محدودیتهای API و شکافهای ورود دستی
- عدم امکان شخصیسازی: دستهبندیها و ساختارهای گزارشگیری ثابت
- نگرانیهای حریم خصوصی: به اشتراکگذاری کلیدهای API با سرویسهای شخص ثالث
- قفل فروشنده: فرمتهای داده اختصاصی و گزینههای محدود صادرات
مزایای Beancount.io
- کنترل کامل: مالک دادههای خود به فرمت متن ساده باشید
- شخصیسازی نامحدود: هر ساختار حسابی که لازم دارید ایجاد کنید
- مبنای هزینه دقیق: پیگیری مبتنی بر دسته با شناسایی خاص
- پشتیبانی چندپروتکلی: مدیریت هر صرافی، کیف پول یا پروتکل دیفای
- محاسبات شفاف: دقیقاً ببینید اعداد چگونه محاسبه میشوند
- آیندهپذیر: فرمت متنساده دسترسی بلندمدت را تضمین میکند
راهاندازی ساختار پرتفوی کریپتوی شما
سلسله مراتب پایه حسابها
با یک ساختار حساب جامع که اکوسیستم کریپتو شما را منعکس میکند شروع کنید:
; 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، که در مدیریت موجودی توضیح داده شده است.
تجزیه و تحلیل عملکرد پرتفولیوی سرمایه گذاری
تنظیم ردیابی قیمت
تنظیم خوراکهای قیمت خودکار برای ارزیابی دقیق:
; 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"ادغام استیکینگ و دیفای
ردیابی پاداشهای استیکینگ
ثبت پاداشهای استیکینگ با شناسایی درآمد مناسب. واحدهای وارد شده و درآمد شناسایی شده همان رویداد هستند که از دو منظر دیده میشوند، بنابراین وزنهایشان باید خنثی شوند: [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 هرچه بنویسید ذخیره میکند؛ قیمت نمیگیرد یا تعیین نمیکند که کدام قیمت صحیح است. یک منبع انتخاب کنید — صرافی که واقعاً در آن فروش میکنید یا یک شاخص منتشر شده — و آن را مداوم استفاده کنید، زیرا آن عدد هم درآمد شما و هم مبنای هزینه آینده شما است.
مبنای پاداش یکبار شناسایی میشود
۲۰۰.۰۰ دلار شناسایی شده بالا به مبنای هزینه ۰.۰۸ 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۴۰.۰۰ دلار سود سرمایه، نه ۲۴۰.۰۰ دلار — ۲۰۰.۰۰ دلار اول در ژانویه به عنوان درآمد ثبت شده بود. ثبت کل ۲۴۰.۰۰ دلار به عنوان سود رایجترین روش شمارش دو برابری درآمد پاداش است. اینکه پاداش چه زمانی مشمول مالیات میشود و با چه نرخ، بستگی به حوزه قضایی دارد؛ دفتر کل دریافت و فروش را جداگانه ثبت میکند تا هر دو روش گزارش ممکن باشد.
ردیابی بازده دیفای
موقعیتهای پیچیده دیفای را ردیابی کنید:
ارائه نقدینگی دو کالا را برای کالای سوم معاوضه میکند، بنابراین هر بخش باید به ارز یکسان وزن شود تا معامله تراز شود. بخش ETH و LP قبلاً این کار را کردهاند چون هزینه دارند؛ بخش استیبلکوین نیاز به @ 1.00 USD صریح دارد، وگرنه Beancount خروج ۲۵,۰۰۰ واحد USDC و ورود ۲۵,۰۰۰.۰۰ دلار ارزش را میبیند که کالاهای متفاوتی هستند و تراز نمیشوند.
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 خروجی صرافی را دانلود میکنید (یا با اسکریپت خود میگیرید) و آن را با beangulp، چارچوب واردکننده که جایگزین beancount.ingest داخلی Beancount 2 شد، به تراکنشهای Beancount تبدیل میکنید. beancount.ingest در Beancount 3 وجود ندارد.
اگر اسکریپت fetch مینویسید، فایل اعتبارسنجی آن فقط متعلق به شماست — هیچ چیزی در زنجیره ابزار 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 در بخش ساختار پایهای حسابها بالا ظاهر میشود.
بهروز نگه داشتن قیمتها
قیمتها به صورت دستورات price در دفتر کل ذخیره میشوند، و هیچ چیزی در Beancount 3.2.3 آنها را برای شما fetch نمیکند. دستوری به نام custom "price-source" وجود ندارد — نماد کالا بهتنهایی حتی یک مقدار معتبر custom نیست، بنابراین آن خط یک خطای نحوی است — و ماژول beancount.plugins.forecast وجود ندارد؛ اگر آن را نام ببرید، بارگذاریکننده با خطای واردات متوقف میشود.
با استفاده از bea engine enable beanprice، beanprice را درون موتور مدیریتشده فعال کنید، سپس با bea price main.beancount قیمتها را fetch کنید. این برنامه فیلد متادیتا 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 خودش دورههای نگهداری را دنبال نمیکند.
گزارشدهی و تحلیلها
گزارشهای خلاصه پرتفوی
گزارشهای جامع پرتفوی تولید کنید:
-- 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. تسویه منظم
- بررسی هفتگی ترازها در تمام پلتفرمها
- استفاده از اظهارنامههای تراز برای کشف اختلافات
- نظارت بر تراکنشهای مفقود شده
۳. پشتیبانگیری و امنیت
- پشتیبانگیری منظم از فایلهای Beancount خود
- استفاده از کنترل نسخه (Git) برای ردیابی تغییرات
- رمزنگاری دادههای حساس
۴. مستندسازی
- ثبت تصمیمات ساختار حساب خود
- نگهداری یادداشتها درباره تراکنشهای پیچیده
- نگهداری سوابق پیکربندیهای API
۵. آمادهسازی مالیاتی
- تولید گزارشهای فصلی برای برنامهریزی مالیاتی
- حفظ سوابق دقیق برای اهداف ممیزی
- مشورت با متخصصان مالیاتی در شرایط پیچیده
نتیجهگیری
پیگیری موثر پرتفوی رمزارز نیازمند دقت، ثبات و ابزارهای مناسب است. Beancount.io انعطافپذیری و قدرت لازم برای مدیریت پرتفویهای پیچیده کریپتو را در صرافیها، کیفپولها و پروتکلهای دیفای مختلف فراهم میکند.
مزایای کلیدی استفاده از Beancount.io برای پیگیری پرتفوی رمزارز:
- مالکیت کامل دادهها: دادههای شما به صورت متن ساده
- هزینه مبنای دقیق: ردیابی مبتنی بر دسته با شناسایی خاص
- انعطافپذیری نامحدود: ساختار حساب سفارشی و گزارشگیری
- بهینهسازی مالیاتی: استراتژیهای پیشرفته برای کاهش مسئولیت مالیاتی
- آیندهنگر: فرمت باز تضمین دسترسی بلندمدت
با یک تنظیمات پایه شروع کنید و به تدریج پیگیری خود را با افزایش پیچیدگی پرتفوی گسترش دهید. سرمایهگذاری در تنظیمات درست، در گزارشدهی دقیق، بهینهسازی مالیاتی و درک بهتر پرتفوی به شما سود خواهد رساند.
آماده کنترل پرتفوی رمزارز خود هستید؟ امروز با Beancount.io شروع کنید.