[matplotlib-devel] Yahoo historical quotes
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.8615e+02, 2.8160e+02, 2.8200e+02], [ 2.8252e+02, 2.7864e+02, 2.8894e+02], [ 2.8658e+02, 2.8290e+02, 2.8945e+02], [ 2.8135e+02, 2.e+02, 2.8182e+02], [ 1.60051000e+07, 1.55256000e+07, 1.78743000e+07]], [[ 2.4770e+01, 2.3960e+01, 2.4060e+01], [ 2.4380e+01, 2.3910e+01, 2.4350e+01], [ 2.4820e+01, 2.3990e+01, 2.4450e+01], [ 2.4300e+01, 2.3780e+01, 2.3910e+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]]) -- Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today. http://p.sf.net/sfu/beautyoftheweb ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Re: [matplotlib-devel] Yahoo historical quotes
On Tue, Oct 12, 2010 at 10:55 AM, Keith Goodman wrote: > 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. We don't do the adjustment, Yahoo does. Eg, take a look at CROX around their 6/15/07 split. http://finance.yahoo.com/q/hp?s=CROX&a=05&b=1&c=2007&d=06&e=1&f=2007&g=d IDC reports consolidated volume on 6/14/07 (pre-split) was 4,366,319 shares. Yahoo reports 8,726,000 -- which is close to 2x the raw volume (I assume the difference is in how some of the shares transacted on non-primary exchanges are counted). Likewise, on 6/13/07, IDC reports 7,852,268 and Yahoo reports 15,544,200, which is close to 2x. So it appears they are backward split adjusting the volume. > quotes_historical_yahoo builds an error message from a variable > named "url" which doesn't exist in the scope of the function Fixed -- this was a legacy error message when we used to pass in urls but now pass in filehandles > "import time" and "from matplotlib.cbook import is_string_like" are not used Fixed. Thanks for the report -- fixed on the branch (8742) and will be merged to the trunk when MD resuscitates svnmerge JDH -- Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today. http://p.sf.net/sfu/beautyoftheweb ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Re: [matplotlib-devel] Yahoo historical quotes
On Tue, Oct 12, 2010 at 9:23 AM, John Hunter wrote: > On Tue, Oct 12, 2010 at 10:55 AM, Keith Goodman wrote: >> 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. > > We don't do the adjustment, Yahoo does. Eg, take a look at CROX > around their 6/15/07 split. > > http://finance.yahoo.com/q/hp?s=CROX&a=05&b=1&c=2007&d=06&e=1&f=2007&g=d > > IDC reports consolidated volume on 6/14/07 (pre-split) was 4,366,319 > shares. Yahoo reports 8,726,000 -- which is close to 2x the raw > volume (I assume the difference is in how some of the shares > transacted on non-primary exchanges are counted). Likewise, on > 6/13/07, IDC reports > 7,852,268 and Yahoo reports 15,544,200, which is close to 2x. So it > appears they are backward split adjusting the volume. I knew it was worth it (to me) to report what I thought was a bug. Thanks. Well, then perhaps the doc string needs tweaking? *adjusted* If True (default) replace open, close, high, low, and volume with their adjusted values. The adjustment is by a scale factor, S = adjusted_close/close. Adjusted volume is actual volume divided by S; Adjusted prices are actual prices multiplied by S. Hence, the product of price and volume is unchanged by the adjustment. It does state that volume is adjusted by S (where S contains dividend info). I take it that volume is the same whether adjusted is True or False, which means that dollar volume is not unchanged. -- Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today. http://p.sf.net/sfu/beautyoftheweb ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Re: [matplotlib-devel] Yahoo historical quotes
On Tue, Oct 12, 2010 at 11:47 AM, Keith Goodman wrote: > Well, then perhaps the doc string needs tweaking? > > *adjusted* > If True (default) replace open, close, high, low, and volume with > their adjusted values. > The adjustment is by a scale factor, S = adjusted_close/close. > Adjusted volume is actual volume divided by S; > Adjusted prices are actual prices multiplied by S. Hence, > the product of price and volume is unchanged by the adjustment. > > It does state that volume is adjusted by S (where S contains dividend > info). I take it that volume is the same whether adjusted is True or > False, which means that dollar volume is not unchanged. How does this look? Parse the historical data in file handle fh from yahoo finance. *adjusted* If True (default) replace open, close, high, low, and volume with their adjusted values. The adjustment is by a scale factor, S = adjusted_close/close. Adjusted prices are actual prices multiplied by S. Hence, Note that volume is already backward split adjusted by Yahoo, so if you want to compute dollars traded, multiply volume by the adjusted close, regardless of whether you choose adjusted = True|False -- Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today. http://p.sf.net/sfu/beautyoftheweb ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel
Re: [matplotlib-devel] Yahoo historical quotes
On Tue, Oct 12, 2010 at 10:11 AM, John Hunter wrote: > On Tue, Oct 12, 2010 at 11:47 AM, Keith Goodman wrote: > >> Well, then perhaps the doc string needs tweaking? >> >> *adjusted* >> If True (default) replace open, close, high, low, and volume with >> their adjusted values. >> The adjustment is by a scale factor, S = adjusted_close/close. >> Adjusted volume is actual volume divided by S; >> Adjusted prices are actual prices multiplied by S. Hence, >> the product of price and volume is unchanged by the adjustment. >> >> It does state that volume is adjusted by S (where S contains dividend >> info). I take it that volume is the same whether adjusted is True or >> False, which means that dollar volume is not unchanged. > > > > How does this look? > > Parse the historical data in file handle fh from yahoo finance. > > *adjusted* > If True (default) replace open, close, high, low, and volume with > their adjusted values. > The adjustment is by a scale factor, S = adjusted_close/close. > Adjusted prices are actual prices multiplied by S. Hence, > > Note that volume is already backward split adjusted by Yahoo, so > if you want to compute dollars traded, multiply volume by the > adjusted close, regardless of whether you choose adjusted = > True|False Here are some suggested tweaks: *adjusted* If True (default) replace open, close, high, and low prices with their adjusted values. The adjustment is by a scale factor, S = adjusted_close/close. Adjusted prices are actual prices multiplied by S. Volume is not adjusted as it is already backward split adjusted by Yahoo. If you want to compute dollars traded, multiply volume by the adjusted close, regardless of whether you choose adjusted = True|False. -- Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today. http://p.sf.net/sfu/beautyoftheweb ___ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel