cuemacro / findatapy

Python library to download market data via Bloomberg, Eikon, Quandl, Yahoo etc.
Apache License 2.0
1.65k stars 195 forks source link

misunderstanding with year of 52nd week in datavendorweb #16

Closed rkahun closed 6 years ago

rkahun commented 6 years ago

This code

from datetime import datetime
from findatapy.market import Market, MarketDataRequest, MarketDataGenerator

market = Market(market_data_generator=MarketDataGenerator())

md_request = MarketDataRequest(
    start_date=datetime(2016,1,1),
    finish_date=datetime(2016,2,1),
    fields=['bid','ask'], vendor_fields=['Bid','Ask'], freq='tick',
    data_source='fxcm', tickers=['EURUSD'], vendor_tickers=['EURUSD'])

df = market.fetch_market(md_request)

causes an uninitialized year variable at line 960 in findatapy.market.datavendorweb since 52nd is the firstly used week.

Should use datetime.datetime.isocalendar() to get week number and year instead of that workaround.

findatapy.market.datavendorweb

def week_range(self, start_date, finish_date):
    weeks = pandas.bdate_range(start_date - timedelta(days=7), finish_date+timedelta(days=7), freq='W')
    week_year = []

    for w in weeks:
        year,week = w.isocalendar()[0:2]
        week_year.append((week, year))

log snipet

2017-12-06 23:11:18,992 - findatapy.market.datavendorweb - INFO - Request FXCM data
2017-12-06 23:11:18,992 - findatapy.market.datavendorweb - INFO - About to download from FXCM... for EURUSD
[...]
  File "/usr/local/lib/python3.6/dist-packages/findatapy/market/datavendorweb.py", line 960, in week_range
    week_year.append((week, year))
UnboundLocalError: local variable 'year' referenced before assignment
saeedamen commented 6 years ago

Hi @rkahun - I've made the changes you suggested and committed it GitHub. The example no longer fails.

rkahun commented 6 years ago

OK, thanks for it