strategy-compare
- Repo stars 142
- Author repo vectorbt-backtesting-skills
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
- Read the vectorbt-expert skill rules for reference patterns
- Create
backtesting/strategy_comparison/directory if it doesn't exist (on-demand) - Create a
.pyfile inbacktesting/strategy_comparison/named{symbol}_strategy_comparison.py - 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-expertrules/duckdb-data.md. - If
openalgo.tais not importable (standalone DuckDB), use inlineexrem()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=20for 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
- 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
- Fluxly category
- Data
- Author-declared agents
- No explicit declaration found; this is not inferred or tested compatibility
- Static check
- 88 / 100 · heuristic scan, not runtime safety proof
- Author / version / license
- @marketcalls · no license declared
- Fluxly token estimate
- Lean
- Fluxly setup estimate
- Plug-and-play
- External API key
- No requirement detected
- Detected OS requirements
- Unspecified
- Runtime requirements
- Unspecified
- Detected file/system behavior
-
- Read-only
- Write / modify
- Detected network behavior
- External requests
- Install commands
- None (reference only)
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
The current SKILL.md does not define a fixed output example. 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)
Read the vectorbt-expert skill rules for reference patterns Create backtesting/strategycomparison/ directory if it doesn't exist (on-demand) Create a .py file in backtesting/strategycomparison/ named {symbol}strategycomparison.py
/strategy-compare RELIANCE ema-crossover rsi donchian /strategy-compare SBIN long-vs-short ema-crossover
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`
3. 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"`)
… Author text anchors workflow facts; Fluxly only indexes current sections, terms, files, and commands.
sections -> Arguments → Instructions → Example Usage
terms -> Use TA-Lib for ALL indicators · Use OpenAlgo ta · Indian delivery fees · Include NIFTY benchmark · Print Strategy vs Benchmark comparison table · Explain results
files/cmd -> $ARGUMENTS · backtesting/strategycomparison/ · .py · {symbol}strategycomparison.py · duckdb.connect(path, readonly=True) · rules/duckdb-data.md · openalgo.ta · exrem()
body sha256 -> 6b15d2bc1551
Decide Fit First
Design Intent
How To Use It
Boundaries And Review