メインコンテンツへスキップ

Beancountで原価基準を用いて暗号資産ポートフォリオを追跡する

Beancountで取引所をまたいで暗号資産ポートフォリオを追跡し、原価基準、ロット、パフォーマンス分析を一つの台帳でまとめて管理できます。

複数の取引所、ウォレット、DeFiプロトコルにまたがる暗号資産ポートフォリオの管理は難しいものです。この包括的なガイドでは、Beancount.ioの強力なプレーンテキスト会計システムを使って、正確な暗号資産ポートフォリオの追跡を設定・維持する方法を説明します。

実際の暗号資産のサンプル元帳を見てみましょう:

新しいタブで Cryptocurrency Example Ledger を開く

従来のポートフォリオトラッカーが不足する理由​

暗号ポートフォリオツールの一般的な問題点​

  • 限られた取引所サポート: 多くのツールはすべての取引所や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

ここで引っかかる命名規則が1つあり、それは慣習ではなくパーサーによって強制されます: すべての勘定の構成要素、およびすべての商品シンボルは、大文字または数字で始まらなければなりません。 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}

アービトラージ機会​

アービトラージは2つの場所にまたがる1つの経済的出来事なので、1つのトランザクションとして記録します。このエントリは、すでにCoinbaseで保有している10 ETHを$2,580.00で売却し、同時にBinanceで$2,500.00でポジションを回復します:

2024-02-10 * "Arbitrage: Buy ETH on Binance, Sell on Coinbase"
  ; Buy leg on Binance
  Assets:Crypto:Binance:ETH       10 ETH {2500.00 USD}
  Assets:Crypto:Binance:USD   -25000.00 USD
  Expenses:Crypto:Fees:Trading    25.00 USD
  Assets:Crypto:Binance:USD      -25.00 USD
  ; Sell leg on Coinbase, at the higher price
  Assets:Crypto:Coinbase:ETH     -10 ETH {2500.00 USD} @ 2580.00 USD
  Assets:Crypto:Coinbase:USD   25800.00 USD
  Expenses:Crypto:Fees:Trading    30.00 USD
  Assets:Crypto:Coinbase:USD     -30.00 USD
  Income:Crypto:Arbitrage       -800.00 USD  ; 25,800.00 proceeds - 25,000.00 basis

コピーすべき3つのポイント:

  • ポスティング間に空行を決して入れないでください。 空行はトランザクションを終了させ、Beancountはその後のポスティングに対して構文エラーを報告します。代わりにインデントされた;コメントでレッグにラベルを付けてください — 上の2行のコメント行がまさにそれを行っています。
  • 利得は処分の利得、$800.00であり、Income勘定は貸方を保持するためマイナスになります。$55.00の手数料は別です: これは$800.00のグロススプレッドを$745.00の利益に変えるものであり、それ自体の2つのポスティングにすでに記録されています。
  • 売却レッグは、すでに保有していなければならないロットを減少させます。このエントリは、以前にCoinbaseで$2,500.00で購入した10 ETHを前提としています。そのロットがなければ、減少させるものに対して記帳する対象がありません。

高度な原価基準管理​

ロットベースのトラッキング​

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はそれらをマイナスの数値として保存します。したがって、以下のすべての利得は収益勘定へのマイナスのポスティングであり、すべての損失は費用勘定へのプラスのポスティングです。手数料はそのどちらとも別です: それ自体が費用であるため、利得からも差し引くと二重に控除され、トランザクションが不均衡になります。

1回の処分について、計算は常に次のとおりです:

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

最古または最新のロットの売却​

異なる原価を指定すると、異なるロットが選択されます。この2つの売却は、$40,000.00のロット、次に$45,000.00のロットを取ります — 上の例で$50,000.00のロットが消えた後に残っている2つです — これはFIFOとLIFOが自動的に行うのと同じ選択を、手作業で明示したものです:

; Sell the oldest lot (bought 2024-01-01 at $40,000.00)
2024-05-01 * "Sell 0.5 BTC from the oldest lot"
  Assets:Crypto:Coinbase:BTC    -0.5 BTC {40000.00 USD} @ 52000.00 USD
  Assets:Crypto:Coinbase:USD   26000.00 USD  ; gross proceeds, 0.5 * 52,000.00
  Expenses:Crypto:Fees:Trading    30.00 USD
  Assets:Crypto:Coinbase:USD     -30.00 USD
  Income:CapitalGains:Crypto   -6000.00 USD  ; 26,000.00 proceeds - 20,000.00 basis
 
; Sell the newest remaining lot (bought 2024-02-01 at $45,000.00)
2024-05-02 * "Sell 0.5 BTC from the newest lot"
  Assets:Crypto:Coinbase:BTC    -0.5 BTC {45000.00 USD} @ 52000.00 USD
  Assets:Crypto:Coinbase:USD   26000.00 USD
  Expenses:Crypto:Fees:Trading    30.00 USD
  Assets:Crypto:Coinbase:USD     -30.00 USD
  Income:CapitalGains:Crypto   -3500.00 USD  ; 26,000.00 proceeds - 22,500.00 basis

同じ売却価格、異なるロットで、実現利得に$2,500.00の差があります。Beancountにロットを選ばせたい場合は、原価を指定する代わりに勘定にブッキング方法を設定してください — openディレクティブに"FIFO"、"LIFO"、または"HIFO"を指定します。詳細は在庫管理に記載されています。

ポートフォリオパフォーマンス分析​

価格追跡の設定​

正確な評価のために自動価格フィードを設定します:

ホスト型の帳簿では、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統合​

ステーキング報酬の追跡​

適切な収益認識とともにステーキング報酬を記録します。入ってくる単位と認識される収益は、2つの側面から見た同じ出来事であるため、それらのウェイトは相殺されなければなりません: 入ってくる資産の[単位] × [価格]、出ていく同じ金額のドルの収益 — そして収益は貸方なのでマイナスです。

2024-01-31 * "ETH Staking Rewards - January"
  Assets:Staking:Ethereum:ETH     0.08 ETH {2500.00 USD}
  Income:Crypto:Staking:ETH     -200.00 USD  ; 0.08 * 2,500.00
 
2024-01-31 * "ADA Staking Rewards - January"
  Assets:Staking:Cardano:ADA        25 ADA {0.50 USD}
  Income:Crypto:Staking:ADA      -12.50 USD  ; 25 * 0.50

{2,500.00 USD}と{0.50 USD}は外部評価です。Beancountはあなたが書いたものをそのまま保存します; 価格を取得したり、どのクォートが正しいかを判断したりはしません。ソースを選んでください — 実際に売却する取引所、または公表された指数 — そして一貫してそれを使用してください。その数値はあなたの収益と将来の取得原価の両方だからです。

報酬の基準は一度だけ認識されます​

上で認識された$200.00は、0.08 ETHの取得原価になります。後でそれを売却すると、報酬日以降の変動のみが実現されます:

2024-06-30 * "Sell the January ETH staking reward"
  Assets:Staking:Ethereum:ETH   -0.08 ETH {2500.00 USD} @ 3000.00 USD
  Assets:Crypto:Coinbase:USD     240.00 USD  ; gross proceeds, 0.08 * 3,000.00
  Income:CapitalGains:Crypto     -40.00 USD  ; 240.00 proceeds - 200.00 basis

$240.00ではなく$40.00のキャピタルゲインです — 最初の$200.00は1月にすでに収益でした。$240.00全体を利得として記帳することは、報酬収益が二重に計上される最も一般的な方法です。報酬がいつ、どの税率で課税対象になるかは管轄区域によって異なります; 元帳は受領と処分を別々に記録するため、どちらの扱いもそこから報告できます。

DeFi 利回り追跡​

複雑なDeFiポジションを追跡します:

流動性の提供は2つの商品を3つ目の商品と交換するので、トランザクションが均衡する前にすべてのレッグが同じ通貨で重み付けされなければなりません。ETHとLPのレッグは原価を持っているためすでにそうなっています; ステーブルコインのレッグには明示的な@ 1.00 USDが必要です。そうでなければ、BeancountはUSDCの25,000単位が出ていき、$25,000.00の価値が入ってくると見なしますが、これらは異なる商品であり相殺されません。

2024-02-01 * "Uniswap LP Position"
  Assets:Crypto:Wallet:MetaMask:ETH    -10 ETH {2500.00 USD}
  Assets:Crypto:Wallet:MetaMask:USDC -25000 USDC @ 1.00 USD
  Assets:DeFi:Uniswap:ETH-USDC-LP      100 UNI-V2-ETH-USDC {500.00 USD}
 
2024-02-28 * "Uniswap LP Rewards - February"
  Assets:Crypto:Wallet:MetaMask:UNI    50 UNI {8.00 USD}
  Income:Crypto:DeFi:Yield          -400.00 USD  ; 50 * 8.00

自動ポートフォリオ管理​

取引所データのインポート​

Beancountは取引所APIクライアントを同梱しておらず、CoinbaseやBinanceと通信させる設定ファイルもありません。サポートされている方法はインポーターです: 取引所のCSVエクスポートをダウンロードし(または自分のスクリプトで取得し)、beangulpを使ってBeancountトランザクションに変換します。これはBeancount 2の組み込みbeancount.ingestを引き継いだインポーターフレームワークです。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

これらの3つの数値は、このページからではなく、あなたの取引所の画面から来ているため、あなた自身のトランザクションが元帳に入るまで、上のブロックは何に対しても検証されません。検証されるかどうかを決める2つのルールがあります。balanceディレクティブは指定された日の開始時点の残高を主張するため、2024-01-31付けの主張は2024-01-31にポスティングされたものを何も見ません — 締め切ろうとしている期間の翌日に日付を付けてください。そして、主張されるすべての勘定は開かれていなければなりません。だからこそAssets:Crypto:Kraken:ADAが上の基本的な勘定階層セクションに現れているのです。

ホスト型元帳での管理価格​

Live Pricesを使って評価通貨とサポートされている暗号資産を選択し、生成されたインクルードをホスト型元帳に貼り付けます。資産シンボルはあなたの保有と一致していなければなりません。フィードは日付付きの評価価格を提供します; ステーキング報酬やエアドロップの収益額や取得原価を設定するものではありません。

同じ日付とペアについて、あなた自身の価格が優先されます。逆ペアも含みます。キャッシュされたクォートは障害時に古くなっている可能性があるため、その観測時刻を確認してください。以下のローカル取得ワークフローは、上流のBeancountとFavaにとって依然として有用です。

価格の最新維持​

価格はpriceディレクティブとして元帳に存在します。上流のBeancount 3.2.3はそれ自体でそれらを取得しません; ホスト型のマネージドインクルードは上で説明したBeancount.ioのローダー拡張を使用します。custom "price-source"ディレクティブは存在せず — 裸の商品シンボルは有効なcustom値ですらないので、その行は構文エラーです — そして**beancount.plugins.forecastモジュールも存在しません**; それを指定するとローダーはインポートエラーで停止します。

マネージドエンジン内でbea engine enable beanpriceを使ってbeanpriceを有効にし、bea price main.beancountでクォートを取得します。これは各commodityディレクティブのprice:メタデータフィールドを"<クォート通貨>:<ソースモジュール>/<ティッカー>"の形式で読み取り、元帳に追記するpriceディレクティブを書き出します:

1970-01-01 commodity BTC
  name: "Bitcoin"
  asset-class: "cryptocurrency"
  price: "USD:beanprice.sources.coinbase/BTC-USD"
 
1970-01-01 commodity ETH
  name: "Ethereum"
  asset-class: "cryptocurrency"
  price: "USD:beanprice.sources.coinbase/ETH-USD"
 
; Example quotes to append after reviewing the output of bea price - and what you would otherwise type by hand
2024-01-15 price BTC 45000.00 USD
2024-01-15 price ETH 2500.00 USD

商品に付けるその他のメタデータ — sector、website、またはこのガイドの前半で使ったprice-sourceフィールド — は、あなた自身の利益のための自由形式のドキュメントです。ローダーはそれを保存し、どのツールもそれに基づいて動作しません。

税務最適化戦略​

損失繰越活用(Tax Loss Harvesting)​

体系的なタックスロスハーベスティングを実施します:

; The lot being harvested, so this block stands on its own
2024-03-01 * "Buy ADA on Binance"
  Assets:Crypto:Binance:ADA       1000 ADA {0.60 USD}
  Assets:Crypto:Binance:USD    -600.00 USD
 
; Identify positions with unrealized losses
2024-12-15 * "Tax loss harvesting - Sell ADA at loss"
  Assets:Crypto:Binance:ADA      -1000 ADA {0.60 USD} @ 0.45 USD
  Assets:Crypto:Binance:USD       450.00 USD  ; gross proceeds
  Expenses:Crypto:Fees:Trading      5.00 USD
  Assets:Crypto:Binance:USD        -5.00 USD
  Expenses:CapitalLoss:Crypto     150.00 USD  ; 600.00 basis - 450.00 proceeds
 
; Repurchase after wash sale period (31 days)
2025-01-16 * "Repurchase ADA after wash sale period"
  Assets:Crypto:Binance:ADA      1000 ADA {0.45 USD}
  Assets:Crypto:Binance:USD     -450.00 USD
  Expenses:Crypto:Fees:Trading     5.00 USD
  Assets:Crypto:Binance:USD       -5.00 USD

長期益対短期益​

税務最適化のために保有期間を追跡します:

; Use metadata to track purchase dates
2024-01-01 * "BTC Purchase - Long-term hold" ^long-term-btc
  Assets:Crypto:Coinbase:BTC  1.0 BTC {40000.00 USD}
  Assets:Crypto:Coinbase:USD -40000.00 USD
 
; Sell after one year for long-term capital gains treatment
2025-01-02 * "BTC Sale - Long-term capital gains" ^long-term-btc
  Assets:Crypto:Coinbase:BTC    -1.0 BTC {40000.00 USD} @ 55000.00 USD
  Assets:Crypto:Coinbase:USD   55000.00 USD
  Income:CapitalGains:LongTerm -15000.00 USD  ; 55,000.00 proceeds - 40,000.00 basis

両方のエントリの^long-term-btcリンクは、後で購入と売却を一緒に引き出せるようにするものです; Beancount自体は保有期間を追跡しません。

レポートと分析​

ポートフォリオ要約レポート​

包括的なポートフォリオレポートを生成します:

-- Portfolio allocation by cryptocurrency
SELECT
  commodity,
  sum(position) as total_units,
  value(sum(position)) as market_value,
  value(sum(position)) / (
    SELECT value(sum(position))
    FROM positions
    WHERE account ~ "Assets:Crypto"
  ) * 100 as allocation_percentage
WHERE account ~ "Assets:Crypto"
GROUP BY commodity
ORDER BY market_value DESC;

パフォーマンス分析​

時間の経過に伴うポートフォリオのパフォーマンスを追跡します:

-- Monthly portfolio performance
SELECT
  year(date) as year,
  month(date) as month,
  value(sum(position)) as portfolio_value
WHERE account ~ "Assets:Crypto"
GROUP BY year, month
ORDER BY year, month;

収入分析​

収益源を分析します:

-- Income breakdown by source
SELECT
  account,
  sum(position) as total_income
WHERE account ~ "Income:Crypto"
GROUP BY account
ORDER BY total_income DESC;

ベストプラクティスとヒント​

1. 一貫した記録​

  • 約定直後にトランザクションを記録する
  • 標準化されたトランザクション説明を使用する
  • メタデータにトランザクションハッシュを含める

2. 定期的な照合​

  • すべてのプラットフォームにわたって毎週残高を検証する
  • 残高主張を使って不一致を検出する
  • 欠落したトランザクションを監視する

3. バックアップとセキュリティ​

  • Beancountファイルを定期的にバックアップする
  • 変更追跡にバージョン管理(Git)を使用する
  • 機密データを暗号化する

4. ドキュメント​

  • 勘定構造の決定を文書化する
  • 複雑なトランザクションに関するメモを維持する
  • API設定の記録を保管する

5. 税務準備​

  • 税務計画のために四半期ごとにレポートを生成する
  • 監査目的のために詳細な記録を維持する
  • 複雑な状況については税務専門家に相談する

結論​

効果的な暗号資産ポートフォリオの追跡には、精度、一貫性、そして適切なツールが必要です。Beancount.ioは、複数の取引所、ウォレット、DeFiプロトコルにまたがる複雑な暗号資産ポートフォリオを管理するために必要な柔軟性とパワーを提供します。

暗号資産ポートフォリオの追跡にBeancount.ioを使う主な利点:

  • 完全なデータ所有権: プレーンテキスト形式でのあなたのデータ
  • 正確な取得原価: 特定識別を用いたロット単位の追跡
  • 無限の柔軟性: カスタムの勘定構造とレポート
  • 税務最適化: 納税義務を最小化するための高度な戦略
  • 将来性: オープン形式が長期的なアクセシビリティを保証

基本的な設定から始めて、ポートフォリオが複雑になるにつれて徐々に追跡を拡張してください。適切な設定への投資は、正確なレポート、税務最適化、ポートフォリオの洞察という形で配当を生み出します。

暗号資産ポートフォリオを管理する準備はできましたか? 今すぐBeancount.ioを始めましょう。

出典: https://beancount.io/ja/docs/Solutions/cryptocurrency-portfolio-tracking