ここでは、実用的な構造、ルール、例を織り交ぜながら、Beancount言語の構文について簡潔かつ包括的なリファレンスを提供します。詳細については、チートシートを参照してください。
概要
Beancountはプレーンテキストの複式簿記システムです。その言語は、3つの主要な構成要素を中心に構成されています。
- コモディティ (通貨、株式、ポイントなど)
- 勘定科目 (階層化された、カテゴリ別の元帳)
- ディレクティブ (イベントや設定を記録する日付付きのエントリ)
商品
コモディティは常に大文字で記述されます。例: USD、EUR、AAPL、BTC、MILES、HOURS。
勘定科目
勘定科目はコロンで区切られた、先頭が大文字の階層的な名前です。5つのルート勘定科目タイプのいずれかで始まる必要があります。
| 名前 | タイプ | 典型的な内容 | 例 |
|---|---|---|---|
Assets | + | 現金、銀行、投資 | Assets:Checking |
Liabilities | - | クレジットカード、ローン | Liabilities:CreditCard |
Income | - | 給与、利子 | Income:EmployerA |
Expenses | + | 購入、請求書 | Expenses:Food:Dining |
Equity | - | 開始/終了残高 | Equity:Opening-Balances |
- 各構成要素は先頭を大文字にし、コロン (
:) で区切り、スペースは入れません。 - 構成要素には数字とダッシュを使用できます。
- ルート勘定科目名はオプションでカスタマイズできます (以下を参照)。
ディレクティブ
ディレクティブはBeancountファイルの核となる文です。ほとんどは日付で始まり、その後にディレクティブタイプと引数が続きます。それらはファイルの順序ではなく、時系列 (日付) 順に処理されます。
一般的な形式:
YYYY-MM-DD <directive> <arguments...>一般的なディレクティブと例
勘定科目の開設と閉鎖
2023-01-01 open Assets:Checking USD,EUR ; Optionally specify allowed currencies
2023-12-31 close Assets:Checking商品の宣言
2020-07-22 commodity AAPL
name: "Apple Inc."価格の宣言
2022-04-30 price AAPL 150.00 USDホストされた元帳で自動評価のクォートを行うには、ライブ価格を設定します。管理されたフィードは通常の日付付き price ディレクティブを提供します。それらは取引価格 (@、@@) やロットコスト ({}) を置き換えるものではありません。
メモと文書
2022-03-20 note Assets:Checking "Asked about refund"
2022-03-20 document Assets:Checking "statements/2022-03.pdf"取引
2024-01-05 * "Coffee Shop" "Morning coffee"
Expenses:Food 4.50 USD
Assets:Cash -4.50 USD
2024-01-06 ! "Phone Bill" "Monthly payment" #utilities ^phone
id: "INV12345" ; Metadata
Expenses:Utilities 60.00 USD
Assets:Checking転記の機能
; With cost basis
Assets:Stocks 1 AAPL {150.00 USD}
; With price annotation
Assets:Cash -100 USD @ 1.25 CAD
; With total price
Assets:Cash -100 USD @@ 125.00 CAD
; Implicit balance
Assets:Cash -100 USD
Assets:Bank残高照合とパディング
pad は、それが供給する balance より前の日付でなければなりません。アサーションはその日の開始時点でチェックされるためです。
2024-06-01 pad Assets:Checking Equity:Opening-Balances
2024-06-02 balance Assets:Checking 1000.00 USDイベント
2024-06-01 event "location" "San Francisco, CA"オプション
ファイル全体の設定を行います。
option "title" "My Ledger"
option "operating_currency" "USD"
option "documents" "docs/"
option "name_assets" "Vermoegen"詳細はオプションリファレンスを参照してください。
プラグインとファイル構成
plugin "beancount.plugins.module_name"
plugin "beancount.plugins.module_name" "config-string"
include "other/file.beancount"
pushtag #project
; ...
poptag #projectホストされたBeancount.ioは、サポートされている管理価格URLのインクルードも解決します。これはアップストリームのBeancountに対する拡張です。ホスト環境とローカル環境の互換性については、ライブ価格の設定ガイドを使用してください。
重要なルール
- すべての取引はバランスが取れていなければなりません。すべての記入のウェイトの合計がゼロになります。記入のウェイトは、その金額、またはコスト (
{}) や価格 (@) が存在する場合はもう一方の通貨に換算した値です。 - 勘定科目は使用前に開設する必要があり、閉鎖された勘定科目は記入を受け付けられません。
- 残高アサーションは指定された通貨のみをチェックし、親勘定科目にも使用でき、その日付の開始時点で評価されます (したがって、同日の取引は除外されます)。
- 価格注釈 (
@は単価、@@は合計) はバランスに影響します。それらはもう一方の通貨での記入のウェイトを設定します。-100 USD @ 1.25 CADは125 CADのウェイトを持ち、125 CADの記入を相殺します。価格を削除すると、その取引はもはやバランスが取れなくなります。
一般的なパターン
初期残高で勘定科目を開設する
両方の勘定科目を開設し、開始日に pad を行い、翌日に残高をアサートします (アサーションはその日付の開始時点でチェックされます)。
2024-01-01 open Assets:Checking USD
2024-01-01 open Equity:Opening-Balances
2024-01-01 pad Assets:Checking Equity:Opening-Balances
2024-01-02 balance Assets:Checking 1000.00 USD投資取引
2024-01-01 * "Buy stock"
Assets:Broker:Stock 10 AAPL {150.00 USD}
Assets:Broker:Cash -1500.00 USD複数通貨取引
2024-01-01 * "Currency exchange"
Assets:USD -100.00 USD @ 1.25 CAD
Assets:CAD 125.00 CADコメント
poptag #trip-to-peru
; inline comments begin with a semi-colon
* any line not starting with a valid directive is also ignored silently