Thanks for the code. I added matplotlib's yahoo historical quote code
to my labeled array package, la. While doing so I noticed a couple of
possible bugs:
- The doc string for parse_yahoo_historical says that the volume is
adjusted. But I don't see a line of code that does the adjustment.
- quotes_historical_yahoo builds an error message from a variable
named "url" which doesn't exist in the scope of the function
- "import time" and "from matplotlib.cbook import is_string_like" are not used
I stripped down the code keeping only what I needed:
http://github.com/kwgoodman/la/blob/master/la/external/matplotlib.py
Here's a demo of how I use it:
>>> from la.data.yahoo import quotes
>>> lar = quotes(['aapl', 'msft'], (2010,10,1), (2010,10,5))
>>> lar
label_0
aapl
msft
label_1
open
close
high
low
volume
label_2
2010-10-01
2010-10-04
2010-10-05
x
array([[[ 2.86150000e+02, 2.81600000e+02, 2.82000000e+02],
[ 2.82520000e+02, 2.78640000e+02, 2.88940000e+02],
[ 2.86580000e+02, 2.82900000e+02, 2.89450000e+02],
[ 2.81350000e+02, 2.77770000e+02, 2.81820000e+02],
[ 1.60051000e+07, 1.55256000e+07, 1.78743000e+07]],
[[ 2.47700000e+01, 2.39600000e+01, 2.40600000e+01],
[ 2.43800000e+01, 2.39100000e+01, 2.43500000e+01],
[ 2.48200000e+01, 2.39900000e+01, 2.44500000e+01],
[ 2.43000000e+01, 2.37800000e+01, 2.39100000e+01],
[ 6.26236000e+07, 9.80868000e+07, 7.80329000e+07]]])
>>> close = lar.lix[:,['close']]
>>> close
label_0
aapl
msft
label_1
2010-10-01
2010-10-04
2010-10-05
x
array([[ 282.52, 278.64, 288.94],
[ 24.38, 23.91, 24.35]])
Calculate the log return from the close prices:
>>> ret = close / close.lag(1, axis=-1)
>>> ret = ret.log()
>>> ret
label_0
aapl
msft
label_1
2010-10-04
2010-10-05
x
array([[-0.01382872, 0.03629843],
[-0.01946634, 0.01823507]])