Reporting: weighted average price source

Derek Atkins warlord at MIT.EDU
Mon Jul 7 11:53:09 EDT 2008

"David G. Hamblen" <dhamblen at> writes:

> A few years back (v1.8x), I had problems with these absolute values, and I
> patched report-utilities.scm,and commodity-utilites.scm so that the balance
> sheet would balance.  In addition to completely removing all the numeric:abs,
> I also had to do something about the division by zero in commodity-utilities
> when there was a zero share balance.  I'm using the "Nearest in Time"  and the
> problem went away in the 2.x updates.  If anyone's interested, I can dig up
> my old postings.  
> Anyway, I vote for getting rid of absolute values in bookkeeping.

It's not a question of book keeping.  It's a question of computing
the share price.  GnuCash stores buys as a positive and sells as
a negative.  As Christian pointed out before, if you buy x shares
for $y and then later SELL x shares for $y then a non-abs weighted
average gives you a price of 0/share!  Obviously this is wrong.
The weighted average should be $(y/x) per share.   But without
the ABS you get:

   y * x + (-y)*x        xy -xy       0
   --------------  ==    ------  ==  --- = 0
      x + x                2x         2x

When you use abs() here you get the right answer.

Of course, then you need to make sure you re-apply the negative
for sales.

So it's not a question of absolute values in bookkeeping.  It's
a question of absolute values in computing share prices.  Not
the same thing.

       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL:    PP-ASEL-IA     N1NWH
       warlord at MIT.EDU                        PGP key available

More information about the gnucash-devel mailing list