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.