Capital Gainz - Newsletter #3

             Capital Gainz Newsletter #3
                    July 9, 1998
                     Dave Cohen
                  AlleyCat Software
This is the third quarterly Capital Gainz newsletter. In 
these newsletters, I'll provide useful hints and tips. 
To make things easy for email, these newsletters will be 
plain old  ASCII text.

If you want to be removed from the mailing list, send me a 
request via email.


 1) Global vs Local Securities
 2) Security Symbols
 3) Year 2000
 4) Decimal Precision
 5) Portfolio History
 6) Adding Shortcut
 7) Version 6.0 Features
 8) 32 Bit Windows
 9) Good Guys/Bad Guys
10) Image Tips

1) Global vs Local Securities

One of the more confusing aspects of Capital Gainz is the 
Global/Local Security concept:

A Global Security:
  - Defines a particular stock, bond, or mutual fund
  - Has a price history
  - Has a security type 
  - Is independent of all portfolios, and not directly 
    related to any buy, sell, or distribution activity
  - Has a unique symbol that can not be duplicated
  - Is usually linked to one or more local securities
  - May exist independently of local securities for 
    tracking prices

A Local Security:
  - Is an instance of a Global Security within a portfolio
  - Has buy, sell, and distribution activity
  - Has its price history determined through a link to a 
    Global Security
  - Has its security type determined through a link to a 
    Global Security
  - Has a symbol that may be duplicated across portfolios

The distinction between them serves two purposes:

  1) You can track prices for a security without adding 
     the security to any portfolio.
  2) If a given security is held in multiple portfolios 
     (or there are separate holdings of it within a single
     portfolio), then all the Local Securities can be 
     linked to the same Global Security, eliminating 
     duplicate price data.

For instance, say a husband and wife both have IRAs with
Invesco's Industrial Income mutual fund. There are two 
Local Securities, either within one portfolio or in 
separate portfolios, and both are linked to a single 
Global Security. When the price of the Global Security is
updated, the value of both Local Securities' holdings are 

You can think of the Global and Local Securities as two 
parts of one security:

  - If you update prices from the Local Security Table, the 
    Global Security link is traced from each Local Security
    in the portfolio to do the update. Although it looks 
    like you are updating the price of a Local Security, 
    you are actually updating the related Global Security's 

  - If you update prices from the Global Security Table, 
    all Global Securities' prices are updated. Given that 
    each Local Security is linked to a Global Security, 
    this indirectly updates the prices for all associated
    Local Securities.

2) Security Symbols

There are three security symbols to keep up with in Capital 

  1) The Global Security Symbol is an abbreviation for a 
     Global Security. It may be the symbol listed in the 
     newspaper listings, the Exchange Symbol, or any 
     short-hand desired.

  2) The Local Security Symbol is an abbreviation for a 
     Local Security. It may be the symbol listed in the 
     newspaper listings, the Exchange Symbol, or any 
     short-hand desired.

  3) The Exchange Symbol corresponds to the actual symbol, 
     sometimes called the ticker symbol, used on an exchange
     to uniquely identify the security. This symbol is 
     only required if you will be updating prices from a 
     file retrieved from an online data source, such as the
     Internet. Names listed in newspaper tables are 
     usually not the actual Exchange Symbols. The Exchange
     Symbol is defined in the Global Security.

In most cases:	Local Symbol = Global Symbol

But this does not have to be true. For instance, if a 
husband and wife have IRAs with Invesco's Industrial Income
mutual fund, they can be kept in the same portfolio by 
defining different Local Security Symbols. Here, the Global
Security Symbol may be ININD, and the Local Security 
Symbols in Portfolio 1 can be ININDH (Husband) and 
ININDW (Wife). Both Local Security Symbols are linked to 
the Global Security Symbol ININD:

Port 1:Local Sec      Global Sec   Port 1: Local Sec
         ININDH <컴컴컴 ININD  컴컴컴> ININDW

Alternatively, the two IRAs can be in separate portfolios.
This allows the Local Security Symbols to be the same. 
Again, a single Global Security with Global Security 
Symbol ININD is defined. Portfolio 1 is for the husband, 
and contains his Local Security with Symbol ININD. 
Portfolio 2 is for the wife, and contains her Local 
Security with Symbol ININD. The Local Security Symbols 
are the same, but unique within each portfolio, and both
are linked to the Global Security ININD:

Port 1:Local Sec      Global Sec   Port 2: Local Sec
         ININD <컴컴컴 ININD  컴컴컴> ININD

In most cases: Global Security Symbol = Exchange Symbol

Thus, you often have:
  Local Sec Symbol = Global Sec Symbol = Exchange Symbol

Exchange Symbols can be cryptic. For example, the 
Exchange Symbol for AT&T is T (for 'Telephone'). Thus, 
users often prefer to use an abbreviation for the 
Global and Local Security Symbols. For AT&T, the Global 
and Local Security Symbols may be ATT, while the Exchange
Symbol is T.

3) Year 2000

Capital Gainz has been Year 2000 ready since version 4.0.
Yes, it still accepts only two digits for the year - but
it determines the closest century for that year.

When you enter a date, it is compared to the current 
system date:

  - The current century is assumed for both the entered 
    and current year. 
  - If the entered date is more than 50 years less than 
    the current date, then the next century is used.
  - If the entered date is more than 50 years greater than 
    the current date, then the previous century is used. 

For example:
  1) Assume today is February 15, 1993, and the date 
     entered is 01/01/01. Since 1993 is over 50 years later
     than 1901, 01/01/01 refers to January 1, 2001. 
     Similarly, 12/31/49 would refer to December 31, 1949, 
     since 1949 is within 50 years of 1993. 
  2) Assume the current date is February 15, 2010. An 
     entered date of 01/01/01 refers to January 1, 2001, 
     since 2001 is within 50 years of 2010. But, 12/31/93 
     would refer to December 31, 1993, as 2010 is more than
     50 years less than 2093.

To test this:
  - Pull up the Price History for any stock
  - Use the ADD button and add a price, using 1/1/1 as the
  - Note that the entered price shows up at the top of the
    table - later than any other entered price

In fact, for many PC applications, the Year 2000 issue 
should not be a big deal. That's because most programs,
like Capital Gainz, store date information as a relative
number of days from some fixed starting point. The 
development environment used by Capital Gainz, for 
instance, stores dates as an offset from December 28, 1800.

Thus, since the date can be stored and retrieved without
changing anything, the only trick is in accepting dates
from the user. There are several methods:

  1) Like Capital Gainz, intelligently determine the date
     based on the system date. One potential problem here
     is if the computer's system date gets messed up,
     which can happen if the system battery dies. However,
     this likely won't be an issue, since CMOS settings 
     will also get wiped out. CMOS contains system 
     equipment information such as what type of hard 
     drives are present, how much RAM is installed, etc.
     (Actually, Capital Gainz has an extra precaution -
     if, after examining the system date and the entered
     date, the outcome would be before 1920, then Capital
     Gainz uses 2000 as the century.)

  2) Use a fixed 'window', which is similar to the method
     just described, but uses exact minimum and maximums.
     Microsoft's products, for instance, use a window from
     1930-2029. Thus, if the date entered is 1/1/1, then 
     1/1/2001 is used. Or, if 1/1/40 is entered, 1/1/1940
     is used. Note that in this last example, Capital Gainz
     would use 1/1/2040 rather than 1/1//1940 (assuming the
     system date is something like 1/1/1998), since 2040
     is 'closer' to 1998 than 1940 is.

  3) Force the user to enter a 4 digit year. This is the
     absolute worst approach. While applications that deal
     with a wide range of dates, such as geneology, need
     4 digit years, there's no need to do this in 
     applications that deal with a narrow range of dates,
     such as financial applications. Even if the application
     prefills the the current century, user entry is still
     adversely affected. Many users assume that accepting 4
     digit years is intrinsic to solving the year 2000 
     problem. This is very wrong.

Note that none of these approaches affects stored data. If a
stored value has a date offset indicating 1/1/1940, Capital 
Gainz will still recognize it as 1/1/1940. However, if you
want to change that entry, bringing it up in Capital Gainz
and editing it will force the date logic to be triggered, 
and on saving the record the date is changed to 
1/1/2040. But hey, why the heck are you changing a nearly 60
year old financial transaction in the first place?

Several more important general issues regarding PCs and the 
year 2000:

  1) On PCs over 4 years old, you should be sure to upgrade
     your system's BIOS. Newer machines can do this via 
     software - I upgraded one of our Gateway 2000 PCs in
     several minutes by downloading an update from their
     Internet site. Older machines may require a new system
     ROM chip be installed to update BIOS. You can usually
     see the BIOS' date by watching the bootup process on
     your PC. Anything older than 4-5 years should be 
     checked out. 

  2) Windows 3.1 is NOT year 2000 compliant. This also 
     means that some old versions of software that only
     run on Windows 3.1 will also have problems. I strongly
     recommend that Windows 3.1 users upgrade over the
     next year.

  3) Consider upgrading to newer versions of software that
     you use regularly. For instance, only Quicken 98 is 
     year 2000 compliant - older versions of Quicken are 

"So, Dave", you might ask, "why all the handwringing over
the year 2000 issue? Sounds pretty easy to deal with." Well,
the main issue is with old mainframe and minicomputer 
applications. Back then, dates were usually stored as 
YYMMDD. At the time, disk space was expensive, and every
little bit of savings helped. Thus, YYMMDD saved 2 bytes 
per record over YYYYMMDD. This was a prevalent practice
with COBOL programs - I know, because I worked on programs
that did this back in the early 80's.

Thus, the Year 2000 will be a huge issue for older 
mainframe and minicomputer programs - which are used by
many large institutions for mission critical business
applications. Not only does the interface have to be
changed to either accept 4 digit years or determine the
century based on the year, but all data stored on disk must
potentially be changed. I say potentially, because they
could also determine the century for stored data
dynamically. But, this could cause problems, since a record
stored as 350101 may be 1/1/1935 or or 1/1/2035 (ie, a 
bond maturity date). The added clue of the system date at
the time of entry is not available. 

There are other problems, as well. For instance, many
old COBOL programs sorted data for reports based on the
date field - YYMMDD. This means that stored data MUST
be converted to YYYYMMDD to avoid problems in these

The biggest issue about fixing the problem in old legacy
programs may be the simple fact that the program source
code is not available, or pieces are missing that prevent
it from being rebuilt.

Do you want to find out more about the Year 200 Problem,
or Y2K as it is affectionately known? If so, go to:

  - The Mitre Corporation:
    (capitalization required!)
  - The National Institute of Standards and Technology:
  - The National Software Testing Laboratories:
  - Microsoft:
  - University of Florida's list of vendors:
  - Consulting guru Peter de Jager's site:

4) Decimal Precision

Capital Gainz only accepts up to 4 digits of precision
for decimal entries such as shares or price. Unfortunately,
the underlying development tool that we use automatically
sets the value for an entered field to 0 if you enter in
more than 4 decimal digits. For instance, if you try to
buy 1.23456 shares, upon leaving the shares field it gets
reset to 0. 

This only really presents a problem with stock splits or
conversions (mergers/spinoffs). Here, sometimes the ratio
gets fairly precise. You can either round off, or get 
greater than 4 digits of precision by using an equivalent
ratio. For instance, say you have a stock that splits
1.51225 for 1. In Capital Gainz, the form that accepts
a split will reset the value to 0 if you specify the full
4 digits of precision. You could instead specify 1.5123 to
1. But, you can keep the full precision by multiplying the
'from' and 'to' values by an equivalent number - usually
a multiple of 10. Thus, specify 15.1225 to 10, which is 
the same as 1.51225 to 1, to get the full precision.

I occasionally get asked to allow greater precision - more
decimal digits - for entries such as number of shares.
This will likely never happen, for two reasons. First,
I try to condense reports as much as possible, and adding
another digit would force additional lines on some reports.
Yes, it looks like your reports have a lot of white space,
but remember that we can get up to $99,999,999.99 for
amounts and 99,999,999.9999 for shares. I'm more worried
about THOSE extra digits than minor fractions. However, the
biggest reason Capital Gainz won't accept greater precision
is that it's simply not important. Face it: .00001 is really
insignificant in the scheme of things. Don't worry about -
and, for those who do worry about such things, try doing
your taxes one year and rounding to dollars. It's 

An aside here. One time while working for a company I got
tired of messing with pennies and submitted an expense 
report with all values rounded to dollars. The accounting
department imploded.

5) Portfolio History

Some users report that there's a bug in Capital Gainz - when
they request to view or graph Portfolio History, they are
told that no data exists. This is the correct behavior.
Portfolio History is a file containing date, value, and gain
amounts for portfolios that you must build and maintain 
yourself. If Capital Gainz calculated it for each report
and graph, performance would be terrible.

You add portfolio history data either via 
Securities/Portfolio History from the Local Security Table,
or via Portfolios/Portfolio History from the Portfolio
Table. This takes you to the Portfolio History Table for
the selected security.

You can manually add the date, value, and gain amounts, but
it's usually easier to use the Calculate Portfolio History
button on the Portfolio History Table's toolbar. Using this
feature, you specify a range of dates and a frequency and
Capital Gainz automatically calculates the amounts and 
stores them in the table.

A quick way to add the current portfolio values to the
Portfolio History is via the Todays Portfolio History
option from the Portfolios menu on the Portfolio Table.
This calculates the values from the current date and adds
them to the Portfolio History in one step.

One final note on Portfolio History. The values calculated
are the same as those for the Performance Report - they
are NOT the same as those displayed on the Local Security
Table. The Local Security Table only shows current
holdings and unrealized gains - we base Portfolio History
on all buys, sells, and distributions.

6) Adding a Shortcut

While the next update of Capital Gainz will likely have an
option to add a shortcut to your Windows 95 desktop on 
installation,  the current 5.2 version does not. But, it's 
really easy to add a shortcut:

  1) Right click on the desktop background.
  2) From the context menu, choose New, then Shortcut.
  3) In the Create Shortcut dialog box, use the Browse
     button to find the Capital Gainz executable, which
     is likely C:\CAPGNZ\CAPGNZ.EXE. Double click on the
     file name.
  4) Back to the Create Shortcut dialog box, click on the
     Next button.
  5) When prompted, enter a name for the short cut. 'Capital
     Gainz' or 'Capgnz' would be good choices.
  6) Click on the Next button.
  7) Click on the Finish button to add the shortcut.

Now, Capital Gainz is just a a double click away.

7) Version 6.0 Features

Capital Gainz 6.0 is a bit behind schedule. Hopefully, we'll
start Beta testing around the end of the summer, with a 
release in the fall sometime. Here's some of the new 
additions that made the cut:

  - A real cash account type. You won't have to treat cash
    (or money market funds) as a regular security anymore,
    with buy/sell matching that makes reconciliation 
    difficult. In the new version, you will be able to view
    and change all activity for cash accounts from a single,
    color-coded table - buys, sells, and distributions will
    show up in reverse chronological order. And don't worry
    about existing cash or money market funds - there will
    be a feature that allows you to convert them to the
    new cash account type.

  - Unweighted return and Internal Rate of Return will both
    be shown on the Performance Report.

  - Updating prices retrieved from various sources will be 
    much easier. The new version can automatically set up
    the format if you get prices from:, IRNet, 
    Yahoo, Reuters, Merrill Lynch, InfoBeat, Compuserve, 
    Prodigy, or AOL. These are all supported via 
    Prices/Update Prices from File, so the only sources 
    that need the Download/Import option are Telechart 2000
    and MetaStock. There are also new price file processing
    options that make it easier to read in data from any 
    source: the starting symbol (lets you skip over any 
    junk at the top of the price file), the ending symbol
    (lets you skip over junk at the bottom of the price 
    file), separator character, and an option to treat 
    multiple spaces as a comma.
  - The new version will be a 32 bit executable, which will
    run faster and safer on Windows 95 and Windows NT.
    It can run on Windows 3.1 as well, but version 1.30 or
    later of the Win32 libraries will be needed. This will
    likely prevent it from running on OS/2, since OS/2 has
    a problem with these libraries. For Windows 3.1 users,
    the best thing will be to upgrade Windows. While this
    may seem harsh, be warned that Windows 3.1 is NOT
    year 2000 compliant, and you will run into many
    problems with it in the near future anyway.

  - You will be able to specify a date to stop at for
    Price Rebuild. Thus, you can trim down prices to
    only monthly figures for prior years, but save all
    you daily prices for the current year.

  - The reinvestment process will be clearer/easier.

  - For Splits, you will be able to adjust values for only
    a single local security.

  - New graphics settings will let you change colors and 

  - There are new user settings, including ones that let you
    sort the security table by name and hide the account 
    number on reports.

  - More concise, easier to read reports.

  - A new, better compression library for backup/restore.

  - Changes for the new tax laws (similar changes may also
    be made to v5.2, if v6.0 is delayed).

There are other additions, as well as fixes and tweaks, that
will make the upgrade very worthwhile.

6) 32 Bit Windows

The next version of Capital Gainz will be available in a 32
bit version only. That means it will only run on 32 bit
operating systems, such as Windows 95, unless you patch
up Windows 3.1 with the Win32 libraries. 

(Ok, you techies out there just back off. I KNOW Windows 95
isn't totally 32 bits, and I KNOW that many of the features 
listed below have been present in Unix since the time of the
dinosaur, and that some are not really dependent on a 32 bit
operating system. If you can't deal with it, then skip to 
the next topic.)

With a 32 bit Windows operating system - Windows 95 or
later and any version of Windows NT - you get, among
other things:
  - Access to more memory, so adding RAM to your PC will
    speed up operations, especially when multiple 
    applications are running. With Windows 3.1, anything 
    over 16MB was more or less wasted.

  - Safer operation, since 32 bit applications run in their
    own address spaces and (theoretically) can't affect
    other programs or the operating system.

  - Faster operation, since more data is fetched at a time.

  - Real multitasking. Prior versions of Windows used
    cooperative multitasking, meaning multiple programs 
    could run at the same time, provided that they 
    voluntarily gave up clock cycles. One program could
    easily hog resources and prevent other programs from
    running. Newer versions of Windows allocate clock cycles 
    internally - like a real operating system should.

It all adds up to programs running faster and safer.

Now, 32 bit programs can run on Windows 3.1, which is a 16
bit operating system, using Microsoft's Win32 library.
This comes with Windows 3.1. Unfortunately, to run most 32
bit programs now available on Windows 3.1, you need to
upgrade you Win32 system to 1.30 or later, which adds
necessary common dialogs. Win32 can be downloaded from 
Microsoft's Web site, Before you start 
trying this, a few comments are in order:

  - I won't provide any help or instructions on how to
    install or setup Win32 on Windows 3.1. I really can't,
    since I don't even have access to a Windows 3.1 

  - I remember using Win32, and some programs - notably
    HotMetal Pro for building Web sites - didn't do very

  - I've heard that Win32 1.30 does not work with OS/2.

So, Windows 3.1 can run 32 bit programs, but Win32 
installation is not real simple, and Win32 itself may cause
some frustrations. It's much better to just move on to 
Windows 95 or later. (Anyway, Windows 95 IS 91.9 versions
later than Windows 3.1...right?)

Some users will certainly be upset about being told to 
upgrade from Windows 3.1. For those users, even beyond all
the advantages of 32 bit operating systems, there is another
huge reason to make the move: the year 2000. Not only is
Windows 3.1 NOT year 2000 compliant, but many older 
applications will have problems. Some of these applications
may only have 32 bit versions that are year 2000 compliant.
So, while you could put off the move from Windows 3.1 for
another year, you will more than likely be in for big 
trouble beyond that.

Incidentally, Capital Gainz has been year 2000 compliant 
since version 4.0. See the earlier discussion of Year 2000
issues in this newsletter.

9) Good Guys/Bad Guys

This is my newsletter, so I thought I might make it a
regular feature to give kudos and raspberries to computer-
related companies. If you have a compelling urge to do the 
same, drop me an email and I'll see about putting out a 

Kudos to:

  - Gateway 2000 (yes, they are now officially just 
    'Gateway', but old habits die hard). We have 4 
    Gateway machines, and they've been great. I even still
    use an old 386 for credit card processing. Plus, I 
    recently added a new hard disk to one machine, and 
    ended up having to upgrade the BIOS. The process was 
    simple enough, with good directions from Gateway's
    Web site, but I had a problem rebooting - at 8pm
    on a Friday. I was able to get through to technical
    support in minutes, and they solved the problem in
    a couple more minutes.

  - Inner Media. Unless you are a software developer, you
    won't come into contact with these guys. They provide
    a ZIP compression library that we will be using in
    Capital Gainz 6.0. I had some difficulty using it
    with a new version of the development software I use.
    They upgraded their copy of the development software 
    and got me a fix within days.

  - Hewlett-Packard. Man, I LOVE HP laser printers. My LJ
    4 has been perfect for over 5 years now. I couldn't
    say the same about the Epson laser printer I had
    before that (although I've been using an Epson dot 
    matrix printer to print labels for about 12 years).

  - ForeFront. They make ForeHelp, which is the best tool
    for developing Windows Help that I've seen.

  - JP Software. They make 4DOS - I still use command line
    windows for a lot of things, but I could never live
    with just DOS. 

  - JASC. They make PaintShop, an indespensible tool for
    screen captures and image editing.

  - Corel. They willingly helped me get around a problem
    using a very old version of CorelDraw on Windows NT.
    I once tried Adobe Illustrator, and really don't see
    the allure. It was slow and very buggy. I still use
    CorelDraw for most of my drawing.

  - Symantec. They provided a workaround so I could run
    a single version of Norton's AntiVirus on a Windows NT
    Server machine. Most such software for NT Server comes
    bundled only in expensive network, multi-user versions.

Raspberries to:

  - Network Associates. I still call them McAfee, though.
    I'd been using McAfee antivirus products since 
    1986 until I upgraded to Windows NT Server. I bought
    an AntiVirus update that was advertised as running on 
    Windows NT, but it did not work with Windows NT Server.
    They ignored my email questions - all I wanted to find 
    out was what I needed for NT Server. While I did get a 
    refund on VirusScan, I never did find out what I 
    needed for NT Server - the only things I saw on their
    Web site were multi-user, multi-$100 packages.
    I'm now a happy Norton AntiVirus user.

  - Wise Software. I used their software to make installation
    programs. When I went to upgrade, I was told that the
    version I had was not eligible for an upgrade price,
    and the scripts I'd written would not convert anyway.
    They wanted to sell me a new version for $299, even
    though my original version only cost $99. I was told
    that my copy was 'too old to upgrade'. I checked the
    dates - I wouldn't say that 2 1/2 years was ancient.
    I've never been treated this poorly by any computer-
    related company, not even Microsoft.

  - Clarion Software. We use Clarion to develop Capital
    Gainz. While it does a good job, there is NO support
    on the Web. Also, I bought an upgrade that promised
    it was 'the lowest price that it will ever be offered
    at'. I upgraded, then got a flyer in the mail
    several weeks later that listed it for $75 less.
    Despite protests and letters, those liars never gave
    me the $75 difference.

  - The Department of Justice. I don't love Microsoft, and 
    do believe that there are some market share problems.
    But attacking a company for being successful is wrong,
    just as helping out whiners like Netscape who have
    problems competing in the market. (By the way, I also
    harbor digust over Chrysler and Harley-Davidson
    incidents, both of which probably only survived by 
    crying for - and getting - protection and help from 
    the government.)

  - Hewlett-Packard. Inkjet printers are lousy. Does anyone
    really rely on these for more than an occasional color
    printout? Laser printers are under $300, and the $100
    difference between an inkjet and laser printer is worth
    many, many times more in quality and reliability.

Sorry if I missed anyone.

10) Image Tips

I'll close with a couple of tips on images: 

  - If you go to a Web site and find a picture you like,
    just right click on it with the mouse, and use 
    Save Picture As to get your own copy. Just be careful 
    where you use images, since many are copyrighted.

  - Do you like those annoying animated GIFs on many
    Web sites? Of course you don't. But you can get 
    back at others by loading up your site with dancing and
    flashing pictures from the Animated GIF archive at: