DSA 深度调研报告
daily-stock-analysis(DSA)深度调研报告
文档类型: 技术调研报告
调研时间: 2026-05-15
调研范围: /opt/vendor/daily-stock-analysis/ 全项目源码
代码总量: ~12,000+ 行 Python(不含前端和测试)
一、项目概览
daily-stock-analysis(简称 DSA) 是一个基于 AI 大模型的 A股/港股/美股自选股智能分析系统。核心能力包括:
- 每日自动分析自选股,生成”决策仪表盘”(一句话核心结论 + 评分 + 买卖点位 + 风险警报)
- 内置 11 种交易策略(缠论、波浪、龙头、情绪周期等),YAML 文件定义,无需写代码
- 多数据源自动 fallback(akshare、efinance、baostock、tushare、yfinance 等 10+ 数据源)
- 多 Agent 协作分析体系(technical → intel → risk → decision)
- 多渠道推送(企业微信、飞书、TG、Discord、Slack、邮件)
- 回测验证系统(对历史分析做事后验证,追踪方向准确率)
技术栈:Python 3.11、FastAPI、SQLAlchemy + SQLite、LiteLLM(多 LLM 适配)、Jinja2(报告模板)
二、架构树
DSA 采用分层架构,从上到下分为:入口层、服务层、核心层、数据层、存储层。
daily-stock-analysis/
├── 入口层(多种调用方式)
│ ├── main.py # CLI 入口(命令行分析、定时任务)
│ ├── server.py # FastAPI 服务入口(端口 8000)
│ ├── analyzer_service.py # 程序化调用封装(可被 import)
│ ├── webui.py # WebUI 入口
│ └── bot/ # 机器人入口(TG/Discord/飞书/钉钉)
│ ├── dispatcher.py # 命令分发器
│ ├── handler.py # 消息处理器
│ ├── commands/ # 命令实现(/ask /analyze /chat 等)
│ └── platforms/ # 平台适配(各聊天平台)
│
├── API 层(RESTful 接口)
│ └── api/v1/endpoints/
│ ├── analysis.py # 股票分析接口
│ ├── agent.py # Agent 策略问答接口
│ ├── history.py # 历史报告查询
│ ├── portfolio.py # 持仓管理接口
│ ├── backtest.py # 回测接口
│ └── system_config.py # 系统配置接口
│
├── 服务层(业务服务)
│ └── src/services/
│ ├── analysis_service.py # 分析服务编排
│ ├── portfolio_service.py # 持仓管理(买卖/成本/分红/拆股)
│ ├── backtest_service.py # 回测服务
│ ├── history_service.py # 历史报告管理
│ ├── report_renderer.py # Jinja2 报告渲染
│ └── social_sentiment_service.py # 社交舆情(美股)
│
├── 核心层(分析引擎)
│ ├── src/core/
│ │ ├── pipeline.py # 分析流水线(1775行,核心中的核心)
│ │ ├── market_review.py # 大盘复盘
│ │ ├── market_strategy.py # 市场策略
│ │ ├── backtest_engine.py # 回测引擎
│ │ ├── trading_calendar.py # 交易日历
│ │ └── config_registry.py # 配置注册表(所有配置项定义)
│ │
│ ├── src/agent/ # Agent 体系
│ │ ├── agents/ # 6个专用 Agent
│ │ │ ├── base_agent.py # 抽象基类(system_prompt + run)
│ │ │ ├── technical_agent.py # 技术面分析(max_steps=6)
│ │ │ ├── intel_agent.py # 情报分析(max_steps=4)
│ │ │ ├── risk_agent.py # 风险评估(max_steps=4)
│ │ │ ├── decision_agent.py # 决策合成(max_steps=3)
│ │ │ └── portfolio_agent.py # 持仓分析
│ │ ├── orchestrator.py # 多 Agent 流水线调度器
│ │ ├── runner.py # ReAct 执行循环
│ │ ├── executor.py # AgentExecutor(单 Agent 模式)
│ │ ├── factory.py # AgentExecutor 工厂(build_agent_executor)
│ │ ├── llm_adapter.py # 多 LLM 适配器(via LiteLLM)
│ │ ├── memory.py # AgentMemory(分析历史 + 校准)
│ │ ├── conversation.py # 会话管理
│ │ ├── skills/ # Skill 系统
│ │ │ ├── router.py # Skill 路由器
│ │ │ ├── skill_agent.py # Skill 执行 Agent
│ │ │ ├── aggregator.py # Skill 意见聚合
│ │ │ └── defaults.py # 默认策略
│ │ └── tools/ # Tool 系统
│ │ ├── registry.py # Tool 注册表
│ │ ├── data_tools.py # 数据工具(行情/K线/筹码/持仓)
│ │ ├── market_tools.py # 市场工具(指数/板块)
│ │ ├── search_tools.py # 搜索工具(新闻/情报)
│ │ ├── analysis_tools.py # 分析工具(趋势/均线/形态)
│ │ └── backtest_tools.py # 回测工具
│ │
│ └── src/analyzer.py # 传统分析器(GeminiAnalyzer,2547行)
│
├── 数据层(多数据源适配)
│ └── data_provider/
│ ├── base.py # DataFetcherManager + BaseFetcher(2500行)
│ ├── akshare_fetcher.py # 东方财富接口(免费)
│ ├── efinance_fetcher.py # 东方财富另一接口(免费)
│ ├── baostock_fetcher.py # baostock(免费)
│ ├── pytdx_fetcher.py # 通达信协议(免费)
│ ├── yfinance_fetcher.py # Yahoo Finance(免费)
│ ├── tushare_fetcher.py # Tushare(免费额度 80次/分钟)
│ ├── tickflow_fetcher.py # TickFlow(付费)
│ └── longbridge_fetcher.py # Longbridge(付费港股/美股)
│
├── 存储层
│ ├── data/stock_analysis.db # SQLite 主数据库
│ └── src/storage.py # SQLAlchemy 模型 + DatabaseManager
│
├── 策略层
│ └── strategies/*.yaml # 11 种策略定义文件
│
└── 配置层
├── .env.example # 完整环境变量配置模板
├── src/config.py # 配置加载器(2581行)
└── src/core/config_registry.py # 配置项注册表(所有配置定义)
三、典型 Query 动线:一次股票分析的全流程
以 analyzer_service.analyze_stock("600519") 为例,代码执行链路如下。
3.1 入口阶段
analyzer_service.analyze_stock(code="600519")
└─→ 创建 StockAnalysisPipeline(config, query_id, query_source="cli")
└─→ pipeline.process_single_stock(code, report_type, query_id, ...)
3.2 数据获取阶段(pipeline.py Step 1-3)
Step 1: 实时行情获取
-
fetcher_manager.get_realtime_quote("600519") - 按优先级遍历所有 fetcher:tushare → efinance → akshare → …(自动 fallback)
- 返回:price、change_pct、volume、turnover、pe、pb 等
Step 2: 历史K线获取
-
fetcher_manager.get_daily_history("600519", days=60) - 优先从 SQLite DB 缓存读取,缺失时调用 fetcher,成功后写入缓存
Step 2.5: 基本面聚合
-
fetcher_manager.get_fundamental_context("600519") - 获取 PE/PB/ROE/营收/净利润等
Step 3: 趋势分析(本地计算,不调用 LLM)
-
trend_analyzer.analyze(df_historical, code) - 计算 MA5/MA10/MA20/MA60、MACD、RSI、布林带
- 判断趋势状态,生成买入信号评分(0-100)
3.3 分支点:Agent 模式判断
use_agent = config.agent_mode # 默认 False
if not use_agent:
configured_skills = config.agent_skills # 默认空
if configured_skills and configured_skills != ["all"]:
use_agent = True # 配置了特定策略时自动启用 Agent 模式
分支 A — 传统分析路径(默认,agent_mode=false)
Step 4: 多维度情报搜索(最多 5 次搜索,新闻/公告/研报/舆情)
Step 5-6: 上下文增强(聚合所有数据到 enhanced_context)
Step 7: AI 分析 — 只调 1 次 LLM
-
analyzer.analyze(enhanced_context, news_context) - 通过 LiteLLM Router 调用配置的 LLM
- LLM 返回 JSON 格式决策仪表盘
分支 B — Agent 分析路径(agent_mode=true)
Step 7’: Agent 分析链路
-
build_agent_executor(config, skills)创建执行器 - 根据 AGENT_ARCH 选择:single(单 Agent ReAct)或 multi(多 Agent 流水线)
Multi-Agent 模式执行流程:
- Stage 1: technical_agent.run() — 技术面分析(最多 6 步 ReAct)
- Stage 2: intel_agent.run() — 情报分析(最多 4 步)
- Stage 3: risk_agent.run() — 风险评估(full/specialist 模式,最多 4 步)
- Stage 3.5: skill_agent.run() — 策略执行(specialist 模式,最多 3 个并行 skill)
- Stage N: decision_agent.run() — 决策合成(无工具权限,纯汇总)
3.4 结果输出阶段
两种路径最终都生成 AnalysisResult:
- dashboard(决策仪表盘 JSON): core_conclusion / data_perspective / intelligence / battle_plan
- sentiment_score(0-100 情绪评分)
- operation_advice(买入/加仓/持有/减仓/卖出/观望)
- confidence_level(高/中/低)
如果配置了 notifier,通过 Matrix/企业微信/飞书/TG/… 推送报告。
四、Skill 系统:自然语言策略引擎
4.1 Skill 是什么
Skill 是 DSA 的”策略能力包”,用 YAML 文件定义交易策略的分析逻辑和判断规则。用户写自然语言即可定义策略,无需写任何代码。
DSA 的 strategies/ 目录与代码中的 skill 是同一概念:代码里叫 skill,用户文档里叫策略。
4.2 Skill 文件结构
以 strategies/dragon_head.yaml(龙头策略)为例:
name: dragon_head # 唯一标识(英文,下划线)
display_name: 龙头策略 # 显示名称(中文)
description: 板块轮动中识别龙头股 # 简短描述
category: trend # 分类:trend/pattern/reversal/framework
core_rules: [2, 7] # 关联核心交易理念编号
required_tools: # 该策略需要使用的工具
- get_realtime_quote
- get_sector_rankings
- search_stock_news
aliases: [龙头, 龙头战法] # 用户可用别名调用
default_priority: 90 # 展示优先级(越小越靠前)
market_regimes: [sector_hot] # 适用市场状态
instructions: |
**龙头策略(Dragon Head Strategy)**
评估标准:
1. 板块领涨地位:使用 get_sector_rankings 检查板块排名...
2. 换手率与动能:使用 get_realtime_quote 检查换手率...
3. 相对强度:对比个股涨跌幅与板块平均值...
4. 新闻催化:使用 search_stock_news 搜索催化剂...
评分调整:
- 确认为龙头股:sentiment_score +10
- 板块轮动期:额外 +5
4.3 Skill 加载机制
SkillManager(src/agent/skills/base.py)负责加载和管理 Skill:
- 系统启动时扫描
strategies/ 目录(或AGENT_SKILL_DIR配置目录) - 解析所有
.yaml文件,构建 Skill 原型对象 - 通过
deepcopy克隆给每个请求使用(线程安全) - Skill 内容以自然语言形式注入 Agent 的 System Prompt
SkillRouter(src/agent/skills/router.py)负责选择适用 Skill:
-
auto模式:根据市场状态(market_regime)自动选择匹配的 Skill -
manual 模式:只使用AGENT_SKILLS配置列表中的 Skill
4.4 Skill 执行流程
- SkillRouter 选择适用 Skill(如缠论策略)
- 创建 SkillAgent(
src/agent/skills/skill_agent.py),封装该 Skill - SkillAgent 的
tool_names 被限制为 Skill YAML 中required_tools声明的子集 - SkillAgent 执行 ReAct 循环,LLM 按 Skill instructions 自主调用所需 Tool
- 输出 Skill 意见(AgentOpinion),注入共享上下文
4.5 Skill 意见聚合
当多个 Skill 同时执行时(specialist 模式最多 3 个并行),SkillAggregator(src/agent/skills/aggregator.py)会:
- 收集每个 SkillAgent 的 AgentOpinion
- 根据历史回测胜率(BacktestService)动态加权
- 合成一份共识意见(consensus),供 decision_agent 使用
4.6 内置 Skill 清单
| Skill ID | 名称 | 分类 | 适用市场状态 | 核心逻辑 |
|---|---|---|---|---|
| bull_trend | 默认多头趋势 | trend | trending_up | 识别多头排列、趋势延续与回踩低吸 |
| ma_golden_cross | 均线金叉 | trend | trending_up | 均线金叉 + 量能确认 |
| volume_breakout | 放量突破 | trend | trending_up | 放量突破阻力位 |
| shrink_pullback | 缩量回踩 | trend | trending_down, sideways | 缩量回踩均线支撑 |
| dragon_head | 龙头策略 | trend | sector_hot | 板块轮动中识别龙头股 |
| emotion_cycle | 情绪周期 | framework | sector_hot | 识别情绪低点与高点,逆情绪布局 |
| chan_theory | 缠论 | framework | volatile | 笔、线段、中枢、背驰 |
| wave_theory | 波浪理论 | framework | volatile | 推动浪与调整浪结构 |
| box_oscillation | 箱体震荡 | framework | sideways | 箱底买入、箱顶减仓 |
| bottom_volume | 底部放量 | reversal | trending_down | 长期下跌后底部放量反转 |
| one_yang_three_yin | 一阳夹三阴 | pattern | - | K线整理形态,趋势延续 |
五、Tool 系统:数据与计算的武器库
5.1 Tool 是什么
Tool 是 DSA 中可被 LLM 调用的数据获取和计算函数。每个 Tool 都是一个 Python 函数,通过 @tool 装饰器或 ToolDefinition 包装后注册到 ToolRegistry。
5.2 Tool 注册与发现
ToolRegistry(src/agent/tools/registry.py)是 Tool 的中央注册表:
# factory.py 中模块级缓存,所有 Agent 共享
_TOOL_REGISTRY = None
def get_tool_registry():
global _TOOL_REGISTRY
if _TOOL_REGISTRY is None:
registry = ToolRegistry()
for tool_fn in (ALL_DATA_TOOLS + ALL_ANALYSIS_TOOLS +
ALL_SEARCH_TOOLS + ALL_MARKET_TOOLS + ALL_BACKTEST_TOOLS):
registry.register(tool_fn)
_TOOL_REGISTRY = registry
return _TOOL_REGISTRY
注册后的 Tool 会被转换为 OpenAI function schema,供 LLM 在 ReAct 循环中调用。
5.3 Tool 分类清单(共 17+ 个)
数据工具 data_tools.py:
-
get_realtime_quote— 实时行情(价格、涨跌幅、量比、PE/PB、市值) -
get_daily_history— 日线 OHLCV 历史数据(含 MA5/10/20) -
get_chip_distribution— 筹码分布(获利比例、平均成本、集中度) -
get_analysis_context— 从数据库获取历史分析上下文 -
get_stock_info— 基本面信息(估值、成长、板块归属) -
get_capital_flow— 主力资金流向(净流入、5日/10日累计) -
get_portfolio_snapshot— 持仓组合快照与风险摘要
分析工具 analysis_tools.py:
-
analyze_trend— 综合技术分析(MA排列、MACD、RSI、乖离率、支撑阻力) -
calculate_ma— 计算任意周期均线(5/10/20/30/60/120/250) -
get_volume_analysis— 量价关系分析(量比、量价配合/背离) -
analyze_pattern— K线形态识别(十字星、锤子线、吞没、双底、箱体等)
搜索工具 search_tools.py:
-
search_stock_news— 搜索个股最新新闻 -
search_comprehensive_intel— 多维度情报搜索(新闻、风险、业绩、行业趋势)
市场工具 market_tools.py:
-
get_market_indices— 大盘指数(上证、深证、沪深300 / 标普、纳指) -
get_sector_rankings— 板块涨幅排行(领涨/领跌板块)
回测工具 backtest_tools.py:
-
get_skill_backtest_summary— Skill 级回测统计 -
get_strategy_backtest_summary— 整体回测统计 -
get_stock_backtest_summary— 个股回测历史记录
5.4 Tool 执行机制
在 ReAct 循环中(src/agent/runner.py):
- LLM 收到 System Prompt + 当前上下文 + Tool 声明列表
- LLM 自主决定调用哪些 Tool(可一次请求多个,并行执行)
- runner 通过 ThreadPoolExecutor 并行执行(最多 5 个并发)
- 工具结果返回给 LLM,LLM 继续推理或给出最终答案
- 缓存机制:相同参数的工具调用会被缓存,避免重复执行
5.5 Agent 工具权限隔离
每个 Agent 可以声明自己需要的 Tool 子集:
class TechnicalAgent(BaseAgent):
agent_name = "technical"
max_steps = 6
tool_names = ["get_realtime_quote", "get_daily_history",
"analyze_trend", "calculate_ma", "get_volume_analysis"]
class DecisionAgent(BaseAgent):
agent_name = "decision"
max_steps = 3
tool_names = [] # 无工具权限,纯合成
BaseAgent.run() 在启动 ReAct 循环前,通过 _filtered_registry() 构建只包含所需 Tool 的临时注册表,实现最小权限原则。
六、Skill 与 Tool 的关系
一句话总结:Skill 是”策略意图”(分析什么、按什么规则判断),Tool 是”数据动作”(获取什么数据、执行什么计算)。
Skill 通过 YAML 描述策略规则,Agent 将 Skill 的 instructions 注入 System Prompt 后,LLM 在 ReAct 循环中自主决定调用哪些 Tool 来获取数据、验证条件,最终按照 Skill 的策略规则生成分析结论。
6.1 核心差异
| 维度 | Skill | Tool |
|---|---|---|
| 本质 | 策略意图 | 数据动作 |
| 载体 | YAML 自然语言文件 | Python 函数 |
| 是否执行代码 | 不执行,仅作为 Prompt 注入 | 执行实际的数据获取/计算 |
| 可扩展方式 | 写 YAML(零代码) | 写 Python 函数 + 注册 |
| 被谁使用 | Agent System Prompt | LLM 在 ReAct 循环中调用 |
6.2 协作流程示例
以”缠论分析 600519”为例:
- SkillRouter 选择
chan_theory.yaml - SkillAgent 创建,tool_names 限制为
[get_daily_history, analyze_trend, get_realtime_quote] - ReAct 执行:
- Step 1: LLM 调用
get_daily_history获取 60 日 K 线 - Step 2: LLM 调用
analyze_trend获取 MACD/RSI - Step 3: LLM 按缠论规则判断背驰 → 调用
get_realtime_quote验证当前价 4. 输出缠论分析结论
七、功能实现清单
| 功能模块 | 实现位置 | 关键文件 |
|---|---|---|
| 实时行情获取 | data_provider | base.py + 各 fetcher |
| 历史K线获取 | data_provider | base.py + 各 fetcher |
| 筹码分布分析 | data_provider | base.py: get_chip_distribution |
| 基本面聚合 | data_provider | fundamental_adapter.py |
| 趋势分析(本地计算) | core | pipeline.py trend_analyzer |
| 新闻/情报搜索 | services | search_service + social_sentiment_service |
| 传统 LLM 分析 | core | analyzer.py GeminiAnalyzer |
| Agent ReAct 分析 | agent | runner.py + orchestrator.py |
| 多 Agent 流水线 | agent | orchestrator.py |
| 决策仪表盘生成 | agent | decision_agent.py |
| 策略系统(Skill) | agent/skills | SkillManager + SkillRouter + SkillAgent |
| 工具系统(Tool) | agent/tools | ToolRegistry + 各 tools 文件 |
| 持仓管理 | services | portfolio_service.py + portfolio_repo.py |
| 回测验证 | core/services | backtest_engine.py + backtest_service.py |
| 交易日历 | core | trading_calendar.py |
| 大盘复盘 | core | market_review.py |
| 报告渲染 | services | report_renderer.py (Jinja2) |
| 历史记录管理 | services | history_service.py |
| 多渠道推送 | notification_sender | 各 sender 文件 |
| FastAPI 服务 | api | server.py + api/v1/endpoints |
| 机器人接入 | bot | dispatcher.py + commands + platforms |
| 数据库管理 | storage | storage.py (SQLAlchemy + SQLite) |
| 配置管理 | core/config | config_registry.py + config.py |
八、DSA 与 financial-team 的架构映射
8.1 功能映射
| financial-team | DSA 对应模块 | 关系 |
|---|---|---|
| router.py(路由分发) | bot/dispatcher.py + api/v1/endpoints | DSA 更完善,支持多平台 |
| expert_runner.py(专家执行) | agent/orchestrator.py + agent/executor.py | DSA 是多 Agent 流水线 |
| strategy.md(策略专家 prompt) | strategies/*.yaml + decision_agent.py | DSA 策略可零代码扩展 |
| research.md(调研专家 prompt) | intel_agent.py + search_service | DSA 有专门情报 Agent |
| risk.md(风控专家 prompt) | risk_agent.py + portfolio_agent.py | DSA 有专门风险 Agent |
| real_tools.py(工具集) | agent/tools/*.py | DSA 工具更丰富(17+ vs 7) |
| memory_manager.py(记忆管理) | agent/memory.py + conversation.py | DSA 有预测校准,但无跨 session 记忆 |
| portfolio.json(持仓数据) | portfolio_service.py + SQLite | DSA 更专业(FIFO/avg/分红/拆股) |
| read_portfolio / write_portfolio | portfolio_repo.py + API | DSA 支持多账户多市场 |
| save_to_siyuan(报告存储) | history_service.py + DB | DSA 有完整历史报告查询 |
| Matrix 推送 | notification_sender/ | DSA 不支持 Matrix,支持其他渠道 |
8.2 架构差异
| 维度 | financial-team | DSA |
|---|---|---|
| 用户隔离 | FT_CALLER + 物理目录隔离 | 无多用户概念,单实例 |
| 对话历史 | conversation_history.jsonl(跨 session) | conversation_manager(单 session) |
| 投资画像 | investment_memory.json(长期) | AgentMemory(分析历史 + 校准) |
| LLM 配置 | 仅 DeepSeek | 15+ 渠道 + 自定义端点 + Ollama |
| 数据源 | 新浪+腾讯+akshare(3个) | 10+ 数据源 + 自动 fallback |
| 策略系统 | 无(纯 prompt) | 11 种 YAML 策略 + 可自定义 |
| 回测验证 | 无 | 有(方向准确率 + 模拟收益) |
| 分析深度 | 单专家单轮 | 多 Agent 协作 + ReAct 多步 |
| 推送渠道 | 仅 Matrix | 企业微信/飞书/TG/Discord/Slack/邮件 |
| 时间感知 | 无(计划修复) | trading_calendar.py(A/H/美股) |
8.3 互补关系
financial-team 的优势:多用户隔离、对话历史、Matrix 推送、OpenClaw 集成
DSA 的优势:数据源丰富、策略系统、多 Agent 分析、决策仪表盘、回测验证
最佳结合方式:financial-team 作为”交互管理层”,DSA 作为”分析引擎层”。
九、关键设计决策与可借鉴点
9.1 双路径分析设计
DSA 同时支持”传统 LLM 直调”和”Agent ReAct”两种分析路径,通过 agent_mode 配置无缝切换:
- 默认走传统路径(成本低,1 次 LLM)
- 需要深度分析时走 Agent 路径(成本高,4-7 次 LLM)
可借鉴:financial-team 的 hunter 也可以设计双路径 — 日常查询走轻量路径,深度分析时启用 Agent 路径。
9.2 多数据源自动 fallback
DataFetcherManager 按优先级排序所有 fetcher,逐个尝试直到成功:
- 实时行情:tushare → tencent → akshare_sina → efinance → akshare_em
- 历史K线:akshare → baostock → yfinance → sina
可借鉴:financial-team 的 get_stock_spot 和 get_stock_history 也可以引入 fallback 机制,避免单点故障。
9.3 自然语言策略(YAML Skill)
用户写 YAML 文件即可定义交易策略,无需写代码。策略内容以自然语言注入 Agent Prompt,LLM 按策略规则自主调用 Tool。
可借鉴:financial-team 的 hunter 也可以支持 YAML 策略文件,让用户(或我们)自定义短线策略规则。
9.4 Agent 工具权限隔离
每个 Agent 声明自己的 tool_names 子集,BaseAgent.run() 在启动 ReAct 循环前过滤注册表,实现最小权限。
可借鉴:financial-team 的 expert_runner 也可以为不同专家分配不同的工具子集(如 research 只能调用 news,strategy 可以调用 technical)。
9.5 模块级缓存 + deepcopy 复用
ToolRegistry 和 SkillManager 原型在模块级别缓存,每个请求通过 deepcopy 克隆,兼顾性能和线程安全。
可借鉴:financial-team 的 prompt 加载也可以引入缓存,避免每次请求都重新读文件。
9.6 决策仪表盘标准化输出
无论走传统路径还是 Agent 路径,最终都输出标准化的 AnalysisResult,包含 dashboard(核心结论/数据透视/情报/作战计划)等结构化字段。
可借鉴:financial-team 的专家输出也可以标准化为类似的结构化格式,便于下游解析和存储。
9.7 回测验证闭环
DSA 支持对历史分析做事后验证,追踪方向准确率和模拟收益。AgentMemory 根据历史准确率自动校准置信度。
可借鉴:financial-team 可以引入类似的回测机制,追踪专家推荐的实际表现,逐步优化策略。