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

ptrade 怎么在回测里对不同的期货品种分别设置不同的保证金比例?

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

问题描述

ptrade 期货回测优化:如何使用 set_margin_rate 动态调整多空保证金比例?
ptrade 怎么在回测里对不同的期货品种分别设置不同的保证金比例?

解决方案

在 ptrade 量化交易平台中,进行期货回测时,合理设置保证金比例对于资金管理和风险控制至关重要。ptrade 提供了 set_margin_rate 接口,允许用户按照期货合约的交易代码(如沪铜的 'CU',沪金的 'AU')来个性化设置保证金比例。

一、接口详细说明

1. 设置保证金比例:set_margin_rate

  • 使用场景:仅在回测、交易模块可用。
  • 接口定义set_margin_rate(transaction_code, margin_rate)
  • 参数说明
    • transaction_code (str):期货合约的交易代码(不带具体月份和后缀,例如沪铜 "CU2112.XSGE" 的交易代码为 "CU")。
    • margin_rate (float):保证金比例。例如,将保证金比例设置为 5% 则输入 0.05

2. 获取保证金比例:get_margin_rate

  • 使用场景:仅在回测模块可用。
  • 接口定义get_margin_rate(transaction_code)
  • 参数说明
    • transaction_code (str):期货合约的交易代码,如 "CU"
  • 返回值:返回用户设置的保证金比例(float),若未设置则默认返回交易所设定的保证金比例。

二、完整策略代码示例

以下代码展示了如何在 initialize 中为不同的期货品种(沪铜 CU 和沪金 AU)分别设置不同的保证金比例,并在 before_trading_start 中获取验证,最后在 handle_data 中执行开仓操作。

def initialize(context):
    # 1. 设置我们要操作的期货合约
    g.cu_contract = "CU2112.XSGE"
    g.au_contract = "AU2112.XSGE"
    set_universe([g.cu_contract, g.au_contract])
    
    # 2. 分别为不同的期货品种设置不同的保证金比例
    # 设置沪铜 (CU) 品种收取的保证金比例为 5%
    set_margin_rate("CU", 0.05)
    # 设置沪金 (AU) 品种收取的保证金比例为 8%
    set_margin_rate("AU", 0.08)
    
    g.has_ordered = False

def before_trading_start(context, data):
    # 获取并打印设置的保证金比例,验证是否设置成功
    cu_margin = get_margin_rate("CU")
    au_margin = get_margin_rate("AU")
    
    log.info("沪铜(CU)当前回测保证金比例: %s" % cu_margin)
    log.info("沪金(AU)当前回测保证金比例: %s" % au_margin)

def handle_data(context, data):
    # 简单示例:在第一个交易日开盘时分别买入开仓
    if not g.has_ordered:
        # 买入开仓沪铜 10 手
        buy_open(g.cu_contract, 10)
        log.info("已发送 沪铜(CU) 买入开仓委托,数量: 10手")
        
        # 买入开仓沪金 5 手
        buy_open(g.au_contract, 5)
        log.info("已发送 沪金(AU) 买入开仓委托,数量: 5手")
        
        g.has_ordered = True

三、注意事项

  1. 交易代码 vs 合约代码set_margin_rate 的第一个参数必须是交易代码(如 "CU""AU"),而不是具体的合约代码(如 "CU2112.XSGE")。
  2. 手续费配合设置:在回测期货时,除了保证金,建议配合使用 set_future_commission 接口设置对应品种的手续费,以使回测结果更贴近真实交易。