1- from datetime import datetime
1+ import datetime as dt
22
33from pandas_datareader .av import AlphaVantage
44
@@ -13,11 +13,11 @@ class AVTimeSeriesReader(AlphaVantage):
1313 ----------
1414 symbols : string
1515 Single stock symbol (ticker)
16- start : string, (defaults to '1/1/2010')
17- Starting date, timestamp . Parses many different kind of date
16+ start : string, int, date, datetime, timestamp
17+ Starting date. Parses many different kind of date
1818 representations (e.g., 'JAN-01-2010', '1/1/10', 'Jan, 1, 1980')
19- end : string, (defaults to today)
20- Ending date, timestamp. Same format as starting date.
19+ end : string, int, date, datetime, timestamp
20+ Ending date
2121 retry_count : int, default 3
2222 Number of times to retry query request.
2323 pause : int, default 0.1
@@ -52,6 +52,7 @@ def __init__(
5252 chunksize = 25 ,
5353 api_key = None ,
5454 ):
55+ self ._func = function
5556 super (AVTimeSeriesReader , self ).__init__ (
5657 symbols = symbols ,
5758 start = start ,
@@ -62,19 +63,26 @@ def __init__(
6263 api_key = api_key ,
6364 )
6465
65- self ._func = function
66+ @property
67+ def default_start_date (self ):
68+ d_days = 3 if self .intraday else 365 * 20
69+ return dt .datetime .today () - dt .timedelta (days = d_days )
6670
6771 @property
6872 def function (self ):
6973 return self ._func
7074
75+ @property
76+ def intraday (self ):
77+ return True if self .function == "TIME_SERIES_INTRADAY" else False
78+
7179 @property
7280 def output_size (self ):
7381 """ Used to limit the size of the Alpha Vantage query when
7482 possible.
7583 """
76- delta = datetime .now () - self .start
77- return "full " if delta .days > 80 else "compact "
84+ delta = dt . datetime .now () - self .start
85+ return "compact " if delta .days < 80 and not self . intraday else "full "
7886
7987 @property
8088 def data_key (self ):
@@ -88,7 +96,7 @@ def params(self):
8896 "apikey" : self .api_key ,
8997 "outputsize" : self .output_size ,
9098 }
91- if self .function == "TIME_SERIES_INTRADAY" :
99+ if self .intraday :
92100 p .update ({"interval" : "1min" })
93101 return p
94102
0 commit comments