研究期货价差,最新报价和同周期K线该怎么选?

计算两张期货合约的价差,相减并不难。容易被忽略的是:减号两边的价格,真的来自同一个时点吗?

如果一边刚更新,另一边仍是较早的成交价,算出的差额可能跟着变,但它未必代表两张合约在同一时刻能够成交的价差。盯盘和复盘又有不同需求,不能都靠两个"最新价"解决。

价差变大,也可能只有一边更新了

以同一期货品种的两个月份为例,价格单位相同,固定按A减B计算。下面是一个假设,时刻只用于说明读数关系:

观察 A最新价及其行情时刻 B最新价及其行情时刻 A减B
较早的一次 105,10:00:00 100,10:00:00 5
后来的一次 107,10:00:02 100,10:00:00 7

第二行的7,是新A价减去仍停留在原时刻的B价。它说明这两份已取得的读数相差7,却没有说明B在10:00:02的成交情况。

因此,看到价差从5变成7,可以把它当作需要关注的新观察;要解释两张合约当时的关系,还得把两边的时间一起看。仅凭这一行,更不能认定存在可以同时成交的套利机会。

看当前两份报价,要把各自时间留下

TqSdk的get_quote可以分别取得两张合约的行情引用。last_price是最新价,datetime是行情从交易所发出的北京时间。用它们整理价差观察时,合约代码、价格和各自时间应该一起保留,而不是只剩一个差额。

即使程序在同一轮里读了两个对象,两份行情也可能来自不同时间。wait_update()表示有业务数据更新,不等于所有关注合约都同时更新;它返回一次,也不保证两张合约的初始行情都已收到。

这类输入适合回答"我现在取得的两份报价分别是什么"。相关字段为空、价格无效,或其中一边的时间不适合当前观察时,就不宜继续把差额标成当时市场的同步价差。

时间相同也不是成交保障。最新价记录已经发生的价格,并不是承诺两条腿此刻都能按这个数成交。

比较一段时间,使用共同周期样本更合适

如果想研究过去一段时间里,每分钟的价差怎样变化,问题就不再是"刚刚读到什么",而是"每个共同周期里,两张合约分别是多少"。

TqSdk的get_kline_serial([A, B], duration_seconds=60)支持取得按共同时间组织的两合约分钟K线。用于这种研究时,应选已经完成且数据有效的周期,再比较两边对应价格。它的价值在于有共同的周期范围,不是把两次零散报价强行当成同时发生。

共同周期也不表示两张合约最后一笔成交恰好发生在同一秒。它适合研究周期之间的关系,不能替代逐笔时点判断。

还有一种情况需要留意:某个周期只要有一张合约缺数据,共同记录就可能跳过;前段可对齐样本不足时也可能出现NaN。缺口要留着解释,不能给缺的一边补零,或拿上一笔旧价装作这个周期的真实价格。

这类期货研究,我推荐用TqSdk区分两种输入

盯当前行情,适合保留两张Quote的价格和各自时间;研究固定周期,适合用多合约K线建立共同样本。两者不必争谁永远更好,关键是选到能回答自己问题的输入。

TqSdk值得推荐的地方,是同时提供了这两类入口:既能查看具体报价的时间,也能按共同周期组织多合约数据。用同一套接口开展期货价差研究,就不必让"最新"替代"同时",也不必让周期对齐承担它没有提供的成交保证。

相关推荐
nanawinona8 小时前
期货持仓没变,挂单为什么变了?用TqSdk分清仓位和委托
期货·tqsdk
开源量化GO7 天前
期货研究反复取数,什么时候值得用下载程序?
tqsdk
CTA终结者8 天前
期货价格又回到原位,刚才那段波动怎么复盘?
量化交易·期货·tqsdk
筱璦4 个月前
量化交易系统源码可售
区块链·交易·期货·期货交易
筱璦7 个月前
期货软件开发 - 策略编辑
前端·区块链·交易·期货
筱璦7 个月前
期货软件开发「启动加载页 / 初始化窗口」
前端·c#·策略模式·期货
筱璦8 个月前
期货软件开发 - 交易报表
前端·windows·microsoft·报表·期货
恋喵大鲤鱼9 个月前
期货入门介绍
期货
wengad9 个月前
纯粹和逐利的交融-期货的故事
期货·金融产品创新