tutorial on multi-currency accounting

Peter Selinger selinger at mathstat.dal.ca
Thu Mar 8 21:33:02 EST 2007

Derek Atkins wrote:
> Quoting Peter Selinger <selinger at mathstat.dal.ca>:
> > Actually, such accounts represent unrealized (or realized) gains and
> > losses, so they are income, not equity. See
> > "http://www.mathstat.dal.ca/~selinger/accounting/#4.2.", second
> > paragraph.
> A single transaction by itself is neither a gain nor a loss.  It's a
> POTENTIAL gain or loss, but not by itself..  I guess that's why I'm
> so hesitant to embrace this idea.  Here's an example.  I'm traveling
> abroad and go to an ATM and pull out ?100 out of my US Bank Account.
> (later on I find that this ?100 cost me $157.23).  That's it.  There's
> this single transaction.   Do I have a ?100 Income?  I dont think so.
> Do I have a ?100 Expense?  I don't think so, either.

Hi Derek,

did you read my tutorial? It doesn't seem so. I gave lots of examples
there, but I may as well do your example.

(a) In the situation you describe, your income is of course not ?100
nor $157.23. As a matter of fact, your unrealized gain at that moment
is equal to the *difference* ?100 - $157.23, in other words $0.

(b) However, suppose that 2 days later, the exchange rate changes to
$1.70/?1.00. Then on that day, your unrealized gain will *still* be
equal to the difference ?100 - $157.23, except that this now equals
$12.77. In this entire example, I will assume that you are American,
i.e., that you show your gains in '$'.

(c) If another day later, the exchange rate changes to $1.50/?1.00,
then your unrealized gain will *still* be equal to the difference ?100
- $157.23, except that now, this is equal to -$7.23, i.e., a loss.

The point of this accounting method is that, by storing the gain/loss
as a difference, rather than as a value in just one currency, it
auto-recalculates itself in the periods between transactions.

> This is why I think it's Equity.  I now have an Equity balance of ?100.
> Where did this ?100 come from?  Well, it came from the exchange of
> $157.23...  But it's neither an income nor an expense.

I don't think you have an equity balance. You only have assets.
Before the exchange, you had assets of $157.23 (say). After the
exchange you have assets of ?100, and an unrealized gain (income)
equal to the difference ?100 - $157.23, which is initially $0, but
updates itself as the exchange rate fluctuates.
> Now let's say I buy a ?2 candy bar.  That's an expense. 

(d) Suppose that you buy the candy bar on day 2, when the exchange
rate is $1.70/?1.00. You have an expense of $3.40, and your assets
decrease by ?2. Due to the exchange (asset -> expense), your
unrealized gain decreases by ?2 - $3.40, and so it is now ?98 -
$153.83, which is $12.77 (the same it would have been if you didn't
buy the candy bar, i.e., in paragraph (b) above).

> But what if I go to my friend and sell that candy bar for $5 (he's
> REALLY hungry!).

(e) Assume you sell the candy on day 3, when the exchange rate is
$1.50/?1.00. Now you have income of $5, and your assets increased by
$5. There was no currency exchange, so your unrealized gain is still
?98 - $153.83 as on the previous day, except that today, this amounts
to -$6.83. Note that this is not the same as (c) above. This is
because of the purchase (d), which has limited your currency loss
somewhat (you got rid of some of the foreign currency before it
decreased in value).

> See, this can get infinitely complicated.  So let's constrain the problem.

I do not find it very complicated.
> Let's say that I take those leftover ?98 and exchange them for $145.76.
> I certainly don't have a loss of $11.43 (because I bought that candy bar).

(f) You sold your currency on this final day at an exchange rate of
about $1.4874/?1.00. Your assets decreased by ?98, and your
U.S. assets increased by $145.76. Also, due to this last exchange
(asset -> asset), your unrealized gain decreases by ?98 - $145.76, so
that it is now ?0 - $8.07. Because the '?' amount in this difference
is zero, this can now be called a "realized" loss of -$8.07.

Your income/expense sheet looks like this:

Initial:           $157.23
Candy expense:      -$3.40
Candy income:        $5.00
Currency loss       -$8.07
Final:             $150.76

And indeed the assets in your U.S. account are $150.76 (namely $145.76
that you got from your last currency exchange, plus $5 that you got
for the candy).

All this is perfectly balanced, perfectly simple, and there's no need
for any heavy lifting to be done by the report system. 

The explanation I gave in the Tutorial is better, because it is not
restricted by ASCII and therefore I can show the accounts better. The
people who have read it so far have found it to make sense.

> > I don't know if users would prefer to have them directly under the
> > "Income" hierarchy, or as a top-level account. By making their
> > location user-definable, one can leave the decision to them. This
> > would also allow for multiple trading accounts if desired.
> As soon as you say "trading accounts" this again brings up the description
> of the old "Currency" accounts which are what you needed to do to trade
> from one currency to another.

Yes, except those old "Currency" accounts were implemented wrong.
When I speak of "Currency" accounts, I mean the real thing. The key
notion, as I said above, is that it stores the gain/loss as a
difference of multiple currencies, rather than as an absolute
amount. In this way, it automatically adjusts itself without ever
leaving the books unbalanced.

> I'll point out that the CoA never balances, either.  A - L never equals
> your Equity in your accounts (until you include Income and Expense, but
> most people don't think about that).

You lost me here. People not thinking it is balanced does not imply
that it is not balanced. You have A - L = Eq + I - Ex, I hope?
> Having the reports do some of the heavy lifting is PERFECTLY reasonable.

It is possible, but in my opinion not the best solution. The current
(unpatched) report system also does not actually do this lifting. 

Best, -- Peter

More information about the gnucash-devel mailing list