Если вы не установите дату истечения срока в YQL-запросе, то я думаю, что датой истечения срока действия набора данных будет предстоящая третья пятница месяца.Используя dateutil , вы можете определить эту дату в Python с помощью:
import dateutil.relativedelta as relativedelta
import dateutil.rrule as rrule
import datetime as dt
expiration=rrule.rrule(
rrule.MONTHLY,
byweekday=(relativedelta.FR(3)), dtstart=dt.datetime.now())[0]
(Примечание. Приведенный выше код игнорирует праздничные дни, в этом случае датой истечения будет третий четверг ...Если вы используете этот код, обязательно проверьте, что Yahoo решит вернуть, когда текущим днем является третья пятница месяца - я не уверен, будет ли дата истечения срока текущей датой или третья пятницав следующем месяце.)
Чтобы просмотреть цепочку опционов для определенного года / месяца с истекшим сроком (кроме предстоящей третьей пятницы), вы можете использовать запрос YQL, например:
chain = YQL.query('''
select * from yahoo.finance.options
where symbol="WFC" and expiration="2011-08"''')[0]
Можно получить данные о множественном сроке действия в одном запросе YQL:
chains = YQL.query('''
select * from yahoo.finance.options
where symbol="WFC" and (
expiration="2011-08" or
expiration="2011-10" or
expiration="2012-01"
)
''')
Интересно, что при запросе данных о множественном сроке действия chain.attrib
содержит ключ expiration
:
for chain in chains:
print(chain.attrib)
# for option in chain:
# print(option.attrib)
# for attr in option:
# print attr.tag, attr.text
# print('-'*80)
урожайность
{'symbol': 'WFC', 'expiration': '2011-08-19'}
{'symbol': 'WFC', 'expiration': '2011-10-21'}
{'symbol': 'WFC', 'expiration': '2012-01-20'}