I recently invested in an S&P index fund - great timing, I know, so I figured I'd let J help calm my emotional response to the recent market volatility.
The questions on my mind are: 1. Is this level of daily volatility extreme? -- restated as how common are 2% swings in daily close price (SOLVED) 2. Is it uncommon to have this much volatility over a two week period? -- restated as how common are streaks of 2% change in price across multiple weeks (SOLVED) 3. How long does it take to recover after a period over period change of -5% (SOLVED) I set out to answer these questions: Step 1: Let's get some data require 'web/gethttp' NB. beware linebreak csv=: gethttp ' http://real-chart.finance.yahoo.com/table.csv?s=%5EGSPC&d=8&e=1&f=2015&g=d&a=0&b=3&c=1950&ignore=.csv ' arr=: > ',' cut each LF cut csv NB. closing price is 4th column close =: ". every 4{"1 }. arr QUESTION 1 - Daily volatility pctChange =: }: -&1@% }. NB. 708 days greater than 2% change from previous close (+/ 0.02 < | pctChange close) 708 NB. 4% of the time since 1950 (+/ 0.02 < | pctChange close) % (# close) 0.042852 NB. 354 times since 2000 ]c=. +/ 0.02 < | pctChange d=. ((1999 < ". 4&{. every dates) # close) 354 NB. which is 9% of time... c%(#d) 0.0898477 so +/ 2% swings is not exceptional, relatively uncommon but nothing to worry about QUESTION 2 - Volatility over a two week period NB. calculate the period close over 5 sessions periodClose=: _5({.)\ close NB. count of consecutive periods with more than 2% volatility NB. http://www.jsoftware.com/pipermail/programming/2014-October/039985.html [ c=.+/ 2 < ([*+)/\.&.|. d=. (0.02 < | pctChange periodClose) 131 NB. 4% of the periods since 1950 had 3 or more weeks of 2% volatility c % (#d) 0.0396489 NB. since 2000 periodClose=: _5({.)\ ((1999 < ". 4&{. every dates) # close) NB. 50 times there have been 3 or more weeks of 2% volatility since 2000 [ c=.+/ 2 < ([*+)/\.&.|. d=. (0.02 < | pctChange periodClose) 50 NB. 6.3% of the time c % (#d) 0.0635324 QUESTION 3 - Given a decline of 10% in two weeks, how long does it take to recover? NB. close at the end of 10 sessions periodClose=: _10({.)\ close NB. 59 times there's been more than 5% decline over 10 sessions [ +/ _.05 > pctChange periodClose These are some of the dates: ,. (I. _.05 > pctChange periodClose) { (_10({.)\ dates) +----------+ |2015-08-31| +----------+ |2011-08-10| +----------+ |2010-07-01| +----------+ |2009-03-11| +----------+ |2009-02-25| +----------+ |2008-11-12| +----------+ |2008-10-15| +----------+ |2008-09-17| +----------+ |2008-01-15| +----------+ |2003-01-28| +----------+ This is starting to look more concerning.... Now, to find how long it takes to recover: Here are 10 instances: 10 {. (I. _.05 > pctChange periodClose) 0 102 130 163 164 171 173 175 192 317 A crude attempt: NB. find # of 10 day periods between period before y and period closing above that close findRecovery =: 3 : 'y - >./ I. ((y+1) { periodClose) < ((i. y) { periodClose)' NB. number of weeks between the 5% decline over two weeks and the recovery 2 * findRecovery every 10 {. (I. _.05 > pctChange periodClose) _ 22 10 2 8 28 72 116 252 16 22 weeks to recover since the last time it was > 5% decline over two weeks Graphical (from yahoo charts) http://pasteboard.co/k1aGw1i.png I guess I'm not feeling as great now :), but at least it's not that uncommon and in each case it recovered Hope this helps anyone looking at today's market and/or wishing to play with J Happy to take any feedback on the approach as well. ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
