A few years ago, I was a member of a small investment club. Through some defect in my character, or perhaps because I didn't duck fast enough, I was elected treasurer, and thus I had the task of generating a financial report each month. I did that by hand for a while, but it got tedious... so I wrote myself a small set of perl programs to do most of the grunt work for me. That's what this is.
WHOMP was the name of our club; it stands for "We Hope Our Money Performs". All in all, I would have to say we (or at least I) did fantastically well with this club: over about five years, 1998 to 2003, we managed to lose no more than about 10% of our money (that part's not so great, but not too terrible considering we, like everyone else, invested in such temporarily-stellar performers as Lucent and Cisco) and, when we shut down in October 2003, I took away the lesson that broad-based index funds are the way to go (that's the fantastically good part, in my humble opinion). Are you sure you don't want to go with index funds yourself?
Ok, then... here is an image of a sample report (the actual
generated report is a TeX/postscript file, so it's nice and clean and
will print very well). If you think something like this might be
useful for your investment club, read on!
Before you go any farther, a
disclaimer: there is NO WARRANTY on
this software. It is your responsibility to verify
the accuracy of your financial transactions and
records. Just so we're clear on that. Also, all of the numbers in the
example are fake: I have made up numbers for 2005 and 2006, and my
crystal ball is no better than yours (and may well be worse). And
another disclaimer: I originally wrote this solely for my own use, and
initially with no intention of releasing it. So there are some
fragilities there, and some things are more hard-wired than they
probably ought to be. But it all worked well for me for several years,
and the difference between my reckoning and our broker's was never
more than a penny or two... close enough for our simple needs! It may
be adequate for you as well.
With that out of the way, here's what you'll need to make this work:
I have only ever used this on a Linux-based computer, where all of this stuff is easily available; I don't know of any reason though why it couldn't work on a Windows-based computer or a Macintosh.
All right: you've downloaded and installed all the software, now what? First, have a look at the files 200501.keep, which is the initial state file describing the state of the club's finances as of January 15, 2005, and 200501.changes, which is the file describing transactions and changes in the club's portfolio. The format of these files is described in comments in the files themselves, and also in comments inside the perl script whomper. The basic idea is that you are maintaining a database of your club's transactions over time in a bunch of files. The *.changes files are your responsibility: you enter text into each month's file to describe what happened that month. The *.state files are updated by the whomper script. You can run that directly by hand, but you're better off sticking it into a shell script, so that you can easily keep track from month to month.
Here is the shell script which I used for the examples I made up, and here are the initial state file and all the changes files for the example. There are transactions in essentially all months, but I've noted a few of the more interesting ones.
Once you're ready to start generating your own reports, open the script whomper in your favorite text editor, and navigate down to about line 198, where you'll see something like
# who are the members?
my %full_name = (
'Alice' => 'Alice Carroll',
'Bob' => 'Bob Steelward',
'Chuck' => 'Charles Rhoste',
'Dude' => 'Dudley Dooright',
'Eve' => 'Eve Eden',
'Uwe' => 'Uwe Hollerbach'
);
Edit this list of names to reflect your own club's membership, then
generate your own initial state file, and then each month generate a
changes file, and you're off! If a new member joins your club, just
add him or her into this list of names, and carry on; there's no need
to add the new member to old state files. Good luck and successful
investing!
If you have questions or comments or bug reports, or better yet patches for bugs or enhancements, send them to me at the email address below.
Enjoy!
Uwe Hollerbach
<korg@korgwal.com>