Skip to content

Commit

Permalink
ENH: Added method to pandas.data.Options to download all option data …
Browse files Browse the repository at this point in the history
…for a ticker.

Also added a few helper functions.  These functions could be applied to refactor some of the other methods.

ENH: In Options.get_all_data: Now checking for any option tag (instead of just mini)

Changed expiry to datetime from string.
Added tests for tick functions.

BUG: Fixed no sign in change column of option download.

BUG: Fix bugs in Options class

Dealt with situation of calculating expiry when symbol contains a hyphen
Fixed bug in finding current expiry month.

BUG: Fixed Options.get_forward_data expiry date

Method assumed expiry date is the same for all option in a given month.
Not the case for options with weekly's.  Also breaks with options that
have tags.

BUG: Fixed Option bug that didn't allow LEAP DL in January.

Option class was checking only the month to determine if the requested
month was the current month.  Changed to check year and month.  Now
allows downloads of next years LEAPS's in January.

ENH: Added option tag and underlying price to option data output.

Factored out URL parsing and error checking from individual methods.

ENH: Refactor of Option class in io.data.

 Consistently returns multi-index data frame.
 Improves speed of downloading combination of calls and puts by only accessing yahoo once per expiry month.

CLN: Fix out of date docstrings in io.data.Options

Moved _parse_row_values definition into _unpack.

CLN: Consistent capitalization in output data.

CLN: Remove Tag, leave Root in data frame output.

CLN: Remove unnecessary _tag_from_root method.

BUG: Fix different capitalizations of Rootexp in _process_data.

TST: Update tests for pandas.data.Options

TST: Remove test for helper function that no longer exists.

TST: Fix option test for change in output

TST: Changes io.data.Options tests to self.assertTrue

TST: Change tests raise nose.SkipTests on remote data errors

TST: Change nose.SkipTest on RemoteDataError instead of IndexError

ENH: Added quote time to outputs of data.Options.

DOC: Added documentation for io.data.Options

DOC: Added documentation of data.Options output.

DOC: Updated docstrings on data.io.Options

DOC: Added experimental tags to io.data.Options docstrings/documentation.

BUG: Bug fixes, added tests, cleanups on documentation

TST: Fix test_data Options tests.

TST: Add test yahoo finance option pages.

DOC: Update example to show slicing.

TST: Remove test for long for python 3 compatibility.

BUG: Fix quote time scraper

TST: Changed the error raised by no tables in data.Options

Tests were failing if the scraper got the webpage but there weren't any tables in it.  Changed from IndexError to RemoteDataError so that nose would skip it on failure.

DOC: Moved reference to new Options method to v0.14.1.txt

DOC: Updated release at 0.14.1.txt for io.data.Options
  • Loading branch information
davidastephens committed Jun 17, 2014
1 parent 4db22f4 commit 2ba5ead
Show file tree
Hide file tree
Showing 7 changed files with 1,154 additions and 104 deletions.
4 changes: 4 additions & 0 deletions doc/source/release.rst
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ performance improvements along with a large number of bug fixes.

Highlights include:

Experimental Features
~~~~~~~~~~~~~~~~~~~~~
- ``pandas.io.data.Options`` has a get_all_data method and now consistently returns a multi-indexed ''DataFrame'' (:issue:`5602`)

See the :ref:`v0.14.1 Whatsnew <whatsnew_0141>` overview or the issue tracker on GitHub for an extensive list
of all API changes, enhancements and bugs that have been fixed in 0.14.1.

Expand Down
37 changes: 37 additions & 0 deletions doc/source/remote_data.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,43 @@ Yahoo! Finance
f=web.DataReader("F", 'yahoo', start, end)
f.ix['2010-01-04']
.. _remote_data.yahoo_Options:

Yahoo! Finance Options
----------------------
***Experimental***

The Options class allows the download of options data from Yahoo! Finance.

The ''get_all_data'' method downloads and caches option data for all expiry months
and provides a formatted ''DataFrame'' with a hierarchical index, so its easy to get
to the specific option you want.

.. ipython:: python
from pandas.io.data import Options
aapl = Options('aapl', 'yahoo')
data = aapl.get_all_data()
data.head()
#Show the $600 strike puts at all expiry dates:
data.loc[(600, slice(None), 'put'),:].head()
#Show the volume traded of $600 strike puts at all expiry dates:
data.loc[(600, slice(None), 'put'),'Vol'].head()
If you don't want to download all the data, more specific requests can be made.

.. ipython:: python
import datetime
expiry = datetime.date(2016, 1, 1)
data = aapl.get_call_data(expiry=expiry)
data.head()
Note that if you call ''get_all_data'' first, this second call will happen much faster, as the data is cached.


.. _remote_data.google:

Google Finance
Expand Down
18 changes: 17 additions & 1 deletion doc/source/v0.14.1.txt
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,23 @@ Performance
Experimental
~~~~~~~~~~~~

There are no experimental changes in 0.14.1
``pandas.io.data.Options`` has a get_all_data method and now consistently returns a multi-indexed ''DataFrame'' (PR `#5602`)
See :ref:`the docs<remote_data.yahoo_Options>` ***Experimental***

.. ipython:: python

from pandas.io.data import Options
aapl = Options('aapl', 'yahoo')
data = aapl.get_all_data()
data.head()

.. ipython:: python

from pandas.io.data import Options
aapl = Options('aapl', 'yahoo')
data = aapl.get_all_data()
data.head()


.. _whatsnew_0141.bug_fixes:

Expand Down
Loading

0 comments on commit 2ba5ead

Please sign in to comment.