What's happening above me?
You will soon be looking at a powerful new way to explore the stock
market. The applet above you provides zoomable, fast charts of any of more
than 8,000 stocks traded in the United States. Click and drag out a
rectangle, and the view zooms in to reflect the new rectangle. This way, you
can drill down to see a particular time period. Also, you can chart stocks
that are no longer traded. Want to see what happened to 3com? No problem!
Just type "coms--0" into the ticker box. That means "The most recently
delisted stock formerly known as coms". You can see Delta airlines before,
during, and after its bankruptcy. Just type "dal--0", "dalrq", and "dal"
respectively, into the ticker box. We have data going back to January
2003.
But that's not all. The applet (when it finishes loading) allows you to
try different strategies, and see the modified chart, as your strategy is
applied to your stock. You will be able to see charts of IBM only on Mondays,
and see how that strategy pans out. Or you can test the "January effect", and
see what happens if you buy stocks only in January. Or all months except
January. All that is required is for you to type "month != 1" in the term
box, and for any given stock that you test, you will not buy during January.
This will appear as a fairly normal looking chart of the stock in question,
but with a long flat line each year where all the activity in January is
suppressed.
Is it there yet?
If you have a Java logo, and progress bar, then everything is likely fine.
If the progress bar is moving, that is. If it's stopped, that could be caused
by several things. One is an unexplained system error (network problems or
the like). Another one, however, is that this is a signed applet, and it
needs your approval to keep going (don't we all). All you have to do is
indicate your acceptance of the signed applet on the dialog that popped up.
Ah, you say, but the wrinkle is that there is no dialog box. That may be
because the dialog box got pulled over on its way to your screen. Many
browsers come with a popup blocker (look for text like "149 blocked" in your
menu bar area). If Google Toolbar or Yahoo Toolbar is installed, it may have
its own popup blocker installed. Clicking on the offending text will pull
down a menu with options like "enable popups for this site", or similar. Go
ahead, there's no porn here. We don't even have any cute pictures of cats
hiding in your computer.
With all that done, a reload should get the page to load without further
nuisance. If course, none of these issues may have come up. If so, good for
you! With respect to the applet security box, "Trust always" is actually more
secure than "Trust just this once", because if an evil hacker tries to
impersonate this site, their certificate will not be the same as mine, and
you will get a new popup that you weren't expecting, which should alert you
that the game is afoot.
An error occured. What now?
If you do not have Java installed, you will be unable to run this applet,
and unable to use this software. Visit http://java.sun.com, or follow the
instructions that the browser provides for downloading and installing the
JRE. Any JRE that is version 1.4 or later will work just fine. We do not
support the Microsoft VM, because we use software that does not support the
Microsoft VM.
If you hava Java installed, and it still does not work, I very much want
to hear about it, so I can add good instructions here. Linux users
particularly are prone to having almost Byzantine failures, and I'd love to
catalog and document the most common of those. If you are a Windows user, and
you had to install Java manually, I'd love to hear about it, so I can get a
feel for how common that is.
Why don't you use Flash? Or GWT? Or AJAX in general?
We do use Javascript, at least in a vacuous sense. These instructions will
disappear when the applet finishes loading :-). However, the deeper answer is
that the charts that are being sent back and forth have thousands of data
points, per data set, and multiple data sets per chart. Plotting that many
points in Javascript would be torture, and would therefore only run on
computers in Guantanamo Bay. Flash is faster, but the user interface
capabilities are not as rich as I'd like. Also using Java for the user
experience technology opens the way to desktop applications, or to
interesting hybrids, where as AJAX and Flash are very tied to a browser.
Finally, AJAX is very browser dependent, even with GWT.
If you've tried everything above, contact us.
I'm hoping that you're not reading this hoping I'll say something to make
it work for you :-).
What is all this for?
You have no doubt noticed three text boxes, and a chart.
The ticker box:
This is where you enter in your favorite ticker. Some choices are
presented in a table below, but any of the 8,000 most important stocks in the
U.S. should work. Delisted stocks also work, for instance dal--0 for the
Delta airlines that existed before it went bankrupt. The rule for delisted
stocks is sym--n where sym was the symbol that the delisted stock was known
as, and n is which one you want. For instance, if 3 companies all has the
symbol xxx and went bankrupt (or changed tickers), then xxx--2 would give you
the oldest xxx, xxx--0 would give you the most recent one, and xxx--1 would
give you the one in the middle.
| Name |
Ticker |
Notes |
| S &P index fun |
spy |
|
| Nasdaq 100 index fund |
qqqq |
|
| Nasdaq index fund (previous) |
qqq--0 |
|
| 3com, inc |
coms--0 |
|
| Yahoo, Inc |
yhoo |
|
| Merrill Lynch |
mer |
|
| Valueline, Inc |
valu |
|
| Evergreen associates |
eee |
Going down |
| Apple, Inc |
aapl |
Going up |
| Ford Motor Company |
f |
Cyclical, loser |
| Exxon Mobile, Inc |
xom |
good stock to own |
| Elan Corporation, plc |
elan |
Very volatile |
| Dryships, Inc |
drys |
long term volatility |
| TVI Corporation |
tvin |
Can you keep your gains? |
| Westwood One, Inc |
won |
You definitely have not won with this one |
| 3M company |
mmm |
seems cyclical, nice dividend |
| Tyco International, Ltd |
tyc |
Ouch in 2007 |
| Bear Stearns |
bsc |
Ouch in 2007 |
| Brazil etf |
ewz |
Nice to own |
The term box:
The term box allows you to enter conditions under which to hold the stock.
These are just expressions that are either true or false at a given time for
a stock.
Examples
Lets look at a simple term:
close / close <- 365 > 1.0
This means the closing price is higher than it was a year ago. Lets break
it down in the table below:
| close <- 365 |
The closing price 365 days ago |
| close / close <- 365 |
The current close divided by the close of 365 days ago |
| close / close <- 365 > 1.0 |
The current closing price divided by the closing price of 365 days
ago is greater than 1.0 |
Now we can look at a more complicated one.
(close / (close avg 30)) / ((close / (close avg 30)) avg 100) > 1.0
This term asks "Is the close more above its 30 day average than is typical
during the last 100 days? We tear this one apart below:
| close avg 30 |
The 30 day moving average of close |
| close / (close avg 30) |
The ratio of close to its 30 day average |
| ((close / (close avg 30)) avg 100) |
The 100 day average of that ratio |
| (close / (close avg 30) / ((close / (close avg 30)) avg 100) |
the 30 day average versus the 100 day average of the 30 day
average |
| (everything avove) > 1.0 |
Is the above quantity positive |
Glossary of fields
| field |
Explanation |
| close |
The closing price of the stock |
| open |
The opening price of the stock |
| high |
The daily high for the stock |
| low |
The daily low for the stock |
| volume |
The daily volume of the stock, in shares |
| adjustment |
The split adjustment factor for the stock price |
| pe |
The price per earnings |
| eps |
The earnings per share |
| pctyield |
The divident yield for the company, in percent |
| dividend |
The last actual divident, per share |
| divdate |
The date of that last dividend |
| numshares |
The number of shares outstanding |
| futureeps |
The expected eps for this company |
| day |
The day of the month (e.g. 15 if its april 15th) |
| month |
The month (eg 2 for February) |
| year |
The year (i.e. 2008) |
| The weekday |
0 for Monday, etc |
Glossary of operators
For the purposes of the table below, A or B may be terms, fields or
constants.
| Operator |
Explanation |
Returns |
&& |
A && B is true if A is true and B is true |
1 or 0, 1 meaning true |
|| |
A || B |
1 or 0, 1 meaning true |
after
|
A after B is true while A is true, but only after B
becomes true |
1 or 0, 1 meaning true |
before
|
A before B is true while A is true, but only before B
becomes true |
1 or 0, 1 meaning true |
until
|
Like A before B, but it remains true even after A is
no longer true, until B becomes true |
1 or 0, 1 meaning true |
then |
Like A after B, but persists while B is true even
after A becomes false |
1 or 0, 1 meaning true |
> |
A > B is true when A is greater than B. |
1 or 0, 1 meaning true |
< |
A < B is true when A is less than B. |
1 or 0, 1 meaning true |
| >= |
A >= B is true when A is greater than or equal to
B. |
1 or 0, 1 meaning true |
| <= |
A <= B is true when A is less than or equal to B. |
1 or 0, 1 meaning true |
!= |
A != B is true when A is not equal to B |
1 or 0, 1 meaning true |
== |
A == B is true when A is equal to B |
1 or 0, 1 meaning true |
| max |
A max days equals the largest value in A within days days |
A number |
| min |
A max days equals the smallest value in A within days days |
A number |
| avg |
A avg days equals the moving average over the given number of
days |
A number |
| rank |
A rank days gives the rank within the given number of days |
An integer |
| freq |
A freq days gives the number of times A is true over the given
number of days |
An integer |
| / |
A / B is A divided by B |
A number |
| * |
A * B is A times B |
A number |
| ** |
A ** B is A taken to the Bth power. B is assumed to be an
integer |
A number |
| // |
A ** B is A taken to the Bth root. B is assumed to be an
integer |
A number |
| <- |
A <- days is A shifted the given number of days into the
past |
A number |
| -> |
A -> days is A shifted the given number of days into the
future |
A number |
|
|
|
|
|
|
Choices
If you use curly braces, such as
close > {10.0,12.0,15.0}
that represents a choice. The term chosen might be the one with 10.0, or
12.0, or 15.0. Multiple curly brace terms can be used, and can represent a
very large number of terms:
({high, close, (close / close <- 5), (close avg 5), (close avg 10)} avg {9,15,21,30,45}) / close > {0.95,0.97,0.99,1.00,1.01,1.03}
represents 150 possibilities.
The count box:
Limits the number of choices plotted on the graph. Keeping this below 10
is a good idea.