策略分享

龙头战法实盘+AI-量化大赛NO.3-中证150增强[策略分享] (副本) (副本) (副本)

由ilangge创建,最终由qxiao 被浏览 272 用户

更新

本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明

新版量化开发IDE(AIStudio):

https://bigquant.com/wiki/doc/aistudio-aiide-NzAjgKapzW

新版模版策略:

https://bigquant.com/wiki/doc/demos-ecdRvuM1TU

新版数据平台:

https://bigquant.com/data/home

https://bigquant.com/wiki/doc/dai-PLSbc1SbZX

新版表达式算子:

https://bigquant.com/wiki/doc/dai-sql-Rceb2JQBdS

新版因子平台:

https://bigquant.com/wiki/doc/bigalpha-EOVmVtJMS5

\

前言

感谢BQ-小Q送的礼物,礼物已经收到拉,一如既往的黑盒高科技风。高端大气上档次。

  • {w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

自我介绍

我是18年底加入的BQ,距今也快3年了,目前在一家私募中研究高频开发。在BQ之前也接触过其他的线上研究平台,例如米筐,JQ和vnpy框架辅助研究。 BQ作为国内为数不多的量化平台,咱们bigquant这边做的无疑是非常成功的,团队也非常有实力,从策略研究界面上也能感受到一股微软学院风。 为了加深了解行业发展的一些变化,基本上每年的BQ培训交流我都有会去参加,也感谢官方给我这次机会给大家分享 本次培训的一些成果 -AI-中证150综合增强策略。

策略思路

我们平常寻找投资模式的时候一般分为两种:左侧的抄底低估值品种和右侧的信号交易。

左侧的抄底低估值品种

预判未来会上升,买的是预期。比如很多做价值投资的理念都来源于此,找一家好公司,在它的价值被低估的时候买入。

{w:60}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

==优点:盈亏比高,交易成本低。==

==缺点:时间成本高,选股难度大。==

右侧的信号交易

在符合交易预期的信号出现的时候买入。比如很多做趋势投资,或者超短套利的策略都是围绕信号交易。

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}==优点:可以通过交易次数积累优势,交易模式灵活==

==缺点:交易成本高,遇到风格反转容易损失多头利润==

中证150增强的策略

中证150增强的策略,结合了两者的优缺点。 尝试在策略中挖掘那些未来有投资价值的标的,捕捉趋势并买入, 赚取股价在趋势中上涨的收益。

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

价值投资最难的地方在于选股,需要寻找到一个合适的投资标的往往需要投入大量的投研时间。而短线信号择时难的地方在于信号的精准度,要提炼出更高胜率的交易信号,也得对股票的股性还有市场的风格有较深的研究。

我们通过算法来大数据挖掘,省去全市场选股的步骤,直接将好的股票样本交给AI算法做打分排序,让它学会寻找那种绩优股。同时也通过一些交易信号择时,增加交易的机会。

主要是围绕一些值得做中长线的,可以做价值投资的股票标的,我们通过AI算法的预测值,进行排序,筛选择时信号,选出那些未来5日内最有可能 形成主升浪起爆点的强势股票。 在中短期内低买高卖,拿到一个风格成长的收益,做跟踪趋势投资的模式。

选股思路

股票池范围和样本提前做了划分,手动导入了中证150的样本池。 选择的股票以赛道抱团股为主,也就是所谓的核心资产, 数量在100-300之间。

股票的市值都在100亿以上,安全性会有保障,踩雷的可能性会稍微低一点; 同时因为本身基本面不错,每天的成交量也不少,流动性充足,股性也比较活跃, 行情来临时更容易顺风而起,被称为卡位等风。

总体来说,我的策略缩小了算法的选股范围,可以在一定程度上起到降低市场噪音的作用,也能让模型选股的精确率提高,在5000选一和300选一之间,明显后者的难度会更小。

训练集的股票池{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

测试集的股票集池{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

择时思路

在策略中加入了简单的择时:

  1. macd的红柱量能线要大于绿色量能线
  2. 收盘价最低回踩25日内均线不破,可以防止趋势走坏
  3. 要求macd的黄线慢线要大于0.2
cond1=sum(ta_macd_dif(close_0,2,4,4),5)>sum(ta_macd_dea(close_0,2,4,4),5)
cond2=close_0>mean(close_0, 25)
cond3=sum(ta_macd_dea(close_0,2,4,4),5)>0.2

合盛硅业{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

因子选择

主要选择三个因子,主要是量价因子和资金流因子:

  1. avg_turn_15/turn_0
  2. mf_net_amount_xl_0
  3. alpha4=close_0avg_turn_0+close_1avg_turn_1+close_2*avg_turn_2

==选择换手率因子,是为了找流动性较好的股票,股性较为活跃。 选取资金流超大单因子,是为了增加短期买点的爆发力。 因为超大单因子的ic均值很高,而且存在一定的方向性,在牛市中有较为稳健的风格收益。==

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100} {w:60}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}自动标注表达式

  1. relative_ret=stockret-bmret
  2. relative_ret_5=sum(relative_ret,5) #5日的累计大盘相对收益率
  3. relative_ret_30=sum(relative_ret,30) #30日的累计大盘相对收益率

过滤表达式:

(relative_ret_5>0)&(relative_ret_30>0)&(rank(relative_ret_30)>0.8) #找到5日内相对收益率>0且 30日内的相对收益率大于80%分位数的股票。

也就是所谓的强趋势股,能在震荡中上升,或者是那种非常抗跌的股票。

大盘风控

采用了 沪深300的macd均线死叉作为风控触发条件

bm_0=where(ta_macd_dif(close,2,4,4)-ta_macd_dea(close,2,4,4)<0,1,0)

止盈止损

1.赚60%且为可交易状态就止盈

if stock_market_price/stock_cost-1>=0.6 and data.can_trade(context.symbol(instrument)):
context.order_target_percent(context.symbol(instrument),0)
cash_for_sell -= positions[instrument]
current_stopwin_stock.append(instrument)

2.亏-5%并且为可交易状态就止损

if stock_market_price/stock_cost-1 <= -0.05 and data.can_trade(context.symbol(instrument)):context.order_target_percent(context.symbol(instrument),0)
cash_for_sell -= positions[instrument]
current_stoploss_stock.append(instrument)

持仓票数

总共持仓5只股票,轮仓天数为5天, 最大单票资金比例不超过10%。

stock_count = 5
context.max_cash_per_instrument =0.1
context.options['hold_days'] = 5

回测结果

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

策略代码

https://bigquant.com/experimentshare/c52716e5a9694d1aa1e917edba7838e5

\

{link}