22、基差回归中的事件驱动因素:交割日效应、移仓换月、政策冲击
做基差交易时间长了,你会发现一个规律——基差不是随机游走的。它背后有明确的“推手”。
这些推手,我习惯叫它们事件驱动因素。说白了,就是某些特定时间点或事件发生时,基差会像被按了开关一样,出现规律性的变化。
今天咱们就聊三个最核心的事件驱动因素:交割日效应、移仓换月、政策冲击。这三个东西,我几乎每次做基差回归模型时都要考虑进去,不然模型很容易“翻车”。
一、交割日效应:基差的“强制收敛”
先问一个问题:为什么基差最终一定会回归?
答案很简单——交割制度。期货合约到期时,必须进行实物交割或现金结算。这意味着,临近交割日,期货价格和现货价格会被强制拉拢。
我刚开始做基差交易时,犯过一个低级错误。当时我持有一个螺纹钢的基差多头头寸,基差已经扩大到-80元,按历史统计应该回归。结果临近交割日,基差不但没回归,反而继续扩大。后来一查,原来是该合约流动性枯竭了,没人愿意接货。
嗯,这里要注意:交割日效应只在流动性正常的合约中有效。
我一般会在模型中加入一个时间衰减因子,用来量化交割日效应:
# 交割日效应权重计算
def delivery_effect_weight(days_to_delivery):
"""
days_to_delivery: 距离交割日的交易日数
返回:0-1之间的权重值
"""
if days_to_delivery <= 5:
return 1.0 # 最后一周,强制收敛
elif days_to_delivery <= 15:
return 0.8 - (days_to_delivery - 5) * 0.03
else:
return 0.2 # 远月合约,效应很弱
这个函数我用了好几年,效果还不错。但要注意,不同品种的“敏感区间”不一样。比如股指期货,最后3天效应最强;而农产品期货,可能提前20天就开始反应了。
二、移仓换月:基差的“结构性跳变”
移仓换月,说白了就是主力资金从一个合约转移到另一个合约的过程。这个过程会产生一个很讨厌的现象——基差的非连续性跳变。
举个例子:
假设当前是6月,主力合约是09合约(9月到期)。基差是-50点。随着资金开始移仓到01合约(次年1月到期),09合约的基差可能突然变成-30点,而01合约的基差是-70点。
你看,同一个品种,不同合约的基差完全不一样。如果你用连续合约数据做回归,就会在移仓换月那天看到一个“断崖”或“跳空”。
我的处理方法是这样的:
- 识别移仓窗口:一般从持仓量开始下降算起,到新合约持仓量超过旧合约为止。这个窗口期通常是5-10个交易日。
- 计算展期价差:旧合约和新合约之间的价差,这个价差就是基差跳变的“元凶”。
- 做展期调整:在回归模型中,把展期价差作为一个独立的解释变量加入。
代码实现起来也不复杂:
# 展期调整后的基差计算
def adjusted_basis(old_contract_basis, new_contract_basis, roll_progress):
"""
roll_progress: 移仓进度,0-1之间
"""
roll_spread = new_contract_basis - old_contract_basis
# 展期调整 = 旧合约基差 + 展期价差 * 移仓进度
adjusted = old_contract_basis + roll_spread * roll_progress
return adjusted
你想想看,如果不做这个调整,模型会把展期价差误判为基差的异常波动,然后给出错误的交易信号。我见过不少新手在这里栽跟头。
三、政策冲击:基差的“黑天鹅”
政策冲击,是所有事件驱动因素里最难处理的。因为它不可预测,而且影响巨大。
我记得2021年国家发改委对煤炭价格进行干预时,动力煤期货的基差在一天之内从+100元变成了-200元。如果你当时持有基差多头头寸,那真是欲哭无泪。
政策冲击对基差的影响路径,我总结为三步:
- 预期阶段:市场听到风声,开始提前交易。基差出现异常波动,但方向不确定。
- 落地阶段:政策正式公布,基差瞬间跳变。这个跳变幅度往往超出任何统计模型的预测范围。
- 消化阶段:市场重新定价,基差在新的均衡点附近震荡。这个阶段通常持续3-10个交易日。
那怎么在模型中处理政策冲击呢?我的做法是:
- 加入虚拟变量:在回归模型中,为重大政策事件设置0/1虚拟变量。这样模型可以“记住”政策冲击的影响。
- 使用稳健回归:普通最小二乘法对异常值太敏感。我改用Huber回归或分位数回归,对政策冲击造成的极端值有更好的鲁棒性。
- 设置风险阈值:当基差偏离历史均值超过3倍标准差时,自动降低仓位或平仓。
四、三者如何协同?
这三个因素不是独立作用的。它们经常同时出现,互相叠加。
比如:移仓换月期间,正好赶上交割日临近,又突然出了个政策。这时候基差的波动会非常剧烈,模型很容易失效。
我画了一张图,帮你理清它们的关系:
从这张图你能看到,三个因素之间是相互影响的。交割日效应和移仓换月经常重叠,政策冲击又可能加速或干扰前两者的作用。
我个人习惯的做法是:在回归模型中,把这三个因素都作为独立的解释变量加入。交割日效应用时间衰减函数表示,移仓换月用展期价差表示,政策冲击用虚拟变量表示。这样模型就能同时捕捉三种效应。
当然,模型再完善,也架不住极端行情。我给自己定了一条铁律:当三个因素同时出现时,暂停所有基差交易。因为这时候的基差波动,已经不是统计模型能解释的了。
- 交割日效应:基差的强制收敛,越临近交割越明显
- 移仓换月:基差的跳变,需要用展期调整来处理
- 政策冲击:基差的异常波动,需要设置风险阈值
- 三者协同:在模型中同时加入,但极端情况要暂停交易
好了,关于事件驱动因素就聊这么多。这些东西看着简单,但真正在实盘中用好,还是需要反复打磨的。希望我的经验能帮你少走一些弯路。