[GNC] Valuation of stocks, foreign currencies in reports (was: Re: New Balsheet (and P&L report))

Geert Janssens geert.gnucash at kobaltwit.be
Tue Jun 26 05:11:18 EDT 2018


Op dinsdag 26 juni 2018 06:03:07 CEST schreef Christopher Lam:
> Hi Stephen
> 
> Thank you for valuable feedback... all these issues are cosmetic / account
> selection, and are relatively trivial.... except that Placeholder accounts
> can also contain transactions therefore must not necessarily accumulate
> their children account amounts.
> 
> My major concern relates to switching amounts to a so-called "Report
> Currency". But IMO this leads to balance sheets to being confused with
> 'stock valuation'
> 
> The existing balance sheet offers weighted-average, average-cost, nearest,
> latest. AFAIU weighted-average and average-cost obtains prices from the
> actual transactions; nearest means 'use price nearest to report-date', and
> latest means 'use today's nearest price'
> 
> Let's say I bought:
> 100 AAPL at $10 in 2006, and
> 50 AAPL at $20 in 2009; and
> AAPL was $110 in 2015
> AAPL is about $180 in 2018
> 
> I'm wanting stock valuation in 2015.
> - original currency - shows 150 AAPL, no price conversion (i.e. simplest)
> - cost price - 100x$10 + 50x$20 = $2000 (labour intensive because each
> stock transaction must be analysed, and converted using any available price
> entry to the report currency)
> - nearest - 150x$110 = $16,500 (simple)
> - latest - 150x$180 = $27,000 (also simple)
> 
> Please check latest showing balsheet multicolumn amounts converted to
> report currency; although they're esthetically nice, this has increased the
> level of complexity a magnitude a tad too high... (I wouldn't know how/if
> income/expense amounts can/must be subject to price conversion...)
> 
> I'd be keen to remove price conversion to report currency myself...

Unfortunately you can't.

A balance sheet is used to get a quick overview of the financial situation of 
a company. I would want to see this expressed in one currency and I find that 
other accounting software around me here does that as  well. This is important 
to be able to compare the value of the company at different key moments 
(fiscal year ends, when a new loan has to be acquired from a bank,...).

So inevitably this will pull in all the complexity of trading and valuation. 
And it gets even worse if your report splits out in different time periods.

I don't have much experience in this area unfortunately as I don't manage 
stocks or foreign currencies myself in GnuCash.

I can peek how my accountant handles this for our company though.

Currently for our company stock is valued at cost price. However our 
accountant says this is a choice. One could just as well decide (at least here 
in Belgium) to value stock at report date. It's not up to the application you 
use to decide which one. Instead that's an accounting decision (fiscal 
optimization). So ideally gnucash supports those two at least.

Note that in case you generate a balance sheet with multiple dates "report 
date" really means the closing date for each column. So different prices can 
be in use for each column. Or put differently in a multi column balance sheet 
you are really computing several independent balance sheets at different 
points in time. I haven't deciphered your code yet, so I don't know if that is 
how you wrote it.

This is important because when comparing present day's balance sheet with the 
closing balance sheet of the last fiscal period I don't want the closing 
balance sheet to change based on what happens to be the current price of a 
share. Or at least not in all circumstances. I want to be able to compare my 
company's current situation with what I reported to my tax authorities for 
example.

Also although you mark the cost price example above as "labour intensive" you 
have chosen the most simple version of it, namely the situation in which 
shares have only been bought but not yet sold.
Suppose you sell 20 AAPL shares at a $25 price in 2010, then what is the cost 
price of the 130 shares you have left ? Do you now have
80 shares at $10 + 50 shares at $20 (FIFO principle)
or
100 shares at $10 + 30 shares at $20 (LIFO principle)
or
90 x $10 + 40 x $20 or yet another way ?
I don't know at all what would be correct or legally allowed in different 
parts of the world. The first two options seem reasonable.

I think John has looked at this several times in the context of the Advanced 
Portfolio report so he may have more insights.

However it looks like we have hit a topic that may benefit from a centralized 
set of functions that deal with valuation and that can be reused throughout 
the rest of the code.

Geert




More information about the gnucash-user mailing list