🚀 AI 一键生成 ptrade 策略代码

ptrade API中合约状态“未形成负债”是什么意思?

ptrade | 发布时间: 2026/5/25
以下内容由 EasyQuant 生成。

问题描述

合约负债状态中的‘未形成负债’是什么意思?

/

解决方案

在 ptrade 量化交易平台中,进行融资融券(两融)交易时,可以通过 get_margin_contract() 接口查询合约信息。其中,compact_status 字段代表了合约状态

“未形成负债”的含义

compact_status 的值为 "5" 时,表示该合约的状态为 “未形成负债”

这通常意味着:

  1. 委托未成交或已撤单:您发起了融资买入或融券卖出的委托,但该委托尚未成交,或者在成交前已经被撤销,因此没有实际占用券商的资金或券源,未产生实际负债。
  2. 自有资金/券足额:在某些柜台逻辑中,如果您的账户内有足额的自有资金或自有证券,系统优先使用了自有资产完成交易,从而没有触发实际的融资或融券负债。

ptrade 中完整的合约状态字典 (compact_status)

根据 ptrade API 数据字典,compact_status 包含以下几种状态:

  • "0" -- 开仓未归还
  • "1" -- 部分归还
  • "2" -- 合约已过期
  • "3" -- 客户自行归还
  • "4" -- 手工了结
  • "5" -- 未形成负债

如何在策略中查询合约状态?

您可以使用 get_margin_contract() 函数来获取当前账户的合约信息,并筛选出特定状态的合约:

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    # 获取所有合约信息,返回 DataFrame
    df_contracts = get_margin_contract()
    
    if df_contracts is not None and not df_contracts.empty:
        # 筛选出“未形成负债”的合约记录
        no_liability_contracts = df_contracts[df_contracts['compact_status'] == '5']
        log.info("未形成负债的合约记录:\n%s" % no_liability_contracts)

在编写两融策略时,正确理解和处理这些合约状态,有助于精准计算账户的实际负债和可用额度,避免因状态误判导致的重复委托或资金计算错误。