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

Reply via email to