Scaled Estimates of Mutual Fund NAVs

WARNING: it may be dangerous to use this tool financially. I bear absolutely no liability if you read this article and make errors or lose your money.

Problem: Mutual fund NAVs1 (at least in the US) are updated exactly once per day, at the end of the day. When needing to make financial decisions when the trading window is still open (eg: when tax loss harvesting), and the end-of-day NAV is not yet available, it is sometimes useful to make a trivial estimate of that NAV, especially on days when there are huge changes in the market.

This may be trivial to write a tool for for a single fund, but when one’s portfolio has 10 or 20 funds or more, I find a tool critical to quickly making trading decisions.

Idea: NAV estimations can be made based on the ETF share class of the mutual fund, if one exists.

Note that on volatile days, this can be dangerous, since the estimate can be way off. However, there might be value to using such scaled estimates even with that caveat.

Solution: Scan a Beancount price database, and build a list of Mutual Fund/ETF equivalents. Then, determine the typical price ratio between these. This is done by building a list of MF:ETF price pairs on the same days across time, and using the median value for the ratio (so extreme and incorrect values are discarded). This ratio should be very stable across time.

Finally, this ratio is used to estimate today’s NAV price for the mutual fund, based on the latest ETF price2 as supplied in the price database. Of course, on a day of high volatility, this estimate is going to be just as volatile.

Tool: scaled-navs ships with fava-investor. Give it a list of your commodities with metadata that connects equivalent mutual funds and ETF tickers like such:

2005-01-01 commodity VFIAX
  a__quoteType: "MUTUALFUND"
  equivalent: "VOO"
  name: "Vanguard 500 Index Fund"

2005-01-01 commodity VFIAX
  a__quoteType: "ETF"
  name: "Vanguard 500 Index Fund ETF"

In addition, ensure both VFIAX and VOO in the example above contain several price entries on the same dates. Add a price entry for the ETF alone for today. Then, simply run:

$ scaled-navs --commodities-file commodities.bc --prices-file prices.bc
2022-09-16 price VTSAX                               94.74 USD

For ease of use, the command below will append the estimated prices (with a comment) to your prices file:

# see scaled-navs --help for setting the above with environment variables instead
scaled-navs --write-to-prices-file


  1. Net Asset Value, a fund’s price per share 

  2. When multiple Price directives do exist for the same day, the last one to appear in the file will be selected for inclusion in the Price database. 

Notes mentioning this note