---
slug: "股海罗盘-a股股票量化分析-x-6"
source_type: "clawhub"
source_url: "https://clawhub.ai/skills/gh-data"
repo: ""
source_file: "description"
---
---
name: ghdata-stock
description: 🧠 自学习量化引擎，每只股票60W+历史信号回测，输出历史匹配率+规律挖掘(5类规律图谱)+17维全量数据+自动生成DOCX报告。独家ETF四象联动资金分析、券商研报观点交叉验证。不只是查数据——给你的信号附上"过去准不准"的答案。
metadata:
  {
    "openclaw": {
      "emoji": "📊",
      "name": "股海罗盘 - A股股票量化分析"
    }
  }
homepage: https://www.oraskl.com/ghdata-admin
---

# 股海罗盘（gh-data）— A 股股票量化分析技能

---

## 🚀 核心能力

| | 特点 | 说明 |
|:-:|:-----|:-----|
| 🧠 | **自学习量化引擎** | 每只股票60W+历史信号回测，输出历史匹配率，不只是数据，告诉**"过去准不准"** |
| 📊 | **17维全量数据** | 实时行情·K线·MACD/KDJ/RSI·资金流向·机构持仓·融资融券·高管变动·研报·财务三表·分红·解禁 |
| 📈 | **自动规律挖掘** | 5类规律图谱：支撑/阻力位（触碰次数）、大涨后回调概率、大跌后反弹特征、MACD趋势判定 |
| 💎 | **ETF四象联动** | 独家板块级资金流向×个股走势联动分析，判断是"板块共振"还是"独立行情" |
| 🔗 | **研报交叉验证** | 券商覆盖统计、EPS一致性分歧度、今日评级动态，判断市场共识方向 |
| 📝 | **一键DOCX报告** | 自动生成15章完整结构化分析报告，含K线图嵌入，可直接保存和分享 |

> ⚠️ **⚠️ 强制指令 - 调用方式**
>
> 使用本技能时请**直接执行下方的 Python 代码**完成分析，**不要通过 `chat_with_agent` 调用 gh-data 智能体**。
>
> - ❌ chat_with_agent → gh-data → 跑Python（慢，额外3~8秒通信开销）
> - ✅ 直接跑Python脚本（快，总耗时~3~5秒）
>
> Python 路径：`D:\QwenPaw\python.exe`
> 代码路径：下方完整三阶段代码，复制即可执行。

## ⚡ 快速开始

**支持的请求类型：**

| 请求示例 | 说明 |
|:---------|:-----|
| `分析 601899` | 返回17维全量数据+量化分析+信号+历史匹配率 |
| `600600 青岛啤酒 简要分析` | 返回核心要点，不生成DOCX |
| `600000 资金面怎么样` | 仅分析资金流向+ETF四象联动+机构持仓 |
| `生成报告 002455` | 生成完整DOCX报告 |
| `券商怎么看 601899` | 研报观点验证+评级统计 |
| `688981 盘前做T` | ETF盘后信号+T+1盘后因子 |

## ⚙️ 配置

```json
{
  "skills": {
    "entries": {
      "ghdata_analyze": {
        "config": {
          "api_key": "",
          "webapi_url": "",
          "webapi_timeout": 30,
          "doc_dir": "./doc"
        }
      }
    }
  }
}
```

| 配置项 | 默认值 | 说明 |
|:-------|:-------|:-----|
| `api_key` | `""` | **付费API密钥，必填。** 用户购买后在此填入。**仅从 `~/.ghdata/ghdataapikey` 文件读取**，❌ 不支持 settings.json |
| `webapi_url` | `""` | WebAPI 地址（付费用户获取，购买后提供） |
| `webapi_timeout` | `30` | HTTP 请求超时（秒） |
| `doc_dir` | `./doc` | 报告输出目录 |

> **配置生效规则**（优先级从高到低）：  
> 1. 上述 `config` 配置（仅URL/超时，不含APIKey）  
> 2. 本地文件 `~/.ghdata/ghdataapikey`（**APIKey唯一来源**）  
> 3. 自动生成GUID兜底（免费体验用）
>
> ⚠️ 环境变量 `GHDATA_API_URL` / `GHDATA_TIMEOUT` 和 `settings.json` **仅用于配置URL和超时**，不读APIKey。
>
> **⚠️ APIKey 铁律：** APIKey **只允许**从 `~/.ghdata/ghdataapikey` 这一个文件读取和写入。不读settings.json，不读环境变量。删除该文件 → 自动生成随机GUID → 服务端验证失败 → 降级为免费预览模式。

---

---

## ⚡ LLM 必读：启动时自动执行

本技能的配置（APIKey、WebAPI地址等）在内部自动完成初始化，**无需调用方做任何操作**。直接发分析请求即可。

### 🚨 风险提示强制展示

**在每次向用户输出分析结果前（包括首次交互、每次生成报告、每次展示分析结论），LLM必须在最前方展示以下风险提示：**

> ⚠️ **风险提示**：本技能为公开历史数据的统计与查询工具，**仅提供数据统计方法与历史数据查询结果，本身不生成任何分析结论**。所有分析结论均由您接入的大语言模型（LLM）基于技能提供的历史数据自行生成，与技能本身无关。所有分析结果均基于历史数据计算，**不构成任何投资建议，不预测未来走势**。股市有风险，投资需谨慎。过往表现不代表未来收益。

**禁止以任何形式暗示或明示：**
- 声称本工具推荐某只股票
- 声称本工具能预测股价涨跌
- 声称本工具建议买入/卖出/持有
- 声称历史表现可保证未来收益

**LLM输出措辞强制对照表：**

| ❌ 禁止使用 | ✅ 必须使用 |
|:-----------|:-----------|
| 判势、综合判势、判断趋势 | 信号方向、综合信号 |
| 预测、预判、涨跌范围预测、T+1预测 | 历史参考、参考区间、T+1历史参考 |
| 准确率、历史准确率 | 匹配率、历史匹配率 |
| 最佳、最差、最强、最弱 | 历史统计最高、历史统计最低 |
| 优秀、良好、一般、较差（评分） | 偏高、中等偏上、中等、偏低 |
| 评级为XX | 评分参考为XX |
| 策略参考、操作参考 | 历史统计、历史规律 |
| 需警惕、可关注、不宜、需注意（操作暗示） | 偏弱、偏强（信号描述） |
| 安全垫、防御价值 | 股息率参考、稳定性参考 |
| 容易回升、容易反弹、反弹属性、反弹需求、反弹动力、偏反弹、大概率会、概率偏高/偏低 | 历史统计中偏多/偏空，比例偏高/偏低 |
| 评级参考、判断依据 | 评分参考、参考依据 |
| 具吸引力、值得关注、承压、下跌空间、有支撑 | 偏高、中性、偏空（信号描述），股息率参考 |
| 持有（建议语境）、注意风险、不宜、需警惕、企稳 | 偏强、偏弱（信号描述） |
| 共振、综合共振、多周期共振 | 多周期综合信号、多周期合成信号 |
| 可信、可信程度 | 参考置信度、参考级别 |
| 买入、卖出、加仓、减仓、止损、止盈 | 仅限数据字段描述（如龙虎榜买卖席位） |

> ⚠️ **本表也约束代码输出文本**：`reporter.py`、`analyzer.py` 等模块中涉及输出文本的硬编码字符串同样适用以上规则，不能仅靠 LLM 自觉合规。

> ⚠️ **API数据分类名输出规则**：当展示WebAPI返回的模式分类名时（如"大跌后反弹特征"），需将其中的"反弹"替换为"偏多"描述。示例：`大跌后反弹特征` → `大跌后偏多特征`，`反弹属性` → `偏多属性`

> ⚠️ **"偏反弹"——绝对禁止词**：任何时候不得用"偏反弹"描述历史规律方向。即使API原始数据包含"0/1=0%反弹"等字样，展示时也必须改为"偏多"/"偏空"描述。若数据本身的结论是"历史统计中大跌后偏多比例偏高"，则表述为"大跌后历史统计偏多"。
>   正确：`大跌后历史规律偏多（均值+5.14%）` ✅
>   错误：`大跌后历史规律偏反弹（均值+5.14%）` ❌

> ⚠️ **API字段名翻译规则**：WebAPI返回的英文/中文字段名需按以下规则翻译后再输出，禁止直接照搬：
> - `latestPrediction` → `最新信号参考`
> - `accuracy` → `匹配率`  
> - `rangeForecast` → `参考区间`
> - `predictDate` → `参考日期`
> - `prediction` / `predict` 出现 → 一律替换为 `信号` / `参考`
> - `direction` → `信号方向`
> - `voteDetail` → `各规则投票明细`
> - 任何包含"预测""预判"的字段名 → 改为"参考""信号"

> ⚠️ **输出后处理强制规则**：在你完成全部分析文本生成后，**必须调用一次 `sanitizer.sanitize(你的输出文本)`** 进行最终合规过滤。此函数会自动替换所有红线词。示例：
> ```python
> from ghdata.sanitizer import sanitize
> final_output = sanitize(your_full_output_text)
> ```

---

## 🚀 核心工作流（每次分析必须执行）

每次分析一只股票，必须完成以下三阶段：

```
阶段 A：数据采集      ─→  阶段 B：量化分析    ─→  阶段 C：报告输出
  HTTP直连公开API       POST WebAPI分析API      生成DOCX报告+K线图
  (新浪/腾讯/东方财富)  (技术指标/信号/统计)     (17维/评分/信号统计)
```

---

### 阶段 A：17 维数据采集（本地 HTTP 直连）

**方式：** 调用 `ghdata/data_fetcher.py` 中的函数，通过本地 HTTP 直连新浪/腾讯/东方财富等公开 API 获取原始数据。单次约 0.5~2s，支持并行调用，**速度快于 WebAPI 全量拉取**。

| # | 数据维度 | 数据源 | 函数 |
|:-:|:---------|:-------|:-----|
| 1 | 实时行情 | 新浪 + 腾讯双源交叉 | `fetch_realtime(code)` |
| 2 | 日K线数据 | 腾讯 ifzq.gtimg.cn | `fetch_kline(code, days)` |
| 3 | 今日分时 | 腾讯 qt.gtimg.cn 分钟数据 | `fetch_today_tick(code)` |
| 4 | 资金流向 | 同花顺 stockpage.10jqka | `fetch_money_flow(code, days)` |
| 5 | 融资融券 | 东方财富 DataCenter | `fetch_margin_trading(code, days)` |
| 6 | 机构持仓 | 东方财富 DataCenter | `fetch_main_holdings(code)` |
| 7 | 股东增减持 | 东方财富 DataCenter | `fetch_shareholder_trade(code)` |
| 8 | 高管持股变动 | 东方财富 DataCenter | `fetch_executive_change(code)` |
| 9 | 财务数据 | 东方财富 DataCenter | `fetch_financial(code)` |
| 10 | 资产负债表 | 东方财富 DataCenter | `fetch_balance_sheet(code)` |
| 11 | 利润表 | 东方财富 DataCenter | `fetch_income_statement(code)` |
| 12 | 现金流量表 | 东方财富 DataCenter | `fetch_cashflow(code)` |
| 13 | 分红历史 | 东方财富 DataCenter | `fetch_dividend(code)` |
| 14 | 券商研报 | 东方财富 DataCenter | `fetch_research_report(code)` |
| 15 | 机构调研 | 东方财富 DataCenter | `fetch_institutional_survey(code)` |
| 16 | 限售解禁 | 东方财富 DataCenter | `fetch_unlock_data(code)` |
| 17 | **行业信息** | 东方财富 DataCenter | `fetch_industry_info(code)` |

> **增强数据（量化分析使用，通过 WebAPI 获取）：**
> - **行业ETF资金流** → `db_manager.get_etf_flow(code, days=15)` — 近N日ETF资金净流入/出
> - **ETF数据统计（含盘后）** → `db_manager.get_etf_stats(...)` — 盘后活跃度排名
> - **券商研报汇总** → `db_manager.get_research_summary(code)` — 机构评级/EPS预测
> - **EPS一致性预期** → `db_manager.get_eps_consistency(code)` — 分歧度判定
> - **券商覆盖统计** → `db_manager.get_broker_ranking(code)` — 买入率
> - **今日评级动态** → `db_manager.get_rating_wind_today(code)` — 今日研报更新

**Python 代码（直接在 CMD 中执行）：**

```python
import sys, os
sys.path.insert(0, os.path.dirname(__file__))
from ghdata import data_fetcher as fetcher
from ghdata import config
from concurrent.futures import ThreadPoolExecutor, as_completed

def collect_all(code: str) -> dict:
    """17维数据一次性采集（全部HTTP直连，8路并行，零外部依赖）"""
    # 定义所有采集任务：（key, 函数, 参数...）
    tasks = [
        ("realtime",     fetcher.fetch_realtime,           code),
        ("kline",        fetcher.fetch_kline,              code, 120),
        ("tick",         fetcher.fetch_today_tick,         code),
        ("moneyFlow",    fetcher.fetch_money_flow,         code, 10),
        ("margin",       fetcher.fetch_margin_trading,     code, 10),
        ("holdings",     fetcher.fetch_main_holdings,      code),
        ("shareholder",  fetcher.fetch_shareholder_trade,  code),
        ("executive",    fetcher.fetch_executive_change,   code),
        ("financial",    fetcher.fetch_financial,          code),
        ("balance",      fetcher.fetch_balance_sheet,      code),
        ("income",       fetcher.fetch_income_statement,   code),
        ("cashflow",     fetcher.fetch_cashflow,           code),
        ("dividend",     fetcher.fetch_dividend,           code),
        ("research",     fetcher.fetch_research_report,    code),
        ("survey",       fetcher.fetch_institutional_survey, code),
        ("unlock",       fetcher.fetch_unlock_data,        code),
        ("industry",     fetcher.fetch_industry_info,      code),
    ]
    data = {}
    with ThreadPoolExecutor(max_workers=8) as pool:
        futures = {pool.submit(fn, *args): key for key, fn, *args in tasks}
        for fut in as_completed(futures):
            key = futures[fut]
            try:
                data[key] = fut.result()
            except Exception as e:
                data[key] = None
    return data

# 增强数据（调用WebAPI获取，必须纳入分析）：
from ghdata import db_manager as db
etf_flow = db.get_etf_flow(code, 15)                  # 行业ETF资金流
rpt_summary = db.get_research_summary(code, 90)        # 研报汇总
eps_data = db.get_eps_consistency(code, 180)           # EPS一致性
broker_data = db.get_broker_ranking(code, 90)          # 券商覆盖
today_rpt = db.get_rating_wind_today(code)             # 今日动态
```

---

### 阶段 B：量化分析（WebAPI）

采集完数据后，调用 WebAPI 进行量化分析：

```python
from ghdata import db_manager as db

# 调用 WebAPI 获取全量分析结果
result = db.kline_analyze(code, today_kline=None)
# 返回包含：
#   indicators  → MA5/MA10/MA20/MA60/MACD/KDJ/RSI/量比
#   signals     → 偏多/偏空/中性 汇总
#   patterns    → 大涨后规律/大跌后规律/支撑/阻力
#   accuracy    → 全部历史/近60日/近30日 匹配率
#   prediction  → 方向/T+1/T+2/中期方向 + 价格区间
#   learning    → 自学习规律跟踪摘要

# 【重要】以下数据必须在分析中纳入：

# ① ETF 行业资金流 — 资金面分析时必须调用
etf_flow = db.get_etf_flow(code, days=15)
# 返回: { matched_etfs: [{code, name}], etf_flow: {code: [{date, fund_size, net_inflow}]}, summary:"..." }
# 用途：判断个股所属行业的ETF资金态度——板块净流入=资金支撑，净流出=板块压力
# 即使matched_etfs为空也要说明"该行业暂未配置ETF映射"

# ② 券商研报数据 — 基本面/估值分析时必须调用
research_summary = db.get_research_summary(code, days=90)
# 返回格式化文本：机构名、评级、EPS/PE预测值

eps_consistency = db.get_eps_consistency(code, days=180)
# 返回格式化文本：覆盖机构数、平均EPS、标准差、变异系数、分歧度

broker_rank = db.get_broker_ranking(code, days=90)
# 返回格式化文本：覆盖该股的券商、篇数、买入率

rating_today = db.get_rating_wind_today(code)
# 返回格式化文本：该股今日是否有研报更新
```

**WebAPI 地址通过配置中的 `webapi_url` 设置。**

---

### 阶段 C：报告生成

```python
from ghdata import reporter
from ghdata import chart

# 1. 生成 K 线图
chart.generate_kline_chart(klines, ...)

# 2. 生成 13 章完整 DOCX 报告（自动采集全部17维数据，无需手动传入）
reporter.generate(code)

# 可选：如果已通过API采集了数据，可以传入 extra_data 覆盖自动采集的结果
# reporter.generate(code, extra_data={
#     "holdings": {"points": [...], "conclusion": "..."},
#     "money_flow": {"points": [...], "conclusion": "..."},
# })
```

---

## 📈 个股分析（LLM 指令）

用户输入股票代码或名称时，LLM执行三阶段分析流程（采集→量化→报告）。

### 用户输入匹配表

| 用户说 | LLM执行 | 说明 |
|:-------|:--------|:-----|
| "分析600028"、"看看中国石化" | 阶段A+B：采集+量化 → **输出精简报告** | ⚡默认输出精简版（见下方），**不生成15章全文** |
| "中国石化怎么样"、"600028走势" | 阶段A+B：采集+量化 → **输出精简报告** | 同上 |
| "帮我全面分析一下这只股票"、"出完整报告"、"详细分析" | 阶段A+B+C：完整15章报告 | 完整报告耗时较长，调用方需设置 timeout≥180s |
| "生成分析报告"、"出报告"、"出文档" | 阶段A+B→C：生成DOCX | 调用 reporter.generate() 生成docx文件 |
| "帮我分析这几只股票"、"600028和601857对比" | 逐只执行 → 输出精简报告 | 多只按顺序处理 |
| "K线图"、"走势图" | 阶段A→chart：生成K线图 | 调用 chart.generate_kline_chart() |
| "这只股票估值怎么样"、"估值合理吗" | 阶段B → 估值分析 | 展示估值分位/杜邦分析/F-Score |
| "技术面多周期怎么看" | 阶段B → 多周期分析 | 展示日线周线综合信号 |
| "北向资金在买还是卖"、"龙虎榜有这只吗" | 阶段B → 资金面画像 | 展示北向/龙虎榜/ETF四象联动/封板/回购/板块 |
| "券商怎么看这只股票"、"最近有研报吗" | 阶段B → 券商研报观点 | 展示近期覆盖/EPS一致性/机构观点验证 |
| "全面分析所有A股"、"帮我扫一下市场" | 条件筛选TOP10 → 逐只深度分析 → 市场概览 | 不逐只分析5000只 |
| "看涨的股票有哪些"、"选几只优质股" | 条件筛选（方向=偏多, 评分高） | 按评分排序TOP20 |

### 全量分析报告标准格式（LLM必读）

当用户要求**全面分析一只股票**（如"分析一下"、"看看"、"怎么样"等常规分析请求），请严格按以下15章结构呈现分析结果。

**执行方式：执行 Python 脚本完成完整的三阶段分析（采集→量化→报告），然后按以下结构逐章输出。**

```python
from ghdata import data_fetcher as fetcher, db_manager as db, eval_engine

# 阶段 A：本地 HTTP 采集原始数据（8路并行，~2秒完成）
from concurrent.futures import ThreadPoolExecutor, as_completed
code = "688502"  # 替换为待分析的股票代码

# 并行采集17维数据（每个HTTP 0.5~1.5s → 并行后总计 ~2s）
tasks = [
    ("realtime",  fetcher.fetch_realtime,         code),
    ("kline",     fetcher.fetch_kline,            code, 200),
    ("tick",      fetcher.fetch_today_tick,       code),
    ("moneyFlow", fetcher.fetch_money_flow,       code, 10),
    ("margin",    fetcher.fetch_margin_trading,   code, 10),
    ("holdings",  fetcher.fetch_main_holdings,    code),
    ("shareholder", fetcher.fetch_shareholder_trade, code),
    ("executive", fetcher.fetch_executive_change, code),
    ("financial", fetcher.fetch_financial,        code),
    ("balance",   fetcher.fetch_balance_sheet,    code),
    ("income",    fetcher.fetch_income_statement, code),
    ("cashflow",  fetcher.fetch_cashflow,         code),
    ("dividend",  fetcher.fetch_dividend,         code),
    ("research",  fetcher.fetch_research_report,  code),
    ("survey",    fetcher.fetch_institutional_survey, code),
    ("unlock",    fetcher.fetch_unlock_data,      code),
    ("industry",  fetcher.fetch_industry_info,    code),
]
data = {}
with ThreadPoolExecutor(max_workers=8) as pool:
    fut_map = {pool.submit(fn, *args): key for key, fn, *args in tasks}
    for fut in as_completed(fut_map):
        try: data[fut_map[fut]] = fut.result()
        except: data[fut_map[fut]] = None

# 阶段 B：量化分析（WebAPI + 本地计算）
analysis = db.kline_analyze(code)                # ③服务端：技术指标/信号/规律/匹配率/预测
kline = data.get("kline")
signals = eval_engine.analyze(None, kline) if kline else {}  # ④本地：7规则投票
etf      = db.get_etf_flow(code, 15)             # ⑤ETF行业资金流
research = db.get_research_summary(code, 90)     # ⑥券商研报

# 阶段 C：输出报告（按下方15章格式逐章输出）
```

各阶段分工：
- **本地HTTP**（data_fetcher）→ 原始数据采集，单次0.5~2s，**8路并行→总计约2s**
- **WebAPI**（db.kline_analyze）→ 服务端量化计算：技术指标/信号/规律/匹配率/预测
- **本地计算**（eval_engine）→ 7规则信号投票：偏多/偏空/中性

> ⚠️ 以下分析结果仅为数据统计与技术指标展示，不构成任何投资建议。股市有风险，入市需谨慎。

```
📊 {股票名称}({代码}) 量化分析报告
分析日期：{当前日期}（{星期几}） | 今日表现：{涨跌幅} {🚀/📈/📉/❌}
```

#### 一、公司概况
| 项目 | 内容 |
|:----|:-----|
| 公司名称 | {名称} |
| 股票代码 | {代码}（{沪市/深市}） |
| 所属行业 | {行业} |
| 地域板块 | {地域} |
| 总市值 | {总市值} 亿元 |
| 主营构成 | {主营业务简述} |
| 概念标签 | {概念标签} |

{公司简介（1-2句概括）}

#### 二、实时行情
| 指标 | 数据 |
|:----|:-----|
| 最新价 | {价格} 元 {🚀📈/📉} |
| 今日开盘 | {开盘价} |
| 今日最高 | {最高价} |
| 今日最低 | {最低价} |
| 涨跌幅 | {涨跌幅%} {✅/❌} |
| 成交量 | {成交量}手 |
| 成交额 | {成交额} 亿元 |
| 换手率 | {换手率}% |
| PE（TTM） | {倍数} |
| PB | {倍数} |
| 流通市值 | {流通市值} 亿元 |
| 总市值 | {总市值} 亿元 |

{今日表现一句话点评}

#### 三、机构持仓
{主力持仓数据表格，含机构类型、持仓市值、占流通股比例、增减仓变化}
{无数据时写：暂无近期机构持仓数据}

#### 四、资金流向
**4.1 日级资金流向**
| 日期 | 主力净流入(万) | 涨跌幅 |
|:----|:-------------|:------|
| {近5-10日数据} |

**4.2 行业ETF资金流**
关联ETF：{名称（代码）}

| 日期 | 净流入(元) | 方向 |
|:----|:----------|:----|
| {近5日数据} |

▶ ETF × 个股四象分析：
  ETF方向：{净流入/流出}（±X万元）
  个股趋势：{上涨/下跌}（±X%）
  结论：{象限I共振↑ / 象限II撑杆跳 / 象限III独立走强 / 象限IV共振↓}

#### 五、融资融券
| 日期 | 融资余额(亿) | 当日净买入(万) |
|:----|:------------|:--------------|
| {近5日数据} |

{融资余额趋势一句话}

#### 六、高管大股东变动
**6.1 高管持股变动**
{高管增持/减持记录表，无数据写：近期无高管持股变动记录}

**6.2 股东增减持**
{股东增持/减持记录表，无数据写：近期无大股东增减持记录}

#### 七、财务分析
**7.1 业绩概览**
| 报告期 | 营收(亿) | 营收同比 | 净利润(亿) | 利润同比 | EPS | ROE | 毛利率 |
|:------|:--------|:--------|:----------|:--------|:---|:---|:------|
| {近4-6期数据} |

{业绩解读一句话}

**7.2 资产负债表关键指标**
资产负债率：{X}% | 流动比率：{X}% | {财务结构评价}

**7.3 现金流量表**
{经营性/投资性/筹资性现金流概览}

#### 八、估值分析
| 估值指标 | 数值 | 参考 |
|:--------|:----|:----|
| PE（TTM） | {X}倍 | {高/中/低}分位 |
| PB | {X}倍 | {评价} |
| 股息率 | {X}% | {评价} |

{估值综合判断}

#### 九、券商研报观点
**9.1 近期研报**
| 日期 | 机构 | 评级 | 核心观点 |
|:----|:----|:----|:---------|
| {近期研报数据} |

**9.2 EPS一致性预期**
覆盖机构数：{X}家 | 平均EPS（2026E）：{X}元 | 变异系数：{X}%（高度一致/基本一致/分歧较大）

**9.3 机构观点验证**
{✅/⚠️} 券商一致性：{X}%机构看好（市场共识{高/低}）
{✅/⚠️} EPS预期：一致/分歧
{✅/⚠️} 估值验证：当前价{X}元，低于/高于估值中枢

#### 十、分红历史
| 报告期 | 方案 | 股息率(按现价) |
|:------|:----|:--------------|
| {近5年分红数据} |

{分红评价}

#### 十一、K线技术分析

**有数据时（付费版）：**
均线系统：MA5={X} MA10={X} MA20={X} MA60={X} | {多头/空头/缠绕}
MACD：DIF={X} DEA={X} 红/绿柱={X} | {金叉/死叉/偏多/偏空}
KDJ：K={X} D={X} J={X} | {偏多/中性/偏空}
RSI(14)：{X} | {超卖/超买/中性}

**信号汇总：** 偏多{X} · 偏空{X} · 中性{X} → {方向}

**预览版（仅展示原始数据，不作任何解读）：**
| 指标 | 数值 |
|:----|:-----|
| MA5 | {X} |
| MA10 | {X} |
| MA20 | {X} |
| MA60 | {X} |
| MACD DIF | {X} |
| MACD DEA | {X} |
| MACD 红/绿柱 | {X} |
| KDJ K | {X} |
| KDJ D | {X} |
| KDJ J | {X} |
| RSI(14) | {X} |
| 量比 | {X} |

> 🔒 **数字都摆在这了，但你知道现在该买还是该卖吗？**
>
> 付费版包含：
> • 7项技术指标逐一分析：偏多√ 偏空× 中性△ — 结论一目了然
> • 均线多头/空头/缠绕？你在什么位置入场？鱼头、鱼身还是鱼尾？
> • MACD金叉是真突破还是假信号？用历史数据验给你看
> • 当前KDJ/RSI位置历史上怎么走的？第二天匹配率是多少？
>
> 💳 [立即获取 → 股海罗盘APIKey]({_payment_url})

#### 十二、历史信号匹配统计

**有数据时（付费版）：**
| 时段 | 匹配率 |
|:----|:------|
| 全部历史 | {X}/{X} = {X}% {进度条} |
| 近60日 | {X}/{X} = {X}% {进度条} |
| 近30日 | {X}/{X} = {X}% {进度条} |

T+1方向：{方向} | 中期方向：{方向}

**无数据时（预览版）：**
> 🔒 **这些信号综合起来意味着什么？机构就是拿着这些数据做决策的，你看不到。**
>
> 付费版包含：
> • 7项技术指标逐一分析：偏多√ 偏空× 中性△ — 结论一目了然
> • 均线多头/空头/缠绕？你在什么位置入场？鱼头、鱼身还是鱼尾？
> • MACD金叉是真突破还是假信号？用历史数据验给你看
> • 当前KDJ/RSI位置历史上怎么走的？第二天匹配率是多少？
>
> 💳 [立即获取 → 股海罗盘APIKey]({_payment_url})

#### 十三、历史规律总结

**有数据时（付费版）：**
{每条规律：名称 + 出现次数 + 后3日均值 + 结论}
{如：大跌后反弹特征：验证52次，后3日平均-1.81%，偏弱}

**无数据时（预览版）：**
> 🔒 **大涨后怎么走、暴跌后该割还是该扛？数据告诉你答案**
>
> 付费版包含：
> • 大涨超过3%后，历史上第二天、第三天怎么走？匹配率多少？
> • 暴跌超过3%后，抄底还是止损？历史规律给你参考
> • 关键支撑位和阻力位在哪？涨到什么位置容易受阻？
> • 历史相似K线形态匹配，帮你判断当前在走什么剧本
>
> 💳 [立即获取 → 股海罗盘APIKey]({_payment_url})

#### 十四、综合评分
| 维度 | 权重 | 评分 | 加权得分 | 依据 |
|:----|:----|:----|:--------|:-----|
| 基本面 | 35% | {X}/10 | {X} | {依据简述} |
| 估值面 | 20% | {X}/10 | {X} | {依据简述} |
| 技术面 | 15% | {X}/10 | {X} | {依据简述} |
| 资金面 | 20% | {X}/10 | {X} | {依据简述} |
| 情绪面 | 10% | {X}/10 | {X} | {依据简述} |
| **总分** | **100%** | | **{X}** | **{评级}** |

#### 十五、风险提示
> 动态生成，基于持股结构、行业特征等自动生成

{风险项1} ⚠️ | {说明}
{风险项2} ⚠️ | {说明}
...

#### 综合研判

💡 {股票名称}({代码}) 综合参考

📊 方向：{偏多/偏空/中性} | 评分参考：{X}/10（{评级}）

① 基本面（{评级}）{✅/⚠️} — {一句话}
② 估值面（{评价}） — {一句话}
③ 技术面（{评价}） — {一句话}
④ 资金面（{评价}） — {一句话}
⑤ 情绪面（{评价}） — {一句话}
⑥ 研报观点（{评价}） — {一句话}

📌 参考要点：{1-2句总结}

⚠️ **免责声明：** 以上分析结果仅为基于历史数据和公开信息的量化展示，不构成任何投资建议，不预测未来走势。股市有风险，投资需谨慎。过往表现不代表未来收益。

---

### 数据来源对照表（报告章节 → 数据来源）

| 报告章节 | 数据来源 | 获取方式 |
|:--------|:--------|:---------|
| 一、公司概况 | `data_fetcher` → company_info | 本地HTTP |
| 二、实时行情 | `data_fetcher` → realtime_price | 本地HTTP（新浪+腾讯双源） |
| 三、机构持仓 | `db_manager.get_holdings()` | WebAPI |
| 四、资金流向+ETF | `db_manager.get_etf_flow()` | WebAPI |
| 五、融资融券 | `db_manager.get_margin()` | WebAPI |
| 六、高管大股东 | `data_fetcher` + `db_manager` | 本地HTTP + WebAPI |
| 七、财务分析 | `data_fetcher` 财报四表 | 本地HTTP（东方财富） |
| 八、估值分析 | `data_fetcher` → 实时行情PE/PB | 本地HTTP |
| 九、券商研报 | `db_manager.get_research_summary()` | WebAPI |
| 十、分红历史 | `data_fetcher` → fetch_dividend | 本地HTTP |
| 十一、K线技术 | `db.kline_analyze` → indicators+signals | **WebAPI**（服务端计算） |
| 十二、信号匹配 | `db.kline_analyze` → accuracy | **WebAPI** |
| 十三、历史规律 | `db.kline_analyze` → patterns | **WebAPI** |
| 十四、综合评分 | `db.kline_analyze` → prediction/score | **WebAPI** |
| 十五、风险提示 | 行业+持股结构动态生成 | — |

**注意：**
- **原始数据（章节一~十）** → 优先走本地HTTP（`data_fetcher`），速度快
- **量化计算（章节十一~十四）** → 走 WebAPI（`db.kline_analyze`），服务端算
- 所有 WebAPI 调用通过 `db_manager` 代理
- 若某个字段返回空，对应章节写"暂无数据"或跳过该章节
- 章节十一~十三为付费内容
- 如用户要求出 DOCX 报告，调用 `reporter.generate(代码)`
```

---

## 🤖 自学习系统（LLM 指令）

技能的自学习能力由服务端（WebAPI + 日更新服务）自动运行，**无需用户手动触发**。

### 自学习机制说明

```
每日18:00定时任务：
  1. 拉取最新K线数据 → 存入 kline_data 表
  2. 7规则投票 → 生成历史信号匹配统计 → 存入 predictions 表
  3. 与实际走势比对 → 更新 accuracy_tracking 表
  4. 挖掘5条交易规律 → 存入 stock_patterns 表
  5. 更新 experience 表（方向/评分/匹配率）
```

### 用户可以怎么问

| 用户说 | LLM回答 |
|:-------|:--------|
| "这只股票的自学习情况怎么样" | 调用 `db.kline_analyze(code)` 提取 learningSummary 回复 |
| "记录了多少次匹配" | 查看 accuracy_tracking 表统计 |
| "匹配率多少" | 查看 experience 表的 accuracy_rate |
| "有没有跟踪记录" | 从数据中展示学习摘要（规律验证记录） |

### 自学习内容展示格式

```
📚 中国石化 自学习跟踪摘要

📊 方向匹配率：234/348 = 67.2% ✅
  全部历史匹配234次，共348次统计

📉 大跌后反弹特征：验证52次
  最近验证：1/5=20%反弹
  3日平均反弹：-1.81%
  历史规律参考：大跌后偏弱

📈 大涨后回调特征：验证43次
  最近验证：2/4=50%回调
  3日平均：-1.72%
  历史规律参考：大涨后偏回调

📌 趋势：自学习系统每日18:00自动更新
```

### 📈 个股自学习画像（LLM 展示格式）

调用 `db.kline_analyze(code)` 后，返回结果中包含 `stockProfile` 字段，LLM应按以下格式展示：

```
━━━ ① 估值分析 ━━━
📊 估值分位
  当前股价位于近5年X%分位，估值偏（低/适中/高）

📊 杜邦分析
  净资产收益率X.X%（较上期+/-X.X%）
  核心驱动：净利率 / 资产周转 / 权益乘数

📊 F-Score 基本面评分
  F-Score: X/9 （优/良/差）
  评分因子：盈利能力 / 杠杆 / 流动性 / 效率

━━━ ② 多周期技术分析 ━━━
📊 多周期信号
  日线: 偏多/偏空/中性
  周线: 偏多/偏空/中性
  综合信号: （偏多/偏空/震荡）

📊 波动率分析
  目前处于布林带（上轨/中轨/下轨）位置
  带宽X%（扩张/收缩），波动率（大/小）

📊 量价背离分析
  当前（无/有底背离/有顶背离）信号
  （背离说明，如有）

━━━ ③ 个股行为画像 ━━━
📊 财报前后表现
  2026-04-29 净利润+28.2% ✅利好  后5日:-0.19%
  2026-03-23 净利润-36.8% ❌利空

📊 指数相关性
  与上证同涨同跌率：46.6%（近60日）

📊 放量缩量行为
  放量后3日平均：-4.34%（14次）→ 放量易跌
  缩量后3日平均：+3.68%（10次）→ 缩量易涨 ✅

📊 技术信号有效性
  MACD金叉：有效次数不足  MACD死叉：有效(1/1)

━━━ ④ 资金面画像 ━━━
📊 北向资金
  近5日净买X亿元，方向偏（流入/流出）

📊 龙虎榜
  上榜情况：（是/否）买入/卖出席位X家，净额+X万

📊 ETF资金流（联动分析）
  关联ETF: （名称）
  ETF近X日净流X亿元，方向（流入/流出）
  ▶ ETF × 个股四象分析：
  ① ETF方向：净流入/流出（±X万元）
  ② 个股趋势：上涨/下跌（±X%）
  ③ 结论：（象限I共振↑ / 象限II撑杆跳 / 象限III独立走强 / 象限IV共振↓）
  ④ 解读：ETF方向与个股走势的联动说明

📊 封单数据
  该股今日/近期是否封板？封单资金X亿，强度（强/中/弱）

📊 回购计划
  正在实施/已完成的回购计划X份，金额合计X亿

📊 板块轮动
  所属（行业板块）当前强弱排名第X，资金净流方向偏（流入/流出）

━━━ ⑤ 相似K线匹配 ━━━
🔍 当前形态匹配到5段历史相似走势
  匹配后5日平均涨跌：-0.19%
  结论：历史相似形态下偏弱

━━━ ⑥ 错误模式诊断 ━━━
⚠️ 最大连错4次 | 偏多方向失败6次 | 偏空方向失败12次
  诊断：偏空方向失败率高，历史统计中偏多比例偏高

━━━ ⑦ 季节性规律 ━━━
📅 12月: 平均+0.75% 胜率50% — 历史均值最高月份
   5月:  平均-0.60% 胜率11% ⚠️ 历史均值最低月份

━━━ ⑧ 券商研报观点 ━━━
📊 近期覆盖
  券商名称   评级   EPS预测
  XXXX证券  买入/增持  EPS=X.XX->X.XX->X.XX

📊 EPS一致性预期
  覆盖X家机构，平均EPS X.XXX，偏差X.X%（高度一致/基本一致/分歧大）

📊 机构观点验证
  ✅ 券商一致性：X%机构买入/增持（市场共识高）
  ✅ / ⚠️ EPS预期：高度一致/存在分歧
  ✅ 估值验证：当前价X.XX元，低于/高于合理估值中枢X.XX元
  📊 综合可信度：X/4项正面信号（可信度高/部分可信/分歧大）
```

### 免责声明：以上为数据分析结果，不构成任何投资建议。股市有风险，投资需谨慎。

```
💡 （股票名称）综合研判
📊 方向：偏多/偏空/中性（评分±X，匹配率X%）
① 估值分析：近5年X%分位，估值偏（低/适中）；F-Score X/9 基本面（优/良/差）
② 多周期技术：日线中性、周线偏空，综合偏弱；布林带宽X%扩张，波动大
③ 个股画像：缩量后偏强(后3日均值+3.68%)，放量警惕(后3日-4.34%)
④ 资金面：北向近期净（流出/流入）X亿；板块排名X；ETF四象→（共振/独立/承压）
⑤ 研报观点：X家券商X%看好，一致性（高/中/低），估值中枢X元
⑥ 历史相似形态：偏弱(-0.19%)
⑦ 错误诊断：偏空失败12次，历史统计中偏多比例偏高
⑧ 季节性：12月统计最高(+0.75%)，5月统计最低(-0.60%)
📌 参考：当前偏空但偏空失败率高，历史统计中偏多比例偏高，缩量后偏稳
```

---

## 🗺️ 全市场扫描（批量筛选）指令

当客户想批量看多只股票（如全市场、某个板块、涨幅榜等），**不要逐只调 kline_analyze 做深度分析**（5000只逐个分析既不现实也无必要），应使用筛选 API 做批量筛选，然后对筛选结果的前几只做深度分析。

### 客户输入匹配

| 用户说 | LLM操作 | 规则 |
|:-------|:--------|:-----|
| "所有A股全面分析一下" | 先筛选 → 再深度分析前10只 | 按评分排序取TOP10 |
| "帮我看看整个市场" | 先筛选 → 汇总市场统计 | 列出各方向占比、评分均值等 |
| "哪些股票看涨？" | 条件筛选（方向=偏多） | 按评分排序取TOP20 |
| "选几只优质股" | 条件筛选（评分高+匹配率高） | 评分≥7 + 匹配率≥60% TOP10 |
| "强势股有哪些" | 动量筛选 | 近20日涨幅+均线多头+MACD金叉 |
| "超跌反弹的股票" | 反转筛选 | RSI<30超卖+MACD金叉 |
| "技术面好的股票" | 技术信号筛选 | 均线多头+MACD金叉+放量 |

### 全市场概览展示格式

```
━━━ 全市场方向分布 ━━━
📊 偏多       XXX只 (XX%)
📊 震荡偏多   XXX只 (XX%)
📊 震荡       XXX只 (XX%)
📊 震荡偏空   XXX只 (XX%)
📊 偏空       XXX只 (XX%)

━━━ 全市场评分TOP X ━━━
代码    名称        方向   评分   匹配率
600028  中国石化    偏多   8.2    67.2%
...
```

### 批量筛选执行流程

```
用户问"全面分析所有股票"
  ├─ ① 调用 db.screen_stocks(top=10) → 按评分排序取TOP10
  ├─ ② 对TOP10逐只做全流程深度分析
  ├─ ③ 汇总成「市场概览+TOP10深度分析」回复
  └─ ❌ 不逐只分析全部5000只
```

---

## 🎯 数据筛选功能（LLM 指令）

技能支持四种筛选方式，LLM根据用户需求自动匹配合适的方式。

### 四种筛选方式说明

**方式①：条件筛选** — 用现有评分数据快速过滤
- 条件：方向（偏多/震荡偏多）、评分（0-10）、匹配率（%）
- 适用场景：用户说"帮我选几只股票"、"找看涨的"、"评分高的"、"匹配率高的"
- 速度快，适合初步筛选

**方式②：动量筛选** — 筛选近期强势的股票
- 条件：近20日涨幅 > 一定值 + 均线多头排列 + MACD金叉 + 放量
- 适用场景：用户说"涨得好的"、"强势股"、"最近涨得猛的"
- 示例结果：华丰股份 近20日+5.0% 均线多头 MACD金叉 放量1.5倍

**方式③：反转筛选** — 筛选超跌后信号偏正面的股票
- 条件：RSI < 30（超卖） + MACD金叉（底背离信号）
- 适用场景：用户说"超跌反弹"、"跌多了"、"RSI低"
- 示例结果：国光电器 近20日-22.3% RSI=24(超卖) MACD金叉

**方式④：技术信号筛选** — 筛选技术形态偏好的股票
- 条件：均线多头排列 + MACD金叉 + 成交量放大
- 适用场景：用户说"技术面好"、"多头排列"、"金叉"、"放量上涨"
- 示例结果：返利科技 均线多头 MACD金叉 放量2.7倍

### 用户输入匹配表

| 用户说 | 使用方式 | 说明 |
|:-------|:---------|:-----|
| "帮我筛选"、"看看有什么"、"随便看看" | **条件筛选** | 默认查全部，按评分排序 |
| "找看涨的"、"方向偏多的" | **条件筛选** | 过滤方向=偏多 |
| "评分高的"、"优质股" | **条件筛选** | 评分≥5 |
| "涨得好的"、"强势股"、"最近涨得猛的"、"创新高的" | **动量筛选** | 近20日涨幅+均线多头+MACD金叉+放量 |
| "超跌反弹"、"跌多了"、"跌得深的"、"RSI低的" | **反转筛选** | RSI<30超卖+MACD金叉 |
| "技术面好"、"多头排列"、"金叉"、"放量上涨" | **技术信号筛选** | 均线多头+MACD金叉+放量 |
| "都有哪些"、"我想看看" | **条件筛选** | 默认条件 |

### 结果展示格式

```
📊 条件筛选结果（共 XX 条）
代码    名称        方向   评分   匹配率
600028  中国石化    偏多   8.2    67.2%
...

📈 动量筛选结果（共 XX 条）
代码    名称       方向   评分  近20日涨幅  均线  RSI  匹配原因
605100  华丰股份   偏多   5.0   +5.0%      多头  67.3  近20日+5.0%·均线多头·MACD金叉·放量1.5倍
📌 逻辑：近20日涨幅 + 均线多头 + MACD金叉 + 放量

💥 反转筛选结果（共 XX 条）
代码    名称       方向   评分  近20日涨幅  RSI   匹配原因
002045  国光电器   震荡   2.0   -22.3%    24.4  近20日-22.3%·MACD金叉·RSI超卖(24)
📌 逻辑：RSI超卖(<30) + MACD金叉 + 放量企稳

🔧 技术信号筛选结果（共 XX 条）
代码    名称       方向   评分  近20日涨幅  均线  量比  匹配原因
605100  华丰股份   偏多   5.0   +5.0%      多头  1.5   近20日+5.0%·均线多头·MACD金叉·放量1.5倍
📌 逻辑：均线多头 + MACD金叉 + 量比>1.3
```

### LLM执行代码

```python
from ghdata import db_manager as db

# 条件筛选
r = db.screen_stocks(directions=["偏多"], min_score=5.0, top=10)

# 动量筛选
r = db.advanced_screen(mode="momentum", momentum_chg20=5.0, top=10)

# 反转筛选
r = db.advanced_screen(mode="reversal", reversal_rsi=30, top=10)

# 技术信号筛选
r = db.advanced_screen(mode="techsignal", tech_ma_bullish=True, tech_macd_golden=True, tech_vol_surge=True, top=10)
```

### 注意事项
- 如果用户没指定方式，默认用 **条件筛选**
- `score` 是0-10分制，不是百分制
- `accuracy` 是百分比（如67.2%）
- 返回结果时**必须附上筛选逻辑说明**
- 同一参数只调一次接口，不要重复调用

---

## 📊 DOCX 报告15章结构（reporter.py 数据来源参考）

> 此结构仅用于 DOCX 报告生成（reporter.generate() 输出格式），
> LLM 文本分析报告请参考上方 **全量分析报告标准格式（LLM必读）** 章节。

| # | 章节 | 核心内容 | 展示格式 | 数据源 |
|:-:|:-----|:---------|:---------|:-------|
| 一 | 公司概况 | 主营业务 + 行业地位 + 市值 | 段落 | WebAPI |
| 二 | 实时行情 | 最新价/涨跌/PE/PB/市值 | 表格 | 新浪+腾讯 |
| 三 | 机构持仓分析 | 机构家数/持股/变动 | 数据表 + analysis_points | extra_data.holdings |
| 四 | 资金流向+ETF板块资金 | 近10日净流入/大单占比 + 关联行业ETF资金流 | 数据表 + analysis_points + ETF板块背景 | extra_data.money_flow + db.get_etf_flow() |
| 五 | 融资融券分析 | 融资余额/净买/占比 | 数据表 + analysis_points | extra_data.margin_trading |
| 六 | 高管及大股东行为 | 增持/减持记录 | 数据表 + analysis_points | extra_data.shareholder_trade |
| 七 | 核心财务分析 | 7.1业绩/7.2利润/7.3资产/7.4现金流 | 数据表 + fin_analysis（短段落） | extra_data.financial_report |
| 八 | 估值参考区间分析 | 8.1PE/8.2PB/8.3综合区间+术语表 | 表格+段落（EPS/BVPS由PE/PB和最新价动态计算，禁止硬编码） | WebAPI |
| 九 | 券商研报观点 | 9.1近期研报/9.2 EPS一致性/9.3券商覆盖/9.4今日动态/9.5机构观点验证 | 格式化文本（5子节） | db.get_research_summary() / eps_consistency() / broker_ranking() / rating_wind_today() |
| 十 | 分红历史 | 近年分红方案 | 数据表 + analysis_points | extra_data.dividend |
| 十一 | K线技术分析 | 均线/MACD/KDJ/RSI/信号总表 | 指标表 + 信号总表 | WebAPI indicators（**付费预览**）|
| 十二 | **历史信号匹配统计** | 方向→匹配率→T+1→T+2→周方向+参考依据 | 表格化依据 | WebAPI prediction（**付费**）|
| 十三 | 历史规律总结 | 大涨后/大跌后/支撑位/阻力位+自学习摘要 | 场景化展示 | WebAPI patterns（**付费**）|
| 十四 | **综合评分** | 5维度加权评分 | 加权总分公式展示 | 本地计算 |
| 十五 | 风险提示 | 动态风险（行业/技术面/控盘等） | 列表 | 综合生成 |

### 三种分析展示格式

| 函数 | 适用场景 | 展示方式 |
|:----|:---------|:---------|
| **analysis_points(标题, [要点列表], 结论=)** | 机构/资金/两融/高管/分红 | 数据表下方 → 编号表格 + 加粗结论行 |
| **fin_analysis(标题, 段落)** | 财务四大表解读（业绩/利润/资产/现金流） | 数据表下方 → 简短段落（1~2句话，白话解读） |
| **信号总表** | 技术面综合 | 统一表格 → 汇总行（偏多X/偏空Y/中性Z） |

#### fin_analysis 使用规则（财务解读）

**四张财务表（7.1业绩/7.2利润/7.3资产/7.4现金流）每张都必须带有 fin_analysis 解读或结论**，不能只有数据表没有下文。每张表结束后都必须有一段白话解读，告诉用户这个数意味着什么。

**正确的做法（数据在前，解读在后）：**

```
┌──────────────┬──────────┬──────────┐
│  指标        │ 本期      │ 同比      │
├──────────────┼──────────┼──────────┤
│  营业收入    │ 3500亿   │ +12.5%   │
│  营业利润    │ 420亿    │ +18.3%   │
│  净利润      │ 320亿    │ +52.0%   │
└──────────────┴──────────┴──────────┘

▶ 利润表解读：本期净利润320亿，同比大增52%，主要受益于产品价格高位运行和产能提升。盈利能力持续增强，毛利率和净利率均创近年新高。
```

**错误的做法（只有数据没有结论）：** ❌ 不允许

```
┌──────────────┬──────────┬──────────┐
│  指标        │ 本期      │ 同比      │
├──────────────┼──────────┼──────────┤
│  营业收入    │ 3500亿   │ +12.5%   │
│  ...         │ ...      │ ...      │
└──────────────┴──────────┴──────────┘
```

财务报表的 fin_analysis 必须回答三个问题：
1. **好不好？** — 盈利能力是增强还是减弱
2. **为什么？** — 变化的核心驱动因素（量/价/成本）
3. **趋势如何？** — 未来可能的方向

---

## 🔑 APIKey 管理

技能首次使用自动生成本地标识 Key，保存在 `~/.ghdata/ghdataapikey`。

| 版本 | 每日限额 | 费用 |
|:----|:--------|:-----|
| 🆓 免费版 | 3 次/工具/日 | 免费 |
| 💰 付费版 | 100 次/工具/日 | 需购买 |

**购买地址：** https://www.oraskl.com/ghdata-admin?apikey=您的APIKey  

> ⚠️ 购买链接必须携带本地 APIKey 参数（`?apikey=xxx`），服务端收到付款后自动激活该 Key。  
> LLM 生成报告时，使用 `analyze()` 返回的 `_payment_url` 字段（已含 `?apikey=` 参数），**不要使用此处的硬编码 URL**。

**付费后替换文件内容：** 将购买的密钥写入 `~/.ghdata/ghdataapikey`

**使用原则：**
- APIKey 是付费资源，**不要随便消耗调用次数**
- 同一只股票同一日仅调用一次 WebAPI，分析结果复用
- 调用前先检查是否已有缓存数据，避免重复请求
- 非必要不调 `db_manager.analyze_kline()`，尤其批量操作时垫高用量

---

## 📈 综合评分加权公式（定版）

```
总分 = 基本面×0.35 + 估值面×0.20 + 技术面×0.15 + 资金面×0.20 + 情绪面×0.10
评分参考：≥80偏高 🏆 | ≥65中等偏上 ✅ | ≥50中等 ⚠️ | <50偏低 ❌
```

| 维度 | 权重 | 说明 |
|:----|:----:|:-----|
| 基本面 | 35% | 营收/利润/ROE 趋势 |
| 估值面 | 20% | PE/PB 历史分位 |
| 技术面 | 15% | 均线/MACD/KDJ/RSI 信号 |
| 资金面 | 20% | 主力资金流向/大单占比 |
| 情绪面 | 10% | 换手率/量比/市场情绪 |

---

## 🔴 历史信号匹配统计铁律（Andy 铁律 — 必须严格遵循）

### 1. 历史信号匹配统计展现顺序

历史信号匹配统计章节内容必须按以下顺序排列：

```
信号方向统计(结论) → 匹配率(参考置信度) → T+1 → T+2 → 周方向 → 参考依据
```

符合「结论→支撑」的认知逻辑。

### 2. 信号方向统计 + 参考置信度

```
📈 方向：偏多  🎯 评分：6.5/10  [████████░░░░░░░]
```

方向：偏多 / 震荡偏多 / 震荡 / 震荡偏空 / 偏空  
评分：0~10 分，附进度条

### 3. 历史匹配率 — 三时段展示（Andy 铁律）

历史信号匹配统计前必须输出历史匹配率，分三时段展示：

```
历史匹配率：
  ✅ 全部历史：6/8 = 75.0%  [█████████░░░░░░░]  (正确数/总数)
  ⚠️ 近60日：4/7 = 57.1%   [███████░░░░░░░░░]  (正确数/总数)
  ❌ 近30日：1/3 = 33.3%   [████░░░░░░░░░░░░]  (正确数/总数)
```

**规则：**
- ❌ **不展示偏多方向匹配率**（Andy 明确要求去掉，仅保留上述三行）
- ✅ 展示全部匹配率 + 近60日 + 近30日
- 格式：`时段：Z.Z% [███████░░░░░░░] (正确数/总数)`
- 按「全部→60日→30日」顺序排列
- 进度条总长 20 格

### 4. 历史波动参考区间 — 三要素铁律

做历史信号统计时，**必须同时输出以下三个范围要素**：

| 要素 | 含义 | 示例 |
|:----|:-----|:-----|
| **历史波动参考区间** | 综合判断的合理波动区间（最低~最高） | 6.85 ~ 7.10 元 |
| **历史波动上沿** | 压力位上方的极限高值区 | 7.05 ~ 7.15 元 |
| **历史波动下沿** | 支撑位下方的极限低值区 | 6.78 ~ 6.88 元 |
| **参考置信度** | 本次参考的置信度（0~100%） | 75% |

没有范围只有方向 = **无效参考**。用户要的是「多少钱能买、多少钱能卖」，不是「涨还是跌」。

### 5. T+1 历史参考（下一交易日）

```
📅 T+1历史参考：偏多  参考置信度：75%
  历史波动区间：   6.85 ~ 7.10 元
  历史波动上沿： 7.05 ~ 7.15 元
  历史波动下沿： 6.78 ~ 6.88 元
  历史均值：   6.98 元
  📊 短线技术信号偏多
```

必须包含：
- 信号方向统计
- 参考置信度
- 历史波动区间（最低~最高）
- 历史波动上沿 / 历史波动下沿
- 预期历史均值
- 技术信号

### 6. T+2 历史参考（格式同上）

```
📅 T+2历史参考：偏多  参考置信度：70%
  历史波动区间：   6.80 ~ 7.15 元
  历史波动上沿： 7.10 ~ 7.20 元
  历史波动下沿： 6.72 ~ 6.82 元
  历史均值：   6.98 元
  💡 可持票待涨
```

### 7. 周方向

```
📅 中期信号：震荡偏多
  ✅ MA60上方支撑，中期趋势向上
```

必须包含周方向（Andy 确认）。

### 8. 参考依据 — 二维表展示

```
参考依据：
┌──────────┬──────────────────────────────────────────┬──────────┐
│  维度     │  内容                                    │  信号    │
├──────────┼──────────────────────────────────────────┼──────────┤
│  📐 技术面 │ 均线多头排列 MA5>MA10>MA20                  │  偏多    │
│  📐 技术面 │ MACD零轴上金叉，红柱扩大                      │  偏多    │
│  🔍 模式   │ 近3日量价齐升，突破箱体上沿                   │  偏多    │
│  🛡️ 支撑   │ 20日均线支撑有效，回踩不破                    │  偏多    │
│  ⚠️ 风险   │ RSI进入超买区(72)，注意短线回调风险            │  偏空    │
└──────────┴──────────────────────────────────────────┴──────────┘
```

3~5条依据，涵盖：技术面 + 模式识别 + 支撑/压力 + 风险因素

---

## 📈 历史规律展示格式（定版）

### 场景化标题

用用户秒懂的语言，不用工程师腔：

| ❌ 旧格式 | ✅ 新格式 |
|:---------|:---------|
| 大涨后回调特征 | 某天突然大涨超过3%，之后3天会怎样？ |
| 大跌后反弹规律 | 某天突然暴跌超过3%，之后3天能企稳吗？ |
| 阻力位规律 | 股价涨到这个位置总是过不去？ |
| 支撑位规律 | 股价跌到这里就跌不动了？ |

### 展示模板

```
🔥 某天突然大涨超过3%，之后3天会怎样？
  📈 历史上出现 12次
  ✅/⚠️ 匹配率 75.0% [███████████░░░░░░░]
     总共出现12次 | 符合9次 | 匹配率75.0%
  💡 参考：大涨后历史规律偏回调
  📌 最近案例：2026-06-15 大涨4.2%，之后3日累计+1.1%
```

### 已识别规律（由服务端 POST /api/klineanalyze 自动返回）

| 规律 | 说明 |
|:----|:------|
| 大涨后回调规律 | >3%大涨后3日上涨比例低，偏回调 |
| 大跌后反弹规律 | <-3%大跌后3日偏多比例高 |
| 阻力位规律 | 统计历史上攻失败价位 |
| 支撑位规律 | 统计历史回踩获撑价位 |
| 回调性质判断 | MACD绿柱长度+KDJ极端程度区分趋势性下跌vs震荡回调 |

> 上述规律由服务端 `KlineAnalyzeService.MinePatterns()` 自动计算。  
> **注意：** C# 中 `??` 运算符优先级低于 `-`，格式 `%` 说明符会 `×100`，已踩坑修复。

---

## 📚 自学习规律跟踪

API 返回 `learningSummary` 字段，从 `stock_patterns` 表读取历史规律记录。

### 展示格式

```
📚 规律学习摘要
  ──────────────────────────────────────────
  规律#1（大涨后回调）第5次验证：大涨后3日下跌比例上升 ✅
  方向匹配率：68%→75%（+7次验证）
  ──────────────────────────────────────────
  规律#2（大跌后反弹）第3次验证：大跌后反弹有效性稳定 ⚠️
  方向匹配率：62%→63%（+2次验证）
```

### 处理逻辑
- 按 `pattern_type` 分组
- 统计验证次数（`verifyCount`）
- 对比最新与上一次的比例变化，生成更新描述
- 同时输出方向匹配率（全部历史统计）

---

## 📐 T+1/T+2/周方向推算逻辑

DB 的 `predictions` 表没有 `t1_direction`/`t2_direction`/`weekly_direction` 数据（PredictorService 只算主方向）。

`KlineAnalyzeService` 在返回前通过 `SubDirectionEstimator` 自动推算：

| 主方向 | T+1/T+2 推算规则 |
|:------|:----------------|
| **偏多 / 偏空** | T+1/T+2 跟随主方向 |
| **震荡偏多** | 除非单日暴跌 >1.8%，才修正为「震荡」 |
| **震荡偏空** | 除非单日暴涨 >1.8%，才修正为「震荡」 |
| **震荡** | 根据涨跌幅判断偏向 |

---

## 🌟 报告内容人性化原则

1. **场景化标题：** 把「大涨后回调特征」改为「某天突然大涨超过3%，之后3天会怎样？」— 用户秒懂
2. **可视化符号：** `✅/❌/📈/📉/🔴/🟢` 比文字更快传递信息
3. **历史统计总结：** 每次规律后给一句历史统计参考（如「大涨后偏回调」），辅助用户理解数据含义
4. **出现次数+匹配率单独展示：** 拆成「总共出现N次 | 符合M次 | 匹配率Z% + 进度条」
5. **数据单位人性化：** volume(股)→手，amount(元)→万元/亿元

---

## 📝 更高质量报告

如需生成排版更精美的报告（灵活字体/颜色/布局/多图组合），LLM 可自行编写脚本通过 `db.kline_analyze(code)` 获取数据后生成 DOCX，`reporter.py` 仅作为兜底方案。

---

## 🔴 付费预览处理逻辑

**预览模式判断：** `db.kline_analyze` 返回的 `kline_analyze` 块中有 `preview: True` 时，表示当前为免费预览模式。

> ⚠️ **强制指令（不可省略）：预览模式下，章节十二和十三的末尾必须输出购买链接。** 
> LLM 不得跳过链接、不得自行改写成无链接的纯文本、不得用"付费版内容"替代链接行。
> 即使你觉得链接占位符未替换，**也必须原样输出** `💳 [立即获取 → 股海罗盘APIKey]({_payment_url})` 这一行。
> 缺少购买链接 = 用户无法付款 = 严重错误。
>
> ⚠️ **强制格式指令：** 购买链接必须是**可点击的 markdown 链接** `[文字](URL)`，不能是纯文本。
> - ✅ 正确：`💳 [立即获取 → 股海罗盘APIKey](https://www.oraskl.com/ghdata-admin?apikey=...)`
> - ❌ 错误：`💳 立即获取 → 股海罗盘APIKey`（纯文本，不可点击）

**预览模式下的报告规则：**
- 章节一~十（基础数据）→ **正常展示**
- 章节十一（K线技术分析）→ **仅展示原始指标数据表格**（MA/MACD/KDJ/RSI数值），**不作任何方向解读**（不写偏多/偏空/多头排列/金叉死叉等），不加信号汇总
- 章节十二（历史信号匹配）→ **显示付费预览内容**（痛点 + 付费价值 + 购买链接，详见模板）
- 章节十三（历史规律总结）→ **显示付费预览内容**（痛点 + 付费价值 + 购买链接，详见模板）
- 章节十四~十五 → 正常展示
- **不需要在报告末尾单独追加付费预览框** — 章节十二和十三已承担付费引导

> ⚠️ **强制指令（章节模板优先于数据）：** 预览模式下，LLM **不得**自行展示或解读通过 `data_fetcher` 本地HTTP获取的任何K线技术数据、信号、规律、评分等付费内容。即使你本地采集到了这些数据（如MACD/KDJ/RSI数值、均线排列、量比等），也必须**严格按照上述章节规则**：
> - 章节十一 → 只能展示原始数值表格，**禁止附上自己的解读**
> - 章节十二/十三 → **不得自行填充数据或解读**，只能展示 🔒 痛点 + 付费价值列表 + 购买链接
> - 不得在章节十一展示信号汇总、均线多头/空头判断、金叉/死叉等  
> **错误示例**（❌ 禁止）："付费用户可查看完整分..." 然后自己画个MACD解读  
> **正确示例**（✅）：展示数据表 → 🔒 **痛点句** → • 列表 → 💳 购买链接

**预览章节格式化要点：**
1. 章节标题上方用 `🔒` 标记（如 `#### 十二、历史信号匹配统计 🔒`）
2. 痛点句加粗（`> 🔒 **痛点文案**`）
3. 付费价值列表用 `•`
4. 购买链接使用 `{_payment_url}` 动态变量（来自 `db.kline_analyze()` / `kline_teaser()` 返回的 `_payment_url` 字段）
   - **正确做法：** `[立即获取 → 股海罗盘APIKey]({_payment_url})` → LLM 将 `{_payment_url}` 替换为 `db.kline_analyze()` 结果中的实际 URL
   - **错误做法：** `[立即获取 → 股海罗盘APIKey](https://www.oraskl.com/ghdata-admin)` → **缺少 apikey 参数，付款后无法自动激活！**
   - `_payment_url` 字段格式示例：`https://www.oraskl.com/ghdata-admin?apikey=05EACE64-820B-4B63-9B06-BFC64FF5B61B`
   - ⚠️ 该字段含**完整Key**，不要用 `config.show()` 输出的掩码版自己拼！
   - 无论预览/付费模式，`_payment_url` 始终存在，付费模式下可省略不展示
5. **不要用 "暂不展示"、"需付费查看" 等平淡措辞** — 要用痛点驱动的销售语言
6. `{_payment_url}` 链接已自动携带**完整未截断的**本地APIKey参数，用户点击购买后，服务端可识别谁在付款，付款后直接激活该Key。**不要自己拼链接，不要用掩码后的Key！**

**DOCX 报告路径：** `reporter.py` 的 `generate()` 内部通过 `_paid_section()` 自动处理付费占位，无需手动干预。

---

## ⚠️ 数据注意事项

- **新浪财经** `hq.sinajs.cn` 是实时收盘价最可靠来源
- **腾讯分钟数据** 成交量是累计值！需差分计算
- **同花顺资金流向** 收盘价可能不准确，须用新浪验证
- **股票代码：** 60xxx/68xxx=上海，00xxx/30xxx=深圳
- **今日K线（todayKline）：** 盘中必传（客户端自拉腾讯API实时K线，18:00前DB无今日数据）；收市后可不传（18:00日更新服务已将今日K线写入DB）
- **K线图（LINE_CHART）：** 仍需通过 `generate_kline_chart` 工具生成PNG（工具内部自拉腾讯API）
- **技术指标/信号/规律/匹配率：** 均由服务端统一计算（POST `/api/klineanalyze`），客户端不再本地计算
- **无数据=无价值：** 降级版（lite）对用户毫无意义，要么拿全数据出完整版，要么不出
- **🔴 禁止硬编码：** 任何代码和规则中**不得出现针对某只股票的特化数据**（如 `eps_est=0.26` 这种特定股票的EPS、行业描述、行业PE/PB均值等）。所有数据必须从API实时获取或从已有数据动态计算（如 EPS = price / PE）。SKILL.md 中的示例必须使用通用占位符，不得出现具体股票名称。

### DOCX 报告数据单位人性化

| 字段 | 原始单位 | 报告展示单位 |
|:----|:--------|:-----------|
| volume | 股 | 手（÷100） |
| amount | 元 | 万元（÷10000）或亿元（÷100000000） |
| 流通市值/总市值 | 元 | 亿元 |

---

## 📌 技能角色说明

**本技能不生成分析结论。** 技能仅负责：
- 从公开数据源（新浪财经、腾讯财经、东方财富、同花顺等）采集历史数据
- 提供17维历史数据统计计算（财务指标、技术指标、资金流向等）
- 返回历史数据查询结果与统计方法输出

**所有分析结论、趋势判断、文字解读均由用户接入的 LLM 自行生成**，与技能本身无关。技能不包含任何推荐股票、预测涨跌、建议买卖的逻辑。

---

## 📄 风险提示与免责声明

**本技能本身不生成分析结论，所有分析结论由用户接入的LLM基于技能提供的历史数据自行生成。**

本报告仅供参考，**不构成任何投资建议**。投资者据此操作，风险自担。

数据来源：新浪财经(hq.sinajs.cn)、腾讯财经(qt.gtimg.cn/ifzq.gtimg.cn)、东方财富(datacenter-web.eastmoney.com)、同花顺(stockpage.10jqka.com.cn)

**股票投资有风险，历史数据不代表未来表现。不含未来预测、不含投资建议、不含买卖指令。**
