高收益策略编写心得及源码分享
由bqm33i8k创建,最终由bqm33i8k 被浏览 81 用户
从常规思路分析,高收益策略需要,抓近期热门策略,波动大,才有机会产生高收益,但一种逻辑很难在不同的市场行情下有效,所以,在选定近期热门票的基础上,需要在不同的市场行情下,选用不同的选股逻辑去应对。
步骤:
一、定义表达市场情绪方面的因子,如:
#当天涨停数比例
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年回测情况如下: