近期热点

高收益策略编写心得及源码分享

由bqm33i8k创建,最终由bqm33i8k 被浏览 58 用户

从常规思路分析,高收益策略需要,抓近期热门策略,波动大,才有机会产生高收益,但一种逻辑很难在不同的市场行情下有效,所以,在选定近期热门票的基础上,需要在不同的市场行情下,选用不同的选股逻辑去应对。


步骤:

一、定义表达市场情绪方面的因子,如:

#当天涨停数比例

group_sum(date,where(price_limit_status_03,1,0))/mean(group_sum(date,where(price_limit_status_03,1,0)),180)

#当天上涨家数/下跌家数

group_sum(date,where(return_0>1,1,0))/group_sum(date,where(return_0<1,1,0))

#涨停数上涨比例

group_sum(date,where(price_limit_status_03,1,0))/shift(group_sum(date,where(price_limit_status_03,1,0)),1)

#平均收益

group_mean(date,return_0-1)

……


二、定义行业板块因子,如:

#板块当天收益排名

rank(group_mean(industry_sw_level2_0, return_0-1))

#板块收益上涨比例

group_mean(industry_sw_level2_0,abs(return_0-1))/shift(ts_max(group_mean(industry_sw_level2_0,abs(return_0-1)),60),1)

#板块近3天收益排名

rank(group_mean(industry_sw_level2_0, close_0/open_2-1))

……


三、定义股票特征因子,如:

#当天收益排名

rank_return_0

#当天收益相对高度

abs(return_0-1)/(ts_max(close_1,30)/ts_min(close_1,30)-1)

#当天收益在板块中的排名

group_rank(industry_sw_level2_0,return_0)

#近10日相对位置排名

rank((ts_max(close_0,10)-close_0)/(close_0-ts_min(close_0,10)+0.0001))

#成交量涨幅

volume_0/volume_1

#成交量比例

volume_0/mean(volume_0,60)

#成交量相对高度

volume_0/ts_max(volume_0,60)

#收盘价除5日移动平均线

close_0/ta_ema_5_0

……


四、对数据进行标准化处理

因子数据取出后,数据无规律,数据分析的难度也会增大,如:当天收益因子,1.1%,1.2%都代表是小涨,不同的值就会增加数据分析的难度,可以对数据进行分层,如:按日期进行分组,取出当日所有股票的当天收益,把收益从大到小分成10份,每份数量相同,给当天收益因子的值转换成1,2,3….10的数字


操作方法:使用自定义python模块,对因子数据进行分层标准化处理

df= df.groupby(['date']).apply(cal_fc_data)  //按日分组,调用数据分层的处理函数

定义数据分层处理函数

#按日进行数据分层

def cal_fc_data(df):

df['con1’] = pd.qcut(df['con1’],q=10,labels=False,duplicates="drop")

df['con2’] = pd.qcut(df['con2’],q=10,labels=False,duplicates="drop")

…….



五、编写应对不同行情的选股逻辑(不断积累)

如:大盘大涨时,领涨板块选股逻辑;大盘大涨时,滞后上涨的板块的补涨选股逻辑;板块大涨,板块内个股领涨选股逻辑;板块内个股补涨逻辑;…….


六、根据已积累的选股逻辑,筛选股票,根据选股逻辑的历史效果进行排序


七、回测模拟模块,进行买入卖出及仓位控制


根据此方法编写出来的策略:

天梯链接:https://bigquant.com/live/shared/strategy?id=180608

\n本策略近3年回测情况如下:

评论
  • 回测时有没有把买入当天涨停的股票去掉,有没有把数据按时间维度分割成训练和测试集,而且是时间更大的当测试集