The background here deserves mention. These are images of actual US bills, the 1896 "educational" series.
They were possibly the nicest looking US notes ever printed, featuring neoclassical allegorical motifs rather than "dead presidents".
There was some controversy over the subject matter, such as the nekkid boobs on the $5 bill. One critic apparently
complained that money should look like money, not "racy French playing cards".
You may see full color images here:
http://en.wikipedia.org/wiki/Educational_Series
OK
This is a functioning application, as I actually use it. It's also intended to serve as a demo
of my ability to do jsp based applications which interrogate databases. As a demo, note that it isn't
what I would consider complete, or commercial quality since it isn't being distributed for general use. See "Limitations" below.
Contents:
Features
The full set of features is available only to registered users. Includes:
- Watch list, with ability to classify according to arbitrary categories and append comments, both operations tracked by date. Watch list items may be flagged as "private" to prevent other
users from seeing them. Extensive filtering and sort options are applicable to your current view of the list.
- Accounts. You may create sheltered / non-sheltered account information, and enter cash and equity
positions into them for tracking. You may buy new positions for your accounts, either directly
or from a watch list entry, and you may sell positions from your account. Sold positions may be entered back
into your watch list at that point.
You may also enter fixed income investments.
The application makes some attempt to automate cash being added to your account as dividends and interest are payed out
and fixed income investments mature. The accounts page will show the automated transactions pending and made on your behalf.
Because of the inaccuracies of scraped dividend data, and the fact that the application doesn't model multi-level and constantly
changing interest on cash positions, the tracking isn't exact, and cash balances will periodically have to be modified.
The accounts page includes summary data for each account and across all / sheltered / taxable accounts. Printer friendly
versions of the summary data are provided.
- A "sales" page shows short term / long term / sheltered gains from past sales, organized by year.
Includes a capability for printer friendly output for tax records.
- Overall trade history for a given security.
- Extensive annotation features, including Comments, Tags, Events, Calendar and News Items. Annotations may be applied
publically to stocks, or privately to watch list items, positions and sales.
A few calendar items are being automatically scraped, such as earnings announcements.
Tags may be used to specify filtering on the watch list page, allowing one to examine subsets of the watchlist according to how
one has tagged the items.
- Sorting, filtering and defaults - display settings like sort columns, which watch list you are looking at,
filtering and year displayed for gain information are maintained for your session. You may click "Store page settings"
on the watch list or accounts page to store the current page arrangement as your default.
- Volume data is presented as a percentage of average. While the market is open this is a percentage of average for
that specific time of day, using previous data snapshots. If less than five previous snaps exist in the DB, it is not
shown. If data has been getting collected long enough, 90 previous days worth of snaps are used for the average. This will not be 90 actual snaps,
as only weekdays are counted.
- Screens - the term may be something of a misnomer here,
if you are thinking of something that selectively "screens" out only certain securities
stocks for consideration. The screens can do that, but they also provide 1 or more numerical or strings value for the screened securities.
Thus, a lot of "screens" are defined more as a custom metrics (such as premium/discount over NAV for securities this applies to).
Public screens are defined, and you may create your own, with the caveat that the definition is programatic - you provide optional
SQL expressions and a conditional clause based on a large number of available fields. You don't have to learn to write really sophisticated
SQL queries, but you do need to learn enough syntax to write those two fragments.
- Index pages which show aggregate results, and membership by securities in the DB.
- Dividend data shows projected ex dates for companies which have not announced yet, based on past history. Projected announcement dates
may also be given, based on past history. Projected ex dates may be shown as "late", that is, we've passed the projected date and no announced ex date
has been scraped. Once the ex date is more than 1/2 a period late, or 60 days for annual/semiannual payers, the dividend is considered "suspended or discontinued". I may also manually flag
a dividend as susupended, which will automatically be cancelled when a new ex date is scraped. 2 yields are
provided - a historical yield, and one based on projecting the last payment forward.
Sorting on some dividend columns on the watchlist and accounts pages separates entries into categories based on the announced vs. estimated status,
rather than sorting them all together.
- Basis adjustments - Handling of adjustements to the original basis, and tracking the change, given more prominence than you might expect.
The issue is important for my investments, many of which have ROC considerations. As well as allowing for manual basis adjustment,
a ROC component can be added to all dividend declarations, which will result in an automatic adjustment of basis when scheduled for payment.
This is currently done only for MLP (Master Limited Partnership) issues, which normally declare their entire distribution as ROC.
- Color coding - some thought has been given to text legibility on these pages - all dark text against
pastel shades. Two slightly different shades of light blue are used to visually distinguish groups of columns as headers are scrolled off.
Rows may be "highlighted" in a light cyan, and a pink is used to illustrate changes you have just made to a row.
- Sort - the "Sort Key" allows you to choose some added sort criteria in addition to the normal table headers. Choice of sort key
customizes the display in some cases - adding subheaders between blocks of data, adding columns, or expanding text to show normally unshown
data.
- Tooltips are used extensively to display added data. You may see it by mousing over many of the links and small graphics. Running totals in some columns are indiacted by little red or green sigmas (
) indicating the sign in that row. Mouse over the sigma
to see the actual value in a tooltip.
- Background tasks also scrape industry, index and exchange membership for the securities in the DB.
Price changes are also available relative to index and exchange, if those entities are known for a particular security.
- Industry, country, classification and "rationale" breakdowns are provided for account positions and summaries. The rationale is a short string you may
asssign to a position which describes why you are investing in it. Classification is the type of security, eg. "Common Stock", "REIT", etc. Classification is provided when new
securities are entered into the DB.
- An "External" page is available as a menuitem or a popup in the context of another page. This allows access
to a number of public pages concerning a particular security. There is also a "DB Data" page which displays the
raw data from my DB for a security.
Javascript requirement
As opposed to optional use in the rest of this site, in these pages javascript is more or less required. This allows more tightly coupled
interaction and saving of display real estate while allowing access to more data.
Links may bring up a javascripted dialogs and
popup menus, and you won't be able to get at those functions without javascript. Extra information is also displayed
as rollover tool tips on links and overscored text. Error messages / confirmations are displayed as javascripted dialogs.
Usage notes:
"No data" is not an error. New securities can get entered into the system, and data will not have been getting collected. They will show
as "new" or "no data" until the next update. If somebody enters
something that doesn't exist or doesn't have quotes available, of course, it stays that way.
Volume information will not be presented for newly entered issues until five days worth of intraday volume has been collected to establish
an average volume.
Price data may also occasionally be noted as "stale". This means that a price is present in the DB, but is older than the
last price update. This can happen for several reasons:
- The data scraping hiccuped, either due to a connection failure, or errors returned the pages being scraped. The next
update should fix it.
- A symbol that was once legitimate is no longer available for some reason such as acquisition, symbol change, delisting, etc. I have to
fix those manually.
- The security is a very thinly traded issue that doesn't trade every day. New entries of this sort are going to be "no data" until there's
a trade.
- The first data snap of the day leaves low volume issues stale because no trades have happened yet.
In this application, "equity" means something traded on the market and for which quotes exist. This may include bond funds, royalty trusts, etc. Income provided will be referred to as "dividends",
although it might properly be termed a "distribution".
The tables may not display very well on small displays. These pages
display a lot of data.
Rather than reducing useful information, or reducing font sizes beyond
readability, I'm accepting that you need most of the real estate on a decent-sized monitor to
view these pages.
While you can see my watch list, I haven't always added comments as to WHY I'm watching a particular thing. It
may be to just watch it tank. I claim absolutely NO responsibility if you should actually invest in
something on my list, and lose your shirt.
Dividend data is scraped from historical payments, and a dividend calendar, looking about a month ahead. Frequency, annual payout
and yield are derived from the historical dividends over the last three years. The next and last payments are also provided.
"Next" is always in the future, and may be an estimate. The estimate payment is the same as the last actual payment, and
the dates are derived from past history.
Limitations
Since this is just a demo, or an application intended for my own personal use, there are some things which would be addressed
in a commercial deployment:
|
© copyright, 2005-2022, Robert L. McQueer
|
|
Powered By
|
|
|