期货主连研究具体月实盘: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 整理,不构成投资建议。

相关推荐
apocelipes26 分钟前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户8356290780512 小时前
使用 Python 在 PDF 中创建与管理书签
后端·python
MeixianAgent7 小时前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
咕白m62510 小时前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python
SelectDB1 天前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
荣码1 天前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
金銀銅鐵2 天前
[Python] 基于欧几里得算法,实现分数约分计算器
python·数学
Lyn_Li2 天前
Kaggle Top 5 | 198只股票、200条数据的金融预测——BattleFin高分方案从零复现
python·kaggle·比赛复盘·金融预测
小九九的爸爸2 天前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
阿耶同学2 天前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构
python·程序员