引言
最近行情适合量价因子,故选择东吴证券技术分析拥抱选股系列文章来复现。目前完成内容:高频量价、上下影线、换手率分布均匀度、cpv因子
数据获取
因为东吴证券量价因子需要高频数据,也就是分钟级别,故选用akshare来提取。
ak.stock_zh_a_minute(symbol=ts_code.split('.')[1].lower()+ts_code.split('.')[0], period='1')
# 获取最近的2w条数据。实时
因为akshare的接口设计问题比较多,自行查阅akshare文档
日线数据选择tushare,但因为积分原因,使用xcec_tushare
df2 = pro.daily_basic_ts(ts_code=ts_code, start_date=start_date, end_date=end_date)
df1 = pro.daily(ts_code=ts_code, start_date=start_date, end_date=end_date)
# 获取 当日涨跌幅、流通市值、总市值、换手率、波动率
整体代码:
for ts_code in tqdm(zz500):#tqdm(zz500):
# zz500.set_description("Processing %s" % ts_code)
df2 = pro.daily_basic_ts(ts_code=ts_code, start_date=start_date, end_date=end_date)
df1 = pro.daily(ts_code=ts_code, start_date=start_date, end_date=end_date)
df_ = pd.DataFrame(pd.merge(df1,df2,on='trade_date',how='inner'))
df_ = df_.sort_values(by='trade_date')
stock_zh_a_minute_df = ak.stock_zh_a_minute(symbol=ts_code.split('.')[1].lower()+ts_code.split('.')[0],
period='1')
stock_zh_a_minute_df.index = pd.to_datetime(stock_zh_a_minute_df.day)
df_=mpd.DataFrame(df_)
def lamb(df):
time = df
return stock_zh_a_minute_df.loc[time[:4]+'-'+time[4:-2]+'-'+time[-2:]
,'volume'].astype('float').corr(
stock_zh_a_minute_df.loc[time[:4]+'-'+time[4:-2]+'-'+time[-2:],'close'].astype('float'))
df_['pv'] = df_['trade_date'].apply(lamb)