Skip to content

Commit 2ba5ead

Browse files
ENH: Added method to pandas.data.Options to download all option data 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
1 parent 4db22f4 commit 2ba5ead

File tree

7 files changed

+1154
-104
lines changed

7 files changed

+1154
-104
lines changed

doc/source/release.rst

+4
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ performance improvements along with a large number of bug fixes.
5555

5656
Highlights include:
5757

58+
Experimental Features
59+
~~~~~~~~~~~~~~~~~~~~~
60+
- ``pandas.io.data.Options`` has a get_all_data method and now consistently returns a multi-indexed ''DataFrame'' (:issue:`5602`)
61+
5862
See the :ref:`v0.14.1 Whatsnew <whatsnew_0141>` overview or the issue tracker on GitHub for an extensive list
5963
of all API changes, enhancements and bugs that have been fixed in 0.14.1.
6064

doc/source/remote_data.rst

+37
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,43 @@ Yahoo! Finance
5252
f=web.DataReader("F", 'yahoo', start, end)
5353
f.ix['2010-01-04']
5454
55+
.. _remote_data.yahoo_Options:
56+
57+
Yahoo! Finance Options
58+
----------------------
59+
***Experimental***
60+
61+
The Options class allows the download of options data from Yahoo! Finance.
62+
63+
The ''get_all_data'' method downloads and caches option data for all expiry months
64+
and provides a formatted ''DataFrame'' with a hierarchical index, so its easy to get
65+
to the specific option you want.
66+
67+
.. ipython:: python
68+
69+
from pandas.io.data import Options
70+
aapl = Options('aapl', 'yahoo')
71+
data = aapl.get_all_data()
72+
data.head()
73+
74+
#Show the $600 strike puts at all expiry dates:
75+
data.loc[(600, slice(None), 'put'),:].head()
76+
77+
#Show the volume traded of $600 strike puts at all expiry dates:
78+
data.loc[(600, slice(None), 'put'),'Vol'].head()
79+
80+
If you don't want to download all the data, more specific requests can be made.
81+
82+
.. ipython:: python
83+
84+
import datetime
85+
expiry = datetime.date(2016, 1, 1)
86+
data = aapl.get_call_data(expiry=expiry)
87+
data.head()
88+
89+
Note that if you call ''get_all_data'' first, this second call will happen much faster, as the data is cached.
90+
91+
5592
.. _remote_data.google:
5693

5794
Google Finance

doc/source/v0.14.1.txt

+17-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,23 @@ Performance
148148
Experimental
149149
~~~~~~~~~~~~
150150

151-
There are no experimental changes in 0.14.1
151+
``pandas.io.data.Options`` has a get_all_data method and now consistently returns a multi-indexed ''DataFrame'' (PR `#5602`)
152+
See :ref:`the docs<remote_data.yahoo_Options>` ***Experimental***
153+
154+
.. ipython:: python
155+
156+
from pandas.io.data import Options
157+
aapl = Options('aapl', 'yahoo')
158+
data = aapl.get_all_data()
159+
data.head()
160+
161+
.. ipython:: python
162+
163+
from pandas.io.data import Options
164+
aapl = Options('aapl', 'yahoo')
165+
data = aapl.get_all_data()
166+
data.head()
167+
152168

153169
.. _whatsnew_0141.bug_fixes:
154170

0 commit comments

Comments
 (0)