NAME

Finance::BeanCounter - Module for stock portfolio performance functions.

SYNOPSIS

use Finance::BeanCounter;

DESCRIPTION

Finance::BeanCounter provides functions to download, store and analyse stock market data.

Downloads are available of current (or rather: 15 or 20 minute-delayed) price and company data as well as of historical price data. Both forms can be stored in an SQL database (for which we currently default to PostgreSQL though MySQL is supported as well; furthermore any database reachable by means of an ODBC connection should work).

Analysis currently consists of performance and risk analysis. Performance reports comprise a profit-and-loss (or 'p/l' in the lingo) report which can be run over arbitrary time intervals such as --prevdate 'friday six months ago' --date 'yesterday' -- in essence, whatever the wonderful Date::Manip module understands -- as well as dayendreport which defaults to changes in the last trading day. A risk report show parametric and non-parametric value-at-risk (VaR) estimates.

Most available functionality is also provided in the reference implementation beancounter, a convenient command-line script.

The API might change and evolve over time. The low version number really means to say that the code is not in its final form yet, but it has been in use for well over four years.

More documentation is in the Perl source code.

DATABASE LAYOUT

The easiest way to see the table design is to look at the content of the setup_beancounter script. It creates the five tables stockinfo, stockprices, fxprices, portfolio and indices. Note also that is supports the creation of database for both PostgreSQL and MySQL.

THE STOCKINFO TABLE

The stockinfo table contains general (non-price) information and is index by symbol:

symbol   		varchar(12) not null,
name     		varchar(64) not null,
exchange 		varchar(16) not null,
capitalisation  	float4,
low_52weeks		float4,
high_52weeks	float4,
earnings		float4,
dividend		float4,
p_e_ratio		float4,
avg_volume		int4

This table is updated by overwriting the previous content.

THE STOCKPRICES TABLE

The stockprices table contains (daily) price and volume information. It is indexed by both date and symbol:

symbol   		varchar(12) not null,
date		date,
previous_close	float4,
day_open		float4,
day_low		float4,
day_high		float4,
day_close		float4,
day_change		float4,
bid			float4,
ask			float4,
volume		int4

During updates, information is appended to this table.

THE FXPRICES TABLE

The fxprices table contains (daily) foreign exchange rates. It can be used to calculate home market values of foreign stocks:

currency   		varchar(12) not null,
date		date,
previous_close	float4,
day_open		float4,
day_low		float4,
day_high		float4,
day_close		float4,
day_change		float4

Similar to the stockprices table, it is index on date and symbol.

THE STOCKPORTFOLIO TABLE

The portfolio table contains contains the holdings information:

symbol   		varchar(16) not null,
shares		float4,
currency		varchar(12),
type		varchar(16),
owner		varchar(16),
cost		float(4),
date		date

It is indexed on symbol,owner,date.

THE INDICES TABLE

The indices table links a stock symbol with one or several market indices:

symbol   		varchar(12) not null,
stockindex		varchar(12) not null

BUGS

Finance::BeanCounter and beancounter are so fresh that there are only missing features :)

On a more serious note, this code (or its earlier predecessors) have been in use since the fall of 1998.

Known bugs or limitations are documented in TODO file in the source package.

SEE ALSO

beancounter.1, smtm.1, Finance::YahooQuote.3pm, LWP.3pm, Date::Manip.3pm

COPYRIGHT

Finance::BeanCounter.pm (c) 2000 -- 2006 by Dirk Eddelbuettel <edd@debian.org>

Updates to this program might appear at http://eddelbuettel.com/dirk/code/beancounter.html.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. There is NO warranty whatsoever.

The information that you obtain with this program may be copyrighted by Yahoo! Inc., and is governed by their usage license. See http://www.yahoo.com/docs/info/gen_disclaimer.html for more information.

ACKNOWLEDGEMENTS

The Finance::YahooQuote module by Dj Padzensky (on the web at http://www.padz.net/~djpadz/YahooQuote/) served as the backbone for data retrieval, and a guideline for the extension to the non-North American quotes which was already very useful for the real-time ticker http://eddelbuettel.com/dirk/code/smtm.html.