[matplotlib-devel] Yahoo historical quotes

2010-10-12 Thread Keith Goodman
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

2010-10-12 Thread John Hunter
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

2010-10-12 Thread Keith Goodman
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

2010-10-12 Thread John Hunter
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

2010-10-12 Thread Keith Goodman
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