前回は複式簿記の基礎的な話をしました。あまりにもふわっとしてましたが、銀行編とクレカ編の説明を後からするとこうなります。Ledger CLIをまだインストールしていない人はこちらから順に追ってください↓
この記事では明確な記述のために数式を使っていますが、稚児の遊戯の如き数式なので、横に書いてる日本語と同じ意味です。数式が嫌いな人は雰囲気だけで大丈夫です。
貸借対照表って何?
貸借対照表は自分がどれだけ資産と負債を持っていて、トータルで見たら貯金があるのか借金があるのかが分かる指標です。前回の図に書き足したのでこれを見てください。
貸借対照表というのは前回触れた勘定科目のうち、資産、負債、純資産だけを計算します。上の図で純資産、資産、負債を囲んでる部分です。そして貸借対照表では資産は常に負債と純資産の合計に等しいというお約束があります。ググってください、すぐ出てきます。
以下妙な説明が続きますが、興味がない人はぜひ実践編までスクロールして飛ばして読んでください。
さて、これを数式で表現します。$V_t(x)$を時間$t$時点での勘定科目の残高を表す関数としましょう。一般世界の貸借対照表では負債と純資産を負の数で表さないためにLedger CLIでの残高の負数ということに留意すると
V_t(\mathit{Assets}) = -V_t(\mathit{Liabilities}) + -V_t(\mathit{Equity})
となります。これを移項すると
V_t(\mathit{Assets}) + V_t(\mathit{Liabilities}) + V_t(\mathit{Equity}) = 0
となります。この式本当なのでしょうか?実はLedger CLIで計算するとこの通りにはなりません。じゃあ実世界の複式簿記を正しくモデリングしてないじゃないか!と苦情が来るかもしれませんが実はそうでなくて、同じ事象を違う形で表現しているだけだと言うことを今から調べていきます。
導入
まず残高$V_t$とはなにかということを考える必要があります。残高ってなんでしょうか?銀行口座の残高とか、手持ち現金の残高ははっきり決まってますが、今ある残高は以前引き出したり預け入れした結果残ってる額が残高ということもできます。これを$t$における取引で勘定科目$X$の増加額を$v_t(X)$と記述すれば、
\sum_{u = 0}^{t} v_u(X) = V_t(X)
と書けます。単にこれまで預け入れた額の合計から引き出した額の合計を引いたら今の残高と言ってるだけです。ちなみに、面倒なのでここから先ある整数時間$t$に対して一つの取引1:1で対応すると仮定しましょう。言ってみればtを時間ではなく取引に順番につけたIDとして扱います1。そして$t=0$のときは取引が一つも存在しない状態だとします。
直観的な説明
実はあれこれ言わなくてもこの図をぐっと睨むだけで分かることがあります。
さっき$v_t(X)$を取引$t$における$X$の増加した額(資産でいうと預け入れ額)として定義しました。この時、貸借対照表の区切る範囲である資産、負債、純資産全体での増加額を考えてみます。
- もし取引$t$が資産、負債、純資産で閉じた取引だとします。例えば、銀行編やクレカ編で見たとおり、初期の資産や負債の残高は純資産から移動したとして扱われます。
2022/12/01 初期残高
Assets:Banks:Okane 10,000 JPY
Equity:Opening Balances -10,000 JPY
2022/12/01 初期残高
Liabilities:Card:Yellow -30,000 JPY
Equity:Opening Balances 30,000 JPY
; ...
このような取引の場合貸借対照表の範囲の$\sum v$はゼロのままです。資産が増えた分純資産が減る、負債が減った分純資産が増えるように書いてるんだから当然のことですが、さっきの図を有向グラフと考えてみても、この中でいくら辺の流量があっても流入、流出があるわけではないので$\sum v$に変化はありません。
逆に言えば、収入、支出が関わると貸借対照表の$\sum v$に影響があるわけです。図を見れば(あるいは見なくても)収入はお金が湧いてくる源、蛇口で、支出はお金を吸い込む場所、排水口と考えることができます。間に何もなければ当然蛇口の出てくる量=排水口に流れる量になりますが、途中でペットボトルに水をためてる人がいたりペットボトルの水を追加で流してる人がいたらそうはなりません。
もしペットボトルを構えている人がいたらどうなるかというと、ペットボトルの中身が増えてるなら蛇口の量>排水口の量だし、減ってるなら逆でしょう。もっと言えば貸借対照表というペットボトルの中身の増加量は蛇口の量-排水口の量になるはずです。
v_t(\mathit{Assets}) + v_t(\mathit{Liablities}) + v_t(\mathit{Equity}) = v_t(\mathit{Income}) - v_t(\mathit{Expenses})
ここでさっきの$\sum v(X) = V(X)$を思い出すと任意の$t$に対して
V_t(\mathit{Assets}) + V_t(\mathit{Liablities}) + V_t(\mathit{Equity}) = V_t(\mathit{Income}) - V_t(\mathit{Expenses})
が言えます。あれ、現実世界の複式簿記では
V_t(\mathit{Assets}) + V_t(\mathit{Liablities}) + V_t(\mathit{Equity}) = 0
なんではなかったでしたっけ?ここにトリックがあります。Ledgerの世界で出てきた$V_t(\mathit{Income}) - V_t(\mathit{Expenses})$ってなんでしょう?収益-費用、これってつまるところ利益です。実は一般世界の会計では、年度末にこの利益を利益余剰金として純資産に組み込みます。数式でいうと
V_t(\mathit{Equity:利益余剰金}) = -(V_t(\mathit{Income}) - V_t(\mathit{Expenses}))
を両辺に足しています。なのでこの操作を手で行うかやらないかだけの差ということになります。そして、会社では商品ごとやセクターごとに利益を計算して事業継続性について考える必要がありますが、家計簿においてはあまり真面目に利益について考える必要は無いので、単に資産、負債、純資産の合計が利益に等しいと思っておけば十分な気がします。
実践
さて御託はいいからそろそろコマンドを出せよということになると思います。次のコマンドを実行しましょう。
$ ledger -f root.ledger bal ^Assets ^Liabilities ^Equity
99,855 JPY Assets
-25,000 JPY Bank:Okane
124,855 JPY Banks:Okane
-113,878 JPY Equity:Opening Balances
-470 JPY Liabilities:Card:Yellow
--------------------
-14,493 JPY
字面から想像できるように、Assets, Liabilities, Equityから始まる勘定科目のbal (balance)を計算するコマンドです。つまり、これが(利益余剰金を抜いた)貸借対照表です。どうやらこの期間に限って言えば赤字のようです。
比較のために、資産と負債だけに注目して残高を見てみましょう2。
$ ledger -f root.ledger bal ^Assets ^Liabilities
99,855 JPY Assets:Banks:Okane
-470 JPY Liabilities:Card:Yellow
--------------------
99,385 JPY
これから分かることは「今はまだ債務超過ではないね」ということです。ただ、純資産の初期残高が113,878円だったことを考えると若干減っています。この減少分が-14,493円で赤字だねということになります。
この辺はっきりしないように見えますが、例がシンプルすぎるきらいもあります。とはいえ私の家計簿を出したいわけではないのでご容赦ください。また、シンプルな例なので手計算して検算してみるのもいいかもしれません。
さて、明日はPL(損益計算書)をやろうと思ってましたが多分超薄い記事になります。