Advanced portfolio report

Morrison J. Chang mjchang at
Sat Dec 1 18:29:03 EST 2007

On Sat, 2007-12-01 at 09:01 -0800, Andrew Sackville-West wrote:
> On Fri, Nov 30, 2007 at 10:51:32PM -0500, Mike Alexander wrote:
> > --On November 30, 2007 12:20:14 PM -0800 Andrew Sackville-West 
> > <ajswest at> wrote:
> >>

[some good stuff about corporate splits]

> On to lots:
> >>> If there are lots assigned to the splits for a stock or other asset,
> >>> the report should use them.  In this last case, the sale was part of
> >>> the second of three acquisitions.  This is correctly recorded in the
> >>> splits (which I realize is hard to do now, but someday it might be
> >>> easier) and the report should really use this information to
> >>> determine  the basis for the shares sold like the lot scrubber does.
> >>
> >> I honestly don't have a clue about lots and how they work. Its very
> >> possible that I've duplicated code that the lots system already
> >> handles. However, it's not immediately clear to me that lots will be
> >> used and so we have to build for the case we know we have, which is
> >> the txn data. At this point, I'm not sure I'm really willing to go
> >> that deep into it, as my main goal is to get something usable out of
> >> the mess that curerntly exists. But maybe there's something obvious
> >> and simple that I'm missing.  Again, a test file would be great.
> >
> > Use of lots simply assigns a lot to each split that represents a purchase 
> > or sale of shares.  For the purposes of your report all I'm asking is that 
> > you ask each split what lot it is in and if you find a purchase and a sale 
> > in the same lot, you use that purchase to compute the basis for the sale.  
> > If the sale is not in a lot (or if you can't find the corresponding 
> > purchase in the lot, which indicates a bug) then use the FIFO, LIFO, or 
> > whatever rule to find the corresponding purchase.  It's pretty simple and 
> > wouldn't complicate things much at all.  You can use xaccSplitGetLot to get 
> > the lot a split is in.  Then, if this is not null, you can use 
> > gnc-lot-get-split-list to get a list of splits in the lot.
> Okay, I understand how that works. Basically I have to track the lots
> along with the price and number of shares in the basis list. The
> problem is how to deal with the "Average" basis. Currently, with the
> average-method, instead of tracking separate cells for each txn, it
> just collapses each txn into a single cell that gets adjusted
> along. So first I'd have to *not* collapse it into a single cell, but
> keep track of each txn. no biggie. The problem is how to adjust the
> average when you yank a lot out of the middle while also performing
> "non-lot" sales. I don't understand lots in the real world application
> and whether its a case of "once you use lots you must always use lots"
> or some other case. Here is an example of the situation, maybe you
> have some insight.
> using average-method basis
> 1/1/01 purchase 10 shares @ 50
> 1/2/01 purchase 10 shares @ 60 assigned to lot 1
> 1/3/01 purchase 10 shares @ 70
> at this point basis is 30 shares at 60=1800 (regardless of method)
> 1/4/01 sell 5 shares with no lot assignment
> because its average basis, the new basis is 25 shares at 60 = 1500
> but, if we're trying to track lots, how do we apply that? which 5
> shares do we remove? If the sale is a lot sale, it gets easier,
> because you can recalculate the average with those specific shares
> removed. Does it work if we track the average separately all along and
> recalculate it when we get a lot sale? I just don't see how it would
> work if you hit a non-lot sale.
> I'm not arguing against using lots here, BTW. Just trying to figure
> out this corner case. 
> hmmm... having just re-read all this, it may be as simple as
> *ignoring* lots for the average-method, as it just doesn't apply.
Andrew, you are correct. 
FIFO and lots are cost basis calculations.
Average basis is a different basis calculation.
'Once down the path of <basis> forever it will control your destiny' [or
at least that account]

Here are some additional links to IRS publication that might be useful.

Of course since the report applies the same rule to all accounts
regardless of intent, hopefully the user knows better and talks to their
accountant or tax advisor.


More information about the gnucash-devel mailing list