Friday, May 20, 2011
Performance running total
Thursday, May 19, 2011
Splits
| 5/6/2011 11:44:37 PM | hlf | 0.6459572 | 14152.50 | 104.84 | 14159.80 | 53.29 | 0.05 | -49.17 | -49.22 |
and realized that it is due to Herbalife doing a 2 for 1 split on May 18th 2011. Paranumeral fetches just the price deltas (as in just yesterday's) so as to minimize traffic but it seems we have a problem with splits. So I'll either do the adjustment (complex) or fetch all historical prices to ensure they're adjusted for splits. In the meantime this affects total performance very directly and significantly - splits are huge changes in price! Furthermore this issue plagues model building by adding lots of noise. So I have my work cut out.
Monday, May 16, 2011
Performance Tracking
Friday, May 13, 2011
Whooaa - what happened to the numbers!!? AGAIN
After much toying with different models and different model responses the current (and hopefully final) prediction response is the Geometric Daily Return Average. Well the difference of that for the symbol and the market respectively. The averaging is over the prediction horizon which is currently the 3 months from financial statement date - not today and not when it was filed but rather the statement period ending date. The return is not in percent terms so multiply by 100 (until I do so in code).
I believe this is much better than any scale no matter how granular let alone the outperform/perform/underperform one. Yes, predicting the expected return is crazy impossible so the system will be used very much (as a classifier) along the lines of outperform/perform/underperform (basically go long, ignore or go short vs market). Regardless there's power in that bit of information.
Tuesday, May 10, 2011
Follow us on Twitter
Each morning predictions are made using new statements and prices fetched the night before. Only those over a certain magnitude (absolute value of the prediction) and symbols/tickers not ending with .OB or .PK get twitted about. That is so no one gets flooded with tweets about predictions which are basically "market perform" and with tweets about tiny caps.
Since no magnitude works for everyone and just cause hashtags are cool, the system bands and hashtags the predictions by prediction magnitude so folks can filter out stuff. Tickers are also turned into hashtags. Maybe I'll add or change the current tags to the standard #outperform, #underperform, #perform etc.
Tuesday, May 3, 2011
New models
Speaking of the current model; it is based on roughly 60,000 company statements, both quarterly and annual spanning 15 years; from December 31st, 1995 to December 31st, 2010. It makes good use of a couple of hundred features, mainly past relative price patterns and variations on dozens of measures of company strength versus peers.
The expanded date range (compare to previous models built on 5 years) provides the model with data points of various "markets" - bulls, bears, bubbles etc.
I ended all CAPS predictions so as to start fresh with these new models. Will most likely add functionality to the website which does similar tracking so I don't have to spend as much time just entering predictions manually in the Motley Fool CAPS.
Thursday, April 7, 2011
Ah the little ones
After my brag post on 3/11, I started noticing a virtual nose dive in paranumeral’s CAPS score (along with accuracy and rating). After quite some soul (and source) searching I think I have found the villain. We’ll hang him and everyone else lives happily ever after ;-) The short of it is that the new code (which now takes into account the company and market price appreciation/depreciation since the last statement date) replaced the old prediction code which was loosely coupled with the SQL code expecting the latest statement to be last. Well the new code predicted using the FIRST record fetched and did not care about stmt date order as it was coded when we fetched statements dated in the last 3 months – there would be just one set of (balance sheet, income and cash flow) stmts. Then around mid March a lot of tickers started coming back with “Invalid tickers or lacking latest statements” so then I changed the code to look for statements dated in the last 6 months (always returning at least one set and often two) BUT failed to change the sort order to chronologically DESCending so the first record would be the most recent set of stmts. So the summary is that all the predictions in the last two weeks of March were coin flips or worse. Amazing how the littlest of things can have the biggest of impacts. And speaking of little things my 6 week old daughter and 20 month old son get the prize for the most impact these days.