股指期货隔夜收益增强策略

参考海通证券的研究报告,其中指出股指期货具有显著的正向隔夜收益,且A股期现货市场存在显著的日内效应,在此基础上通过买卖单不平衡度因子构建了收益增强策略。

本策略考虑一次性获取全部连续合约的主力合约,通过减少调用接口获取数据的次数以达到提高回测效率的目的。

股指期货隔夜收益影响因子:买卖单不平衡度因子

1.价差

  • 当月合约与下季合约的价差;
  • 当价差小于80时做多,否则做空。

 ​

2.买卖单不平衡度

  • 定义:

0_1636619740558_74e51bb1-a8db-4c45-9838-300c5e4d556a-image.png

  • 其中 B 和 S 分别表示收盘前 N 分钟区间内买一和卖一委托量的平均值;
  • 相比于价格涨跌,买卖单的不平衡度更能够反映投资者的真实交易意愿;
  • 当委买量高于委卖量时,预期未来价格上涨,反之则预期未来价格下跌。

 ​

3.选取尾盘半小时买卖单不平衡度预测效果较好的因子构建隔夜收益策略。

  • 当价差小于80,且收盘前半小时委买总量大于委卖总量时做多,持有至次日上午10点平仓;

  • 当价差大于80,且收盘前半小时委买总量小于委卖总量时做空,持有至次日上午10点平仓。

  • 在每天14:59:00时,获取当月合约与下季合约的价格的差;

  • 计算14:30:00 以来的买一委托总量和卖一委托总量;

  • 以14:59:00 tick数据 的卖一价作为买入开仓价;

  • 以次日上午10:00:00 tick数据的买一价作为卖出平仓价。

 ​

本策略运行所基于的环境:python3.8 掘金终端IDE

 ​

一、策略思路

1、每天10:00:00 定时获取 tick 数据,根据买一价作为卖出平仓价下单平仓;

2、每天14:59:00 定时获取 tick 数据,根据当月合约与下季合约的价格计算价差;

3、获取前30分钟的买一委托总量和卖一委托总量;

4、当价差小于80,且收盘前半小时委买总量大于委卖总量时,以14:59:00 tick数据的卖一价作为买入开仓价做多,否则则做空;持有至次日上午10点平仓。

 ​

二、策略逻辑

· 第一步:设置参数、设置两个定时任务

· 第二步:每天定时执行两个任务,按策略思路进行计算

· 第三步:对满足策略思路的股指期货做多或做空,持有至次日上午10点平仓

· 回测期:2021-07-22 08:00:00 到 2021-10-21 16:00:00

> 注意:tick数据仅支持回测最近的三个月,回测时需将时间改为最近三个月,否则会报错。

· 回测初始资金:50万

· 手续费:0.0001

· 滑点:0.0001

 ​

三、回测结果

回测期策略累计收益率为11.41%,年化收益率为45.26%,最大回撤为11.17%,夏普比率为1.20,胜率为50.00%。

 

四、策略代码

# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *
import pandas as pd
import datetime

'''
本策略采用定时任务结构(每天10:00:00、14:59:00定时执行策略algo_sell、algo_buy),建立隔夜收益增强模型
当价差小于80,且收盘前半小时委买总量大于委卖总量时做多,持有至次日上午10点平仓;
当价差大于80,且收盘前半小时委买总量小于委卖总量时做空,持有至次日上午10点平仓。
回测数据:沪深300股指期货IF的 tick数据
回测时间:2019-01-01 08:00:00 到 2021-09-10 16:00:00
'''

# 策略中必须有init方法
def init(context):
    # 每天10:00:00 定时执行algo_sell
    schedule(schedule_func=algo_sell, date_rule='1d', time_rule='10:00:00')
    # 每天14:59:00 定时执行algo_buy
    schedule(schedule_func=algo_buy, date_rule='1d', time_rule='14:59:00')  
    # 设置当月交易标的
    context.symbol_00 = None

    # 在init中一次性拿到所有需要的当月合约信息、下季合约信息
    contracts_00 = get_continuous_contracts(csymbol='CFFEX.IF00', start_date=context.backtest_start_time,
                                            end_date=context.backtest_end_time)
    contracts_02 = get_continuous_contracts(csymbol='CFFEX.IF02', start_date=context.backtest_start_time,
                                            end_date=context.backtest_end_time)
    # 将信息按symbol,date作为key存入字典
    context.cons00_dict = {i['trade_date'].date(): i['symbol'] for i in contracts_00}
    context.cons02_dict = {i['trade_date'].date(): i['symbol'] for i in contracts_02}

获取完整代码,请前往:

股指期货隔夜收益增强策略 - 掘金量化社区 - 量化交易者的交流社区掘金量化社区是量化投资者策略研讨、答疑解惑、资源共享的互动交流论坛。https://bbs.myquant.cn/topic/2550

声明:本内容由掘金量化团队原创,仅供学习、交流、演示之用,不构成任何投资建议!如需转载请联系掘金小Q(VX:myquant2018)授权,否则作侵权处理!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值