期货主连研究具体月实盘:KQ 连续与标的月份偏差怎么记

前言

国内期货量化研究阶段,常用天勤 TqSdk 订主连 K 线算指标:例如 get_kline_serial("KQ.m@SHFE.rb", 300) 拉螺纹钢 5 分钟线,双均线金叉死叉产出交易信号,回测曲线连续、换月跳空被拼接,看起来顺滑。但实盘程序化不能对主连直接下单------交易所只认具体交割月份,如 SHFE.rb2510;程序必须用 TargetPosTask(api, "SHFE.rb2510") 在真实合约上报单,换月时还要从旧月移到新月。

若日志只记「主连均线金叉、信号做多」,不记当时执行的是哪个月份、换月前后映射关系,就会出现:回测和模拟盘很好看,实盘对不上------价差来自换月跳空、远月流动性、信号价与成交价不是同一张合约。天勤同时支持主连序列与具体月份 quote。下面说明信号合约与交易合约如何分工、换月怎么留痕。

一、两类 symbol 分工

类型 示例 用途
主连/指数 KQ.m@SHFE.rb 信号、指标、研究
具体月份 SHFE.rb2510 TargetPosTask、成交

get_kline_serial("KQ.m@SHFE.rb", ...)get_kline_serial("SHFE.rb2510", ...)datetime 序列不同,不能混为一谈。

二、映射到交易合约

常用做法:

  1. 读具体月 quote.open_interest 最大者作为主力。
  2. quote.underlying_symbol(若订阅主连)查当前标的。
  3. 换月窗口人工配置 + expire_rest_days 禁开。
python 复制代码
trade_symbol = "SHFE.rb2510"
signal_klines = api.get_kline_serial("KQ.m@SHFE.rb", 300, data_length=500)
task = TargetPosTask(api, trade_symbol)

信号来自 signal_klines.iloc[-2],下单只对 trade_symbol

三、换月时程序动作

换月不是改个字符串了事:

  1. 旧月 set_target_volume(0),等待 pos 归零。
  2. 新建新月份 TargetPosTask(或同 task 换 symbol 需重启进程,因单例 key 含 symbol)。
  3. 日志记 roll_eventfromtopos_oldpos_new

主连 K 线在换月日可能有跳空,信号层应允许重置指标或忽略换月 bar(与长假跳空处理类似)。

四、偏差记账

实盘对比回测时,每条成交日志加:

  • signal_symbol
  • trade_symbol
  • roll_version
  • signal_price(主连 bar 收盘价)
  • trade_priceget_trade

统计主连信号价与具体月成交价的系统性偏差,作为实盘预期滑点的一部分。

五、回测环境

TqBacktest 若用主连回测,上线前必须在具体月份 TqSim 再跑;或回测直接用具体月序列,接受数据拼接换月跳空。

六、换月日前后指标失真

主连在换月日价格跳空,均线、突破线会被拉歪。常见处理:换月后一根 bar 内暂停信号;或用具体月序列算指标、仅把主连当参考。天勤不会自动替你消除跳空,程序里要有 roll_pause 标志位。

七、持仓量选主力脚本草图

python 复制代码
candidates = api.query_quotes(ins_class="FUTURE", product_id="rb", expired=False)
api.wait_update()
best = None
best_oi = 0
for s in candidates:
    q = api.get_quote(s)
    api.wait_update()
    if q.open_interest > best_oi:
        best_oi = q.open_interest
        best = s

盘前跑一遍写进配置 trade_symbol,盘中不变,减少抖动换月。

八、绩效归因表

月度复盘建议分列:主连信号收益(理论)、执行合约收益(实际)、换月滑点、月份流动性差异。四列能解释大部分「回测行实盘不行」的落差,而不必怀疑天勤算错 K 线。

总结

主连研究、具体月交易是国内期货量化的常态分工。天勤允许同时订 KQ.m@SHFE.rbxxxx,程序里要把信号链与执行链拆开,换月时平旧开新并留痕。日志同时记录 signal_symbol 与 trade_symbol,才能解释回测与实盘收益差里有多少来自换月与执行合约偏差,而不是误判策略失效。

FAQ

1)能否主连也下单?

主连通常不可直接交易,会拒单。

2)指数 KQ.i@ 呢?

仅研究,执行仍用期货月。

3)underlying_symbol 在哪读?

具体月 quote 上,换月后变化。

4)多品种映射表放哪?

配置文件,盘前脚本刷新主力。


本文基于天勤 TqSdk 公开 API 整理,不构成投资建议。

相关推荐
绘梨衣5471 小时前
采集基类设计遇到的描述符bug
爬虫·python·bug
TechWayfarer1 小时前
IP精准定位服务在保险行业的接入实践:区域需求洞察与精准服务
数据库·python·tcp/ip·flask
Li#2 小时前
AI编写操作使用说明书需要用到的工具和能力
python·ai编程·ai写作
红宝村村长2 小时前
torch.autograd.Function.apply()
开发语言·python
花间相见2 小时前
【LeetCode01】—— 无重复字符的最长子串:滑动窗口经典题详解
python·算法·leetcode
何以解忧,唯有..2 小时前
Python 中的继承机制:从基础到高级用法详解
java·开发语言·python
try2find2 小时前
agent环境安装spacy
python·智能体
ellenwan20262 小时前
期货程序化开平标志错了总拒单:天勤 last_msg 排查思路
python
装不满的克莱因瓶3 小时前
自动微分的原理:计算图与前向传播
人工智能·pytorch·python·数学·ai·微积分·计算图