backtest

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese
Create a complete VectorBT backtest script for the user.
为用户创建完整的VectorBT回测脚本。

Arguments

参数说明

Parse
$ARGUMENTS
as: strategy symbol exchange interval
  • $0
    = strategy name (e.g., ema-crossover, rsi, donchian, supertrend, macd, sda2, momentum)
  • $1
    = symbol (e.g., SBIN, RELIANCE, NIFTY). Default: SBIN
  • $2
    = exchange (e.g., NSE, NFO). Default: NSE
  • $3
    = interval (e.g., D, 1h, 5m). Default: D
If no arguments, ask the user which strategy they want.
$ARGUMENTS
解析为:策略名称 交易标的 交易所 时间周期
  • $0
    = 策略名称(例如:ema-crossover、rsi、donchian、supertrend、macd、sda2、momentum)
  • $1
    = 交易标的(例如:SBIN、RELIANCE、NIFTY)。默认值:SBIN
  • $2
    = 交易所(例如:NSE、NFO)。默认值:NSE
  • $3
    = 时间周期(例如:D、1h、5m)。默认值:D
若未提供参数,请询问用户所需的策略类型。

Instructions

操作步骤

  1. Read the vectorbt-expert skill for reference patterns
  2. Create a
    .py
    file in
    D:\QuantFlow 3\Day17\backtesting\
    named
    {symbol}_{strategy}_backtest.py
  3. The script must:
    • Load
      .env
      from the script directory for OpenAlgo credentials
    • Fetch data via
      client.history()
      from OpenAlgo
    • Implement the requested strategy using vectorbt + openalgo.ta helpers
    • Use
      ta.exrem()
      to clean duplicate signals
    • Run
      vbt.Portfolio.from_signals()
      with proper sizing (percent for equities, value for futures)
    • Print full
      pf.stats()
    • Print key metrics: total return, sharpe, max drawdown, win rate, trade count
    • Plot equity curve + drawdown (
      subplots=['value', 'underwater', 'cum_returns']
      )
    • Export trades to CSV
  4. Never use icons/emojis in code or logger output
  5. For futures symbols (NIFTY, BANKNIFTY), use lot-size-aware sizing with
    min_size
    and
    size_granularity
  1. 参考vectorbt-expert技能中的模式
  2. D:\QuantFlow 3\Day17\backtesting\
    目录下创建名为
    {symbol}_{strategy}_backtest.py
    的.py文件
  3. 脚本必须实现以下功能:
    • 从脚本目录加载
      .env
      文件以获取OpenAlgo凭证
    • 通过
      client.history()
      从OpenAlgo获取数据
    • 使用vectorbt + openalgo.ta工具类实现请求的策略
    • 使用
      ta.exrem()
      清理重复信号
    • 调用
      vbt.Portfolio.from_signals()
      并设置合适的仓位规模(股票使用百分比模式,期货使用固定价值模式)
    • 打印完整的
      pf.stats()
      结果
    • 打印关键指标:总收益率、夏普比率、最大回撤、胜率、交易次数
    • 绘制权益曲线 + 回撤图(设置
      subplots=['value', 'underwater', 'cum_returns']
    • 将交易记录导出为CSV文件
  4. 代码或日志输出中不得使用图标/表情符号
  5. 对于期货标的(如NIFTY、BANKNIFTY),需结合合约规模设置仓位,使用
    min_size
    size_granularity
    参数

Available Strategies

支持的策略

StrategyKeywordDescription
EMA Crossover
ema-crossover
Fast/slow EMA crossover
RSI
rsi
RSI oversold/overbought
Donchian Channel
donchian
Donchian channel breakout
Supertrend
supertrend
Supertrend indicator signals
MACD Breakout
macd
MACD zero-line signal candle breakout
SDA2
sda2
SDA2 trend following channel
Momentum
momentum
Double momentum (MOM + MOM of MOM)
Dual Momentum
dual-momentum
Relative momentum between 2 ETFs
策略名称关键词描述
EMA交叉策略
ema-crossover
快慢EMA交叉信号
RSI策略
rsi
RSI超买超卖信号
唐奇安通道策略
donchian
唐奇安通道突破信号
Supertrend策略
supertrend
Supertrend指标信号
MACD突破策略
macd
MACD零轴信号K线突破
SDA2策略
sda2
SDA2趋势跟踪通道
动量策略
momentum
双重动量(MOM + MOM的MOM)
双重动量策略
dual-momentum
两只ETF之间的相对动量

Example Usage

使用示例

/backtest ema-crossover RELIANCE NSE D
/backtest rsi SBIN
/backtest supertrend NIFTY NFO 5m
/backtest ema-crossover RELIANCE NSE D
/backtest rsi SBIN
/backtest supertrend NIFTY NFO 5m