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

ptrade 平台如何实现逆回购的全仓卖出?

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

问题描述

order_target不支持逆回购,那全仓卖出应该怎么操作?

/

解决方案

在 ptrade 量化交易平台中,order_targetorder_valueorder_target_value 等高级下单函数确实不支持国债逆回购交易。要实现逆回购的“全仓卖出”(即把账户所有可用资金用于参与逆回购),你需要手动计算可用资金所能购买的逆回购数量,并使用基础的 order 函数进行下单。

实现步骤

  1. 获取可用资金:通过 context.portfolio.cash 获取当前账户的可用资金。
  2. 计算可交易张数:国债逆回购的面值为 100 元/张,且最低申购金额为 1000 元(即 10 张),步长也为 10 张。因此,需要将可用资金除以 100 计算出总张数,并向下取整到 10 的倍数。
  3. 使用 order 函数下单:逆回购的本质是借出资金,因此在 ptrade 中委托方向必须为卖出(即 amount 必须为负数)

Python 代码示例

以下是一个在每天尾盘自动将所有可用资金进行深市 1 天期国债逆回购(131810.SZ)的策略示例:

def initialize(context):
    # 设置逆回购标的,例如深市1天期逆回购
    g.security = '131810.SZ'
    set_universe(g.security)
    
    # 设定每天 14:50 执行逆回购操作(交易场景下时间可根据券商配置调整)
    run_daily(context, reverse_repo_all_cash, time='14:50')

def reverse_repo_all_cash(context):
    # 1. 获取当前可用资金
    available_cash = context.portfolio.cash
    
    # 2. 计算可以申购的张数
    # 逆回购面值100元/张,10张起步,必须是10的整数倍
    # 计算最大可买张数
    max_amount = int(available_cash / 100)
    # 向下取整到10的倍数
    trade_amount = (max_amount // 10) * 10
    
    # 3. 判断是否满足最低申购门槛(10张)
    if trade_amount >= 10:
        # 逆回购委托方向为卖出,amount 必须为负数
        order(g.security, -trade_amount)
        log.info(f"全仓卖出逆回购 {g.security},数量:{-trade_amount}张,占用资金约:{trade_amount * 100}元")
    else:
        log.info(f"可用资金不足1000元,无法参与逆回购。当前可用资金:{available_cash}元")

def handle_data(context, data):
    pass

注意事项

  1. 负数委托:在 order 函数中,逆回购的 amount 必须传入负数(例如 -10 表示卖出 10 张)。
  2. 数量限制:逆回购最小申购金额为 1000 元(10 张),如果计算出的 trade_amount 小于 10,会导致委托失败,因此必须进行 >= 10 的判断。
  3. 价格参数:如果不传入 limit_price,系统会默认使用行情快照的最新价(即当前的年化收益率)进行报单。如果需要指定收益率,可以传入 limit_price 参数(例如 limit_price=2.5)。
  4. 精度问题:国债逆回购的价格精度通常为小数点后三位,如果使用限价单,请注意价格的精度处理。