Einstein Research — Backtest Engine
by DaVinci
Programmatic backtesting framework for trading strategies. Runs backtests with historical price data (yfinance or CSV), supports momentum/mean-reversion/factor/signal-based strategies, walk-forward optimization, out-of-sample testing, transaction cost modeling, regime-aware splits, and full performance metrics (Sharpe, Sortino, Calmar, max drawdown, CAGR, win rate, profit factor). Distinct from einstein-research-backtest (which provides methodology guidance). Use when a user wants to actually run a backtest, test a specific strategy on historical data, or generate performance metrics.
安装
claude skill add --url github.com/openclaw/skills/tree/main/skills/clawdiri-ai/einstein-research-backtest-engine-dv文档
Backtest Engine
This skill is the programmatic engine for running quantitative trading strategy backtests. It takes a machine-readable strategy definition (e.g., from the einstein-research-edge skill) and executes it against historical data, producing detailed performance metrics.
When to Use This Skill
- User wants to run a backtest on a specific strategy.
- User has a
strategy.yamlfile from theedge-generatorskill. - User wants to generate performance metrics for a trading idea.
- Triggers: "run a backtest," "test this strategy," "generate performance metrics."
This skill is for execution. For guidance on how to design a robust backtest, see the einstein-research-backtest methodology skill.
Workflow
Step 1: Provide Strategy Definition
The backtest engine requires a strategy.yaml file that defines the rules of the strategy.
strategy.yaml Format:
version: backtest-engine/v1
name: 52-Week High Momentum
universe: "sp500"
data:
source: yfinance
start_date: "2018-01-01"
end_date: "2023-12-31"
entry_signal:
- "price > high_52w"
- "volume > 2 * avg_volume_50d"
exit_signal:
- "hold_days == 5"
- "pct_change >= 0.10"
- "pct_change <= -0.05"
parameters:
hold_days: 5
profit_target: 0.10
stop_loss: -0.05
Step 2: Execute the Backtest
The backtest-engine CLI runs the simulation.
backtest-engine run --strategy-file path/to/strategy.yaml
Optional Flags:
--costs 0.0005: Apply a 0.05% transaction cost per trade.--out-of-sample-split 2022-01-01: Split data for out-of-sample testing.--walk-forward: Enable walk-forward optimization mode.
The script performs the following actions:
- Loads Data: Fetches historical price data via yfinance or from a local CSV.
- Generates Signals: Iterates through the historical data day-by-day, applying the
entry_signalandexit_signallogic. - Simulates Trades: Creates a trade log based on the generated signals.
- Calculates Equity Curve: Builds the portfolio's equity curve over time.
- Computes Metrics: Calculates a full suite of performance metrics.
Step 3: Analyze the Performance Report
The engine generates a detailed report in JSON and Markdown.
Key Performance Metrics (KPIs):
- CAGR: Compound Annual Growth Rate.
- Max Drawdown: The largest peak-to-trough drop.
- Sharpe Ratio: Risk-adjusted return (vs. risk-free rate).
- Sortino Ratio: Risk-adjusted return (vs. downside deviation only).
- Calmar Ratio: Return relative to max drawdown.
- Win Rate %: Percentage of trades that were profitable.
- Profit Factor: Gross profits / gross losses.
- Trades per Year: Frequency of the strategy.
Report Structure (backtest_report_YYYY-MM-DD.md):
- Strategy Summary: The input
strategy.yamldefinition. - Overall Performance: A table with the key performance metrics.
- Equity Curve: An ASCII or image chart of the portfolio's growth.
- Drawdown Periods: Highlights the worst drawdown periods.
- Trade Log: A sample of the individual trades made.
- Annual Returns: A bar chart of returns by year.
Step 4: Present Findings
Synthesize the report for the user, focusing on the most important metrics that answer their original question. Always contextualize the results by referencing the methodology from the einstein-research-backtest skill (e.g., "This is an initial backtest. The next step is to test for parameter robustness.").