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

QMT平台如何利用 load_stk_vol_list 导入股票篮子并进行股指期货对冲套利?

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

问题描述

QMT 组合套利:利用 load_stk_vol_list 实现股票篮子与股指期货对冲
如何从本地 CSV 导入股票篮子和数量,并用 QMT 自动计算权重配对股指期货进行对冲?

解决方案

QMT 组合套利:利用 load_stk_vol_list 实现股票篮子与股指期货对冲

在量化多头或阿尔法策略中,投资者经常需要导入一个自定义的股票篮子,并使用股指期货(如 IF、IC、IM)进行空头对冲。QMT 平台提供了强大的本地文件解析接口 load_stk_vol_list 以及专为套利设计的 passorder 组合套利下单模式,能够一键实现“股票篮子 + 期货合约”的自动对冲与权重配对。


一、 核心 API 接口解析

1. 导入股票篮子与数量:ContextInfo.load_stk_vol_list()

  • 方法定义ContextInfo.load_stk_vol_list(filePath, fileName)
  • CSV文件格式要求:代码与数量成对存在,且最后一个字段后必须增加分隔符。例如:
    600000.SH,100,600004.SH,200,

2. 组合套利下单:passorder() 特殊参数设置

针对组合套利,passorder 的参数需要进行特殊配置:

  • 用法passorder(opType, orderType, accountID, orderCode, prType, hedgeRatio, volume, ContextInfo)
  • accountID:传入双账号,格式为 '股票资金账号, 期货资金账号'
  • orderCode:传入双代码,格式为 '股票篮子名称, 期货合约代码'
  • hedgeRatio:套利比例(取值在 0 ~ 2 之间,相当于 0% 至 200% 的套利对冲比例)。
  • orderType(套利专用)
    • 2331:组合、套利、合约价值自动套利、按组合股票数量方式下单。
    • 2332:组合、套利、按合约价值自动套利、按组合股票权重方式下单。
    • 2333:组合、套利、按合约价值自动套利、按账号可用方式下单。

二、 完整策略源码示例

以下示例展示了如何在初始化时从本地 D:/data/basket.csv 导入股票持仓,并在盘中触发对冲套利下单:

#coding:gbk
import time

def init(ContextInfo):
    # 1. 设定交易账号(必须包含股票和期货账号)
    ContextInfo.stock_account = '6000000248'
    ContextInfo.future_account = '110476'
    ContextInfo.set_account(ContextInfo.stock_account)
    ContextInfo.set_account(ContextInfo.future_account)
    
    # 2. 从本地 CSV 导入股票篮子及数量
    # 假设 D:/data/basket.csv 内容为: 600000.SH,100,600016.SH,200,600030.SH,150,
    ContextInfo.basket_path = 'D:/data/'
    ContextInfo.basket_file = 'basket.csv'
    
    # 读取篮子数据
    ContextInfo.basket_data = ContextInfo.load_stk_vol_list(ContextInfo.basket_path, ContextInfo.basket_file)
    print("成功导入股票篮子数据:", ContextInfo.basket_data)
    
    # 3. 定义对冲标的(如沪深300主力合约)
    ContextInfo.future_code = 'IF2406.IF' 
    
    # 标记是否已执行对冲
    ContextInfo.is_traded = False

def handlebar(ContextInfo):
    # 仅在最后一根Bar且未交易时触发
    if ContextInfo.is_last_bar() and not ContextInfo.is_traded:
        
        # 组合套利账号与代码配对
        accounts = f"{ContextInfo.stock_account},{ContextInfo.future_account}"
        order_codes = f"my_stock_basket,{ContextInfo.future_code}"
        
        # 4. 发起组合套利对冲申报
        # opType: 23 (股票买入/组合买入)
        # orderType: 2331 (按组合股票数量自动套利)
        # prType: 5 (最新价)
        # hedgeRatio: 1.0 (100% 价值对冲)
        # volume: 1 (代表执行1份篮子)
        
        print("开始发送组合套利对冲指令...")
        passorder(
            23, 
            2331, 
            accounts, 
            order_codes, 
            5, 
            1.0, 
            1, 
            ContextInfo
        )
        
        ContextInfo.is_traded = True
        print("对冲指令发送完毕。")

三、 注意事项与 SEO 优化建议

  1. CSV 格式末尾的逗号:使用 load_stk_vol_list 读取 CSV 时,文件内容的末尾必须有一个英文逗号 ,,否则最后一只股票的数量可能无法被正确解析。
  2. 双账号订阅:在 init 函数中,必须同时对股票账号和期货账号调用 ContextInfo.set_account(),否则无法接收到完整的交易回报主推。
  3. 实盘风控:组合套利下单会同时向股票柜台和期货柜台发送委托,请确保两个账户的可用资金与保证金充足,避免因单边资金不足导致对冲失败。