界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
数据与研究 · SKILL.md

backtest-strategy

backtest-strategy

【数据与研究】Runs backtests on trading strategies using historical market data. Calculates performance metrics including Sharpe ratio, maximum drawdown, win rate, total return, and generates equity curves. Trigger when the user requests backtesting, strategy simulation, or performance evaluation.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: backtest-strategy description: Runs backtests on trading strategies using historical market data. Calculates performance metrics including Sharpe ratio, maximum drawdown, win rate, total return, and generates equity curves. Trigger when the user requests backtesting, strategy simulation, or performance evaluation. metadata: hermes: tags: [backtest, strategy, performance, trading] category: trading requires_toolsets: [terminal]

Backtest Strategy

Runs backtests on trading strategies and provides performance analysis.

Real Code Reference

  • tradinglearn/backtest/backtester.py — Backtester class: run_backtest(data, strategy_class, strategy_params), get_performance(), plot_results()
  • tradinglearn/strategies/macd_strategy.py — MACDStrategy with generate_signals(data) → positions
  • tradinglearn/pytdx2/backtest.py — BacktestEngine + BacktestConfig + BaseStrategy
  • tradinglearn/utils/parameter_optimizer.py — ParameterOptimizer.optimize_macd_parameters()

Architecture

DataLoader → Strategy signals → Portfolio tracking → Metrics calculation → Report
  1. DataLoader — fetch historical K-line via data_fetcher.fetch_stock_data(ticker, start, end)
  2. Strategy — generate buy/sell signals per bar (MACDStrategy(fast, slow, signal))
  3. Backtester — run_backtest(data, MACDStrategy, params) iterates bars, tracks positions
  4. Metrics — get_performance() returns Sharpe, max drawdown, win rate, total return, CAGR
  5. Plot — plot_results() shows price vs portfolio value overlay

Usage

from backtest.backtester import Backtester
from strategies.macd_strategy import MACDStrategy
from utils.data_fetcher import fetch_stock_data

data = fetch_stock_data("000001", start_date="2024-01-01", end_date="2025-01-01")
bt = Backtester(initial_capital=100000.0, transaction_cost=0.001)
bt.run_backtest(data, MACDStrategy, {"fast_period": 12, "slow_period": 26, "signal_period": 9})
bt.generate_detailed_report()
bt.plot_results()

Key Checks

  • No lookahead bias — signal at bar t uses only data up to bar t
  • Out-of-sample validation separate from parameter optimization
  • Account for transaction costs (commission + slippage)
  • Handle corporate actions (splits, dividends) in price data
我的收藏