内置工具库

📎 引用文件

本文引用的文件 - agent/src/tools/backtest_tool.py - agent/src/market_data.py - agent/src/tools/market_data_tool.py - agent/src/factors/factor_analysis_core.py - agent/src/tools/factor_analysis_tool.py - agent/src/quantlib/__init__.py - agent/src/tools/quantlib_tool.py - agent/src/tools/options_pricing_tool.py - agent/src/tools/options_chain_tool.py - agent/src/tools/options_payoff_tool.py - agent/backtest/runner.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录:使用示例与参数说明

简介

本文件系统化介绍 Vibe-Trading 的内置工具库,覆盖五类关键能力:回测工具(backtest_tool)、市场数据工具(market_data_tool)、因子分析工具(factor_analysis_tool)、量化金融工具(quantlib_tool)以及期权工具(options_pricing_tool、options_chain_tool、options_payoff_tool)。文档从系统架构、组件职责、数据流、调用方式、参数配置、返回值处理、依赖要求与协作关系等维度展开,并提供可视化图示与可操作的示例路径,帮助不同技术背景的读者快速上手。

项目结构

围绕“工具层—数据层—计算层”的分层组织: - 工具层:面向用户/Agent 暴露统一接口(BaseTool 子类),负责参数校验、错误封装、JSON 输出。 - 数据层:统一的市场数据获取与路由(market_data.py),按符号格式自动选择数据源并支持降级链。 - 计算层:经 quantlib_tool 白名单调用的纯计算函数集合(src/quantlib),以及因子分析与期权定价等专用逻辑。

graph TB subgraph "工具层" T1["回测工具<br/>backtest_tool"] T2["市场数据工具<br/>market_data_tool"] T3["因子分析工具<br/>factor_analysis_tool"] T4["量化金融工具<br/>quantlib_tool"] T5["期权工具集<br/>options_pricing / options_chain / options_payoff"] end subgraph "数据层" D1["市场数据共享层<br/>market_data.py"] D2["回测运行器<br/>backtest/runner.py"] end subgraph "计算层" C1["量化金融模块<br/>src/quantlib/*"] C2["因子分析核心<br/>factors/factor_analysis_core.py"] end T1 --> D2 T2 --> D1 T3 --> C2 T4 --> C1 T5 --> C1 D2 --> D1

图表来源 - agent/src/tools/backtest_tool.py:15-95 - agent/src/tools/market_data_tool.py:11-104 - agent/src/market_data.py:97-229 - agent/backtest/runner.py:1-80 - agent/src/tools/quantlib_tool.py:244-450 - agent/src/quantlib/__init__.py:1-38 - agent/src/tools/options_pricing_tool.py:77-172 - agent/src/tools/options_chain_tool.py:37-156 - agent/src/tools/options_payoff_tool.py:21-225 - agent/src/factors/factor_analysis_core.py:8-103

章节来源 - agent/src/tools/backtest_tool.py:15-95 - agent/src/tools/market_data_tool.py:11-104 - agent/src/market_data.py:97-229 - agent/backtest/runner.py:1-80 - agent/src/tools/quantlib_tool.py:244-450 - agent/src/quantlib/__init__.py:1-38 - agent/src/tools/options_pricing_tool.py:77-172 - agent/src/tools/options_chain_tool.py:37-156 - agent/src/tools/options_payoff_tool.py:21-225 - agent/src/factors/factor_analysis_core.py:8-103

核心组件

章节来源 - agent/src/tools/backtest_tool.py:15-95 - agent/src/tools/market_data_tool.py:11-104 - agent/src/tools/factor_analysis_tool.py:19-152 - agent/src/tools/quantlib_tool.py:244-450 - agent/src/tools/options_pricing_tool.py:77-172 - agent/src/tools/options_chain_tool.py:37-156 - agent/src/tools/options_payoff_tool.py:21-225

架构总览

工具间协作与数据流转如下: - 市场数据工具作为数据入口,统一返回标准化数据,供回测与因子分析消费。 - 回测工具将策略代码与配置交由 runner 执行,内部复用市场数据加载器。 - 因子分析工具直接对 CSV 进行面板统计与分层回测。 - 量化金融工具通过白名单访问 src/quantlib,提供无副作用的数学计算。 - 期权工具组合 BS 定价、链数据与多腿收益模型,服务于期权策略研究。

sequenceDiagram participant U as "用户/Agent" participant MDT as "市场数据工具" participant MD as "市场数据层" participant BT as "回测工具" participant R as "回测运行器" participant FA as "因子分析工具" participant QL as "量化金融工具" participant OP as "期权工具" U->>MDT : 请求多市场OHLCV MDT->>MD : fetch_market_data(...) MD-->>MDT : 标准化行情JSON U->>BT : 提交run_dir BT->>R : 验证并执行策略 R->>MD : 按需拉取数据 MD-->>R : 数据帧 R-->>BT : 执行结果与产物 U->>FA : 提交因子与收益CSV FA-->>U : IC/IR与分层净值报告 U->>QL : 调用量化函数(白名单) QL-->>U : 纯计算结果(JSON) U->>OP : 期权定价/链/收益分析 OP-->>U : 结构化结果(JSON)

图表来源 - agent/src/tools/market_data_tool.py:94-104 - agent/src/market_data.py:97-229 - agent/src/tools/backtest_tool.py:15-95 - agent/backtest/runner.py:1-80 - agent/src/tools/factor_analysis_tool.py:19-152 - agent/src/tools/quantlib_tool.py:304-450 - agent/src/tools/options_pricing_tool.py:95-172 - agent/src/tools/options_chain_tool.py:70-156 - agent/src/tools/options_payoff_tool.py:122-225

详细组件分析

回测工具(backtest_tool)

flowchart TD A["接收run_dir"] --> B["校验路径与config.json"] B --> C{"source合法?"} C -- 否 --> E["返回错误"] C -- 是 --> D["检查signal_engine.py"] D --> F["构造Runner并执行"] F --> G["收集产物与日志"] G --> H["返回JSON结果"]

图表来源 - agent/src/tools/backtest_tool.py:15-95 - agent/backtest/runner.py:165-768

章节来源 - agent/src/tools/backtest_tool.py:15-95 - agent/backtest/runner.py:68-163 - agent/backtest/runner.py:306-467 - agent/backtest/runner.py:736-787

市场数据工具(market_data_tool)

sequenceDiagram participant U as "调用方" participant T as "MarketDataTool" participant S as "market_data.py" participant R as "加载器注册表" U->>T : get_market_data(codes, dates, source, interval, max_rows) T->>S : fetch_market_data_json(...) S->>S : detect_source + 分组 S->>R : get_loader_cls_with_fallback(source) R-->>S : Loader类或NoAvailableSourceError S->>S : 尝试fetch并降级 S-->>T : JSON(含_provenance) T-->>U : JSON字符串

图表来源 - agent/src/tools/market_data_tool.py:94-104 - agent/src/market_data.py:51-63 - agent/src/market_data.py:97-229

章节来源 - agent/src/tools/market_data_tool.py:11-104 - agent/src/market_data.py:14-57 - agent/src/market_data.py:97-229

因子分析工具(factor_analysis_tool)

flowchart TD A["读取CSV"] --> B{"数据非空?"} B -- 否 --> E["返回错误"] B -- 是 --> C["计算IC序列"] C --> D{"IC有效?"} D -- 否 --> E D -- 是 --> F["保存ic_series.csv与ic_summary.json"] F --> G["分层回测: 分组收益率→累计净值"] G --> H{"有有效日期?"} H -- 否 --> E H -- 是 --> I["保存group_equity.csv"] I --> J["返回JSON摘要"]

图表来源 - agent/src/tools/factor_analysis_tool.py:19-105 - agent/src/factors/factor_analysis_core.py:8-103

章节来源 - agent/src/tools/factor_analysis_tool.py:19-152 - agent/src/factors/factor_analysis_core.py:8-103

量化金融工具(quantlib_tool)

classDiagram class QuantlibCallTool { +execute(**kwargs) str -_resolve(module_name, function_name) Any -_list(module_name) str -_describe(module_name, function_name, func) str -_call(module_name, function_name, func, kwargs) str -_error(message, **extra) str } class ALLOWED_MODULES { <<dict>> } QuantlibCallTool --> ALLOWED_MODULES : "白名单映射"

图表来源 - agent/src/tools/quantlib_tool.py:65-85 - agent/src/tools/quantlib_tool.py:244-450

章节来源 - agent/src/tools/quantlib_tool.py:65-85 - agent/src/tools/quantlib_tool.py:97-165 - agent/src/tools/quantlib_tool.py:168-241 - agent/src/tools/quantlib_tool.py:304-450 - agent/src/quantlib/__init__.py:1-38

期权工具(options_pricing_tool、options_chain_tool、options_payoff_tool)

sequenceDiagram participant U as "调用方" participant P as "OptionsPricingTool" participant Q as "src.quantlib.options" participant C as "OptionsChainTool" participant YF as "Yahoo客户端" participant O as "OptionsPayoffTool" U->>P : 传入BS参数 P->>Q : bs_price / bs_greeks Q-->>P : 价格与Greeks P-->>U : JSON(含inputs/status) U->>C : ticker[, expiration] C->>YF : get_options(...) YF-->>C : 期权链原始数据 C-->>U : JSON(标准化calls/puts) U->>O : legs + 情景参数 O-->>U : 收益曲线与情景矩阵(JSON)

图表来源 - agent/src/tools/options_pricing_tool.py:43-74 - agent/src/tools/options_pricing_tool.py:95-172 - agent/src/tools/options_chain_tool.py:70-156 - agent/src/tools/options_payoff_tool.py:122-225

章节来源 - agent/src/tools/options_pricing_tool.py:13-172 - agent/src/tools/options_chain_tool.py:1-156 - agent/src/tools/options_payoff_tool.py:1-358

依赖关系分析

graph LR MDT["market_data_tool"] --> MD["market_data.py"] BT["backtest_tool"] --> RN["backtest/runner.py"] RN --> MD FA["factor_analysis_tool"] --> FAC["factor_analysis_core.py"] QL["quantlib_tool"] --> QM["src/quantlib/*"] OP1["options_pricing_tool"] --> QM OP2["options_payoff_tool"] --> OPF["backtest.options_payoff"]

图表来源 - agent/src/tools/market_data_tool.py:94-104 - agent/src/market_data.py:97-229 - agent/src/tools/backtest_tool.py:15-95 - agent/backtest/runner.py:1-80 - agent/src/tools/factor_analysis_tool.py:19-152 - agent/src/factors/factor_analysis_core.py:8-103 - agent/src/tools/quantlib_tool.py:65-85 - agent/src/tools/options_pricing_tool.py:95-172 - agent/src/tools/options_payoff_tool.py:122-225

章节来源 - agent/src/tools/market_data_tool.py:11-104 - agent/src/market_data.py:97-229 - agent/src/tools/backtest_tool.py:15-95 - agent/backtest/runner.py:1-80 - agent/src/tools/factor_analysis_tool.py:19-152 - agent/src/factors/factor_analysis_core.py:8-103 - agent/src/tools/quantlib_tool.py:65-85 - agent/src/tools/options_pricing_tool.py:95-172 - agent/src/tools/options_payoff_tool.py:122-225

性能考虑

[本节为通用指导,不直接分析具体文件]

故障排查指南

章节来源 - agent/src/tools/backtest_tool.py:15-95 - agent/backtest/runner.py:306-467 - agent/src/market_data.py:198-229 - agent/src/tools/factor_analysis_tool.py:36-105 - agent/src/tools/quantlib_tool.py:304-450 - agent/src/tools/options_pricing_tool.py:13-172 - agent/src/tools/options_chain_tool.py:70-156 - agent/src/tools/options_payoff_tool.py:122-225

结论

本工具库以“工具—数据—计算”三层解耦的方式,提供了覆盖回测、数据、因子、量化与期权的完整研究闭环。通过统一的数据路由、严格的策略安全扫描、白名单量化函数调用与稳健的错误封装,既保证了易用性,又确保了安全性与可维护性。建议在研究中优先使用市场数据工具获取标准化数据,结合因子分析与量化金融工具进行研究与风控,最后通过回测工具验证策略可行性。

[本节为总结性内容,不直接分析具体文件]

附录:使用示例与参数说明

以下为各类工具的典型调用方式与参数说明(以路径引用代替具体代码): - 回测工具 - 调用方法:调用 backtest_tool.execute(run_dir=...) - 参数:run_dir(必填) - 返回:status、exit_code、stdout、stderr、artifacts、run_dir - 参考实现路径:agent/src/tools/backtest_tool.py:15-95 - 市场数据工具 - 调用方法:调用 market_data_tool.execute(codes=[...], start_date="YYYY-MM-DD", end_date="YYYY-MM-DD", source="auto", interval="1D", max_rows=默认) - 返回:JSON 字符串(含数据与 _provenance) - 参考实现路径:agent/src/tools/market_data_tool.py:94-104 - 因子分析工具 - 调用方法:调用 factor_analysis_tool.execute(factor_csv=..., return_csv=..., output_dir=..., n_groups=5) - 返回:JSON 摘要与 ic_series.csv、group_equity.csv、ic_summary.json - 参考实现路径:agent/src/tools/factor_analysis_tool.py:137-152 - 量化金融工具 - 调用方法:调用 quantlib_tool.execute(action="list|describe|call", module=..., function=..., kwargs={...}) - 返回:JSON(ok/result/truncated/signature/doc) - 参考实现路径:agent/src/tools/quantlib_tool.py:304-450 - 期权定价工具 - 调用方法:调用 options_pricing_tool.execute(spot=..., strike=..., expiry_days=..., volatility=..., option_type="call|put", risk_free_rate=可选) - 返回:JSON(price、greeks、inputs、status/degenerate) - 参考实现路径:agent/src/tools/options_pricing_tool.py:95-172 - 期权链工具 - 调用方法:调用 options_chain_tool.execute(ticker=..., expiration=可选) - 返回:JSON(ok/market/source/data: expirations, calls, puts) - 参考实现路径:agent/src/tools/options_chain_tool.py:70-156 - 期权收益工具 - 调用方法:调用 options_payoff_tool.execute(legs=[...], entry_spot=..., expiry_days=..., risk_free_rate=可选, volatility=可选, multiplier=可选, commission_rate=可选, spot_min/max=可选, spot_points=可选, scenario_iv_values=可选) - 返回:JSON(summary、expiry_curve、scenario_grid、limitations) - 参考实现路径:agent/src/tools/options_payoff_tool.py:122-225

章节来源 - agent/src/tools/backtest_tool.py:15-95 - agent/src/tools/market_data_tool.py:94-104 - agent/src/tools/factor_analysis_tool.py:137-152 - agent/src/tools/quantlib_tool.py:304-450 - agent/src/tools/options_pricing_tool.py:95-172 - agent/src/tools/options_chain_tool.py:70-156 - agent/src/tools/options_payoff_tool.py:122-225