NAV - Mutual Fund Performance Analyzer, Release 1.
(c) Copyright 1996 Tekniq. All Rights Reserved.

README date: 11/06/96


NAV
---

NAV is a DOS shareware program for mutual fund performance analysis, which:
 * displays and prints graphs of weekly mutual fund price changes
 * analyzes volatility and reward/risk
 * compares performance of funds over various time periods
 * calculates three types of moving averages and buy&sell signals
NAV comes with up-to-date data on 330 mutual funds and indices, and can also
analyze data that you supply. Registered users receive weekly data updates.

Try the program to decide if it is useful to you. If it is, send your:
(1) name
(2) US mail address
(3) Email address
(4) phone number(s)
(5) registration fee ($20), checks payable to Tekniq
    (state of Washington residents add 8.2% sales tax=$1.64)
to:
  Tekniq
  PO Box 201
  Issaquah, WA 98027-0201

Email: randyn@eskimo.com
URL:   http://www.eskimo.com/u/r/randyn (beginners: download readme)
FTP:   ftp.eskimo.com, directory /u/r/randyn

It is important to register, as up-to-date data is available only to registered
users via an encryption key. The key is changed periodically, and registered
users are notified. It is also important to include your Email address, for
fastest notification of new keys. Your responsibility as a registered user is
to notify me if your US mail address, Email address, or phone number changes.
If within the first two months of use you are not satisfied with the software,
notify me for a refund. Feel free to share NAV (but not the key) with others,
and encourage them to register.

A set of data files current to December 1994 are available to help you evaluate
the program. A few of the up-to-date data files can also be viewed, but the
majority of the 330 data sets require the encryption key. The program can also
evaluate data that you supply in ASCII (unencrypted) text form. The key is a
short ASCII string, like a password. Please do not "share" the key with
friends, to save them the cost of becoming registered users, and please do not
put the key on a network or public bulletin board. Instead, show others what
the program can do, and encourage them to become registered users. I've set the
registration fee low so anyone with a computer can afford it.

"NAV" stands for Net Asset Value.

Date current key was created: November 06, 1996 (Release 1)

Dates previous keys were created: April 23, 1996 (beta test)

Expected date next key will be created: January 01, 1997


System Requirements
-------------------

NAV requires VGA video (640x480, 16 colors), DOS (Windows is not necessary,
though it will run under Windows), and about 4 Megabytes of memory. If you have
less than 4 Megabytes of memory, read the sections below on "Out of Memory",
"Installing Device Drivers", "LIM.SYS", and "EMS.SYS" for a technique to
emulate the needed memory. NAV itself uses only a small amount of memory, but a
large amount of memory is required to hold the data for all the funds. A mouse
will be used if present.


Disclaimer
----------

I try to provide accurate, up-to-date data on all the mutual funds and indices
that I track, but I cannot guarantee accuracy. Use this information at your own
risk. I am not responsible for financial decisions you make using this program
and data. If you are going to make an investment decision, don't base it solely
on this program and data; confirm it first with other sources of information.
Then, only make the decision if you are willing to accept full responsibility
for it.


Other Mutual Fund Factors
-------------------------

NAV performs technical analysis on mutual funds, but there are other
fundamental factors you should consider before selecting a mutual fund. Some of
them are:

(1) Portfolio manager. Who runs the fund? How long have they been in charge?
If not long, were they in charge of another fund prior to that? How was their
record? Some fund families attempt to hide their portfolio managers by stating
their funds are run by a "team", the members of which they are loathe to name.
They are attempting to nullify the effects of a future departure of a "star"
manager, which can cause shareholder assets to be withdrawn, perhaps to follow
the manager to their new location. How is are the portfolio managers? If they
are 70 years old, you have to wonder how long they will continue to be on the
job, even if they have an outstanding record. What if you invest, and they
announce their retirement the next day?

(2) Fund objective and market capitalization, as affected by asset growth due
to popularity resulting from outstanding recent performance. Some funds that
started out as smallcap funds (and built outstanding records with that market
capitalization), are now midcap funds with several billion dollars of assets.
In general, smallcap funds are most effective as smallcap funds when they
remain relatively small (under a billion dollars of assets). If significant
and rapid asset growth has occured, previous performance should be discounted.
Also, be sure the fund invests in what you think it does. Some funds with "blue
chip" in their name don't invest in blue chips, etc. Read the prospectus and
annual report.

(3) Management fees and loads. Expensive funds need to do that much better than
efficiently run funds just to match their performance.

(4) Turnover. Low turnover funds in general will not generate as much of a tax
burden due to capital gains distributions.

(5) Foreign exposure. Many domestic equity funds invest significant portions of
their portfolios overseas. Be sure to include this if the percent of foreign
investments is an important part of your personal portfolio strategy.


Location
--------

The files can be downloaded by anonymous FTP from host ftp.eskimo.com in
directory ~randyn. Most are contained in NAV.ZIP, along with this README file,
which serves as a user manual. Some are also available for separate download.
Note that directory ~randyn will not be visible when you connect to the root
directory at ftp.eskimo.com, but typing "cd ~randyn" will place you there.
Alternatively, "cd u/r/randyn" will get you there too. They are also available
on the world wide web at http://www.eskimo.com/u/r/randyn.

The files are:
  NAV.EXE     Analysis program
  README      Documentation (user manual)
  README.NEW  Announcements of recent changes
  DATA.ZIP    Data files (fund and index price histories), key encrypted
  94.ZIP      Data files, current to December 1994, default encrypted
  LIM.SYS     LIM EMM (expanded memory) emulator
  XMS.SYS     XMS (extended memory) emulator
  FUNDS       List of the funds in DATA.ZIP (330)
  A0.EXE      Program to unencrypt .NAV files (default)
  A1.EXE      Program to unencrypt .NAV files (key required)
  UPDATE.EXE  Program to update .NAV files
  UPDATE.DAT  Update data for .NAV files
  OPT         New optimization parameters, if UPDATE.DAT is present
  NEWKEY.EXE  Program to update files for a new encryption key
  X0.EXE      Program to encrypt .NAV files (default)
  X1.EXE      Program to encrypt .NAV files (key required)

Also in that location is UNZ512X3.EXE, a self-extracting binary which contains
UNZIP.EXE. If you need an unzip utility, I recommend you (1) create C:\UNZIP,
(2) download UNZ512X3.EXE into it, (3) execute it to extract UNZIP.EXE, and
(4) either copy UNZIP.EXE to a directory on your PATH, or put C:\UNZIP on your
PATH. UNZIP is freeware; there is no fee for using it. Note that UNZ512X3.EXE
contains a README file, so you do *not* want to unpack it in the same directory
as NAV.ZIP (C:\NAV), or you will overwrite one README file with the other.

There is a directory called Incoming which is available for uploading. For
example, if you have acquired or created some data sets for mutual funds that
aren't already present and you would like to have them added, upload them to
Incoming and send me Email. Just use 'put' instead of 'get' in ftp.

Note that eskimo is a linux system, and unlike DOS, letter case in filenames is
significant. The file and directory names on eskimo will be in lowercase, and
you need to type them that way to 'get' them. In this README, however, I'll use
uppercase to make the names stand out. All files, including this README, should
be retrieved using binary mode.

If README.NEW is present, it contains announcements of recent changes, such as
new features, key changes, and new data sets.


An FTP Session
--------------

FTP stands for File Transfer Protocol, a way to transfer files across the
Internet. Once logged onto a computer connected to the Internet, use the
following commands (comments are enclosed in angle brackets <>):

  ftp ftp.eskimo.com
    <You'll be asked for a logon ID.>
  anonymous
    <You'll be asked for a password; use your Internet Email address.>
  joeblow@internet.com  <Don't type this; fill in yours.>
    <You'll be logged on, and placed in the root directory.>
    <Passwords are not printed on the screen when you type them.>
    <If you do a 'dir' you will not see directory ~randyn, but
    execute the next command anyway. If it fails, cd to u/r/randyn.>
  cd ~randyn
    <Now you'll be at the right location; set file transfer to binary.>
  binary
    <To see what files are available, type "dir".>
  dir
    <Now download the file.>
  get nav.zip
    <Nav.zip is about 800K; when it's done, logoff.>
  bye

That's it. Some Internet providers put you into a "user friendly" menu system
when you dial into their machine via a modem. Usually there is a menu selection
for starting a command shell, from which you can issue the ftp command. If not,
there may be an ftp service menu selection. If you can't figure out how to ftp,
ask your system administrator. If you don't have an Internet account or for
some reason ftp is not available, it is going to be tough to keep your data
up-to-date, as anonymous ftp is the primary way I plan to make current data
available. After you use ftp to transfer NAV.ZIP from ftp.eskimo.com to your
Internet Service Provider, download it to your local PC. If you don't know how
to do that, ask your system administrator; usually your ISP will have a program
you can invoke to transfer a file to your modem's terminal emulator program.


Installation
------------

Create a directory called NAV in the root directory of your hard disk, for
example, C:\NAV, and place NAV.ZIP into it. Unpack with the command "UNZIP
NAV". The UNZIP.EXE program is also available on ftp.eskimo.com (see above).
This will unpack the files listed above. Then do "UNZIP DATA", which will
create many .NAV files, and a file called OPT. The .NAV files each contain one
data set, usually for a mutual fund, and are named by ticker symbols. For
example, FMAGX.NAV contains data for Fidelity Magellan. Some of the .NAV files
contain data for market indices, such as SP500.NAV, however from here on I will
refer to all data sets as "funds". NAV will look for its data files in the
current directory, so leave them in the same directory, and execute NAV from
there. OPT contains moving average values, and will usually be up-to-date. If
not, NAV will generate a new OPT file.

The simplest way to run NAV is to make C:\NAV the current directory and enter
"NAV". This will cause NAV.EXE to execute, load in all the .NAV files, either
calculate moving average values for each of them or fetch them from the OPT
file, and display the data for you to evaluate.

Most of the data is measured weekly, at the close of the week on either Friday
or Sunday (which uses the previous Friday's closing price). The data also
includes distributions for most funds. For some funds, the distribution data is
represented explicitly and the price data is as reported on the given date; for
other funds, the distribution data has been used to adjust the price data. The
data also includes the fund name, and category ("growth", "bond",
"international", and so on). Dates may also be present without corresponding
prices; these are missing data. NAV handles these by interpolating from the
previous and next known prices. Missing data points are represented by red dots
when graphed (normal data are plotted with white dots). The data may also
include information on share splits, which are rare for mutual funds, but do
happen.


DOS Functionality
-----------------

A prerequisite to using NAV (or any application software) is a basic
understanding of how your computer, its hardware, and its operating system
work. Read the manuals that come with your machine. There are plenty of books
you can buy at any bookstore that explain how to use DOS or Windows. I'll help
you use NAV if you're having problems, but I won't answer questions like:
"What does 'file not found' mean?", or "How do I copy a file?"


KEY
---

Once you have registered NAV and have the encryption key, there are three ways
to use it:
(1) Create an environment variable KEY. For example, add the following to
    AUTOEXEC.BAT: SET KEY=FOO
(2) Create a file called KEY in the same directory as NAV.EXE, usually
    C:\NAV, containing the key on a line all by itself.
(3) When you run NAV.EXE, pass the key to it: "NAV /KEY=FOO"
Keys are case sensitive; FOO and foo are different. The key will be changed
every six months, in January and July. Check near the top of README (this file)
for the date the current key was created, and the expected date of the next
key. Keys are limited to 32 characters, and cannot be blank.


NEWKEY
------

When an encryption key change is announced, you can use NEWKEY.EXE to update
your data files to the new key. You should do this before you run UPDATE.EXE.
NEWKEY will update the following files: OPT, UPDATE.DAT, *.NAV, KEY. NEWKEY
takes one or two parameters. If the old key is contained in a KEY file or in a
KEY= environment variable, you only need to give the new key, for example:
  NEWKEY BAR
If you use the key by passing it to NAV on the command line ("NAV /KEY=FOO"),
then you need to supply both the old and new keys to NEWKEY, for example:
  NEWKEY FOO BAR
The first (optional) parameter is the old key and the second is the new key. If
there is a KEY file, NEWKEY will update it. If there is a KEY= environment
variable, NEWKEY will remind you to update it. If you download new OPT and
UPDATE.DAT files (which use the new key) before running NEWKEY, it will tell
you that they already use the new key, and they will not be changed. To
reencrypt files, NEWKEY uses a temporary file called __NEWKEY.@@@, which is
deleted before NEWKEY exits.


Parameters
----------

Usually you will run NAV.EXE with no parameters, other than perhaps /KEY=, and
it will display the data for all .NAV files in the current directory (C:\NAV).
If you wish to look at only one or a few .NAV files, you can give their names
on the command line like this:
  NAV FMAGX
which will only display Fidelity Magellan (the .NAV extension is implied), or:
  NAV F*.NAV
which will display all .NAV files starting with F, which includes all Fidelity
and Founders funds, and a few others. Giving NAV a parameter of /UMA, /WMA, or
/EMA will select the corresponding type of moving average to use for all funds;
this selection will be recorded in the OPT file. /EMA is the default. Giving
NAV a parameter of /OPT will cause it to calculate the optimal moving average
values, and then exit (prior to running the interactive graphical portion of
the program); this is useful in batch files when values must be recalculated
but the interactive portion of the program is not needed. When running NAV in
this fashion, it is useful to redirect output to a file:
  NAV /OPT >LOG
Executing "NAV /HELP" will display the list of valid parameters.


Data Updates
------------

Normally I will update all funds with weekly closing prices by Sunday evening
for the previous Friday market close. My ISP is difficult to dial into on
Sunday evening, so I expect to upload fresh data every Monday morning. This is
the plan; I don't guarantee it. I expect to be about 90% successful at getting
the data available by Monday morning. I'll do my best to keep fresh data
available, but I can't guarantee it. If you notice a missing distribution, let
me know, as they are easy to miss. I don't know if distribution by anonymous
FTP will be feasible; if you encounter unreasonable difficulties, let me know.

Most of the data files will be updated weekly, but there are a few exceptions.
The 44 Wall Street fund was merged into the 44 Wall Street Equity fund in
mid-1993, so there will be no new data on it. The S&P 500 dividend yield and
P/E ratio data sets are updated only every few months, since I have to go to
the library to get them. If you learn of an on-line source for those numbers,
let me know. Currently the data sets for the Money Market yield and the CPI
(Consumer Price Index) are updated on a yearly basis. I'm looking for a few
more index data sets: the price of 1 oz of gold, the original yield at issue
(not "price") of 30-year treasury bonds, and the inflation rate (CPI), going
back to 1986. The current CPI numbers are yearly summaries; I'd prefer monthly
or weekly data.

NAV.ZIP is a large file (currently 850K), so I won't update it often. There is
a separate DATA.ZIP available on ftp.eskimo.com, but it is over 700K, and
tiresome to download every week. DATA.ZIP will be updated about every two
months; it contains the complete price and distribution histories. Every week,
a new UPDATE.DAT file will be placed on ftp.eskimo.com. When you see one with a
date later than your last update, download it and run UPDATE.EXE. By default,
UPDATE.EXE will use the information in UPDATE.DAT; if the update information is
in a different file, you can supply the file name as an argument to UPDATE.EXE,
for example:
  UPDATE NEWINFO.DAT
UPDATE.DAT is encrypted, but UPDATE.EXE can read it, provided the key is
available. UPDATE.EXE extracts the new data from UPDATE.DAT and appends it to
the end of each of the encrypted .NAV files. If you try to apply the same
changes twice, the .NAV files are not changed. When UPDATE.EXE adds information
to a .NAV file, it will report the file name and new data. If your .NAV files
have become significantly out of date, download the current DATA.ZIP and unzip
it, then download UPDATE.DAT and run UPDATE.EXE. The plan is for all new price
and distribution data to be accumulated in UPDATE.DAT over a period of a few
months, after which a new DATA.ZIP will be generated with all changes included,
and UPDATE.DAT will be deleted.

Registration includes access to all files, plus the current encryption key.
Registered users will also be notified of key changes. Registration does *not*
include a guarantee that I will continue to provide weekly data updates
forever, though my intent is to provide them for the foreseeable future. If the
time comes when I'm no longer able (or no longer desire) to provide weekly data
updates, I will try to find someone to take over that task. If I can't find
someone, I'll offer a full or partial refund to recently registered users. As
of 10/96, I've been doing weekly data updates for the last six years.


Moving Averages
---------------

NAV displays a number of statistics relating to fund performance, but its real
job is calculating moving averages. These are trend curves which compare recent
prices to historical behavior, and are used to make buy and sell decisions. NAV
currently supports three moving averages:

UMA - Unweighted Moving Average. This is calculated by adding the previous N
prices and dividing by N. For example, let P[i] be the price at week i, and
U5[i] be the 5-week UMA at week i. U5[1-5] are undefined, since they do not
have five previous data points. U5[6]=(P[1]+P[2]+P[3]+P[4]+P[5])/5,
U5[7]=(P[2]+P[3]+P[4]+P[5]+P[6])/5, and so on.

WMA - Weighted Moving Average. Similar to UMA, but gives more weight to recent
price points. W5[6]=(P[1]+2*P[2]+3*P[3]+4*P[4]+5*P[5])/(1+2+3+4+5). The most
recent price point, P[5], receives five times the weight of the least recent
price point, P[1].

EMA - Exponential Moving Average. The number of data points used to calculate
UMA and WMA are called a "window size", but EMA has no fixed window size.
Instead, E[i]=C*P[i]+(1-C)*E[i-1], and 0<C<1, and E[1]=P[1]. C is the
coefficient, but for consistency with UMA and WMA we'll call it a weight. If
C=.8 then a lot of weight (80%) is given to the current price point and
relatively little (20%) to previous price points, which means the EMA will
follow the price graph very closely. If C=.2 then a lot of weight is given to
previous price points and relatively little to the current price point, which
means the EMA will be a gradually moving curve that doesn't follow the price
graph closely.

NAV can use any of these moving averages (but only one at a time) for each
fund; EMA is the default. This is because I've found that EMA tends to produce
the best results for most funds, particularly growth and aggressive growth
funds. Occasionally UMA or WMA is better for some of the least volatile funds,
such as bond and equity income funds. EMA is more flexible than UMA or WMA,
because depending on the choice of coefficient it can give a different amount
of weight to recent data points as opposed to more distant data points. For WMA
more weight is given to more recent data points, but the weight is fixed, not
variable. And for UMA all data points receive the same weight regardless of
whether they are recent or not.

The buy and sell signals generated by NAV are offset from the moving average
by buy and sell thresholds. To generate a signal, the price must meet or
exceed the moving average plus the threshold. For example, "EMA .65 (+3-5)"
means the coefficient (weight) is .65, a buy signal is generated when
P[i]>=1.03*E[i], and a sell signal is generated when P[i]<=.95*E[i]. The
positive number is the buy threshold and the negative number is the sell
threshold. So for a buy signal to be generated, the price must meet or exceed
the moving average by 3%, and for a sell signal to be generated, the price must
meet or fall below the moving average by 5%. "UMA 12 (+1-0)" means the
unweighted window size is 12 data points (usually weeks), a buy signal is
generated when P[i]>=1.01*U[i], and a sell signal is generated when P[i]<U[i].
It is possible for threshold values to be zero, in which case crossing the
moving average will generate the signal immediately. But for a zero threshold,
the price must cross, not just meet, the average; this is to eliminate the
special case of (+0-0) and a price which hits the average exactly triggers
simultaneous buy and sell signals.

NAV will calculate the best values for window size, weight, buy and sell
thresholds. "Best" is defined as the values which give the greatest investment
value at the end of the trial period, or at the end of the last data point if
there is no eval period (see below). Window sizes (UMA and WMA) can range from
5 to 60 weeks, inclusive. Buy and sell thresholds can range from 0% to 10%.
Weights (EMA) can range from .10 to .80, inclusive, by .01 increments.

NAV will accept a parameter to indicate which moving average to use. Executing
"NAV /UMA" will cause NAV to use the Unweighted Moving Average for all funds.
Similarly, parameters of "/WMA" and "/EMA" can be used to set the moving
average to Weighted or Exponential.

For some data sets (especially gold funds), you'll notice that the best values
can generate a *lot* of signals, very close together ("whipsaw"). While using
the values would optimize the final result, is it really worth switching in
and out on a weekly basis? A potential fix for this, not yet implemented, is to
add a constraint that disallows signals closer than a given number of weeks, or
that penalizes signals based on how close together they occur. This will
hopefully result in good values with a reasonable frequency of signals; look
for it in a future release.

Moving averages don't mean anything for data sets that do not represent prices,
such as the S&P 500 P/E ratio and dividend yield.

NAV does not adjust for loads; the price histories are as reported in the
newspaper.


Accuracy
--------

You should treat the results of running NAV as a very good approximation of the
real world. Don't expect the yearly results to match numbers in prospectuses,
ads, or newsletters. NAV data is typically sampled once a week, on Friday or
the weekend. Also, some distributions are recorded on X-dividend dates, but
reinvestment is not calculated until the next Friday/weekend day, so there will
be a small amount of error. To be more accurate, the NAV on the X-dividend date
should be present, but this is not available for all of the current data sets.
The more accurate method is used for most distributions paid in 1996 and later,
but not for most prior data.


Reading in the Data
-------------------

When you run NAV, the first thing you'll see is the copyright, followed by an
indication of whether LIM or XMS memory is available, and how much. Then, NAV
will report how many funds it is reading, and it will start the first read
pass. During the first read pass, the size of various data structures is
determined, but only a few data items are stored. As each fund is read, a dot
will be written to the screen. Eighty dots will fit on one line, so you can
estimate how far along the reading pass is. After completing the first read
pass, NAV will allocate memory to store the data. Then it will execute the
second read pass, during which data is stored, and again a dot will be written
for each. After the second read pass, NAV reports how much memory was used, and
the time it took to load the data. The memory may be "FAR" which means
conventional, or "UMB" which means XMS Upper Memory Blocks, or "HMA" which
means the XMS High Memory Area, or "EMB" which means XMS Extended Memory
Blocks, or "LIM" which means Lotus-Intel-Microsoft expanded memory. The numbers
are in bytes.


Calculating Moving Average Values
---------------------------------

Following the data input sequence, NAV will start calculating optimal moving
average values. You'll see output such as the following for each fund:

  EBENEZER SCROOGE FUND  time=:29

Each fund name is reported, along with the amount of time it took to calculate
the optimal moving average values, if longer than one second. The values
themselves are not reported at this time, but are visible in the upper
right-hand corner of each fund graph in the analysis screen, if M is pressed to
see the moving average. They will look like this:

  EMA .46 (+2-4)

In this case, an exponential moving average is used, with a weight of .46 and
buy and sell thresholds of +2% and -4% respectively. After all funds have been
optimized, the total amount of time to optimize all the funds will be reported,
then you'll be asked to press Enter. Once you do, you'll be flipping between
the select screen and the analysis screen to view and analyze the data.


Trial and Eval Periods
----------------------

Before calculating moving average values, NAV will try to separate the price
data for each fund into two parts: the trial period and the eval period. The
idea is to use only the trial period data to form the moving average values,
and then apply the values to the eval period data. NAV determines the most
recent whole year for which data is available. This, plus any trailing partial
year, will be the eval period, if at least 100 data points precede it (they
become the trial period). A whole year must begin in the first week of January,
and end in the last week of December. If a whole year cannot be found, or there
are less than 100 prior data points, then there is no eval period, and the
entire price history is put in the trial period. Examples: for a fund with data
from 2/3/95 to 4/20/96 there is no eval period, because there is no whole
calendar year present. For a fund with data from 11/14/94 to 4/20/96 there is
no eval period, because while calendar year 1995 is present, there are not 100
data points that precede it. For a fund with data from 9/2/88 to 4/20/96 the
eval period starts on 1/1/95 and includes both calendar year 1995 and ytd 1996.

Moving averages are most useful if there are separate trial and eval periods.
This is because the moving average values must be calculated over the trial
period, and then applied to the eval period. If the same data points are used
to both calculate and also apply the values, the results will be subject to
"overfitting". That is, the algorithm "cheats" by allowing itself to select
values which optimize the equations over all the data. To be fair, the
algorithm should use only part of the data to calculate the values, allowing
you to evaluate the performance over an independent period. In this sense,
"performance" applies to the moving average values, and therefore the algorithm
that calculates them. When moving averages are graphed (by pressing M in the
analysis screen), you will see a vertical blue line separating the trial period
from the eval period. If the line is not present, then there are no separate
trial and eval periods, and the moving average is affected by overfitting. Such
a moving average can change with each new data point that is added; therefore,
don't use it to make buy/sell decisions until enough data has accumulated to
form separate trial and eval periods. Overfit moving averages can still be
somewhat useful in showing how the algorithm is selecting moving average
values.


OPT
---

The OPT file is generated by NAV, and contains moving average values, such as
window sizes, weights, and buy and sell thresholds. It also contains
information about each fund, such as the number of data points and the first
eval period date, so NAV can determine whether the values are up-to-date. If a
.NAV file has grown (added new data points) since the last time an OPT entry
was generated for it, the values may need to be recalculated. This will depend
on whether an eval period exists for the fund, and whether the eval period
matches the one in OPT. For funds which have an eval period, adding one or a
few new data points will usually not trigger a recalculation of moving average
values. But once the first date of a new year is added, the eval period will be
moved forward by one year, and a recalculation is necessary. Usually this will
be done by me, not you, so you will seldom if ever be required to wait for a
lengthy recalculation to complete. Funds which do not have an eval period must
be recalculated when any new data is added. If you ever suspect that OPT does
not contain optimal values, delete it and NAV will recreate it automatically.
On my system, a 386/25Mhz, and with the 330 .NAV files, it takes two hours to
calculate a fresh OPT file. NAV will look for OPT in the current directory. OPT
is an encrypted file.


Select and Analysis Screens
---------------------------

Once NAV has loaded the data and displayed the moving average values, it will
ask you to press Enter to continue. When you do, NAV will switch to full-screen
graphics mode. After that, NAV will switch between two screens, called the
select screen and the analysis screen. Press Enter to switch between these two
screens. Pressing Q in either screen will quit (exit) the program, after asking
you to confirm.

The select screen displays a color-coded list of funds, a cursor box, a
mini-graph (upper right-hand corner), and a category color legend (lower
right-hand corner). You can move the cursor box up and down the list with the
UpArrow and DownArrow keys, or the PageUp and PageDown keys, or by clicking on
the fund you want with a mouse. The Home and End keys will move the cursor to
the top or bottom of the list, respectively. To select a fund with the
keyboard, position the cursor box over it and press the Space bar. A red
checkmark will appear to the left of selected funds. When one or more funds
have been selected, press Enter to switch to the analysis screen for a more
detailed look at the selected funds. If you press Enter before selecting any
funds, the fund that the cursor is on is automatically selected before
switching to the analysis screen; after returning to the select screen, it will
be automatically deselected. While in the select screen, the mini-graph will
display a simplified graph of the data for the fund in the cursor box.

The color used for the fund name is based on the type of the fund; aggressive
growth funds are shown in light pink, international funds in bright pink,
growth funds in red, and so on. Indices, which may not be funds, are shown in
purple. A fund that has not been assigned to a category will appear in white,
at the bottom of the list. Normally funds are grouped by category, and
alphabetically within each category, but pressing C will disable the category
sort, so they are listed alphabetically without regard to category. Pressing C
again will restore the category grouping. Fund names are limited to 40 letters
in length, so long names are truncated.

The analysis screen displays the selected funds in detail. If only one fund is
selected, it will fill the entire screen. If two funds are selected, each will
get half the screen, and so forth. There is no limit to the number of funds you
can select, but you will find that it is difficult to view the graphs if there
are more than two of them. The bottom axis is time, earliest dates on the left,
most recent on the right. The vertical axis is money, and is scaled according
to each fund. If more than one fund is present, it will be scaled for all funds
according to the maximum of all of them. Statistics are displayed in the upper
left-hand corner. The yearly returns, including year-to-date (ytd) are shown,
as is the total return over the entire time period (annualized), and the 1-,
3-, 5-, and 10-year averages (annualized, relative to the most recent date).
Negative percentages are enclosed in parentheses. These are all in the first
column.

Yearly returns start on the last data point for the previous year (or if that
cannot be found, the first data point for the current year, as long as it is
within the first week of the year), and end with the last data point for the
current year (which must be in the last week of the year; that is, between
December 25 and December 31, inclusive). Year-to-date is also calculated from
the last data point of the previous year, as long as it is within the last week
of the year; if that data point cannot be found, the first data point of the
current year is used, as long as it is within the first week of the year; if
that also cannot be found, but there is preceding data, then no valid ytd
calculation can be made. If you notice some yearly or ytd calculations are
missing, it is because valid beginning and ending data points cannot be found.
The program logic to figure this out is very complicated, so if you notice
problems, please let me know, and send example data to demonstrate the problem.

In the second column, the following are shown: volatility, reward/risk ratio,
best returns, nav and dist summaries, and tax efficiency. Volatility is the
standard deviation of the quarterly returns; it may be misleadingly low for
funds with short histories. The reward/risk ratio is the return divided by the
volatility. If the fund has a long enough history to have a 3-, 5-, or 10-year
return, the longest of these is used. Otherwise, the total start-to-end return
is used. I look for funds with a reward/risk ratio of 2.0 or above. The best
return is the annualized result of following the best moving average values;
they will be for the entire fund unless it is long enough to be divided into
trial and eval periods. If it does have separate trial and eval periods, there
will be a set of best values, one for each period. The nav summary shows the
absolute change in nav from first to last data point, and the dist summary
shows the total amount of distributions per share from first to last data
point. The nav and dist summaries are used to calculate tax efficiency, which
is the percentage gain retained in the share price. Say that a fund gains $10
per share and pays out $8 total distributions per share; the tax efficiency is
55.6%, since $10 out of a total $18 gain was retained in the share price. Use
this statistic to determine which funds to place in tax-deferred accounts, such
as IRAs or 401(K)s.


Tax Efficiency
--------------

Some of my sources of data do not provide distribution data explicitly;
instead, they use the distributions to adjust the price history, and then throw
the distributions away. This is fine for reflecting the true performance of the
fund (ignoring taxes), but it loses important information. You cannot tell how
much of a tax burden the fund has created, year to year. For this reason, some
of the .NAV files have "excluded" regions. The purpose of these regions is to
exclude certain time periods from the tax efficiency calculation, since they
include price data that has been adjusted for distributions.

Go into the select screen, and move the cursor box to Fidelity Value in the
list of growth funds, then press Enter to switch to the analysis screen. Press
D to see the distribution graph. This is an example of a fund for which all the
distributions are present; Fidelity Value pays distributions in December of
each year. Now press Enter to go back to the select screen, move the cursor box
to Longleaf Partners, and press Enter to switch to the analysis screen. You
will see in the distribution graph that there is a distribution in December
1995, but no others. This fund pays a distribution every year, just like
Fidelity Value, but because the data for this fund comes from a source that
uses the distributions to adjust the price history, the distributions are not
present. The tax efficiency is still correct, however, because the adjusted
region has been excluded from the tax efficiency calculation. Once I acquire a
data set and start maintaining it, I maintain the distributions explicitly.

Tax efficiency will be meaningless for indices such as the S&P 500, or DJIA.


Logarithmic Graphs
------------------

The vertical (money) axis for both the mini-graph in the select screen and the
main fund graph in the analysis screen is logarithmic. Traditionally, the
vertical axis for financial/investment graphs is logarithmic, so that steady
rates of return and the effects of compounding result in a straight line. You
can change between logarithmic and linear money axis with 'L'. "LOG" or "LIN"
will appear in bright pink in the upper right-hand corner of the screen (in
both the select screen and the analysis screen) to indicate which mode is
active. The distribution graph is always linear, in cents per share.


Mouse
-----

If your computer has a Microsoft-compatible mouse, NAV will use it for several
functions. In the select screen, you can use the mouse to click on fund names
to select or deselect them. In the analysis screen, you can use the mouse to
test various date and price points on the fund graphs, and to see performance
over various periods. Moving the mouse around will display the date and value
at the tip of the mouse pointer. Clicking once will fix one endpoint of a line
that you can stretch out ("rubber band"). When the mouse is over the desired
second endpoint, clicking a second time will fix it in place. The endpoint
values and the performance over the period are reported in bright pink in the
third column in the upper left of the fund graph. Use this to determine
approximate fund performance over arbitrary or non-standard timeframes.
Clicking a third time will erase the line, and start over. A line segment must
be contained in one fund graph to be meaningful.


Zoom
----

Sometimes it is difficult to see the detail of current price moves if the
history gets long, and recent prices are squeezed up against the right-hand
axis. To "zoom" in on the last full year, plus the current ytd, press Z. To
unzoom, press Z again. Zoom is a global setting, and will affect the mini-graph
in the select screen as well as the full graph in the analysis screen. When
zoom is active, the letter Z in bright pink will appear in the upper right-hand
corner of the screen (in both the select screen and the analysis screen).


A $1 Investment
---------------

Since all mutual funds and indices have different share prices, NAV puts them
all on the same scale by "investing" $1 in each of them on the earliest date
for which there is data, and following what happens to the $1 investment as the
share price fluctuates, distributions are paid (and reinvested), and share
splits occur. This is why the graphs for all funds start at $1 on the
left-hand vertical axis.


Select Screen Bars
------------------

Initially, the select screen displays a mini-graph, a category color legend,
and a list of the fund names, alphabetized within each category. However,
there are various bar charts that can replace the mini-graph and category color
legend. Pressing each key a second time will change back to the mini-graph and
legend. Each bar chart is sorted from longest bar to shortest, except for
volatility, which is sorted from shortest to longest. The length of each bar
corresponds to the value of the statistic associated with each fund. Note that
the charts corresponding to returns can be negative; they will have a bar
extending to the left rather than to the right. Volatility and tax efficiency
by definition cannot be negative. For funds not long enough to have a given
return, the bar length will be 0. The type of bar chart being displayed is
reported near the end of the top (copyright) line.

V - Volatility
R - Reward/risk
T - Total return
Y - Year-to-date
X - taX efficiency
1 - 1-year return
3 - 3-year return
5 - 5-year return (note: many funds don't have 5 years of data)
0 - 10-year return (note: few funds have 10 years of data)


Keys
----

Valid keys for select screen:
  Enter - switch to analysis screen
  Space - select/unselect current fund
  I - set/unset current fund as Index (currently inactive)
  S - Select/unSelect current fund for portfolio
  G - Group/unGroup portfolio funds
  UpArrow, PageUp, Home - move cursor box up
  DownArrow, PageDown, End - move cursor box down
  V - toggle Volatility bars
  R - toggle Reward/risk bars
  T - toggle Total return bars
  Y - toggle Ytd return bars
  X - toggle taX efficiency bars
  C - toggle Category sort order
  1,3,5,0 - toggle 1-, 3-, 5-, and 10-year return bars
   (note: many funds don't have 5 years of data; few funds have 10 years)

Valid keys for analysis screen:
  Enter - switch to select screen
  UpArrow - move to previous fund
  DownArrow - move to next fund
  D - toggle Distribution information
  M - toggle Moving average information

Valid keys for either screen:
  U,W,E - use Unweighted/Weighted/Exponential Moving Average
  P - Print screen
  Z - toggle Zoom
  L - toggle Logarithmic/Linear money axis
  H,?,F1 - display Help screen
  ! - execute COMMAND.COM
  Q - Quit


Cursor Box
----------

When in the select screen, the UpArrow and DownArrow keys cause the cursor box
to move up and down. The PageUp key will cause the cursor box to move to the
top of the page if it is not already there, or to the top of the previous page
if it is. Similarly, the PageDown key will cause the cursor box to move to the
bottom of the page if it is not already there, or to the bottom of the next
page if it is. The UpArrow and DownArrow keys can also be used in the analysis
screen to cycle through the funds, as long as there is only one fund selected.
The Home and End keys will move the cursor box to the top or bottom of the
list, respectively.


Viewing Distributions
---------------------

The default is to not view distributions. If you are in the analysis screen,
press D and the distributions will be displayed in a small graph below the
price data. Press D again and the distribution graph will be removed. The
distributions are shown broken down by long-term capital gains (blue) and
dividends plus short-term capital gains (red). Dividends are grouped with
short-term capital gains since they are taxed at the same rate. The percent
breakdown is shown in the upper left hand corner of the distribution graph.
The vertical white line shows the cumulative previous distributions, and the
vertical axis is in dollars per share.


Viewing Moving Averages
-----------------------

The screen can get cluttered when moving averages are displayed, so by default
they are not. Select a fund, such as Fidelity Magellan, and switch to the
analysis screen. Then press M. This will turn on the "best" moving average. The
blue price line will be overlaid with the peach moving average curve. Above and
below the moving average curve are sequences of dots which show the buy and
sell thresholds. When a buy signal occurs, a green balloon points to it. A red
balloon points to a sell signal. The performance of an actual investment
following the signals is shown in green, and reported in the statistics. The
blue vertical line at the beginning of the last complete calendar year shows
where the trial period ends and the eval period begins. The investment amount
is resynchronized to the actual price value on that date. There is a buy or
sell signal on the blue eval period border to show whether to begin the eval
period invested or not invested.

There is also a white dot on the blue eval period border, and one on the most
recent date; these show where the "average" investment (driven by buy and sell
signals) would end up at the end of each period. To calculate the optimal
moving average values, NAV calculates every possible combination of values, and
saves the one which gives the best final investment value. While it is doing
this, it sums the investment results of every combination, and divides by the
number of combinations to form the average.

When not "invested" in the fund, it is assumed that you are "invested" in a
money market account. NAV has data which tells how much interest you would earn
by "parking" your investment in a money market account, as a yearly average,
which is a reasonable approximation. The data comes from the Vanguard Money
Market Prime Reserves (a very typical money market fund), and from 3-month
T-Bill rates.

Pressing M again will erase the moving average, and display the price graph.
Clutter can be reduced if you zoom in on the eval period.


Changing a Moving Average
-------------------------

You can try any of the three types of moving average whenever you want. If
you're looking at a price graph using EMA and you'd like to see UMA, just
press U. The moving average values will be calculated, and you'll be asked to
press Enter to continue. Once you set a different moving average for a fund, it
will be remembered as the "preferred" moving average, until either another
moving average is selected or the OPT file is deleted or overwritten. Pressing
W will select WMA, and pressing E will select EMA. If you are in the analysis
screen, the moving average will be selected for all funds being displayed. If
you are in the select screen, the moving average will be selected for all funds
in the list. Be careful of this, as it can cause a lengthy recalculation.


Portfolio of Funds
------------------

You can form a portfolio of funds with NAV. In the select screen, position the
cursor box over the desired fund, and press S. This will select the fund for
inclusion in the portfolio. Once a fund is in the portfolio, pressing S again
removes it. By default, portfolio funds remain in their categories, but are
indicated by a light yellow block which appears to the left of their name. But
pressing G will cause all portfolio funds to be grouped together in a portfolio
category near the bottom of the fund list. Pressing G again will remove the
portfolio category, and place the portfolio funds back in their original
categories. Putting the funds you invest in into a portfolio will help you
compare their performance to their peers, and also to each other. It is most
useful when viewing the Y,1,3,5, etc bar charts. Note: if you have portfolio
category grouping enabled, it can be confusing to select a portfolio fund and
see it immediately disappear from its category group. Remember that it was
moved to the portfolio category, which may be several screens down the list.
The portfolio funds are recorded in a file called PRTFOLIO, and readded to the
portfolio the next time you run NAV. If you want to remove the portfolio and
start again, just delete PRTFOLIO. The state of the portfolio category grouping
variable is also recorded in PRTFOLIO. If a portfolio change is made while NAV
is running, it will write out a new PRTFOLIO file before exiting.


Printing the Screen
-------------------

If you have an HP laserjet compatible printer connected to your LPT1: port,
just press P in either the select screen or the analysis screen to send an
image of it to the printer. Sending data to non-existent printers can sometimes
hang the computer, so you'll be asked to confirm before the data is sent.


Help
----

Pressing H or ? or F1 will display a help screen showing what the various
keystrokes do. Help in the select screen is different from help in the analysis
screen, because the valid keystrokes for each screen are different. On the
second line of each screen (just below the copyright line) is one line of help
on the most common keystrokes available in each screen.

Select screen help:
 ENTER=ANALYSIS SPACE=SELECT S,G=PORTFOLIO BARS=Y,V,R,T,X,C,1,3,5,0 H=HELP

Analysis screen help:
 ENTER=SELECT M=MOVINGAVG D=DIST P=PRINT Z=ZOOM H=HELP


Executing COMMAND.COM
---------------------

If you want to execute DOS commands, press ! to execute COMMAND.COM. NAV will
remain in memory, and when you execute "EXIT", COMMAND.COM will exit, and
you'll be returned to NAV. For this to work, the COMSPEC environment variable
must be set to the full path location of COMMAND.COM. While executing
COMMAND.COM, the PROMPT will be modified with the prefix "[NAV]" to remind you
that NAV is present in memory. Also, NAV saves the current directory prior to
executing COMMAND.COM, and restores it after COMMAND.COM exits.


Quit
----

Pressing Q will cause NAV to exit, but only after you've confirmed that you
really want to exit.


Maximum Data Sizes
------------------

There is no fixed limit on the number of funds that can be analyzed, but each
fund is limited to 64K of price data. The number of unique dates across all
funds is limited to 32768; with the current set of 330 funds, there are less
than 1500 unique dates, so the limit is a long way off. My own view on the
length of the price histories is that approximately seven years of data is the
best. With less than that, the confidence level is not so high that the moving
average values have accurately captured the behavior trends. With more than
that, it is possible that the moving average values are trying to capture
several different types of behavior patterns. For instance, manager changes
or objective changes can easily occur in long price histories. Fidelity in
particular moves portfolio managers around among their funds. Significant
asset growth in a fund can change the behavior trends too.


Dates
-----

NAV is written so that the earliest year it can handle is 1960. Since dates in
.NAV files are specified by two digits, this means NAV can handle anything from
January 1, 1960 up to December 31, 2059. To enter dates such as 1/1/2000 use
the form: "1/1/00". The earliest date used in the current set of .NAV files is
1/1/86. To keep columns lined up in the data files, dates can have leading
zeros, such as "01/01/00"; NAV will ignore the leading zeros.


Memory Allocation
-----------------

NAV stores several different kinds of data for each fund, but by far the
largest is the price data. NAV prefers to store the price data in HMA memory,
conventional (FAR) memory, and then UMB memory, and will store the smallest
funds first. If not all the data fits, LIM memory will be used next, if it
exists. EMB is the least preferred type of memory, because it requires a swap
space to be allocated to access the data. If EMB is needed (and available), NAV
goes through the laborious process of deallocating everything it has allocated
up to that point, allocating a swap space big enough to swap in the largest
fund, and then restarting the allocation process. If all of this is done and
there is *still* not enough memory to store all the data, NAV attempts to limp
along with as much data as will fit in memory. The swap space can be in HMA,
UMB, or conventional memory. If NAV has to use LIM or EMB memory, it reorders
the remainder of the funds to store the largest one first, so that LIM and EMB
memory, which are handled in 16K and 64K chunks, respectively, are used most
efficiently.


94.ZIP
------

If you are not a registered user and you run NAV on the .NAV files in DATA.ZIP
with no encryption key, you will get a lot of warnings about data files that
are not accessible. However, at least one fund from each category (growth,
bond, international, etc) is encrypted in such a way that NAV can still access
the data. If, however, you'd like to see NAV handle a much larger group of
data files, download 94.ZIP, unpack the .NAV files in 94.ZIP, and run NAV on
them. They contain most of the funds from DATA.ZIP, but only current through
the end of 1994 (there are fewer data files in 94.ZIP because some funds do not
have data prior to 1/1/95). This will show you what NAV can do with 294 funds.
Don't get the .NAV files from 94.ZIP mixed up with those from DATA.ZIP. Before
you unzip 94.ZIP, delete all the .NAV files that came from DATA.ZIP, otherwise
you'll have some .NAV files from each collection, and it will be confusing. The
.NAV files contained in 94.ZIP are encrypted in such a way that NAV can read
them even without a key (they can all be decrypted with A0.EXE; see below).
After you evaluate NAV with them and become a registered user, you will never
need 94.ZIP again.


Good and Bad Funds
------------------

How were the funds in DATA.ZIP selected? For most of them, they were selected
because they fit my criteria as worthwhile potential investments. I lean toward
low or noload funds with low total expenses, long-term, experienced management,
and consistently good long-term performance. But you'll also find some
outstanding load funds, and some newer funds too. You'll also find some of the
worst funds, which were specially selected to demonstrate not only the best,
but also the worst that you can find in the mutual fund universe. Some of these
are: American Heritage, Steadman American Industry, Comstock Capital Value A,
Prudent Speculator, 44 Wall Street, and Mathers. There are also some funds
included for their extreme volatility, such as Lexington Strategic. Don't take
the mere presence of data for a fund as an indication that it is a good
investment.

The purpose of these funds is for comparison with other funds to evaluate
potential investments. You won't find many bond funds, because they are
difficult for me to maintain up-to-date data for. Bond funds pay dividends all
the time, and it is hard for me to gather and maintain extensive distribution
histories for them.


Incorrect Data
--------------

If you find data which is not correct, such as missing distributions, let me
know. If you can supply the missing/correct data, that is an added plus. Say
for example Fidelity Value, which as a typical largecap growth fund normally
pays distributions once a year in December, pays an additional distribution in
April. There is a good chance I will miss it, as I would normally not check for
a distribution until December (or January). You can determine if a distribution
is missing by viewing the distribution graph. Often a sharp, unexpected drop in
the NAV value will also indicate a missing distribution; but if the drop is not
sharp, it may be overlooked.


Out of Memory
-------------

If you don't have at least a couple Megabytes of free expanded (LIM) or
extended (XMS) memory, you'll get an error message that NAV couldn't get
enough memory to store all the data. To view all the data, consider installing
a memory emulator, either LIM.SYS or XMS.SYS. Each will provide 8 Megabytes of
emulated memory by paging it to a disk file. Currently the data consists of
330 .NAV files which will require 2.5 Megabytes of memory. Many .NAV files
contain data from 9/88 to present (10/96), about 400 data points. On a
386/25Mhz, it takes about 30 seconds per fund to calculate the best moving
average values. To do all 330 files takes about 2 hours. If all the values are
available in OPT, loading the data and applying the moving average values will
take about 10 minutes. When running with a memory emulator, performance will
be noticeably slower, and you'll see a lot of disk activity as memory is read
from and written to the emulation files, but at least you're running (and
seeing all the data)! I have a machine with 1 Megabyte of memory, so I use
XMS.SYS all the time. NAV will try to limp along even if there is not enough
memory to hold all the data, but if NAV cannot get enough memory to store a
few critical data structures, there is no point in continuing, and NAV exits
with an error message.


Installing Device Drivers
-------------------------

To avoid the nasty situation of installing a device driver in C:\CONFIG.SYS,
having it malfunction, and being unable to remove it, do the following.
Prepare a boot disk by putting a blank disk in A: and executing "FORMAT A: /S".
This will create a boot disk. Check to make sure COMMAND.COM was copied to A:.
If not, copy it there. All newer versions of DOS do this, but at least one
older version failed to do it. Test your new boot disk to make sure your
computer can boot off of it by pressing CTL-ALT-DEL. Create A:\CONFIG.SYS
containing only "DEVICE=A:\XMS.SYS", and copy XMS.SYS to A:, then reboot.
After your machine boots, execute "C:", "cd \NAV", and "NAV" to make sure NAV
runs ok. If so, then it is safe to modify your C:\CONFIG.SYS to contain
"DEVICE=C:\NAV\XMS.SYS". Use the same technique to test LIM.SYS before
installing, if you prefer expanded memory to extended memory.


XMS.SYS
-------

XMS.SYS emulates XMS 2.0 memory by paging to file C:\XMS20$$$.MEM, which it
will create as needed. Install it by adding the following line to your
CONFIG.SYS file:
  DEVICE=C:\NAV\XMS.SYS
Application programs such as NAV use interrupt 2Fh and an XMS control function
to access extended memory. There are three kinds of extended memory: (1) HMA,
(2) UMB, (3) EMB. XMS.SYS provides no HMA or UMB memory, but does provide 8
Megabytes of EMB memory. If true (non-emulated) extended memory is available
(for example, via HIMEM.SYS), NAV will take advantage of HMA and UMB, in
addition to EMB memory.


LIM.SYS
-------

LIM.SYS emulates Lotus-Intel-Microsoft (LIM) 3.2 memory by paging to file
C:\LIM32$$$.MEM, which it will create as needed. Install it by adding the
following line to your CONFIG.SYS file:
  DEVICE=C:\NAV\LIM.SYS
Application programs such as NAV use interrupt 67h to access expanded memory.
LIM memory is available as a sequence of 16K pages that must be mapped to a 64K
page frame to access them; 8 Megabytes of LIM memory is available.


.NAV File Format Example
------------------------

Here is a short example of an unencrypted (ASCII) .NAV file:

  name=EBENEZER SCROOGE FUND
  category=GROWTH
  ;comments start with a semi-colon

  ;blank lines are fine too
  ;here is a distribution, with "income dividends", plus short- and long-term
  ;capital gains. these are in dollars and cents per share. the date is the
  ;"X-date" or ex-dividend date. this is the first date that the effect of
  ;the distribution is reflected in the reported per-share price. you can
  ;have up to 4 decimal places.
  12/30/61 div=.07 scg=.3025 lcg=1.73
  1/1/60=12.75 comments can follow NAV prices too
  2/3/60= this nav is missing, but will be interpolated
  3/4/60=6.80
  ;here's a share split, which is fairly rare for mutual funds:
  2/2/60 split 2 for 1
  ;here's the definition of an excluded region:
  1/1/61 exclude
  ;in this case, all price data prior to and including 1/1/61 will be
  ;excluded from the tax efficiency calculation, because distribution
  ;data has been used to adjust the prices, rather than being included
  ;explicitly.

Valid categories include:
  MAXGROWTH (aggressive growth)
  SMALLCAP
  GLOBALEQUITY ("international" and "global")
  GROWTH
  GROWTHINC ("growth and income")
  INDEX
  EQUITYINC ("equity income")
  BALANCEDEQUITY (more stocks than bonds)
  BALANCEDBOND (more bonds than stocks)
  BOND
  GOLD
  SECTOR


Unencrypting .NAV Files
-----------------------

If you need access to the ASCII price histories, use A0.EXE and A1.EXE to
unencrypt the .NAV files. The .NAV files are encrypted in one of two ways;
either they are encrypted so that NAV can understand them without a key (a few
of them), or they are encrypted so that NAV requires a key to understand them
(the majority). A0 will unencrypt the former, and A1 will unencrypt the latter.
If you attempt to run them on the wrong type of data file, they will tell you.
The .NAV files in DATA.ZIP which do not require a key are:

  BRWIX.NAV - Brandywine
  JAVTX.NAV - Janus Venture
  PRITX.NAV - T Rowe Price International Stock
  FDVLX.NAV - Fidelity Value
  LLPFX.NAV - Longleaf Partners
  VWNFX.NAV - Vanguard Windsor II
  DJIA.NAV  - Dow Jones Industrial Average (index)
  SP500.NAV - S&P 500 Index
  FIIIX.NAV - Invesco Industrial Income
  TWBIX.NAV - 20th Century Balanced
  VWINX.NAV - Vanguard Wellesley
  NCINX.NAV - Nicholas Income
  LEXMX.NAV - Lexington Goldfund
  FBIOX.NAV - Fidelity Select Biotechnology

Examples:
  A0 BRWIX.NAV BRWIX.DAT
will create an unencrypted file called BRWIX.DAT.
  A1 ANALX.NAV ANALX.DAT
will create an unencrypted file called ANALX.DAT.
  A0 ANALX.NAV ANALX.DAT
will give you an error message, since ANALX.NAV requires A1, because a key is
necessary.

A1 will accept a KEY in one of three ways: (1) /KEY= on the command line, (2) a
file called KEY in the current directory, (3) KEY= in the environment. These
are the same three methods of supplying a key to NAV.


Encrypting .NAV Files
---------------------

X0.EXE and X1.EXE are programs to encrypt ASCII files; they are the inverses of
A0 and A1. You may need to use them if, for example, you want to make some
modifications to a .NAV data file. X0 performs "default" (non-key) encryption,
and needs only two parameters: the names of the source and destination files.
For example,
  X0 BRWIX.DAT BRWIX.NAV
forms a default encryption of the ASCII file BRWIX.DAT and puts it in
BRWIX.NAV. X1 performs key encryption, and works identically, except that a
key must be present. If there is a KEY file or a KEY= environment variable,
they will be used. If not, or if a different key is needed, X1 accepts a /KEY=
parameter:
  X1 /KEY=FOO BRWIX.DAT BRWIX.NAV


Stocks?
-------

After you register, get the encryption key, and start viewing the entire set of
funds, you'll notice there is one for Microsoft stock. While NAV is intended
for analysis of mutual funds, it can be used to analyze price trends on other
securites such as individual stocks, as long as there is a price history
measured at regular intervals, ideally weekly closing prices.


Missing Distributions
---------------------

You should be suspicious if you open the distribution graph and see no
distributions. Most funds pay at least one distribution each year, usually in
December. If you see only recent distributions it means previous distributions
have been used to adjust prices, rather than being represented explicitly in
the data. Funds with short histories (two years or less) may not have
experienced enough turnover yet to require a distribution.


Approximate Distributions
-------------------------

For some funds, it has been difficult to get an exact history of the
distributions. This is particularly true for funds that pay four times a year;
it is difficult to get the detailed data going back through 1989. The detailed
data required for the most precise calculations are: the X-date (date on which
the distribution affected the reported price), amount of distribution broken
down by type (dividend, short- or long-term capital gain, in cents per share),
and the reinvest price on the X-date. For Northeast Investors Trust, the
distributions have been approximated, based on yearly totals as reported in
the prospectus.


VGA
---

While writing NAV, I found that the BIOS routines for writing dots on the
screen were too slow. To solve this, I wrote code which writes dots on the
screen much faster by accessing the VGA hardware directly. If you have problems
seeing the graphs on the screen, or something weird happens with the video
portion of the program, let me know.


286
---

NAV is written in C, but with some assembly language routines for maximum speed
and hardware access. Some 286 instructions are present, so NAV will not run on
8088 CPUs. NAV uses very few floating point operations; most calculations are
done with integers. The only floating point operations are done to map the
graph to a logarithmic scale. Therefore the display portion of NAV will run
faster on a machine equipped with a math coprocessor. The initial data input
and optimization calculation portion of the program will not run any faster, as
it does no floating point calculations during that phase.


Bugs, Etc
---------

If you notice a bug (error in the program), let me know, with as much detail as
you can. If a fund is in the wrong category, let me know, and why. For some of
these funds, it can be difficult to assign them to a category.


Did I Miss Anything?
--------------------

Is this documentation complete and easy to understand? If not, let me know what
I left out, or didn't explain clearly enough.


Future Releases
---------------

I have a long list of things I'd like to do to improve NAV and add new
features. For right now I'm keeping this list to myself, but feel free to send
me suggestions for your favorite feature, or your favorite fund or index you'd
like to see added.


