Skip to content

Commit a6a9da9

Browse files
authored
Merge pull request #82 from alpacahq/poly_v2_long_keys_timestamp
Use long names for polygon Aggsv2 entity
2 parents 218abdb + 21659e7 commit a6a9da9

File tree

2 files changed

+37
-13
lines changed

2 files changed

+37
-13
lines changed

alpaca_trade_api/polygon/entity.py

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@ def rename_keys(tick, map):
4141
}
4242

4343
super().__init__([
44-
Agg(rename_keys(tick, raw['map']))
45-
for tick in raw['ticks']
44+
Agg(rename_keys(tick, raw['map'])) for tick in raw['ticks']
4645
])
4746
self._raw = raw
4847

@@ -65,7 +64,8 @@ def df(self):
6564
df.set_index('timestamp', inplace=True)
6665
# astype is necessary to deal with empty result
6766
df.index = pd.to_datetime(
68-
df.index.astype('int64') * 1000000,
67+
df.index.astype('int64'),
68+
unit='ms',
6969
utc=True,
7070
).tz_convert(NY)
7171
else:
@@ -80,22 +80,46 @@ def df(self):
8080

8181

8282
class Aggsv2(list):
83+
8384
def __init__(self, raw):
84-
results = raw['results'] if raw.get('results') else []
85-
super().__init__(
86-
[Agg(tick) for tick in results]
87-
)
85+
8886
self._raw = raw
87+
super().__init__([
88+
Agg(tick) for tick in self.rename_keys()
89+
])
90+
91+
def _raw_results(self):
92+
return self._raw.get('results', [])
93+
94+
def rename_keys(self):
95+
colmap = {
96+
"o": "open",
97+
"h": "high",
98+
"l": "low",
99+
"c": "close",
100+
"v": "volume",
101+
"t": "timestamp",
102+
}
103+
104+
return [
105+
{colmap.get(k, k): v for k, v in tick.items()}
106+
for tick in self._raw_results()
107+
]
89108

90109
@property
91110
def df(self):
92111
if not hasattr(self, '_df'):
93-
results = self._raw['results']
94-
columns = ('o', 'h', 'l', 'c', 'v', 't')
112+
columns = ('timestamp', 'open', 'high', 'low', 'close', 'volume')
95113
df = pd.DataFrame(
96-
results, columns=columns
114+
self.rename_keys(),
115+
columns=columns
97116
)
98-
df.set_index('t', inplace=True)
117+
df.set_index('timestamp', inplace=True)
118+
df.index = pd.to_datetime(
119+
df.index.astype('int64'),
120+
unit='ms', utc=True
121+
).tz_convert(NY)
122+
99123
self._df = df
100124

101125
return self._df

tests/test_polygon/test_rest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,9 @@ def test_polygon(reqmock):
248248
_from='2018-2-2',
249249
to='2018-2-5'
250250
)
251-
assert aggs[0].o == 173.15
251+
assert aggs[0].open == 173.15
252252
assert len(aggs) == 1
253-
assert aggs.df.iloc[0].h == 173.21
253+
assert aggs.df.iloc[0].high == 173.21
254254
with pytest.raises(AttributeError):
255255
aggs[0].foo
256256

0 commit comments

Comments
 (0)