掘金社区

网格交易策略(附策略源码与收益图)Pinned highlighted

掘金小Q 【 论坛管理员 】 发表在策略研究 2018-03-30 09:28:12

策略研究
4376
8
0

网格交易策略简介

什么是网格交易策略?

网格交易是利用市场震荡行情获利的一种主动交易策略,其本质是利用投资标的在一段震荡行情中价格在网格区间内的反复运动以进行加仓减仓的操作以达到投资收益最大化的目的。通俗点讲就是根据建立不同数量.不同大小的网格,在突破网格的时候建仓,回归网格的时候减仓,力求能够捕捉到价格的震荡变化趋势,达到盈利的目的。

网格的设置与建仓

网格交易策略至关重要的一点就是网格的数量.间隔还有每个网格仓位数量的设置,但这会因不同的行情和相应判断而有所不同,建仓的数量不应过多,以防到多次触发网格建仓导致资金不足的情况。

网格交易策略实现(基于掘金量化平台)

策略思想

  • 本策略首先计算了SHFE.rb1801过去300个1min收盘价的均值和标准差
  • 并用均值加减2和3个标准差得到网格的区间分界线,分别配以0.3和0.5的仓位权重
  • 随后根据上突破区间开多仓,下突破区间开空仓,反向突破反向操作和回归平仓来进行相应仓位的调整

网格设置

    context.band = np.mean(timeseries) + np.array([-40, -3, -2, 2, 3, 40]) * np.std(timeseries)
    context.weight = [0.5, 0.3, 0.0, 0.3, 0.5]
    grid = pd.cut([bar.close], context.band, labels=[0, 1, 2, 3, 4])[0]

获取网格区间分界线和设置相应的仓位权重并得到相应的区间

获取多仓仓位

position_long = context.account().position(symbol=context.symbol, side=PositionSide_Long)

获取上一交易日可调用get_previous_trading_date函数,返回值为字符串格式:
  • symbol需要设置标的代码。
  • side需要设置枚举常量,PositionSide_Long为多仓,PositionSide_Short为空仓。

下单到目标比例

order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,
                                 position_side=PositionSide_Long)

固定时间调仓可使用schedule函数进行定时任务配置:
  • symbol需要设置标的代码。
  • percent为比例,此处设置为相应网格对应的权重
  • order_type需要设置枚举常量,OrderType_Market为市价单,OrderType_Limit为限价单
  • side需要设置枚举常量,PositionSide_Long为多仓,PositionSide_Short为空仓。

策略回测分析

分析

0_1522392043791_result.png

我们选取了2017年7月至2017年10月作为回测周期,可以看出:
  • 胜率(具有盈利的平仓次数与总平仓次数之比)达到了87%。

  • 卡玛比率(年化收益率与历史最大回撤之比)是使用最大回撤率来衡量风险。采用最大回撤率来衡量风险,关注的是最极端的情况。卡玛比率越高表示策略承受每单位最大损失获得的报酬越高。在这里卡玛比率超过了9.1。

  • 夏普比率(年化收益率与波动率之比)超过1.29,也即承受1单位的风险,会有超过1.29个单位的收益回报

  • 策略收益曲线较为稳定,在无止损条件的情况下,最大回撤控制在承受范围,并成功跑赢沪深300指数。

【收益图及源码如下】

评论: 8

Looks like your connection to 掘金量化社区 - 量化交易者的策略交流学习社区 was lost, please wait while we try to reconnect.