有的朋友在做量化投资时,苦恼于数据源问题。
一般来说,质量较好的数据源:收费的有Wind,免费的有Tushare。前者数据大而全,后者的数据量在团队的努力中逐步完善。
下附Tushare链接:
https://tushare.pro/document/2?doc_id=96
本人为了获取Tushare数据并保存在本地,写了部分代码,共享给网友,避免重复劳动。
import os
import tushare as ts
import pandas as pd
import datetime,time
ts.set_token(’***’) #申请tushare账号之后,可获取token
pro = ts.pro_api()
class DataTushare():
def getCurrentTime(self):
return time.strftime('[%Y-%m-%d %H:%M:%S]', time.localtime(time.time()))
def AStockTradingDate(self, output_path):
df_trading_date = pro.trade_cal(exchange_id='', start_date='20021231', end_date='20251231', fields='cal_date', is_open='1')
df_trading_date.columns=['date']
df_trading_date['date'] = pd.to_datetime(df_trading_date['date'])
df_trading_date.to_pickle(output_path + '/wind_trading_date.pkl')
def AStockListDelist(self, output_path):
'''
股票上市、退市日期
tushare数据与wind的【暂停上市A股】数据在股票列表上不一致。wind的【暂停上市A股】包含了B股数据,扣除B股数据后一致。二者的list_date、delist_date是相互一致的。
delist_date:该日期当天退市,该日期之前尚在上市。
'''
print(self.getCurrentTime(),": AStockListDelist Download Start!")
df_basicL = pro.stock_basic(exchange_id='', list_status='L', fields='ts_code,symbol,name,list_date,delist_date, list_status') #暂停上市的股票在这里边
df_basicD = pro.stock_basic(exchange_id='', list_status='D', fields='ts_code,symbol,name,list_date,delist_date, list_status')
df_basicP = pro.stock_basic(exchange_id='', list_status='P', fields='ts_code,symbol,name,list_date,delist_date, list_status') ##暂停上市的股票无。
df_list_delist = pd.concat([df_basicL, df_basicD, df_basicP]).drop(['symbol'],axis