smtm - Display and update a configurable ticker of global stock quotes
smtm [options] [stock_symbol ...]
--time min minutes to wait before update --file smtmrc to store/retrieve stocks selected --proxy pr network address and port of firewall proxy --fwall [id:pw] account and password for firewall --chart len select length of data interval shown in chart (must be one of 1, w, 3, 1 or 5) --timeout len timeout in seconds for libwww-perl UserAgent --wide also display value changes and holdings --percent show relative performance in percent instead of bps --sort style sort display by specified style (must be one r, a, p, v, n, v, V or h) --columns set choose the columns to display (can be any combination of s, n, l, a, r, v, p, V, R, h) --nookbutton close other windows via left mouseclick, suppress button --help print a short help message
smtm, which is a not overly clever acronym for Show Me The Money, is a financial ticker and portfolio application for quotes from exchanges around the world (provided they are carried on Yahoo!). It creates and automatically updates a window with quotes from Yahoo! Finance. When called with one or several symbols, it displays these selected stocks. When smtm is called without arguments, it reads the symbols tickers from a file, by default ~/.smtmrc. This file can be created explicitly by calling the Save option from the File menu. Beyond stocks, smtm can also display currencies (from the Philadephia exchange), US mutual funds, options on US stocks, several precious metals and quite possibly more; see the Yahoo! Finance website for full information.
smtm can also aggregate the change in value for both individual positions and the the entire portfolio. For this, the number of shares is needed, as well as the cross-currency expression pair. The standard ISO notation is used. As an example, GBPUSD translates from Pounds into US Dollars. To compute annualised returns, the purchase date and purchase price can also be entered.
smtm displays the full name of the company, the absolute price change and the relative percentage change in basispoints (i.e., hundreds of a percent) or in percentages if the corresponding option has been selected. Other information that can be displayed are the traded volume, the profit/loss, the aggregate positon value, the holding period length as well as the annualised return. Note that the return calculation ignores such fine points as dividends, and foreign exchange appreciation or depreciation for foreigns stocks. All display columns can be selected, or deselected, individually.
Losers are flagged in red. smtm can be used for stocks from the USA, Canada, various European exchanges, various Asian exchanges (Singapore, Taiwan, HongKong, Kuala Lumpur, ...) Australia and New Zealand. It should work for other markets supported by Yahoo. US mutual funds are also available, but less relevant as their net asset value is only computed after the market close. Due to the limited amount of information provided by Yahoo! for the UK/A/NZ quotes, some fields might be empty. The sorting order can be chosen among eight different options.
The quotes are delayed, typically 15 minutes for NASDAQ and 20 minutes otherwise, see http://finance.yahoo.com for details. New Zealand is rumoured to be somewhat slower with a delay of one hour. However, it is worth pointing out that (at least some) US) indices are updated in real time at Yahoo!, and therefore available in real time to smtm.
smtm supports both simple proxy firewalls (via the --proxy option) and full-blown firewalls with account and password authorization (via the --fwall option). Firewall account name and password can be specified as command line arguments after --fwall, or else in a pop-up window. This setup has been in a few different environments.
smtm can display two more views of a share position. Clicking mouse button 1 launches a detailed view with price, date, change, volume, bid, ask, high, low, year range, price/earnings, dividend, dividend yield, market capital information, number of shares held and annualised return. However, not all of that information is available at all exchanges. Clicking the right mouse button display a chart of the corresponding stock; this only works for US and Canadian stocks. The type of chart can be specified either on the command-line, or via the Chart menu. Choices are intraday, five day, three months, one year, two year or five year. The default chart is a five day chart. The middle mouse button opens an edit window to modify and augment the information stored per stock.
smtm has been written and tested under Linux. It should run under any standard Unix, success with Solaris, HP-UX and FreeBSD is confirmed (but problems are reported under Solaris when a threaded version of Perl is used). It also runs under that other OS from Seattle using the perl implementation from http://www.activestate.com. In either case, it requires the Perl/Tk module for windowing, and the LWP module (also known as libwww-perl) for data retrieval over the web. The excellent Date::Manip modules is also required for the date parsing and calculations.
smtm CSCO NT
creates a window following the Cisco and Nortel stocks.
smtm MSFT:Bill SUNW:Scott ORCL:Larry
follows three other tech companies and uses the override feature for the displayed name. [ Historical note: We once needed that for European stocks as Yahoo! did not supply the company name way back in 1999 or so. This example just documents an ancient feature. ]
smtm BT.A.L::10:GBPCAD T::10:USDCAD \ BCE.TO::10 13330.PA::10:EURCAD \ "555750.F:DT TELECOM:10:EURCAD"
creates a window with prices for a handful of telecom companies on stock exchanges in London, New York, Toronto, Paris and Frankfurt. Note how a names is specified to override the verbose default for the German telco. Also determined are the number of shares, here 10 for each of the companies. Lastly, this example assumes a Canadian perspective: returns are converted from British pounds, US dollars and Euros into Canadian dollars. Quotation marks have to be used to prevent the shell from splitting the argument containing spaces.
Three menus are supported: File, Edit, and Help. The File menu offers to load or save to the default file, or to 'save as' a new file. The Edit menu can launch windows to either add a new stock or delete one or several from a list box. Submenus for column selection, sort order and chart type are also available. The Charts menu allows to select the default chart among the choices intraday, five day, three months, one year, two year or five year. Similarly, the Sort menu allows to select one of eight different sort options. Further, it also allows to modify the delay time between updates, to choose between the default title display or the wide display with changes in the position and total position value. Lastly, the Help menu can display either the text from the manual page, or the copyright information in a new window.
The main window is very straightforward. For each of the stocks, up to ten items can be displayed: its symbol, its name, its most recent price, the change from the previous close in absolute terms, the change in relative terms, the volume, the profit or loss, the total position value, the holding period and the annualised return (bar F/X effects or dividends). The relative change is either expressed in basispoints (bps), which are 1/100s of a percent, or in percent; this can be controlled via a checkbutton as well as an command-line option. This display window is updated in regular intervals; the update interval can be specified via a menu or a command-line option.
The window title displays the relative portfolio profit or loss for the current day in basispoints, i.e., hundreds of a percent, or in percent if the corresponding option is chosen, as well as the date of the most recent update. If the --wide options is used, the net change and ney value of the portfolio (both in local currency) are also displayed.
Clicking on any of the stocks with the left mouse button opens a new window with all available details for a stock. Unfortunately, the amount of available information varies. Non-North American stocks only have a limited subset of information made available via the csv interface of Yahoo!. For North American stocks, not all fields all provided by all exchanges. Clicking on the details display window itself closes this window. Clicking on any of the stocks with the right mouse button opens a new window with a chart of the given stock in the default chart format. This option is only available for North American stocks. Clicking on the chart window itself closes this window. Finally, the middle mouse button opens an edit window.
smtm does not recover from bad selection in charts. If, say, a five-year chart is requested for a company with only a two-year history, the program currently hangs.
Closing the stock addition or deletion windows have been reported to cause random segmentation violation under Linux. This appears to be a bug in Perl/Tk which will hopefully be solved, or circumvented, soon. This bug does not bite under Solaris, FreeBSD or NT or Linux distributions other than Debian. Very odd. Update: This problem appears to have disappeared with Perl 5.6.*.
Problems with undefined symbols have been reported under Solaris 2.6 when Perl has been compiled with thread support. Using an unthreaded Perl binary under Solaris works. How this problem can be circumvented is presently unclear.
Finance::YahooQuote.3pm, Finance::YahooChart.3pm, LWP.3pm, lwpcook.1, Tk::UserGuide.3pm
smtm is (c) 1999, 2000, 2001 by Dirk Eddelbuettel <edd@debian.org>
Updates to this program might appear at http://eddelbuettel.com/dirk/code/smtm.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.
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. The Finance::YahooChart module by Dj Padzensky (on the web at http://www.padz.net/~djpadz/YahooChart/) provided the routine for determining the Yahoo! Chart url.