🚀 AI 一键生成 joinquant 策略代码
立即体验

joinquant 平台如何获取商品期货的历史结算价和持仓量数据?

joinquant | 发布时间: 2026/8/2
以下内容由 EasyQuant 生成。

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: joinquant API 教程:get_extras 获取期货结算价与持仓量

Question: 如何在 joinquant 中获取商品期货的历史结算价和持仓量数据?

解决方案

joinquant 平台获取商品期货历史结算价与持仓量指南

在期货量化交易与策略回测中,**结算价(Settlement Price)持仓量(Open Interest)**是进行每日盯市盈率计算、风险控制以及资金流向分析的关键指标。

聚宽(JoinQuant)平台提供了 get_extras 函数,可以方便地批量查询多只期货标的在指定时间段内的历史结算价与持仓量。


一、使用 get_extras 获取期货数据

get_extras 函数用于获取标的的额外数据(如基金净值、ST状态、期货结算价与持仓量等)。

1. API 语法

get_extras(info, security_list, start_date='2015-01-01', end_date='2015-12-31', df=True, count=None)

2. 相关参数说明

  • info: 字符串,获取期货数据时可选以下值:
    • 'futures_sett_price': 期货结算价
    • 'futures_positions': 期货持仓量
  • security_list: 期货合约代码列表,例如 ['RB1909.XSGE', 'CU1909.XSGE']
  • start_date / end_date: 开始与结束日期,格式为 'YYYY-MM-DD'
  • count: 截止 end_date 前的交易日数量,与 start_date 二选一。
  • df: 布尔值,True 返回 pandas.DataFrameFalse 返回 dict

二、代码示例:获取螺纹钢期货结算价与持仓量

以下示例展示了如何在研究环境或策略中调取螺纹钢主力合约的历史结算价与持仓量数据:

from jqdata import *
import pandas as pd

# 定义查询的期货合约与日期范围
security_list = ['RB1909.XSGE', 'CU1909.XSGE']
end_dt = '2019-06-28'

# 1. 获取期货结算价 (futures_sett_price)
settle_price_df = get_extras('futures_sett_price', security_list, end_date=end_dt, count=5, df=True)
print("=== 期货历史结算价 ===")
print(settle_price_df)

# 2. 获取期货持仓量 (futures_positions)
positions_df = get_extras('futures_positions', security_list, end_date=end_dt, count=5, df=True)
print("\n=== 期货历史持仓量 ===")
print(positions_df)

三、其他获取期货持仓量的方法

除了 get_extras 之外,聚宽还支持通过以下 API 获取期货持仓量:

  1. get_bars API:在获取 K 线数据时,fields 参数传入 'open_interest' 字段。
    df = get_bars('RB1909.XSGE', count=5, unit='1d', fields=['date', 'close', 'open_interest'])
    
  2. get_ticks API:获取期货 Tick 数据时,返回结果中的 position 字段即为当前时刻的持仓量。

四、注意事项

  1. 主力合约与具体合约get_extras 需要传入具体的期货合约代码(如 RB1909.XSGE),不可直接对主力连续合约(如 RB9999.XSGE)调用。
  2. 结算时间:期货每日在 16:00:00 进行结算,结算价在每日收盘结算后更新。
  3. 历史回测:在真实价格(动态复权)模式或期货回测中,系统每日结算会自动使用当天结算价进行持仓盯市与平仓清算。