用途:执行 backtest-expert 所教授的内容。backtest-expert 从五个维度给回测打分,但其前提是“指标由用户提供”,它只评分不产出数字。本技能负责产出这些数字:在真实 K 线上运行策略,返回评估器所需的八项输入。两者按“spec、run、evaluate”单向串联。
适用时机:用户描述了一条规则并希望被度量;backtest-expert 即将运行但数字尚不存在;胜率、平均盈利、平均亏损或回撤必须来自 K 线;需要为评分确定策略的参数数量。判定结论仍归 backtest-expert,本技能不重复其阈值与红旗规则。
前提:Python 3.9+;pip install manifoldbt(Apache 2.0 with Commons Clause,免费层覆盖本技能全部功能);OHLCV 数据为 CSV 或 Parquet,列含 timestamp、open、high、low、close、volume;无需 API key。
工作流:1)编写策略 spec,指定指标与一个入场条件,保持最小规则;在读取结果前把 fees_bps 与 slippage_bps 设为现实值。2)运行 python3 scripts/run_backtest.py --spec strategy.json --data bars.csv --symbol BTCUSDT --json-out result.json,脚本会先校验 spec 再加载数据。3)先读警告再看数字:样本少于 30 笔、跨度不足一年、未建模摩擦、引擎胜率与配对胜率不一致等。三种情况会中止交接:无完整往返交易、最大回撤缺失或非有限、scratch 交易。4)交接给 backtest-expert,运行其评估脚本并传入相同数字。
四类易错转换:成交是一笔执行,往返是两笔,原始成交数约为往返数的两倍;买卖交替仅在单标的、只做多且不加仓时成立,做空、加仓、多标的都会打破;成本决定小交易成败,百分比为扣除费用后的净值;引擎把回撤记为负数,评估器要正值。
范围:支持 sma、ema、rsi(任意 OHLC 列);一个入场条件,使用 >、<、>=、<= 对比另一指标、价格列或数字;可选止损止盈;费用与滑点以基点计;仅做多。拒绝:多条件入场、做空、多资产组合、上述三种之外的指标。
参考文件:references/strategy_spec.md 覆盖所有 spec 字段、默认值与校验拒绝项;references/metric_bridge.md 覆盖八项输入及其推导与陷阱。脚本:run_backtest.py、spec.py、round_trips.py、bridge.py,后三者无依赖,可不运行回测直接测试逻辑。