Skip to content

Latest commit

 

History

History
101 lines (78 loc) · 3.61 KB

File metadata and controls

101 lines (78 loc) · 3.61 KB

stocklens/backtest/ — 回测系统

职责

对历史分析结果进行事后评估,计算方向准确率、胜率、收益率等指标。

文件清单

文件 职责
engine.py 薄壳 — 仅 re-export quantcore.backtest.engine.{BacktestEngine, EvaluationConfig, OVERALL_SENTINEL_CODE, DailyBarLike, BacktestResultLike};纯算法已下沉到 quantcore
backtest_service.py BacktestService 回测服务封装(CLI 入口 + 自动回测调度)
__init__.py 导出

拆包公告(2026-05)BacktestEngine 是 555 行纯算法(DB-agnostic,作者本人在 docstring 里就标注了 "pure logic"),现已迁移到独立的 quantcore/backtest/ 包。stocklens.backtest.engine 现在仅作为向后兼容的 re-export shim 存在。新代码请:

from quantcore.backtest import BacktestEngine, EvaluationConfig

核心类

BacktestEngine(quantcore.backtest.engine)

关键方法

  • evaluate(analysis: dict, days: int = 10) -> dict — 评估单条分析结果

    • 输入: 历史分析记录(包含 code, date, score, prediction, advice)
    • 流程:
      1. 获取分析日之后 N 天的实际行情
      2. 计算实际涨跌幅
      3. 对比预测方向与实际方向
      4. 模拟进出场收益(基于建议的买入/止损/目标价)
    • 返回:
      {
          "code": "AAPL",
          "analysis_date": "2026-04-03",
          "eval_date": "2026-04-13",
          "prediction": "震荡",
          "actual_change_pct": 2.5,
          "direction_correct": True,
          "stop_loss_triggered": False,
          "take_profit_triggered": False,
          "simulated_return_pct": 1.8,
          "status": "completed",  # completed / insufficient_data
      }
  • evaluate_batch(analyses: List[dict], days: int = 10) -> dict — 批量评估

    • 返回: {processed, saved, completed, insufficient, errors, results}

BacktestService(backtest_service.py)

回测服务封装,供 CLI 和 API 调用。

关键方法

  • run(code: str = None, days: int = 10, force: bool = False) -> dict — 运行回测

    • code=None: 回测所有待评估的分析
    • force=True: 强制重新计算已有结果
    • 返回: 同 evaluate_batch
  • get_results(code: str = None, limit: int = 20) -> List[dict] — 查询回测结果

  • get_statistics(code: str = None) -> dict — 统计信息

    • 返回:
      {
          "total": 100,
          "direction_accuracy": 0.65,  # 方向准确率
          "win_rate": 0.58,            # 胜率(正收益比例)
          "avg_return": 1.2,           # 平均收益率%
          "stop_loss_rate": 0.12,      # 止损触发率
          "take_profit_rate": 0.35,    # 止盈触发率
      }

依赖关系

  • 依赖:storage(AnalysisRepo, BacktestRepo, StockRepo)、tickbridge
  • 被依赖:main.py(自动回测)、api(backtest 端点)

配置项

通过命令行参数控制:

参数 默认值 说明
--backtest False 启用回测
--backtest-code None 指定股票
--backtest-days 10 评估窗口天数
--backtest-force False 强制重算

注意事项

  • 回测需要分析日之后有足够的行情数据(至少 days 天)
  • 数据不足时标记为 insufficient_data,不计入统计
  • 方向判断: 预测"看多"且实际上涨 = 正确,预测"震荡"视为中性(不计入方向统计)
  • 模拟收益基于分析报告中的买入价/止损价/目标价计算
  • main.py 分析完成后会自动运行回测(评估之前的历史分析)