问题描述
解决方案
根据聚宽(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_target 或 order_close 系列函数进行移仓换月(平掉旧合约,开新合约)。