🚀 AI 一键生成 joinquant 策略代码

JoinQuant 初始化时如何通过 SubPortfolioConfig 开启融资融券账户?

joinquant | 发布时间: 2025/12/24
以下内容由 EasyQuant 生成。

问题描述

我想做融资融券策略,初始化时怎么把账户类型设置为信用账户?

解决方案

您好。在聚宽(JoinQuant)平台进行融资融券(信用交易)策略回测时,默认的账户类型是普通股票账户(stock)。要进行融资买入或融券卖出,必须在 initialize 函数中使用 set_subportfolios API 将账户类型显式设置为 'stock_margin'

以下是具体的设置方法和代码示例。

设置方法

  1. 使用函数set_subportfolios
  2. 配置对象SubPortfolioConfig
  3. 关键参数:将 type 设置为 'stock_margin'

代码示例

# -*- coding: utf-8 -*-
from jqdata import *

def initialize(context):
    # 1. 获取回测设置的初始资金
    init_cash = context.portfolio.starting_cash
    
    # 2. 设定账户为融资融券账户
    # type='stock_margin' 表示信用账户
    # 如果不进行此设置,默认 type='stock'(普通账户),无法调用融资融券API
    set_subportfolios([SubPortfolioConfig(cash=init_cash, type='stock_margin')])
    
    # 3. (可选) 设置融资融券的利率和保证金比率,如果不设置则使用系统默认值
    # 设置融资利率: 年化8%
    set_option('margincash_interest_rate', 0.08) 
    # 设置融资保证金比率: 100%
    set_option('margincash_margin_rate', 1.0) 
    # 设定融券利率: 年化10%
    set_option('marginsec_interest_rate', 0.10) 
    # 设定融券保证金比率: 100%
    set_option('marginsec_margin_rate', 1.0) 
    
    # 4. 设置基准和其他常规设置
    set_benchmark('000300.XSHG')
    set_option('use_real_price', True)
    
    # 打印日志确认
    log.info("融资融券账户初始化完成")

def handle_data(context, data):
    # 示例:这里可以调用融资融券专用API
    # margincash_open('000001.XSHE', 1000) # 融资买入
    pass

注意事项

  1. API 限制:只有将账户类型设置为 'stock_margin' 后,才能使用如 margincash_open(融资买入)、marginsec_open(融券卖出)、get_mtss(获取融资融券信息)等专用函数。如果在普通账户模式下调用这些函数会报错。
  2. 多账户设置:如果您需要同时操作普通股票账户和信用账户,可以在 set_subportfolios 中传入多个配置对象。例如:
    set_subportfolios([
        SubPortfolioConfig(cash=init_cash*0.5, type='stock'),       # 仓位0:普通账户
        SubPortfolioConfig(cash=init_cash*0.5, type='stock_margin') # 仓位1:信用账户
    ])
    
    在这种情况下,下单时需要通过 pindex 参数指定仓位索引(如 pindex=1)。

Q&A

Q: 如果我不设置 set_subportfolios,直接调用 margincash_open 会发生什么?
A: 程序会报错。因为默认初始化的账户类型是 'stock'(普通账户),普通账户不支持融资融券操作。系统会提示您当前的仓位类型不支持该操作。

Q: 设置为 'stock_margin' 后,我还能买卖普通股票吗?
A: 可以。在信用账户(stock_margin)中,您依然可以使用 orderorder_target 等基础下单函数进行担保品买入卖出(即用自有资金买卖股票)。只有当您使用 margincash_open 等专用函数时,才会触发融资或融券逻辑。

Q: 融资融券回测支持设置利率和保证金比例吗?
A: 支持。可以使用 set_option 函数设置。例如 set_option('margincash_interest_rate', 0.08) 设置融资利率,set_option('margincash_margin_rate', 1.0) 设置融资保证金比例。如果不设置,系统会使用默认值(通常融资利率默认8%,融券利率默认10%,保证金比例默认100%)。