Vectorbt-backtesting-skills strategy-compare

Compare multiple strategies or directions (long vs short vs both) on the same symbol. Generates side-by-side stats table.

install
source · Clone the upstream repo
git clone https://github.com/marketcalls/vectorbt-backtesting-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/marketcalls/vectorbt-backtesting-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/strategy-compare" ~/.claude/skills/marketcalls-vectorbt-backtesting-skills-strategy-compare && rm -rf "$T"
manifest: .claude/skills/strategy-compare/SKILL.md
source content

Create a strategy comparison script.

Arguments

Parse

$ARGUMENTS
as: symbol followed by strategy names

  • $0
    = symbol (e.g., SBIN, RELIANCE, NIFTY)
  • Remaining args = strategies to compare (e.g., ema-crossover rsi donchian)

If only a symbol is given with no strategies, compare: ema-crossover, rsi, donchian, supertrend. If "long-vs-short" is one of the strategies, compare longonly vs shortonly vs both for the first real strategy.

Instructions

  1. Read the vectorbt-expert skill rules for reference patterns
  2. Create
    backtesting/strategy_comparison/
    directory if it doesn't exist (on-demand)
  3. Create a
    .py
    file in
    backtesting/strategy_comparison/
    named
    {symbol}_strategy_comparison.py
  4. The script must:
    • Fetch data once via OpenAlgo
    • If user provides a DuckDB path, load data directly via
      duckdb.connect(path, read_only=True)
      . See vectorbt-expert
      rules/duckdb-data.md
      .
    • If
      openalgo.ta
      is not importable (standalone DuckDB), use inline
      exrem()
      fallback.
    • Use TA-Lib for ALL indicators (never VectorBT built-in)
    • Use OpenAlgo ta for specialty indicators (Supertrend, Donchian, etc.)
    • Clean signals with
      ta.exrem()
      (always
      .fillna(False)
      before exrem)
    • Run each strategy on the same data
    • Indian delivery fees:
      fees=0.00111, fixed_fees=20
      for delivery equity
    • Collect key metrics from each into a side-by-side DataFrame
    • Include NIFTY benchmark in the comparison table (via OpenAlgo
      NSE_INDEX
      )
    • Print Strategy vs Benchmark comparison table: Total Return, Sharpe, Sortino, Max DD, Win Rate, Trades, Profit Factor
    • Explain results in plain language - which strategy performed best and why
    • Plot overlaid equity curves for all strategies using Plotly (
      template="plotly_dark"
      )
    • Save comparison to CSV
  5. Never use icons/emojis in code or logger output

Example Usage

/strategy-compare RELIANCE ema-crossover rsi donchian
/strategy-compare SBIN long-vs-short ema-crossover