---
source_url: https://docs.dolphindb.cn/zh/mcp/architecture_scope.html
fetched_at: 2026-05-19T09:47:54Z
category: mcp
title: 系统架构和边界
sha1: c90bdf8308569c852db51d29af0c07cdaf34ca1e
---

# 系统架构和边界

本节介绍 Stock MCP 在投研场景下的数据体系及其能力边界，阐明 DolphinDB 数据底座如何支撑 AI 投研能力，以及 Stock MCP
工具在系统中的实际作用与限制。

## 数据体系

本项目数据存储在 DolphinDB
中，包括原始行情数据、财务数据与衍生指标，并面向量化投研场景重新组织成统一的因子化数据体系。该体系以“因子”为核心，将所有宽表结构（如日线、利润表、资产负债表等）的字段抽象为标准化的因子，并存放于结构统一的因子窄表中。同时，结合元数据表与向量语义检索机制，使
AI 能够理解因子含义、进行自然语言映射，并高效检索分析。

### 数据源

当前平台已经接入如下数据内容：

| 一级分类 | 二级分类 | 具体表 |
| --- | --- | --- |
| **沪深股票** | 基础数据 | 股票列表 |
| 每日股本 |
| 股票曾用名 |
| IPO 新股列表 |
| 指数成分和权重 |
| ST股票列表 |
| 行情数据 | 日线行情 |
| 周线行情 |
| 月线行情 |
| 每日指标 |
| 每日涨跌停价格 |
| 每日停复牌信息 |
| 个股资金流向 |
| 行业资金流向 |
| 财务数据 | 利润表 |
| 资产负债表 |
| 现金流量表 |
| 利润表 |
| 资产负债表 |
| 现金流量表 |
| 指数数据 | 基础数据 | 股票列表 |
| 行情数据 | 日线行情 |

### 因子窄表（Narrow Factor Table）

因子窄表以统一格式存放全部指标，仅包含四列核心字段：tradetime、securityid、factorname 和 value。

所有宽表（如日线行情、利润表、资产负债表）中的字段会被转换为上述窄表结构，统一写入因子窄表。

这样做的好处包括：

- 模型无需关心指标来源表
- 查询格式统一（例如：按 securityid + factorname 查询即可）
- 支持上千个因子，表结构依然稳定

例如“净利润”、“ROE”、“市值”、“PB”、“营业收入同比”、均按统一格式记录在因子窄表中。

### 元数据表（Metadata Table）

元数据表记录了每个因子的基本信息，包括因子名和中文描述（如“净利润”、“毛利率”、“滚动市盈率”）。

这让系统能够把用户用自然语言表达的指标需求（比如“净利润”）映射到具体的因子名。

### 向量语义检索（VectorDB）

为了让 AI 能根据自然语言找到最可能的指标，我们将因子的中文描述和对应的 Embedding 向量结合起来，构建了一个语义检索器。

例如，档用户说：“净利润”时，系统会从 5000+ 因子里挑出最相关的 20 个候选：

- net\_profit
- net\_profit\_growth
- pe（市值/净利润）
- roe
- ……

然后再让 AI 基于这些候选做更精确的判断。

这样做的原因很简单：

- 所有因子一次性发送给大模型会超出 Token 限制
- 筛选最相关的候选既提高准确度，也更快、更不容易混淆

### 因子体系的作用

这套体系让 AI 可以稳定地完成三类任务：

- 根据 securityID 查指标（单股票、单指数）
- 按指标筛选股票（构造 WHERE 条件）
- 进行单因子评价和多因子回测（因子名完全一致，便于引用）

简而言之，因子窄表统一了所有指标的存储方式，元数据表和向量检索统一了自然语言理解方式。

这样，AI 才能在整个投研链条里稳定地理解用户的意图，并找到正确的数据。

### 现有的指标名列表

| 指标名 | 指标描述 |
| --- | --- |
| S | 是否停牌（1=是，0=否） |
| circ\_mv | 流通市值（万元） |
| LN | 收盘价的自然对数；常用于对数收益、稳定方差变换 |
| ASI\_26 | 振动升降指标 ASI（M1=26） |
| TRMA\_20\_of\_TRIX | TRIX 的 20 日均线 |
| BR\_26 | BRAR 指标中的 BR（买卖强弱对比） |
| HHV\_10\_close | 收盘价10日滚动最高值（近10日最高收盘价） |
| WR1\_6 | 威廉指标 WR1（N1=6） |
| TAQ\_DOWN\_10 | 唐安奇通道下轨（N=10） |
| turnover\_rate | 换手率（%） |
| dv\_ttm | 股息率（TTM，%） |
| ma\_v\_5 | 5日均量 |
| HHVBARS\_10\_close | 距离近10日滚动最高值的“期数距离”（高点到当前的间隔） |
| DMI\_ADXR\_14\_6 | DMI 的 ADXR（ADX 的再平滑） |
| MAEMV\_9\_of\_EMV | EMV 的 9 日均线 |
| ROC\_12 | 价格变动率（N=12，%） |
| pe\_ttm | 市盈率（TTM） |
| volume\_ratio | 量比 |
| ma\_v\_20 | 20日均量 |
| ma\_v\_50 | 50日均量 |
| up\_limit | 涨停价 |
| star\_market\_board | 是否创业板（1=是，0=否） |
| net\_profit | 净利润 |
| STD\_5\_close | 收盘价5日滚动标准差（短期波动率近似） |
| LLVBARS\_10\_close | 距离近10日滚动最低值的“期数距离”（低点到当前的间隔） |
| WMA\_10\_close | 收盘价10日加权移动平均（越近权重越大） |
| AVEDEV\_10\_close | 收盘价10日平均绝对偏差（另一种波动刻画） |
| MACD\_DEA | MACD 的 DEA 信号线（DIF 的 EMA 平滑） |
| BIAS1\_6 | 乖离率1（与 MA6 的相对偏离，%） |
| DPO\_20\_10\_6 | 区间震荡线 DPO（M1=20，M2=10，M3=6） |
| EXPMA\_N1\_12 | EXPMA 的第一条指数均线（N1=12） |
| net\_profit\_margin | 环比净利润增长率 |
| DIFF\_1\_close | 收盘价与其1期滞后的差分（近似当日价格变动量） |
| DMA\_close\_0\_5 | 动态加权移动平均（alpha=0.5），对收盘价做指数平滑 |
| KDJ\_K | KDJ 指标的 K 值（N=9，M1=3，M2=3） |
| KDJ\_D | KDJ 指标的 D 值 |
| KDJ\_J | KDJ 指标的 J 值（3K-2D，放大震荡） |
| BOLL\_UPPER\_20\_2 | 布林带上轨（N=20，P=2） |
| PSYMA\_6\_of\_PSY12 | PSY 的 6 日均线（M=6） |
| DMI\_ADX\_14\_6 | DMI 的 ADX（趋势强度，不分方向） |
| TAQ\_UP\_10 | 唐安奇通道上轨（N=10） |
| TAQ\_MID\_10 | 唐安奇通道中线（N=10） |
| MTM\_12 | 动量 MTM（CLOSE - REF(CLOSE,12)） |
| pct\_chg | 涨跌幅（%） |
| close | 收盘价 |
| change | 涨跌额 |
| ma50 | 50日均价 |
| down\_limit | 跌停价 |
| pb | 市净率（总市值/净资产） |
| ps | 市销率 |
| MAX\_CO | 逐元素比较收盘价与开盘价，取较大者（当日高位代表性近似） |
| MIN\_CO | 逐元素比较收盘价与开盘价，取较小者（当日低位代表性近似） |
| SUM\_5\_vol | 成交量5日滚动求和（短期累计成交量） |
| EMA\_10\_close | 收盘价10日指数移动平均（更重视近端数据） |
| SLOPE\_11\_close | 收盘价在11日窗口的一元线性回归斜率（趋势强弱） |
| MADPO\_6\_of\_DPO | DPO 的 6 日均线 |
| EXPMA\_N2\_50 | EXPMA 的第二条指数均线（N2=50） |
| list\_days | 上市天数 |
| pre\_close | 昨收盘价 |
| amount | 成交额（千元） |
| adj\_factor | 复权因子 |
| free\_share | 自由流通股本（万股） |
| vol | 成交量（手） |
| ST | 退市风险标记（0=非ST，无退市风险；1=ST，有退市风险） |
| is\_down\_limit | 是否跌停（1=是，0=否） |
| POW\_2 | 收盘价的平方（N=2 的 POW），用于二次变换或方差相关计算 |
| WR\_10 | 威廉指标 WR（N=10） |
| BIAS2\_12 | 乖离率2（与 MA12 的相对偏离，%） |
| BIAS3\_24 | 乖离率3（与 MA24 的相对偏离，%） |
| PSY\_12 | PSY 心理线（N=12），统计近 N 日上涨天数占比 |
| TRIX\_12\_20 | TRIX 三重指数平滑的变化率（%）（M1=12, M2=20） |
| DFMA\_DIF\_10\_50\_10 | DFMA 的差值线 DIF（MA10 - MA50） |
| MASS\_9\_25 | 梅斯线 MASS（N1=9，N2=25） |
| MAMASS\_6 | MASS 的6日均线 |
| MAROC\_6 | ROC 的6日均线 |
| debt\_ratio | 资产负债率 |
| is\_up\_limit | 是否涨停（1=是，0=否） |
| MA\_10\_close | 收盘价10日简单移动平均（短期均线） |
| BOLL\_LOWER\_20\_2 | 布林带下轨（N=20，P=2） |
| AR\_26 | BRAR 指标中的 AR（M1=26） |
| pe | 市盈率（总市值/净利润） |
| ps\_ttm | 市销率（TTM） |
| dv\_ratio | 股息率（%） |
| total\_mv | 总市值（万元） |
| ABS | 收盘价的绝对值（常用于差值/收益等中间量） |
| SMA\_10\_1\_close | 收盘价的通达信风格平滑均线（N=10，M=1 的 SMA） |
| MACD\_BAR | MACD 柱线（(DIF-DEA)\*2），正负反映多空强弱 |
| EMV\_14 | EMV 简易波动（N=14） |
| MTMMA\_6 | MTM 的6日均线 |
| ma20 | 20日均价 |
| turnover\_rate\_f | 换手率（自由流通股） |
| REF\_1\_close | 收盘价向后平移1期（上一交易日的收盘价） |
| LLV\_10\_close | 收盘价10日滚动最低值（近10日最低收盘价） |
| DMI\_MDI\_14\_6 | DMI 指标的 MDI |
| DFMA\_DIFMA\_10\_50\_10 | DFMA 的 DIF 平滑线（M=10） |
| total\_share | 总股本（万股） |
| high | 最高价 |
| main\_board | 是否主板（1=是，0=否） |
| chi\_next\_board | 是否科创板（1=是，0=否） |
| ROE | 净资产收益率 |
| SQRT | 收盘价平方根；用于尺度变换 |
| FORCAST\_12\_close | 收盘价在12日窗口的一元线性回归预测值（线性外推） |
| MACD\_DIF | MACD 的 DIF 线（快慢 EMA 之差，SHORT\_=12，LONG\_=26，M=9） |
| BOLL\_MID\_20 | 布林带中轨（MA20） |
| DMI\_PDI\_14\_6 | DMI 指标的 PDI（M1=14，M2=6） |
| ASIT\_10\_of\_ASI | ASI 的10日均线（M2=10） |
| open | 开盘价 |
| low | 最低价 |
| ma5 | 5日均价 |
| float\_share | 流通股本(万股) |

## 能力边界

Stock MCP 工具能帮助用户在投研工作中完成因子查询、选股和回测配置生成等任务，但每类场景有明确的能力边界。以下按四个主要场景说明 MCP 的能力与限制。

### 场景一：股票 / 指数信息查询

快速获取单只股票或指数的各类指标和基础信息，MCP 会自动理解用户意图，将自然语言映射到对应因子。

**功能范围**

- 通过股票代码或名称获取该股票的：
  - 基础信息（行业、市值、上市日期等）
  - 行情信息（多频行情）
  - 财务指标（利润表 / 资产负债表 / 现金流量表）
  - 每日指标（估值、成长、盈利能力、风险指标等）
- 通过指数代码查询：
  - 指数基本信息
  - 指数日线行情
- 结合元数据表自动识别用户意图：例如，用户说“给我看下茅台的盈利能力”，系统自动选出净利润、ROE、毛利率等相关因子

**功能限制**

无法跨标的自动聚合或推断多个指标：例如：“给我总结 A 股盈利能力最强的行业”属于统计任务，不在该查询范围。

### 场景二：按指标筛选股票（选股工具）

使用自然语言筛选股票，Stock MCP 会将条件映射到具体因子，并返回符合条件的股票列表，支持共享表写入方便后续回测。

**功能范围**

- 根据用户提供的自然语言筛选条件，通过元数据表找到对应因子：

  例如“选 PB 小于 1 且 ROE 大于 10% 的股票”，系统会自动映射到
  pb、roe 因子
- 支持的筛选维度包括：
  - 指标条件（filter\_expr）
  - 行业过滤（industry）
  - 指数成分过滤（base\_index：CSI 1000 / SZ50 / HS300）
  - 时间区间过滤
  - 必要因子校验（factors 列表与表达式匹配）
- 返回内容：
  - 符合条件的股票列表
  - 选股数量
  - 写入共享内存表（用于后续回测）
- 统一因子频率为日频，与因子窄表自然对齐

**功能限制**

- 不支持连续满足条件的选股逻辑
  - “过去一周每天市值都 > 100 亿”
  - “连续 20 天收盘价 > MA20”

    当前仅支持：
  - “过去一周至少一天市值 > 100 亿”
- 不支持月频/周频因子的筛选

  例如财报类因子 yoy、qoq 不支持直接出现在 filter\_expr 中
- 不支持自然语言自动推断因子本体，例如：“找增速快的股票”，必须提供可解析的条件（如 net\_profit\_growth > 0）
- 不支持跨市场/跨指数组合筛选：同一条规则仅在一个指数成分池或行业内执行

### 场景三：单因子评价（因子测试）

对单个因子进行全面评价，包括因子收益、分层收益和行业分组回测等，用于验证因子有效性。

**功能范围**

- 支持对任意单个因子进行全面评价，包括：
  - 因子收益（RankIC、PearsonIC）
  - IC 分布与稳定性
  - 分层收益
  - 多空组合收益
  - 行业分组回测
- 支持自定义持有期（holdingPeriod）
- 支持行业过滤
- 支持任意时间区间（历史数据完备）

**功能限制**

- 不支持多因子联合 IC 或多因子组合排序评价：单因子评价必须只有一个因子名
- 不支持分钟级或高频因子测试：当前全部因子均为日频
- 不自动推断因子归一化方式/收益计算方式：需要明确给定因子名称，winsorize、zscore、neutralize 需用户明确

### 场景四：多因子策略回测（回测配置生成）

使用自然语言描述多因子策略，Stock MCP 会生成完整的回测配置，便于后续直接运行回测。

**功能范围**

- 根据用户输入的自然语言策略要求生成完整回测配置，包括：
  - 回测基础设定（日期、初始资金、benchmark）
  - 多因子列表（factors）
  - 因子权重
  - 仓位规则（如 max\_stocks、equal/score 加权）
  - 调仓规则（按周几、最少持有天数）
  - 交易规则（手续费率）
  - 股票池来源（选股工具生成的共享表）
- 自动生成唯一回测 ID 并写入回测配置
- 检查所有参数合法性并返回完整配置 JSON

**功能限制**

- 不运行回测，也不计算回测收益：MCP 只生成配置，不执行回测
- 不自动推断因子、权重、调仓频率：用户必须明确告诉 MCP 使用哪些因子与权重。
- 不支持除了日频多因子选股策略之外的复杂交易逻辑策略，如：
  - 趋势过滤
  - 动态仓位（如凯利比例）
  - CTA / 高频策略
