SuperAPI AI 工具集

trader-portfolio-cg

数据与分析

查看项目

更新于 10-15 18:12

技能介绍

用途

本技能用于求解均值-方差投资组合优化问题,即通过共轭梯度法(Conjugate Gradient,CG)求解线性方程组 Σ·x=μ,其中 Σ 为协方差矩阵,μ 为期望收益向量,x 为最优权重。它替代了旧版基于 Neumann 级数的求解路径。

主要能力

  • 使用共轭梯度法求解投资组合优化,据资料在 n=256 的协方差矩阵上约 816 纳秒,而传统 Neumann 路径约 50 微秒,实测加速 40-60 倍。
  • 固定随机种子下,共轭梯度结果与传统 Neumann 结果差异在 1e-4 以内(||cg − neumann||_∞ < 1e-4)。
  • 协方差矩阵 Σ 由实数收益构造为 Gram 矩阵,天然对称正定(SPD),因此共轭梯度可证明最优,最多 n 次迭代收敛,无需预处理,特征值聚集时通常迭代更少。
  • 支持原生调度与本地回退:适配器探测 globalThis 上的 mcp__ruflo-sublinear__solve,可达时走原生内核,否则透明回退到内嵌的约 50 行 JS 共轭梯度实现,数学结果一致。
  • 产物元数据区分三种方法:cg-sublinear-native、cg-local、neumann-fallback,便于审计。

使用方式

  1. 确保 neural-trader 可用: npm ls neural-trader 2>/dev/null || npm install --ignore-scripts neural-trader

  2. 从 neural-trader 的投资组合 API 读取当前协方差矩阵 Σ 与期望收益向量 μ: npx neural-trader --portfolio current --json 若安装版本不支持 --json,可解析文本输出,或从 AgentDB 拉取: mcp__plugin_ruflo-core_ruflo__memory_search({ query: "covariance matrix current", namespace: "trading-risk", limit: 1 }) 响应需包含 covariance: number[][](n×n)与 expectedReturns: number[](长度 n)。

  3. 当 RUFLO_NEURAL_TRADER_DISABLE_CG 未设置时,通过 SublinearAdapter 求解: import { sublinearAdapter } from '../../src/sublinear-adapter.mjs'; const result = await sublinearAdapter.solveCG(COVARIANCE, EXPECTED_RETURNS, { tolerance: 1e-6, maxIterations: 200 }); 返回字段包括 solution(最优权重)、iterations、residual、latencyMs、method('cg-sublinear-native' | 'cg-local')、solver、degraded。

    原生 MCP 工具的直接调用形式: mcp__ruflo-sublinear__solve({ matrix: COVARIANCE, rhs: EXPECTED_RETURNS, algorithm: "cg", tolerance: 1e-6, maxIterations: 200 }) 输出:{ solution: number[], iterations: number, residual: number }

  4. 回退路径(传统 Neumann):当第 3 步报告 degraded: true(非 SPD 输入、非方阵、MCP 错误)或设置 RUFLO_NEURAL_TRADER_DISABLE_CG=1 时: npx neural-trader --portfolio optimize 记录权重输出,并在产物元数据中标记 method: 'neumann-fallback' 及原因字段。

  5. 将最优权重存入 trading-risk 命名空间,并附带完整溯源元数据(weights、method、solver、iterations、residual、latencyMs、capturedAt、reason)。该命名空间为规范命名空间,长期保留、无 TTL,因为投资组合权重是后续审计追踪的一部分。

  6. 可选交叉校验: mcp__plugin_ruflo-core_ruflo__agentdb_pattern-search({ query: "portfolio weights Sharpe regime:CURRENT_REGIME", namespace: "trading-risk" }) 若新权重中任一资产与历史中位数差异超过 30%,在应用前标记人工复核。这是护栏,不是硬性阻断。

配置标志

  • RUFLO_NEURAL_TRADER_DISABLE_CG=1:完全跳过共轭梯度路径,回退到传统 Neumann 路径,用于 A/B 验证或上游协方差回归破坏 SPD 时。
  • RUFLO_SUBLINEAR_NATIVE=1:强制适配器尝试原生 mcp__ruflo-sublinear__solve 路径,即使 globalThis 未暴露该工具(例如通过不同传输挂载时)。原生调度失败时干净回退到本地 JS 共轭梯度,并在产物元数据中记录 method: 'cg-local',使回归可审计。

适用场景

量化交易与投资组合权重计算,尤其是需要低延迟求解大规模协方差矩阵(如 n=256)的均值-方差优化场景。

限制

  • 依赖 neural-trader 提供协方差矩阵与期望收益向量。
  • 共轭梯度要求输入矩阵对称正定;若输入非 SPD 或非方阵,将触发回退路径。
  • 原生路径目标为 40-60 倍加速(据 sublinear-time-solver@1.7.0,816 纳秒原生 vs 50 微秒 Neumann),但实际可用性取决于原生 MCP 工具是否可达。
  • 验收标准包括:n=256 协方差上本地 JS 共轭梯度延迟 < 1 毫秒;固定种子下与 Neumann 差异 < 1e-4;原生 MCP 不可用或协方差非 SPD 时回退路径干净启用;产物元数据能区分三种方法。

参考

  • ADR-126 Phase 3(本技能的编写 ADR)
  • ADR-123 §162 Row 8(Wedge 8 加速声明)
  • ADR-123 §262-289(SublinearAdapter 契约)
  • plugins/ruflo-neural-trader/src/sublinear-adapter.ts(适配器)
  • plugins/ruflo-neural-trader/benchmarks/portfolio-cg.bench.ts(实测数据)