复式记账与多币种和投资记账——是货还是币?

本文是复式记账系列文章的第二篇。

第一篇主要介绍了复式记账的核心原理,文中都是单币种记账的例子。本文主要介绍如何多币种记账,以及投资交易如何记账。

单币种记账的问题

先来看一个涉及外币交易的例子:出国旅行前,USD/CNY 汇率是 7,用 7,000 人民币兑换了 1,000 美元,旅行中花了 900 美元。用上一篇中的表格可以记录成这样:

序号摘要初始资金人民币现金美元现金旅行支出
0初始化-7,0007,000
1兑换美元-7,0001,000
2旅行支出-900900
汇总-7,000001,000

首先会发现第一个问题,每一行求和不全是 0,说明有的账不平。原因也很简单,因为涉及到多币种记账了,单位不同,自然也不能简单的相加。

对于这个问题,最直观也是最常见的解决办法是,都统一转换成人民币记账。这个直觉没有问题,正式的会计记账也是这样做的,这是会计四个基本假设之一的货币计量假设。意思是会计记账时,要把所有东西都转换成货币,而且必须是同一个货币,因为这样才具备可加总性。否则如果账本里是三两黄金、二两白银、七块人民币、八块美元,这账还怎么记。如果按照这个思路,用表格可以记录成这样:

序号摘要初始资金人民币现金美元现金旅行支出
0初始化-7,0007,000
1兑换美元-7,0007,000
2旅行支出-6,3006,300
汇总-7,00007006,300

然后再稍微扩展一下这个例子,旅行结束后,剩余的 100 美元又兑换回了人民币。兑换时的汇率为 6(为了方便计算),换了 600 人民币。用表格可能会记成这样:

序号摘要初始资金人民币现金美元现金旅行支出
0初始化-7,0007,000
1兑换美元-7,0007,000
2旅行支出-6,3006,300
3兑换人民币600-600
汇总-7,0006001006,300

现在又出现了一个新问题,最后汇总显示美元现金还应该有 100 人民币,但实际美元现金已经没有了。对比上一个表格可以看到,剩余的 100 美元在账本上是 700 人民币,兑换时只兑换到了 600 人民币。可如果这笔交易记录为:

摘要人民币现金美元现金
兑换人民币600-700

又会发现这笔交易本身就是不平的。出现这个问题的原因是,在这笔交易中,因为货币兑换,损失了 100 元,这个损失没有在账本中体现。可以添加一个汇兑损益账户解决这个问题:

序号摘要初始资金人民币现金美元现金旅行支出汇兑损益
0初始化-7,0007,000
1兑换美元-7,0007,000
2旅行支出-6,3006,300
3兑换人民币600-700100
汇总-7,00060006,300100

现在这样就可以通过转换成单个币种,完成多币种的记账了。这也比较接近实际外贸企业的会计记账方式了,叫做外币统账制。就是先选择一个记账的本位货币,然后在记账时将所有外币转换成本位币记录。

但这种记录方式并不完全适合个人记账使用。主要是不够直观,例如看着兜里的 100 美元和账上的 700 人民币,很难把他们对应上。而且汇率变化时,还要定期进行外币折算。对于专业的会计来说,这是一项日常业务,但对于个人记账来说,这过于复杂且没必要了。

带着这些问题,接下来看一下如何直接使用多币种记账。

多币种记账

首先回到第一个记账表格:

序号摘要初始资金人民币现金美元现金旅行支出
0初始化-7,0007,000
1兑换美元-7,0001,000
2旅行支出-900900
汇总-7,000001,000

这个表格最主要的问题是把不同单位的数字简单相加了。之前的解决思路是把他们转换成同一种单位,就可以相加了。还有另一种思路,就是在每一个数字后面带上单位,然后只对相同单位的数字相加就行了:

序号摘要初始资金人民币现金美元现金旅行支出求和
0初始化-7000 CNY7000 CNY0 CNY
1兑换美元-7,000 CNY1,000 USD-7,000 CNY
1,000 USD
2旅行支出-900 USD900 USD0 USD
汇总-7,000 CNY0 CNY100 USD900 USD-7,000 CNY
1,000 USD

现在这些数学计算都是合理的了,但依然是不平的。也许我们人知道当前汇率是 7,所以 7,000 人民币和 1,000 美元是相等的。但账本中并没有包含这个汇率信息,而且这个汇率本身也是可能变化的,不能说这个账今天是平的,明天就不一定的。

可以通过一个更极端的例子来更直观的看一下这个问题:先是用 7,000 人民币兑换了 1,000 美元(汇率 7),然后签证没办下来出不去了,一分钱没花,又用 1,000 美元换回了 6,000 人民币(汇率 6):

序号摘要初始化人民币现金美元现金求和
0初始化-7,000 CNY7,000 CNY0 CNY
1购汇(汇率 7)-7,000 CNY1,000 USD-7,000 CNY
1,000 USD
2结汇(汇率 6)6,000 CNY-1,000 USD6,000 CNY
-1,000 USD
汇总-7,000 CNY6,000 CNY0 USD-1,000 CNY

可以看到前面每一步都看似合理,但最后汇总就不平了,莫名其妙的没了 1,000 人民币,这 1,000 人民币究竟去哪了?

刚好这个例子很简单,就一次购汇和一次结汇,所以问题肯定出在这里了。可以展开思考下这个过程中发生了什么,在购汇时,并不是左口袋 7,000 人民币凭空消失,右口袋就多出来了 1,000 美元。这个过程一般都发生在银行,把 7,000 人民币给银行,然后从银行拿到 1,000 美元。但之前的账本中并没有体现银行,如果把银行加上会怎么样呢:

序号摘要初始化人民币现金美元现金银行求和
0初始化-7,000 CNY7,000 CNY0 CNY
1购汇(汇率 7)-7,000 CNY1,000 USD7,000 CNY
-1,000 USD
0 CNY
0 USD
2结汇(汇率 6)6,000 CNY-1,000 USD-6,000 CNY
1,000 USD
0 CNY
0 USD
汇总-7,000 CNY6,000 CNY0 USD1,000 CNY0 CNY
0 USD

每一行都是平的,最终的汇总也是平的。而且账本中没有依赖汇率信息,不管汇率如何变化都是平的。用这种方式完整的记录最开始的例子:

序号摘要初始资金人民币现金美元现金旅行支出银行
0初始化-7000 CNY7000 CNY
1兑换美元-7,000 CNY1,000 USD7,000 CNY
-1,000 USD
2旅行支出-900 USD900 USD
3兑换人民币600 CNY-100 USD-600 CNY
100 USD
汇总-7,000 CNY600 CNY0 USD900 USD6,400 CNY
-900 USD

这种方式记录了原始的币种交易信息,因此也能直观的看到每个币种的余额。也因为没有丢失币种信息,所以在汇率变动时也就不用进行外币折算了。

看起来所有问题都解决了。但如果真是这样,那会计记账为什么不这么记呢?和前面提到的记账方式对比,会发现出现了两个原来不存在的问题。

第一个问题是之前提到的货币计量假设。例子中以美元举例,美元是当前世界上使用最广泛的货币,所以提到多少美元,就算不能精确的知道是多少人民币,也能大概知道个范围。但如果例子改为某次环球旅行,去了很多小众国家呢?例如花了 100 阿富汗尼、200 埃塞俄比亚比尔、300 冈比亚拉达西、400 突尼斯第纳尔,这种账记完了毫无用处,看了完全没概念。

第二个问题是单币种记账时提到了汇兑损失。还是相同的例子,改成现在这种记录方法之后,这个汇兑损失不见了。

这两个问题很容易解决,在看账本时将所有外币按照某种汇率转换为单一币种就可以了:

序号摘要初始资金人民币现金美元现金旅行支出银行
0初始化-7000 CNY7000 CNY
1兑换美元-7,000 CNY1,000 USD7,000 CNY
-1,000 USD
2旅行支出-900 USD900 USD
3兑换人民币600 CNY-100 USD-600 CNY
100 USD
汇总-7,000 CNY600 CNY0 USD900 USD6,400 CNY
-900 USD
转换6,300 CNY
-900 USD
-6,300 CNY
900 USD
转换后-7,000 CNY600 CNY6,300 CNY100 CNY

如果只看最后一行,和上一节最后一个表格对比,会发现神奇的事情发生了,他们几乎是一样的。区别是上一个表格中是汇兑损益是 100 人民币,这个表格中是银行有 100 人民币。银行这个账户最终的余额是 100 人民币,说明在这一系列交易中,最终有 100 人民币流向了银行。在这个例子中,就是有 7,000 元的初始资金,现在有 600 是现金余额,6,300 在旅行中花掉了,100 是货币兑换过程中亏掉了。

所以两种记录方式其实殊途同归,只是记录的方式不同,但最后看到的结果可以是一样的。但这种记录方式在记录时会更简单也更直观一些,还不需要定期的按照回来进行外币折算,因此更适合个人记账使用。

实际专业的会计记账中,也有类似的记账方法,叫做外币分账制。就是直接记录原始的币种信息,只有在出报表时进行外币折算成本位币。一般多用于金融机构等外币业务比较多的场景,便于核算。

多币种记账中的汇率

在刚才最后的例子中,实际涉及了两个汇率,兑换成美元时汇率是 7,兑换回人民币时汇率是 6。最后折算成人民币时,使用了最开始的 7 折算的。也可以使用 6 来折算:

序号摘要初始资金人民币现金美元现金旅行支出银行
0初始化-7000 CNY7000 CNY
1兑换美元-7,000 CNY1,000 USD7,000 CNY
-1,000 USD
2旅行支出-900 USD900 USD
3兑换人民币600 CNY-100 USD-600 CNY
100 USD
汇总-7,000 CNY600 CNY0 USD900 USD6,400 CNY
-900 USD
转换5,400 CNY
-900 USD
-5,400 CNY
900 USD
转换后-7,000 CNY600 CNY5,400 CNY1,000 CNY

对比两种转换的结果:

折算汇率初始资金人民币现金旅行支出银行
按汇率 7 折算-7,0006006,300100
按汇率 6 折算-7,0006005,4001,000

可以看到两种转换结果账都是平的。共同点都是有 7,000 的初始资金,现在还剩下 600 现金,少了 6,400。区别是这 6,400 是花了 6,300,汇兑损失了 100;还是花了 5,400,汇兑损失了 1,000。

这两种折算方式都没有错,如果是专业的会计记账,这个汇率叫做记账汇率。记账汇率的选择是有明确要求的,一般选择月初的市场汇率,也可以选择期末汇率等其他方式。但只能选择一种,而且不能变化。否则就会像这个例子中,可以通过随便改改汇率,就能让企业账面上年年都是亏损的,一分钱税都不用交。

但对于个人记账来说,记账是给自己看的,自己不会骗自己,哪个更符合实际情况选哪个就好了。例如这个例子中,按照最开始兑换外币那个汇率折算可能更符合实际情况。甚至还可以既不以购汇汇率折算,也不以结汇汇率折算。例如出国时没来得及换回,下飞机临时换了些钱以 1:8 的汇率兑换被坑了,但同期正常汇率应该是在 7 左右,那折算时还是以 7 折算更合适一些。

混合币种记账

刚才提到使用多币种记账,最后折算的汇率选一个符合实际情况的即可。这在大多数情况下都不成问题,但在某些恶性通胀的国家,这个汇率可能不是那么好选择。

例如阿根廷长期通胀很严重, ARS/CNY 汇率在过去的十年中从 0.8 贬值到 0.008,贬值了 99%。如果在十年前去阿根廷旅行记账花了 1,000 ARS,以当时的汇率折算大概花了 800 CNY,也比较符合当时的实际情况。而如果用现在的汇率折算,则只花了 8 CNY,显然就很离谱了。

如果单看这个例子看起来好像汇率也没那么难选,就选当时的汇率就好了。那如果例子再复杂点,如果十年间每年都去阿根廷旅行了一次,共计花费了 100,000 ARS。最后折算时,该如何折算呢?

其实道理是一样的,只不过稍微麻烦点,不能最后一次性折算了,可以选择按年、按月、甚至按天汇总折算。这样就比较符合当时的实际花销了。

那顺着这个思路,还可以更进一步,直接在花钱时就把这个折算做了。还是以本文最开是的例子记录:

序号摘要初始资金人民币现金美元现金旅行支出银行
0初始化-7000 CNY7000 CNY
1兑换美元-7,000 CNY1,000 USD7,000 CNY
-1,000 USD
2旅行支出-900 USD6,300 CNY-6,300 CNY
900 USD
3兑换人民币600 CNY-100 USD-600 CNY
100 USD
汇总-7,000 CNY600 CNY0 USD6,300 CNY100 CNY

可以看到最后一行和前面两种方式的结果是一样的。也就是无论使用哪种方式,最终结果本身就应该是一样的,因为实际发生的交易是相同的,区别只是过程不同。

这种方式综合了前两种方式的优点。使用单币种记账的主要问题是不直观和折算麻烦,但如果全部使用外币直接记账,最终折算时选择什么汇率可能又是问题。在这种方式中,把资产类的账户(例如美元现金),保留了原始外币信息,这样就解决了不直观和汇率变更需要折算的问题;花销类(例如旅行支出)的账户在交易发生时直接就按照当时的汇率折算了,也就不用汇总时考虑该用什么汇率折算的问题了。

标题叫混合币种记账,但实际这种记法可能更接近真正的外币统账制。因为实际的会计记账不会只记录本币的信息,也会记录每次交易的汇率、外币的币种、金额等信息,便于核算。但个人记账不会记得这么复杂,前面的单币种记账中,就是选择了只记录本币的信息,外币的原始币种、金额全都抛弃了;现在的混合币种记账,就是花销类的记录本币、资产类的记录外币。总之个人记账没那么多条条框框,怎么合适怎么记即可。

多币种记账总结

刚才提到几种记录方式其实并无本质区别,都是殊途同归的。那么实际记账中到底该选择哪一种呢?这取决于个人的实际情况,可以尝试回答一下以下几个问题,如果答案都是“是”的话,也许使用多币种记账更合适,否则可能使用混合币种记账更合适:

  • 是否长期使用不同货币?
  • 是否拥有不同币种的资产或收入?
  • 提到某种币种时,是否无需经过转换到其他币种,就可以进行比价?(例如超市看到一个东西卖 500 港币贵不贵?)

最终的结果可能是多币种和混合币种的混合记账。总之,资产类的,都应该记录原始币种信息,因为这是和钱包里的钱或银行账户上的数字能对应上的,否则看起来不直观,而且汇率变动时还要定期折算太麻烦;花销类的,都应该转换成能看懂(参考上面三个问题)的单一或多个币种记录,否则最终最终看的时候还是要转换,然后还要考虑该以什么货币转换的问题。

投资记账

举个例子,现在市场上有两只股票,A 股票股价 1 元,B 股票股价 2 元,各买了 100 股。然后 A 涨了 1 元,B 跌了 1 元,又各买了 100 股。然后 A 又涨了 1 元,卖了 100 股 A。怎么记账?

正如本文副标题——“是货还是币”,货币本身可以看作是一个特殊的商品,投资买卖的股票、基金、房屋等资产本质也是商品,所以投资记账和多币种记账其实是类似的:

序号摘要现金股票账户初始资金A 交易所B 交易所投资盈亏
0初始化1,000 CNY-1,000 CNY
1买入 A-100 CNY100 A100 CNY
-100 A
2买入 B-200 CNY100 B200 CNY
-100 B
3买入 A-200 CNY100 A200 CNY
-100 A
4买入 B-100 CNY100 B100 CNY
-100 B
5卖出 A300 CNY-100 A100 A
-100 CNY
-200 CNY
汇总700 CNY100 A
200 B
-1,000 CNY200 CNY
-100 A
300 CNY
-200 B
-200 CNY

看这个表格的最后一行,当前的资产状况是有 700 元现金,股票账户上有 100 股 A 和 200 股 B。在当前已经交易的过程中,赚到了 200 元。

A 交易所和 B 交易所两列的含义,和刚才银行的含义类似。A 交易所的含义是,总计花了 200 元买了 100 股 A,平均持有成本是每股 2 元。B 交易所的含义是,总计花了 300 元买了 200 股 B,平均持有成本是每股 1.5 元。

看到这可能会有疑问,B 股票跌了 1 元,明明是亏损了,在这张表里怎么没体现出来?

注意看资产,持有的是 700 元现金、100 股 A 和 200 股 B。B 虽然跌了,但只要没用它交易去换成人民币,持有的就依然是 200 股 B。哪怕它跌成了废纸,这些废纸在手里也依然是 200 张,没有消失。所以只要不交易就没有真实的亏损。

你可能会说,这不是自欺欺人吗?这样完全没有可比性,我对自己到底有多少钱完全没概念。说到这,有没有想到刚才多币种记账转换成单币种记账的例子?没错,同样可以把各种股票都转换成人民币,这样就可以对比了。可以直接按照每支股票当前的市价来转换:

摘要现金股票账户初始资金A 交易所B 交易所投资盈亏
转换前700 CNY100 A
200 B
-1,000 CNY200 CNY
-100 A
300 CNY
-200 B
-200 CNY
转换300 CNY
200 CNY
-100 A
-200 B
100 A
-300 CNY
200 B
-200 CNY
转换后700 CNY500 CNY-1,000 CNY-100 CNY100 CNY-200 CNY

这样就可以很清楚的看到,当前的总资产有 1,200 元,其中有 700 元是现金、500 元以股票的形式存在。如果真的以当前的价格把股票卖给 A 交易所,那么总体上从 A 交易所流入了 100 元。但这件事没有实际发生,所以这个盈利叫浮盈。如果真的以当前的价格把股票卖给 B 交易所,那么总体上向 B 交易所流出了 100 元。但这件事也没有实际发生,所以这个亏损叫做浮亏。

刚才的表格中,第 5 行这笔交易有点特殊:

序号摘要现金股票账户初始资金A 交易所B 交易所投资盈亏
5卖出 A300 CNY-100 A100 A
-100 CNY
-200 CNY

之前两次买入 A,分别是以 1 元和 2 元的成本买入的,总体的平均成本是 1.5 元,卖出时的市价是 3 元。但卖出的这笔交易中,是按照 1 元的成本来计算的。为什么没有按照 2 元、1.5 元甚至是 3 元来计算呢?

这里没有为什么,可以认为两次买入的是不同的 A,先把第一次买入的卖了,所以成本是 1 元,这叫先入先出。也可以说是用筐装的,后装进去的先拿出来卖了,所以成本是 2 元,这叫后入先出。还可以说这有两根金条,没办法分清哪根是高尚的,哪根是龌龊的,一口价都是 1.5 元。甚至可以说在你眼中,只有一半是值钱的,剩下一半是买一送一送的,现在卖的是值钱的那一半,价值 3 元。总之,从个人的角度,这无非是朝三暮四还是朝四暮三的问题,没有为什么和必须怎么样。但在有些国家,有法律要求明确要怎么算,因为涉及到交税,有些交易的手续费也和持有时间有关。那就更没有为什么了,按照法律规定算。

多币种投资记账

如果将货币和投资结合在一起记账会发生什么呢?

如果汇率没什么波动,那么两个结合在一起记账也没什么特殊之处,无非是账本里多了几个币种符号。而如果汇率剧烈波动,靠汇率差来实现收益,那本质上就是把货币当作股票在买卖了,也没什么特殊之处。

有这样一个特殊的场景,2022 年 3 月,俄乌冲突爆发时,卢布突然大幅贬值,如果这时去俄罗斯买了套房会怎么样?

假设俄乌冲突爆发前,RUB/CNY 汇率是 0.1,俄罗斯有一套价值 10,000,000 RUB 的房子。俄乌冲突刚爆发时,汇率突然贬值到 0.05。但冲突刚开始爆发,俄罗斯国内的物价还没有太大变化,房东还是以原来的价格出售。在这时刷银联卡,买了这套房子,银联的汇率是 0.05。冲突爆发一段时间后,伴随着输入性通胀,俄罗斯的房价也开始上涨了,现在变成了 15,000,000 RUB。在这时把房子卖了,然后把卖房得到的卢布换回了人民币,此时的汇率还是 0.05。

整个过程记录下来如下:

序号摘要现金房产初始资金银行房产交易
0初始化1,000,000 CNY-1,000,000 CNY
1买房-500,000 CNY1 HOUSE500,000 CNY
-10,000,000 RUB
10,000,000 RUB
-1 HOUSE
2卖房15,000,000 RUB-1 HOUSE1 HOUSE
-15,000,000 RUB
3结汇750,000 CNY
-15,000,000 RUB
15,000,000 RUB
-750,000 CNY
汇总1,250,000 CNY-1,000,000 CNY5,000,000 RUB
-250,000 CNY
-5,000,000 RUB
转换后1,250,000 CNY-1,000,000 CNY-250,000 CNY

从最后一行可以看到,净资产是 1,250,000 CNY,其中有 1,000,000 CNY 是原始资金。剩下的 250,000 CNY 来自房产交易,是俄罗斯房价上涨了 5,000,000 RUB 换算成人民币带来的收益。

还有另一种可能,如果卖房时,汇率又回到了 0.1 会怎么样?此时的记账表格如下:

序号摘要现金房产初始资金银行房产交易
0初始化1,000,000 CNY-1,000,000 CNY
1买房-500,000 CNY1 HOUSE500,000 CNY
-10,000,000 RUB
10,000,000 RUB
-1 HOUSE
2卖房15,000,000 RUB-1 HOUSE1 HOUSE
-15,000,000 RUB
3结汇1,500,000 CNY
-15,000,000 RUB
15,000,000 RUB
-1,500,000 CNY
汇总2,000,000 CNY-1,000,000 CNY5,000,000 RUB
-1,000,000 CNY
-5,000,000 RUB
转换后2,000,000 CNY-1,000,000 CNY-500,000 CNY-500,000 CNY

看最后一行,这次的净资产是 2,000,000 CNY 了,其中原始资金是 1,000,000 CNY 没变。剩下的 1,000,000 CNY 来自两部分,一部分是来自银行、一部分是来自房产交易。来自房产交易比之前多了,因为盈利的还是 5,000,000 RUB 没变,但这次卢布的汇率变高了,所以换算回人民币也更多了。剩下的 500,000 CNY 来自银行,是在买房时以低汇率买入了卢布,卖房时又以高汇率卖出了卢布,两次汇率差带来的收益。


至此,复式记账中“记”的部分就已经全部介绍完了。结合第一篇和这篇文章,应该已经能应对各种记账的场景了。

接下来的复式记账系列文章将会继续介绍:

  • 账记完了怎么看?
  • 用什么工具记和看?
  • 怎么理解借贷记账法中的“借”和“贷”?