Hi,
I'm trying to think through implementation of lots and various cost bases in PTA,[1] and thought I would check with this mailing list.
Specifically, I'm wondering whether the @ vs. {} difference in Beancount can be collapsed to the difference between average cost basis (ACB), with gains/losses unreported vs. ACB / FIFO / LIFO / etc., with gains/losses reported.
I understand from the Beancount docs that Beancount distinguishes between currency conversions (using @) and commodity conversions held at cost (using {}). In the former, the cost data is not maintained internally by Beancount, whereas it is with the latter.
The first is done usually in case of currency conversions when you're making a purchase in EUR online but your base currency is INR. These are one-time transactions and in one direction (purchase of EUR for INR, without any sale of EUR for INR). So you would use the @ syntax.
It can also be employed when you're travelling and are converting from INR to EUR, but then also converting the remaining EUR to INR after the trip is over. (You could also modify this example to imagine that you've earned a little bit of EUR by waiting tables, so that the amount of EUR you're converting back to INR matches the amount of EUR you purchased at the beginning of the trip.) So in this case, even though there is both purchase and sale, you're not interested in the capital gains/losses that result from the sale of the EUR to convert it into INR. So there's no need to track cost. So you would use the @ syntax.
However, say you're a currency trader, you would need to track cost, since you're interested in the capital gains. So you would use the {} syntax instead. You would also need to use whatever lot identification the tax authorities require (FIFO, etc.).
So it seems to me that the distinction isn't really between "currencies" and other commodities, but between conversions for investment/trading with gains, where the lots needs to be tracked versus conversions for payments which doesn't require using of lots.
If lots are not used, and all the purchases are lumped together, but the cost is still tracked, then that automatically becomes "average cost basis". So, "currency conversion" could also be seen as "ACB" where the software doesn't report the gains/losses vs. "conversions held at cost" where the software implements FIFO/ACB/etc., and reports the gains/losses.
Does this sound correct? If not, what am I misunderstanding?
For context, I thought I would add: For the past many years, I've been using trading accounts for journal entries involving conversions, and for reporting of unrealized gains/losses. For realized gains/losses, my MF asset management companies / stock broker provide me figures that I plug in to my journals. I'm using hledger, which currently doesn't have support for lots, but is looking to add such support.
Regards,
Pranesh