SuperAPI AI 工具集

backtest

数据与分析

查看项目

更新于 10-16 07:43

技能介绍

用途

backtest 技能用于对某个交易策略在指定标的上进行快速回测。它会生成一个完整的、可直接运行的 Python 脚本,涵盖从数据获取到结果可视化的完整流程,帮助用户快速验证策略表现。

主要能力

  • 根据参数(策略、标的、交易所、周期)生成对应的回测脚本。
  • 脚本内容包括:数据获取、信号生成、回测执行、统计输出、以及与基准的对比。
  • 内置多种策略模板,可直接选用:EMA Crossover、RSI、Donchian Channel、Supertrend、MACD Breakout、SDA2、Momentum、Dual Momentum、Buy & Hold、RSI Accumulation。
  • 使用 VectorBT 执行回测,使用 OpenAlgo 获取行情数据,使用 TA-Lib 与 OpenAlgo ta 计算指标。
  • 输出完整统计信息(pf.stats())、策略与基准对比表(总收益、Sharpe、Sortino、最大回撤、胜率、交易次数、盈亏比)。
  • 若环境中有 quantstats,则生成 HTML 报告;使用 Plotly 绘制净值曲线与回撤图;并将交易导出为 CSV。

使用方式

参数格式为:strategy symbol exchange interval。

  • $0 = 策略名称(如 ema-crossover、rsi、donchian、supertrend、macd、sda2、momentum)。
  • $1 = 标的(如 SBIN、RELIANCE、NIFTY),默认 SBIN。
  • $2 = 交易所(如 NSE、NFO),默认 NSE。
  • $3 = 周期(如 D、1h、5m),默认 D。 若无参数,则询问用户想使用哪种策略。

示例:

  • /backtest ema-crossover RELIANCE NSE D
  • /backtest rsi SBIN
  • /backtest supertrend NIFTY NFO 5m

生成的脚本会:从项目根目录加载 .env;通过 OpenAlgo 的 client.history() 获取数据;使用 TA-Lib 处理全部指标;使用 OpenAlgo ta 处理特殊指标;使用 ta.exrem() 清理重复信号(调用前须 .fillna(False));以 vbt.Portfolio.from_signals() 执行回测(min_size=1, size_granularity=1);对交割股票使用 Zerodha 费用(fees=0.00111, fixed_fees=20);获取 NIFTY 基准(symbol="NIFTY", exchange="NSE_INDEX")。

适用场景

适合需要快速对某标的运行内置策略回测并查看统计与图表的量化研究者或交易者。

限制

缺失信息:本资料未提供该技能的版本要求、依赖安装命令、运行环境限制、错误处理策略,以及具体的使用限制或性能边界,这些内容暂未提供。