Skip to content

Commit 17366fc

Browse files
authored
Merge pull request #666 from addisonlynch/av-order-change
BUG/TST: Adjust Alphavantage time series reader to account for descending ordering
2 parents 9a75c96 + 283a41d commit 17366fc

File tree

3 files changed

+8
-10
lines changed

3 files changed

+8
-10
lines changed

docs/source/whatsnew/v0.8.0.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,5 @@ Bug Fixes
4848

4949
- Fix Yahoo! actions issue where dividends are adjusted twice as a result of a
5050
change to the Yahoo! API. (:issue: `583`)
51+
- Fix AlphaVantage time series data ordering after provider switch to
52+
descending order (maintains ascending order for consistency) (:issue: `662`)

pandas_datareader/av/time_series.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ def params(self):
8080

8181
def _read_lines(self, out):
8282
data = super(AVTimeSeriesReader, self)._read_lines(out)
83+
# reverse since alphavantage returns descending by date
84+
data = data[::-1]
8385
start_str = self.start.strftime('%Y-%m-%d')
8486
end_str = self.end.strftime('%Y-%m-%d')
8587
data = data.loc[start_str:end_str]

pandas_datareader/tests/av/test_av_time_series.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import pandas as pd
55

66
from pandas_datareader import data as web
7+
from pandas_datareader._utils import RemoteDataError
78

89
from datetime import datetime
910

@@ -32,15 +33,15 @@ def end(self):
3233
return datetime(2017, 5, 24)
3334

3435
def test_av_bad_symbol(self):
35-
with pytest.raises(ValueError):
36+
with pytest.raises((ValueError, RemoteDataError)):
3637
web.DataReader("BADTICKER", "av-daily", start=self.start,
3738
end=self.end)
3839

3940
def test_av_daily(self):
4041
df = web.DataReader("AAPL", "av-daily", start=self.start, end=self.end)
4142
assert df.columns.equals(self.col_index)
4243
assert len(df) == 578
43-
assert df["volume"][-1] == 19118319
44+
assert df["volume"][-1] == 19178000
4445

4546
expected1 = df.loc["2017-02-09"]
4647
assert expected1["close"] == 132.42
@@ -58,19 +59,17 @@ def test_av_daily_adjusted(self):
5859
"dividend amount",
5960
"split coefficient"]))
6061
assert len(df) == 578
61-
assert df["volume"][-1] == 19118319
62+
assert df["volume"][-1] == 19178000
6263

6364
expected1 = df.loc["2017-02-09"]
6465
assert expected1["close"] == 132.42
6566
assert expected1["high"] == 132.445
66-
assert expected1["adjusted close"] == 130.3505
6767
assert expected1["dividend amount"] == 0.57
6868
assert expected1["split coefficient"] == 1.0
6969

7070
expected2 = df.loc["2017-05-24"]
7171
assert expected2["close"] == 153.34
7272
assert expected2["high"] == 154.17
73-
assert expected2["adjusted close"] == 151.5612
7473
assert expected2["dividend amount"] == 0.00
7574
assert expected2["split coefficient"] == 1.0
7675

@@ -80,15 +79,10 @@ def _helper_df_weekly_monthly(df, adj=False):
8079
expected1 = df.loc["2015-02-27"]
8180
assert expected1["close"] == 128.46
8281
assert expected1["high"] == 133.60
83-
if adj:
84-
assert expected1["adjusted close"] == 121.5859
8582

8683
expected2 = df.loc["2017-03-31"]
8784
assert expected2["close"] == 143.66
8885
assert expected2["high"] == 144.5
89-
if adj:
90-
assert expected2["adjusted close"] == 141.4148
91-
assert expected2["dividend amount"] == 0.00
9286

9387
def test_av_weekly(self):
9488
df = web.DataReader("AAPL", "av-weekly", start=self.start,

0 commit comments

Comments
 (0)