Recording realized gains for (currency) trading accounts

Matthijs Kooijman matthijs at stdin.nl
Wed Mar 26 10:16:21 EDT 2014


Hey folks,

I've been digging into this a bit more and found a few ways to implement
this, though none are really to my satisfaction. To illustrate them, let
me start by giving an example.

Say I have a company that performed some services for a customer. The books and
bank account are kept in EUR, but this customer is charged an amount in USD.

At the moment the services are performed, I should record income, and at the
same time record a receivable asset (note that you'd normally use Gnucash'
business features for this, but I'll just use regular transactions for
simplicity here). Let's say that the exchange rate is €0.50 = $1.

2014-01-01      Services performed
                                  debit           credit
        Assets:Receivable       $ 200,00
        Trading:CURRENCY:EUR    € 100,00
        Income:Services                         € 100,00
        Trading:CURRENCY:USD                    $ 200,00

A day later, half of the amount is payed. The exchange rate changed to €0.60 = $1.

2014-01-02      First half of payment
                                  debit           credit
        Assets:Bank             €  60,00
        Trading:CURRENCY:USD    $ 100,00
        Assets:Receivable                       $ 100,00
        Trading:CURRENCY:EUR                    €  60,00

Now, the balance sheet looks like this. Note that I used the "Nearest in time"
price source here, to properly show unrealized gains. However, I also noticed
that the "Average cost" price source doesn't seem to work (no exchange is shown
and no EUR amounts are shown for USD accounts), but that's probably a
completely unrelated problem.

Assets
        Bank                             €  60,00
        Receivable              $ 100,00 €  60,00
Total Assets                                            € 120,00

Trading
        CURRENCY
                EUR                      €  40,00-
                USD             $ 100,00 €  60,00
Total Trading                                           €  20,00

Income
        Services                         € 100,00
Total Income                                            € 100,00

Since the first half of the payment is €10 more than originally recorded, meaning
we now have a realized gain of €10, which is what I'd like to record into the
Income account. At this moment, we have an unrealized gain of another €10 for
the other half of the payment, but I'd like to keep that part in the trading
accounts.

So, ideally, I think I want to record this:

                                  debit           credit
        Income:Realized Gains                   €  10,00
        Trading:CURRENCY:EUR    €  10,00

I've found a few ways to (effectively) achieve this, but I'm not sure if
any of them are sane and safe, so I'd like your thoughts on this.


Zero exchange rate
------------------
I can enter a transaction in the "Assets:Receivable" account, having just a
split for "Income:Realized Gains", leaving the "Assets:Receivable" split empty.
When GnuCash asks for the exchange rate, I enter an amount of 0. When saving
the transaction, the "Trading:CURRENCY:EUR" split gets created automatically.

2014-01-31      Realized Gains January
                                  debit           credit
        Assets:Receivable
        Income                                  €  10,00
        Trading:CURRENCY:EUR    €  10,00

I'm not quite comfortable entering a zero exchange rate. Is there any
harm in this? I also have to delete the exchange rate in the price
editor, since an empty rate confuses the balance sheet if that one
becomes the selected price.

Empty and re-fill Assets:Receivable
-----------------------------------
This is another alternative. I can empty out the Assets:Receivable
account, entering the exchange rate exactly so that the Trading accounts
will also become empty (in this case, remove $100 from Assets:Receivable
and set the exchange amount to €40). Then, I re-add the amount to
Assets:Receivable, but set the exchange rate to the real exchange rate.
The difference between these two EUR amounts is the gain which
gets put into the Income account. Note that I just realized that this
approach as-is also includes the unrealized gain into the income
account, which probably makes it unsuitable.

2014-01-31      Realized Gains January
                                  debit           credit
        Assets:Receivable       $ 100,00
        Income:Capital Gains    €  20,00
        Trading:CURRENCY:USD
        Assets:Receivable                       $ 100,00
        Trading:CURRENCY:EUR                    €  20,00

Cumulative Asset
----------------
Instead of trying to actually modify the trading accounts, an option would be
to keep an cumulative asset account with all previously realized (currency)
trading gains. Now, realizing a gain is as easy as creating a
transaction between the income account and this new asset account.

2014-01-31      Realized Gains January
                                  debit           credit
        Assets:Realized Gains   € 10,00
        Income:Realized Gains                   €  10,00

Now the balance looks like:

Assets
        Bank                             €  60,00
        Receivable              $ 100,00 €  60,00
        Realized Gains                   €  10,00
Total Assets                                            €130,00

Trading
        CURRENCY
                EUR                      €  40,00-
                USD             $ 100,00 €  60,00
Total Trading                                           €  20,00

Income
        Services                         € 100,00
        Realized Gains                   €  10,00
Total Income                                            € 100,00

However, the balance now looks weird, since Trading + Assets:Realized Gains
together form the unrealized gains, which you should together either subtract
from the the assets (if you don't want to count unrealized gains in
your income yet), or add to the retained earnings (if you do want to count them
already). AFAIU you'd normally do this with just the Trading accounts, but
having an extra Asset account in there makes things somewhat confusing.

Ideally, this Assets:Realized Gains account would live under Trading:CURRENCY,
but right now you can only add a Trading account type there, to which you
cannot manually add transactions like this, which would bring us back to square
one again.




Right now, I'm puzzled as to approaching this. I think the first option
I described has the best result, but I'm also worried it might break
things in unexpected ways. Any advice?

Gr.

Matthijs
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
URL: <http://lists.gnucash.org/pipermail/gnucash-user/attachments/20140326/90d2519a/attachment.sig>


More information about the gnucash-user mailing list