期货跨期价差程序化怎么做:天勤 SP 合约与腿比例核对

前言

国内期货除了单品种趋势,还有跨期价差交易:例如同时关注螺纹钢近月与远月,做多近月、做空远月,赚的是价差变化而不是单腿涨跌。程序化里这叫套利或价差策略。执行上有两条路:一是直接交易交易所挂牌的价差组合合约,代码里常带 SP、SPD 等前缀;二是近月、远月两个具体月份各下一个天勤 TargetPosTask,自己维持「多 1 手近月、空 1 手远月」的比例。

天勤量化(TqSdk)对组合合约与单腿合约一样提供 get_quoteget_kline_serialTargetPosTask。但组合 quote 的 last_price 通常表示价差报价,不是某一腿的单价;双腿成交也可能不同步,一腿成交、另一腿没成交时,名义上是价差策略,实际变成单腿裸露方向。下面从执行层说明要建几个 task、如何用 get_position 核对腿比例、部分成交后怎么办。组合代码应从快期客户端复制,勿手拼。

一、先弄清几个名词

名称 是什么 执行层注意什么
跨期价差 近月与远月价格之差及其交易 要维持两腿比例
SP/SPD 交易所定义的组合合约代码 一口价表示价差,规则因品种而异
组合中的一条具体月份合约 双腿策略有两个 symbol
symbol 合约代码,如 SHFE.rb2510 每腿独立
get_quote 行情快照 组合与单腿 last 含义不同
last_price 最新价 组合上多为价差,单腿上为合约价
TargetPosTask 调仓到目标净仓 每个具体 symbol 单例
set_target_volume(n) 目标净仓 n 手 近月 +1、远月 -1 要两个 task
get_position().pos 净持仓 两腿分别读,再比比例
部分成交 报 3 手只成 1 手 破坏 1:1 比例
reconcile 团队自写的修复逻辑 暂停加仓或平未成腿

二、两种执行架构怎么选

架构 task 数量 优点 风险
组合单 SP 1 个,symbol=组合代码 交易所定义价差一口价 流动性、规则特殊,需查品种说明
双腿 近月、远月各 1 个 task 比例灵活 成交不同步,要持续核对

同一具体合约只能一个 TargetPosTask 实例;双腿即两个 symbol、两个 task。

三、组合单怎么写(示意)

python 复制代码
from tqsdk.lib import TargetPosTask

sp_sym = "DCE.xxx"  # 从快期客户端复制真实组合代码,勿手拼
task_sp = TargetPosTask(api, sp_sym, price="ACTIVE")
task_sp.set_target_volume(1)  # 含义以交易所规则为准,可能是价差手数

日志里标明 price_type=spread,避免与近月 last_price 混淆。读 volume_multiple、涨跌停前查该品种组合合约说明。

四、双腿比例如何核对

目标结构示例:多近月 1 手、空远月 1 手。

python 复制代码
pos_near = api.get_position(near_sym).pos
pos_far = api.get_position(far_sym).pos

ok = (pos_near > 0 and pos_far < 0 and abs(pos_near) == abs(pos_far))
if not ok:
    log("leg_mismatch", near_sym, pos_near, far_sym, pos_far)
    reconcile_legs()

reconcile_legs 由团队定义:例如暂停远月再加、先平掉未成腿、或告警人工。应在 wait_update() 后检查,尤其在 is_changing(pos, "pos") 或 K 线 datetime 变时。

部分成交是常态:一腿先成,比例破坏,不能以「我以为两边都成了」继续跑,必须以 get_position 为准。

五、单腿剧烈波动时

某一腿急涨急跌,价差策略常需成对减仓,勿只平一腿留下另一腿方向裸露,否则从套利变成单边投机。

六、回测与实盘路径要一致

回测若用双腿两 symbol 成交,实盘勿突然改交易组合单;反之亦然。信号用主连、执行用具体月双腿时,执行层 symbol 要落到可交易月份。

总结

期货价差 SP 策略的执行难点,不在于会不会 set_target_volume,而在于 task 架构选定之后,能否持续用 get_position 核对两腿比例。天勤无论是组合一个 TargetPosTask 还是近远月两个,都要在 wait_update 后校验比例,部分成交后及时 reconcile,日志里区分组合价与单腿价。需要记住的是:价差不是两个无关的趋势单,而是比例结构,成交细节弄错就从套利变成赌单边。

FAQ

1)组合单能用 PASSIVE 排队吗?

可以,薄价差或涨跌停附近慎用,可能久不成交。

2)一腿拒单怎么办?

读该腿 order.last_msg,勿在另一腿继续加仓。

3)SP 和 SPD 区别?

以交易所挂牌说明为准,代码从客户端复制。

4)如何用 TqSim 试?

小仓位订阅真实组合或双腿代码,打印两腿 pos 观察比例。

风险提示

以上内容用于价差执行参考,不构成投资建议。

相关推荐
月疯1 小时前
torch:expand和repeate的区别
开发语言·python·深度学习
顾林海1 小时前
Agent入门阶段-编程基础-Python:Python 开发环境与运行方式
python·agent·ai编程
叫我:松哥1 小时前
基于深度卷积神经网络的水果图片分类算法设计与实现,有ResNet50的迁移学习模型,准确率达95%
人工智能·python·神经网络·机器学习·分类·cnn·迁移学习
Orchestrator_me2 小时前
Python pip install报SSL错误
python·ssl·pip
开源量化GO2 小时前
期货 K 线算信号 tick 级止损:天勤双序列 wait_update 触发规则
linux·运维·服务器·python
聆春烟雨簌簌2 小时前
LangChain4j使用文档
开发语言·python
belong_my_offer2 小时前
在Pycharm中安装conda的保姆级教学
python
CTA终结者2 小时前
期货量化合约代码写错:天勤 symbol 格式与 silent 订阅坑
python·区块链
c_lb72882 小时前
期货程序化撤单改价后仓位乱了:cancel_order 与 TargetPosTask 协作
python