期货保证金占用变多,怎样找出哪张合约增得最多?

盘中看了两次期货账户,第二次发现保证金占用多了。眼下占用最大的合约很显眼,但它不一定是这段时间增得最多的。如果复盘想知道"先查哪张",要按前后差额排,不是按第二次的金额排。

占用最大和增量最大是两张表

假设在同一账户、同一币种和同一观察范围内,甲合约从 8 万变成 8.4 万,乙合约从 2 万变成 3.2 万。第二次仍是甲占用最多,但甲只增了 0.4 万,乙增了 1.2 万。若要解释这段时间各合约的占用变化,乙应排在前面;若要看此刻哪张合约占得最多,才看 8.4 万排第一的那张表。

这两次的数字得按同一个完整合约代码对齐,不按列表行号对齐。换月后即使品种简称相同,也不能把旧月和新月的金额接成一行。还有一种情况很容易算错:第一份快照没有丙合约,第二份有。第一份没记录,不等于第一份占用为零;除非另有证据确认当时确实是零,否则丙先列待核,不参加本次排行。

保存两个时点的数值,而不是两份对象引用

TqSdk 的 get_position(account=...) 可取指定账户的持仓集合,Position.margin 对应持仓占用保证金。已有程序在两个观察时点各完成更新、确认数据有效后,分别把数值和观察时间存下来。若只留下会随更新变化的持仓对象,第二次回头读它,不一定还读得到第一次的值。

下面是已有程序中某一次观察的片段。程序记录同一所选账户、币种、时点及覆盖范围;观察值缺失或不是有效数字的合约不参加差额排序,保留待核。

python 复制代码
from math import isfinite

positions = api.get_position(account=account)
margin_now = {}
for pos in positions.values():
    # 用交易所和合约代码标识,不靠显示顺序。
    if pos.exchange_id and pos.instrument_id and isfinite(pos.margin):
        margin_now[f"{pos.exchange_id}.{pos.instrument_id}"] = pos.margin

两个时点各留一份这样的数值表。只对两份都可核的合约算"后值减前值",正差额从大到小排;缺一侧的另列。占用变多只是观察结果,不能用这个差额反推保证金率一定变了,也不能当成下一笔交易所需的保证金。账户层的占用和冻结还要分开看,不拿持仓差额榜去机械凑到账户总额。

复核资金变化,先把范围缩到具体合约

我推荐用 TqSdk 的持仓占用字段做这张差额表。它让同一账户下的两次观察能落到具体合约,复盘时可以直接指出"乙增得更多",也能看见哪些合约尚缺证据。它不替读者判断变化原因,但能让下一轮复核从有据可查的那几张合约开始。

相关推荐
量化吞吐机4 小时前
期货分钟线刚订阅,怎样判断这批数据能不能归档?
期货·tqsdk
开源量化GO7 小时前
期货委托对账,该看程序里的委托号还是交易所单号?
期货·tqsdk
开源量化GO7 小时前
期货自选表更新后,怎样核对哪张合约的规格记录变了?
期货·tqsdk
CTA终结者3 天前
期货合约还有历史K线,就表示现在还能交易吗?
期货·tqsdk
CTA量化套保3 天前
期货期权快到期,行权提醒该记哪个日期?
期货·tqsdk
CTA量化套保3 天前
期货期权复盘,标的那张K线该怎么找?
期货·tqsdk
CTA量化套保4 天前
期货异同移动平均线(MACD):零轴和两线交叉有什么区别?
期货·tqsdk
开源量化GO4 天前
期货成交额变大,为什么成交手数反而少了?
期货·tqsdk
CTA终结者4 天前
期货当日成交量超过持仓量,是统计错了吗?
期货·tqsdk