🚀 AI 一键生成 joinquant 策略代码

JoinQuant 期货策略必读:回测与模拟中持仓到交割日如何处理?

joinquant | 发布时间: 2025/12/11
以下内容由 EasyQuant 生成。

问题描述

如果我持有的期货合约到了交割日还没有平仓,会自动平仓吗?平仓价格和手续费是怎么计算的?

解决方案

根据聚宽(JoinQuant)API文档的说明,针对期货合约在交割日未平仓的处理机制如下:

期货交割日自动平仓机制

在聚宽的回测和模拟交易环境中,如果您持有的期货合约到了交割日仍未手动平仓,系统会执行自动平仓操作。

1. 是否自动平仓

是的。系统会在交割日结束时自动处理该持仓。

2. 平仓价格计算

系统会以该合约当天的结算价(Settlement Price)进行平仓,而不是收盘价。

3. 手续费计算

此次自动平仓没有手续费

4. 交易记录

此次操作不会产生交易记录。这意味着在您的回测日志或交易详情中看不到这笔“卖出/买入平仓”的操作流水,系统是直接根据结算价调整账户的资金权益。


补充说明

  • 结算时间:期货每日在 16:00:00 进行结算。
  • 主力连续合约:如果您使用的是主力连续合约(如 AG9999.XSGE),系统是根据持仓量拼接的虚拟合约。但在实际交易特定合约(如 AG1912.XSGE)时,必须注意该具体合约的最后交易日。
  • 实盘区别:请注意,上述规则适用于聚宽的回测与模拟交易环境。在真实的实盘交易中,个人投资者通常不允许持仓进入交割月或交割日,期货公司通常会在交割日前强行平仓,并可能产生较高的惩罚性手续费或滑点。

Q&A

Q: 为什么在回测的交易记录里找不到交割日的平仓单?
A: 根据聚宽机制,交割日系统自动以结算价平仓的操作不会生成交易记录(Order/Trade对象),系统直接对账户权益进行结算调整。

Q: 期货的结算价和收盘价有什么区别?
A: 收盘价是当天最后一笔交易的成交价格;结算价是当天所有成交价格的加权平均价(具体计算方式视交易所规则而定)。期货的每日盈亏和交割平仓均使用结算价计算。

Q: 如果我想避免自动平仓,应该怎么做?
A: 您需要在策略中编写逻辑,监控合约的剩余天数或日期。在临近交割日(例如提前 1-3 天)手动调用 order_targetorder_close 系列函数进行移仓换月(平掉旧合约,开新合约)。