1
- from datetime import datetime
1
+ import datetime as dt
2
2
3
3
from pandas_datareader .av import AlphaVantage
4
4
@@ -13,11 +13,11 @@ class AVTimeSeriesReader(AlphaVantage):
13
13
----------
14
14
symbols : string
15
15
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
18
18
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
21
21
retry_count : int, default 3
22
22
Number of times to retry query request.
23
23
pause : int, default 0.1
@@ -52,6 +52,7 @@ def __init__(
52
52
chunksize = 25 ,
53
53
api_key = None ,
54
54
):
55
+ self ._func = function
55
56
super (AVTimeSeriesReader , self ).__init__ (
56
57
symbols = symbols ,
57
58
start = start ,
@@ -62,19 +63,26 @@ def __init__(
62
63
api_key = api_key ,
63
64
)
64
65
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 )
66
70
67
71
@property
68
72
def function (self ):
69
73
return self ._func
70
74
75
+ @property
76
+ def intraday (self ):
77
+ return True if self .function == "TIME_SERIES_INTRADAY" else False
78
+
71
79
@property
72
80
def output_size (self ):
73
81
""" Used to limit the size of the Alpha Vantage query when
74
82
possible.
75
83
"""
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 "
78
86
79
87
@property
80
88
def data_key (self ):
@@ -88,7 +96,7 @@ def params(self):
88
96
"apikey" : self .api_key ,
89
97
"outputsize" : self .output_size ,
90
98
}
91
- if self .function == "TIME_SERIES_INTRADAY" :
99
+ if self .intraday :
92
100
p .update ({"interval" : "1min" })
93
101
return p
94
102
0 commit comments