Capital Gainz - Newsletter #3
Capital Gainz Newsletter #3
July 9, 1998
Dave Cohen
AlleyCat Software
Web: http://www.alleycatsw.com
------------------------------------------------------------
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.
------------------------------------------------------------
Contents
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
updated.
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
price.
- 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
Gainz:
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
date
- 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
not.
"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
applications.
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:
www.mitre.org/research/cots/COMPLIANCE_CAT.html
(capitalization required!)
- The National Institute of Standards and Technology:
www.nist.gov/y2k/index.htm
- The National Software Testing Laboratories:
www.ntsl.com
- Microsoft:
www.microsoft.com/year2000
- University of Florida's list of vendors:
www.is.ufl.edu/bawb052h.htm
- Consulting guru Peter de Jager's site:
www.year2000.com
------------------------------------------------------------
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
exhilarating.
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: Quote.com, 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
fonts.
- 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, www.microsoft.com. 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
machine.
- I remember using Win32, and some programs - notably
HotMetal Pro for building Web sites - didn't do very
well.
- 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
compilation.
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:
www.gifs.net/animate/animate.htm
------------------------------------------------------------