Handling things without a cost basis

373 views
Skip to first unread message

Justus Pendleton

unread,
Oct 18, 2017, 10:59:39 PM10/18/17
to Beancount
I have an investment where I don't know the cost basis and I'm not sure how to correctly handle it in beancount.

I have an Australian supernannuation account that had contributions made fortnightly over the period of a decade. The superannuation fund is essentially a unit trust. I know how many units I have and they publish the price once a day on their website. The cost basis isn't relevant for Australian Tax Office purposes since withdrawals are taxed like in an American 401(k). So I initially set things up like...

2017-01-11 * "Initialising First State Super account"
     Assets:AUS:First-State-Super 93,639.814336 FSS_INTL @ 1.511152 AUD
     Equity:Opening-Balances

After using beancount for a while, I've slowly realised that this causes a few things to not work quite right. Or at least not as I expected. For instance, this asset doesn't get included in the networth report because there is no book value. It gets included in the cash report because it has no book value. In fava's balance sheet display, it is listed in the "Other" column as 93,639 FSS_INTL instead of being converted to AUD or USD.

I realise I could just give it a cost basis of $0 and treat it as a single lot. Of course, if I do that then padding doesn't work. (Expenses get subtracted every month and I currently just handle that by doing a pad entry every year or so.)

Is that the best/only option I have?

Thanks again for making beancount!
Justus

Martin Blais

unread,
Oct 22, 2017, 2:28:35 PM10/22/17
to Beancount
On Wed, Oct 18, 2017 at 10:59 PM, Justus Pendleton <just...@gmail.com> wrote:
I have an investment where I don't know the cost basis and I'm not sure how to correctly handle it in beancount.

I have an Australian supernannuation account that had contributions made fortnightly over the period of a decade. The superannuation fund is essentially a unit trust. I know how many units I have and they publish the price once a day on their website. The cost basis isn't relevant for Australian Tax Office purposes since withdrawals are taxed like in an American 401(k). So I initially set things up like...

2017-01-11 * "Initialising First State Super account"
     Assets:AUS:First-State-Super 93,639.814336 FSS_INTL @ 1.511152 AUD
     Equity:Opening-Balances

That's incorrect; you're using a price conversion ("@" syntax) in lieu of cost basis tracking
You need to use "{}" syntax instead

 

After using beancount for a while, I've slowly realised that this causes a few things to not work quite right. Or at least not as I expected. For instance, this asset doesn't get included in the networth report because there is no book value. It gets included in the cash report because it has no book value. In fava's balance sheet display, it is listed in the "Other" column as 93,639 FSS_INTL instead of being converted to AUD or USD.

I don't know about Fava's reporting, but this may have to do with the absence of price directives.
Do you have price directives to provide conversion rate?
If not, can you use the implicit_prices plugin?
If there's an available price, cash (if you're using the price conversion it thinks "FSS_INTL" is like cash) should have some converted value and not be reported as 0.


 
I realise I could just give it a cost basis of $0 and treat it as a single lot. Of course, if I do that then padding doesn't work. (Expenses get subtracted every month and I currently just handle that by doing a pad entry every year or so.)

Is that the best/only option I have?

If you have the AUD amount deducted from your paycheck and the number of units of the funds added, you can omi the cost (in the {} syntax) and Beancount should be able to calculcate that automatically



 

Thanks again for making beancount!
Justus

--
You received this message because you are subscribed to the Google Groups "Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beancount+unsubscribe@googlegroups.com.
To post to this group, send email to bean...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/77facaac-bf4b-4ac4-b795-51bcec9b4c3c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Justus Pendleton

unread,
Oct 24, 2017, 1:38:59 AM10/24/17
to Beancount
On Monday, October 23, 2017 at 1:28:35 AM UTC+7, Martin Blais wrote:
2017-01-11 * "Initialising First State Super account"
     Assets:AUS:First-State-Super 93,639.814336 FSS_INTL @ 1.511152 AUD
     Equity:Opening-Balances

That's incorrect; you're using a price conversion ("@" syntax) in lieu of cost basis tracking
You need to use "{}" syntax instead

I understand, however I don't know what the cost basis is -- that information is lost in the time -- I have no way of retrieving it and this type of account doesn't need a cost basis; it is much like an American 401k in that way, withdrawals are taxed as income rather than a capital gain.

I naively expected to treat FSS_INTL in the same way as I treat, say, Australian Dollars (AUD) where I don't bother to have a cost basis yet they are still included in my net worth and other calculations.

After a bit of debugging of the networth report, it appears this is caused by FSS_INTL being denominated in AUD, which is not my operating currency. The networth report doesn't handle "double conversion" (from FSS_INTL to AUD to USD). If I change the price directives to be in USD then things work as I expect.

Martin Blais

unread,
Oct 28, 2017, 2:42:56 PM10/28/17
to Beancount
plugin "beancount.plugins.auto"

2017-01-11 * "Initialising First State Super account"
     Assets:AUS:First-State-Super 93,639.814336 FSS_INTL {1.511152 AUD}
     Equity:Opening-Balances


;; Shortly after a deposit (weeks?), you find the actual current balance from your account.
2017-10-25 balance Assets:AUS:First-State-Super  94279.628672 FSS_INTL

;; Run check.
;; Here it'll say: Balance failed for 'Assets:AUS:First-State-Super': expected 94279.628672 FSS_INTL != accumulated 93639.814336 FSS_INTL (639.814336 too little)
;; Copy 639.814336, in your salary entry, like this:

2017-10-24 * "Salary"
     Assets:AUS:First-State-Super    639.814336 FSS_INTL {AUD}
     Income:AUS:Salary:SuperContrib   -1,000.00 AUD
     ;; ... more salary-related entries

;; Surely you know how much gets deposited from each paycheck ($1,000 AUD).
;; You do this for every paycheck.



;; This will be filled in with the price, automatically:
;;
;; 2017-10-24 * "Salary"
;;   Assets:AUS:First-State-Super      639.814336 FSS_INTL {1.562953 AUD, 2017-10-24}
;;   Income:AUS:Salary:SuperContrib  -1000.000000 AUD




I think with a better system of constraints it might be possible to fill in both numbers, this isn't perfect (two steps), but it works.



--
You received this message because you are subscribed to the Google Groups "Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beancount+unsubscribe@googlegroups.com.
To post to this group, send email to bean...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages