logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

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.

perl v5.32.1                                       2021-11-10                                   BeanCounter(3pm)

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.

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.

   THESTOCKINFOTABLE
       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.

   THESTOCKPRICESTABLE
       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.

   THEFXPRICESTABLE
       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.

   THESTOCKPORTFOLIOTABLE
       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.

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

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

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.

Name

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

See Also

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

Synopsis

        use Finance::BeanCounter;

See Also