Spaces:
Runtime error
Runtime error
import copy | |
import datetime | |
import os | |
from typing import List | |
import jqdatasdk as jq | |
import numpy as np | |
from meta.data_processors._base import _Base | |
class Joinquant(_Base): | |
def __init__( | |
self, | |
data_source: str, | |
start_date: str, | |
end_date: str, | |
time_interval: str, | |
**kwargs, | |
): | |
super().__init__(data_source, start_date, end_date, time_interval, **kwargs) | |
if "username" in kwargs.keys() and "password" in kwargs.keys(): | |
jq.auth(kwargs["username"], kwargs["password"]) | |
def download_data( | |
self, ticker_list: List[str], save_path: str = "./data/dataset.csv" | |
): | |
# joinquant supports: '1m', '5m', '15m', '30m', '60m', '120m', '1d', '1w', '1M'。'1w' denotes one week,‘1M' denotes one month。 | |
count = len(self.get_trading_days(self.start_date, self.end_date)) | |
df = jq.get_bars( | |
security=ticker_list, | |
count=count, | |
unit=self.time_interval, | |
fields=["date", "open", "high", "low", "close", "volume"], | |
end_dt=self.end_date, | |
) | |
df = df.reset_index().rename(columns={"level_0": "tic"}) | |
self.dataframe = df | |
self.save_data(save_path) | |
print( | |
f"Download complete! Dataset saved to {save_path}. \nShape of DataFrame: {self.dataframe.shape}" | |
) | |
def preprocess(df, stock_list): | |
n = len(stock_list) | |
N = df.shape[0] | |
assert N % n == 0 | |
d = int(N / n) | |
stock1_ary = df.iloc[0:d, 1:].values | |
temp_ary = stock1_ary | |
for j in range(1, n): | |
stocki_ary = df.iloc[j * d : (j + 1) * d, 1:].values | |
temp_ary = np.hstack((temp_ary, stocki_ary)) | |
return temp_ary | |
# start_day: str | |
# end_day: str | |
# output: list of str_of_trade_day, e.g., ['2021-09-01', '2021-09-02'] | |
def get_trading_days(self, start_day: str, end_day: str) -> List[str]: | |
dates = jq.get_trade_days(start_day, end_day) | |
str_dates = [] | |
for d in dates: | |
tmp = datetime.date.strftime(d, "%Y-%m-%d") | |
str_dates.append(tmp) | |
# str_dates = [date2str(dt) for dt in dates] | |
return str_dates | |