Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
AI4Finance-Foundation
GitHub Repository: AI4Finance-Foundation/FinRL
Path: blob/master/unit_tests/downloaders/test_alpaca_downloader.py
728 views
1
from __future__ import annotations
2
3
import pandas as pd
4
import pytest
5
6
from finrl.meta.data_processors.processor_alpaca import AlpacaProcessor
7
8
9
API_KEY = "???"
10
API_SECRET = "???"
11
API_BASE_URL = "https://paper-api.alpaca.markets"
12
data_url = "wss://data.alpaca.markets"
13
14
15
@pytest.fixture(scope="session")
16
def ticker_list():
17
return ["AAPL", "GOOG"]
18
19
20
def test_intraDayBar_download(ticker_list):
21
# Given
22
start_date = "2021-07-29"
23
end_date = "2021-07-30"
24
time_interval = "1H"
25
ticker_list = ["AAPL", "GOOG"]
26
27
# When
28
DP = AlpacaProcessor(
29
API_KEY=API_KEY, API_SECRET=API_SECRET, API_BASE_URL=API_BASE_URL
30
)
31
data = DP.download_data(
32
start_date=start_date,
33
end_date=end_date,
34
ticker_list=ticker_list,
35
time_interval=time_interval,
36
)
37
actual_head_1 = data[data["tic"] == "GOOG"].head(1).reset_index(drop=True)
38
# Then
39
expected_shape = (12, 9)
40
expected_head_1 = pd.DataFrame(
41
[
42
[
43
"2021-07-29 14:00:00",
44
2732.41,
45
2740.0,
46
2724.11,
47
2734.7525,
48
120896,
49
8650,
50
2731.626021,
51
"GOOG",
52
]
53
],
54
columns=[
55
"timestamp",
56
"open",
57
"high",
58
"low",
59
"close",
60
"volume",
61
"trade_count",
62
"vwap",
63
"tic",
64
],
65
)
66
67
assert data.shape == expected_shape
68
assert (actual_head_1 == expected_head_1).all(axis=None)
69
70
71
def test_dayBar_download(ticker_list):
72
# Given
73
start_date = "2021-07-29"
74
end_date = "2021-07-30"
75
time_interval = "1D"
76
ticker_list = ["AAPL", "GOOG"]
77
78
# When
79
DP = AlpacaProcessor(
80
API_KEY=API_KEY, API_SECRET=API_SECRET, API_BASE_URL=API_BASE_URL
81
)
82
data = DP.download_data(
83
start_date=start_date,
84
end_date=end_date,
85
ticker_list=ticker_list,
86
time_interval=time_interval,
87
)
88
89
# Then
90
expected = pd.DataFrame(
91
[
92
[
93
"2021-07-29 04:00:00",
94
144.66,
95
146.55,
96
144.58,
97
145.64,
98
56571097,
99
414821,
100
145.806207,
101
"AAPL",
102
],
103
[
104
"2021-07-30 04:00:00",
105
144.49,
106
146.33,
107
144.11,
108
145.86,
109
70291908,
110
464977,
111
145.396798,
112
"AAPL",
113
],
114
[
115
"2021-07-29 04:00:00",
116
2722.76,
117
2743.03,
118
2722.76,
119
2730.81,
120
962833,
121
56703,
122
2732.943535,
123
"GOOG",
124
],
125
[
126
"2021-07-30 04:00:00",
127
2710.22,
128
2715.4273,
129
2696.284,
130
2704.42,
131
1192648,
132
55739,
133
2704.685882,
134
"GOOG",
135
],
136
],
137
columns=[
138
"timestamp",
139
"open",
140
"high",
141
"low",
142
"close",
143
"volume",
144
"trade_count",
145
"vwap",
146
"tic",
147
],
148
)
149
150
assert (data == expected).all(axis=None)
151
152