$npx -y skills add marketcalls/vectorbt-backtesting-skills --skill strategy-compareCompare multiple strategies or directions (long vs short vs both) on the same symbol. Generates side-by-side stats table.
| 1 | Create a strategy comparison script. |
| 2 | |
| 3 | ## Arguments |
| 4 | |
| 5 | Parse `$ARGUMENTS` as: symbol followed by strategy names |
| 6 | |
| 7 | - `$0` = symbol (e.g., SBIN, RELIANCE, NIFTY) |
| 8 | - Remaining args = strategies to compare (e.g., ema-crossover rsi donchian) |
| 9 | |
| 10 | If only a symbol is given with no strategies, compare: ema-crossover, rsi, donchian, supertrend. |
| 11 | If "long-vs-short" is one of the strategies, compare longonly vs shortonly vs both for the first real strategy. |
| 12 | |
| 13 | ## Instructions |
| 14 | |
| 15 | 1. Read the vectorbt-expert skill rules for reference patterns |
| 16 | 2. Create `backtesting/strategy_comparison/` directory if it doesn't exist (on-demand) |
| 17 | 3. Create a `.py` file in `backtesting/strategy_comparison/` named `{symbol}_strategy_comparison.py` |
| 18 | 3. The script must: |
| 19 | - Fetch data once via OpenAlgo |
| 20 | - If user provides a DuckDB path, load data directly via `duckdb.connect(path, read_only=True)`. See vectorbt-expert `rules/duckdb-data.md`. |
| 21 | - If `openalgo.ta` is not importable (standalone DuckDB), use inline `exrem()` fallback. |
| 22 | - **Use OpenAlgo ta for ALL indicators by default** (never VectorBT built-in). Only switch to TA-Lib if the user explicitly says "talib"/"TA-Lib" |
| 23 | - **Always use OpenAlgo ta** for specialty indicators (Supertrend, Donchian, etc.) - no TA-Lib equivalent exists |
| 24 | - Clean signals with `ta.exrem()` (always `.fillna(False)` before exrem) |
| 25 | - Run each strategy on the same data |
| 26 | - **Indian delivery fees**: `fees=0.00111, fixed_fees=20` for delivery equity |
| 27 | - Collect key metrics from each into a side-by-side DataFrame |
| 28 | - **Include NIFTY benchmark** in the comparison table (via OpenAlgo `NSE_INDEX`) |
| 29 | - **Print Strategy vs Benchmark comparison table**: Total Return, Sharpe, Sortino, Max DD, Win Rate, Trades, Profit Factor |
| 30 | - **Explain results** in plain language - which strategy performed best and why |
| 31 | - Plot overlaid equity curves for all strategies using Plotly (`template="plotly_dark"`) |
| 32 | - Save comparison to CSV |
| 33 | 4. Never use icons/emojis in code or logger output |
| 34 | |
| 35 | ## Example Usage |
| 36 | |
| 37 | `/strategy-compare RELIANCE ema-crossover rsi donchian` |
| 38 | `/strategy-compare SBIN long-vs-short ema-crossover` |