How to convert from Vanguard Investor shares to Vanguard Admiral shares

174 views
Skip to first unread message

Hardy Jones

unread,
Dec 14, 2021, 10:00:44 AM12/14/21
to Beancount
I've got an issue that I cannot figure out. I've tried searching here, on GitHub, and reading the docs. But, I'm a bit stuck on what to do.

Vanguard has three different share classes. The important ones for this situation are: Investor and Admiral. The Investor shares have a higher expense ratio, but a lower minimum. The Admiral shares have a lower expense ratio, but a higher minimum. The idea there being that if you cannot afford the minimum for Admiral shares, you can buy the Investor shares instead.

Vanguard also allows converting Investor shares to Admiral shares if you qualify. The idea there being you might buy some Investor shares over time until you get enough to meet the minimum. The conversion is tax-free, and there are no fees.

The issue I'm running into is how do I track this with Beancount? Let's make up some numbers and say I do the naïve thing of buying 100 shares of VTSMX (an Investor class) at $150.00/share:

2010-01-01 * "Vanguard" "Buy VTSMX"
  Assets:Checking -15,000.00 USD
  Assets:Vanguard:VTSMX 100 VTSMX {150.00 USD}

At the end of the month, I log onto Vanguard's website and convert from VTSMX to VTSAX. In that time, the price of VTSMX has gone up to $175.00/share. The price of VTSAX is $200.00/share. Since this is using Vanguard's conversion, there is no buy/sell event for the shares so no taxes and not profit/loss. Ideally, I'd be able to enter a transaction like:

2010-01-31 * "Vanguard" "Convert VTSMX to VTSAX"
  Assets:Vanguard:VTSAX 87.5 VTSAX {200.00 USD}
  Assets:Vanguard:VTSMX -100 VTSMX {150.00 USD} @ 175.00 USD

But, this doesn't balance. There's $2,500.00 that needs to be accounted for. There needs to be another posting to balance the transaction, but what is that other posting? On my statement there is only one "Conversion (in)" and one "Conversion (out)" transaction. There are no realized gains or losses from this conversion, no money moves to a settlement account or anything. No taxes had to be paid, etc.

It doesn't seem right to make up some fake account to dump the difference into only so the transaction balances, but that's the best I can come up with. Any other ideas about what to do, or maybe what I can do differently to track this correctly?

James Cook

unread,
Dec 14, 2021, 10:16:36 AM12/14/21
to bean...@googlegroups.com
> It doesn't seem right to make up some fake account to dump the difference
> into only so the transaction balances, but that's the best I can come up
> with. Any other ideas about what to do, or maybe what I can do differently
> to track this correctly?

It seems to me the question to ask is: how will you treat this on your
taxes?

Does the conversion count as a sale where you got a capital gain? If so
I guess you can balance that transaction with an income posting. If
not, then I suppose the cost basis for the VTSAX should be 150.00 USD
per share, since that's what you originally paid for the VTSMX. I think
you can associate a date with the lot too, like {150.00 USD,
2010-01-01}, if that helps. Disclaimer: I am very much not a tax
expert!

--
James

Ben Blount

unread,
Dec 14, 2021, 10:20:45 AM12/14/21
to Beancount
Sounds like the cost basis transfers over. If so, you can account for this by making the total basis of your new lots equal to the total basis of the original lots.

The easiest way to do it is the total cost syntax using double curlys, but if the division ends up being irrational, you can get a large number of digits which looks kinda ugly. So may be worth doing the math yourself.

In your case the original basis was 15000 USD, so the new VTSAX basis should be 150000/87.5 == 171.43 USD per share.

2010-01-31 * "Vanguard" "Convert VTSMX to VTSAX"
  Assets:Vanguard:VTSAX 87.5 VTSAX {171.43 USD} @ 200 USD
  Assets:Vanguard:VTSMX -100 VTSMX {150.00 USD} @ 175.00 USD

The total cost basis way:
2010-01-31 * "Vanguard" "Convert VTSMX to VTSAX"
  Assets:Vanguard:VTSAX 87.5 VTSAX {{15000 USD}} @ 200 USD
  Assets:Vanguard:VTSMX -100 VTSMX {150.00 USD} @ 175.00 USD
--
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+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/5cf6a40e-5cd0-43ed-bfd1-9b3893d26afen%40googlegroups.com.

redst...@gmail.com

unread,
Dec 14, 2021, 2:52:44 PM12/14/21
to Beancount
Hi,
Problem: you have a bunch of old investor lots, and you want to convert them into new admiral lots. The new lots must be scaled for quantity and price, but must retain the original dates for the cost bases. Essentially, you want your transaction to look like:

2021-01-01 * "Conversion"
  Assets:Vanguard:VINV -100 VINV {1 USD, 2010-01-01}
  Assets:Vanguard:VINV -80 VINV {1.2 USD, 2010-08-23}
  ...
  ...
  Assets:Vanguard:VADM 50 VADM {2 USD, 2010-01-01}
  Assets:Vanguard:VADM 40 VADM {2.4 USD, 2010-08-23}
  ...

That's the entire transaction. No gains are realized. Your lots retain their original dates, which is important.

You probably can take it from here, but for anyone reading along who wants an easy way to hit the keystrokes to make it happen: given this is a one-time thing, a hack suffices. Simply transform your input lines using any kind of scripting. Here is what I do in vim:

Here is a thread where I discuss this.

1. Use your editor to edit your transaction and bring up the lots in bean-context once you visually select the transaction. I use the excellent vim-beancount, and have:
au FileType beancount nnoremap <buffer> <leader>g vip:GetContext<CR>

2. filter it through this script:
!awk '{print $1, -$2*(NEW_QTY/OLD_QTY), $3, $4, $5*(OLD_QTY/NEW_QTY), $6, $7}'
replace the QTY (quantity) fields with your data.
(you might need to insert a space after the '{' for this to work)

3. Copy paste the lines into your source .beancount file, and fix up as needed

Hardy Jones

unread,
Dec 16, 2021, 1:41:01 AM12/16/21
to Beancount
Jawesome! Thanks everyone. With everyone mentioning the cost basis, I rechecked the website and it says explicitly "…your cost basis information will carry over." If I'd have read the very site I linked I probably could've figured it out 😅.

In any case, lining up all of the lots worked perfectly. Thanks again for the explanations and examples!

Reply all
Reply to author
Forward
0 new messages