新浪博客

什么是指数增强策略?

2018-03-15 16:20阅读:
01/指数增强是什么意思?
指数增强策略并不是被动的跟踪某个指数波动,而是采用量化增强模型,利用多因子alpha模型预测股票超额回报,同时力求进行有效的风险控制、降低交易成本、优化投资组合。指数增强策略不会对跟踪标的成分股进行完全复制,而是会对部分看好的股票增加权重,不看好的股票则减少权重,甚至完全去掉。通过对交易成本模型的不断监测,尽可能让交易成本降到最小。综合来看,就是既做到超额收益,又控制主动风险。
什么是指数增强策略?
02/策略实现(基于掘金量化平台)
策略思想
  • 本策略以0.8为初始权重跟踪指数标的沪深300中权重大于0.35%的成份股。
  • 个股所占的百分比为:(0.8 X 成份股权重) /选择的成分股权重总和 X 100%。
  • 然后根据个股是否连续上涨5天;连续下跌5天,来判定个股是否为强势股/弱势股,并对其把权重由0.8调至1.0或0.6
03/策略主要步骤实现
获取沪深300成分股及信息
stock300 = get_history_constituents(index='SHSE.000300', start_date=last_day,end_date=last_day)[0]['constituents']
获取
指数成分股可调用函数get_history_constituents
或者get_constituents,返回值类型为list[dict],字典的键为股票代码,值为所占权重。这里调用get_history_constituents是因为再回测时需要获取上一交易日的成分股,而get_constituents只能获取最新的成分股:
  • index
需要设置获取指数的代码。
  • start_date
end_date需设置获取成分股的开始与结束日期。
订阅数据
subscribe(symbols=stock300_symbol, frequency='1d', count=5, wait_group=True)
订阅数据需要在定义init
函数里面设置,并调用subscribe函数,这里注意,我们需要通过计算前三十根bars来作为开平仓的标准,并在当前bar上做出开平仓操作,所以需要获取31根bar:
  • symbols
需要设置订阅的标的代码。
  • frequency
需设置订阅数据的周期级别,这里设置1d 表示以一天为周期。
  • count
需要设置获取的bar的数量
数据获取
recent_data = context.data(symbol=symbol, frequency='1d', count=5, fields='close')['close'].tolist()
订阅数据之后,需要获取已经订阅的数据来进行操作,这时需调用context.data
函数:
  • symbols
需要设置订阅的标的代码。
  • frequency
需设置订阅数据的周期级别,这里设置1d表示以一天为周期。
  • count
需要设置获取的bar的数量
  • fields
需要设置返回值的种类
获取持仓信息
position = context.account().position(symbol=symbol, side=PositionSide_Long)
在判断平仓或者加仓条件时,需要获取持仓信息,这就需要调用context.account().position
函数:
  • symbols
需要设置订阅的标的代码。
  • side
需要设置持仓方向,有PositionSide_LongPositionSide_Short两个选择。
04/回测报告
什么是指数增强策略?
分析
我们选取了2017年10月至2017年12月作为回测周期,可以看出:
  • 胜率(具有盈利的平仓次数与总平仓次数之比)达到了66%。
  • 卡玛比率(年化收益率与历史最大回撤之比)是使用最大回撤率来衡量风险。采用最大回撤率来衡量风险,关注的是最极端的情况。卡玛比率越高表示策略承受每单位最大损失获得的报酬越高。在这里卡玛比率达到了6.7。
  • 夏普比率(年化收益率减无风险收益率的差收益波动率之比)达到2.77。
  • 策略收益曲线与沪深三百指数具有很大相关性,指数增强策略的关键点在于选出成分股中优质的股票,以达到增强指数收益的目的。
什么是指数增强策略?

我的更多文章

下载客户端阅读体验更佳

APP专享