# Stock Analyzer

> 全球股票综合分析工具。支持A股、港股、美股等东方财富覆盖的所有市场。根据用户输入的股票名称或代码，从东方财富网获取股票信息，进行基本面、新闻面、资金面三维分析，给出投资建议、买入价位和卖出价位。触发关键词：分析股票、股票推荐、股票买卖点、股票研究、A股分析、港股分析、美股分析、中概股、恒生指数、纳斯达克、标普500、道琼斯、腾讯、阿里巴巴、苹果AAPL、特斯拉TSLA、英伟达NVDA、美光MU等。

- Skill: `altenli/stock-analyzer` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add altenli/stock-analyzer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/altenli/stock-analyzer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: altenli (https://skillmd.com/u/altenli)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/altenli/stock-analyzer

---

# Stock Analyzer - 全球股票综合分析工具

## 概述

此skill用于对**A股、港股、美股**以及东方财富支持的所有市场（期货、指数、ETF等）进行综合分析，通过模拟东方财富主页(https://www.eastmoney.com/default.html)的搜索框功能来搜索股票，从基本面、新闻面、资金面三个维度进行分析，最终给出投资建议。

### 支持的市场

| 市场 | 代码前缀 | 示例 |
|------|---------|------|
| 🇨🇳 A股-沪市 | sh / 6开头 | sh600519 贵州茅台 |
| 🇨🇳 A股-深市 | sz / 0、3开头 | sz300750 宁德时代 |
| 🇨🇳 A股-北交所 | bj / 8、4开头 | bj830799 |
| 🇭🇰 港股 | hk / 116. | 00700 腾讯控股 |
| 🇺🇸 美股-纳斯达克 | 105. | 105.AAPL 苹果 |
| 🇺🇸 美股-纽交所 | 106. | 106.BABA 阿里巴巴 |
| 🇺🇸 美股-其他 | 107. | 107.XXX |

**输出方式**：

1. 在对话中输出完整的分析报告（Markdown格式）
2. 同时生成可视化HTML网页报告，保存到用户工作目录

## 触发条件

以下情况应使用此skill：

- 用户请求分析某只股票（无论A股、港股、美股）
- 用户询问某只股票是否值得投资
- 用户想了解股票的买入/卖出价位
- 用户提到股票研究、股票分析
- **A股关键词**：A股分析、沪深股票、创业板、科创板、北交所
- **港股关键词**：港股分析、恒生指数、腾讯、美团、小米、比亚迪股份
- **美股关键词**：美股分析、纳斯达克、标普500、道琼斯、中概股、苹果AAPL、特斯拉TSLA、英伟达NVDA、美光MU、谷歌GOOGL、微软MSFT、亚马逊AMZN、Meta、阿里巴巴BABA、拼多多PDD、京东JD
- 用户提到东方财富并涉及股票查询
- 用户直接输入股票代码（如：MU、AAPL、00700、600519）

---

## Step 0: 东方财富登录引导（重要！）

### 为什么需要登录？

东方财富网对未登录用户有访问限流，可能导致：

- 搜索结果加载不完整
- 部分数据页面无法访问
- 请求被限制或返回空数据

### 登录引导流程

在开始分析之前，**必须先引导用户登录东方财富**：

#### 引导话术模板：

```
📊 **股票分析准备**

为了获取完整、准确的股票数据，建议您先登录东方财富网账号。

**请按以下步骤操作：**

1. 🌐 点击打开东方财富主页：https://www.eastmoney.com/default.html

2. 🔐 点击页面右上角的【登录】按钮

3. ✅ 使用以下任一方式登录：
   - 手机号 + 验证码
   - 账号密码登录
   - 微信/QQ扫码登录

4. 📢 登录成功后，请回复"已登录"或"继续分析"

**提示**：
- 如果没有账号，可以快速注册一个（免费）
- 登录后数据获取更稳定，分析结果更准确
- 如果选择不登录，部分数据可能获取不完整

---
请问您是否已经登录东方财富？
```

#### 用户响应处理：

| 用户回复                       | 处理方式                                       |
| ------------------------------ | ---------------------------------------------- |
| "已登录" / "登录了" / "继续"   | 继续执行后续分析步骤                           |
| "没登录" / "不想登录" / "跳过" | 提示数据可能不完整，继续分析但标注数据可能受限 |
| 无明确回复                     | 再次询问或默认继续分析                         |

### 登录状态标记

在最终报告中标注数据获取状态：

- ✅ **已登录**：数据完整度高
- ⚠️ **未登录**：部分数据可能受限

---

## ⏱️ 请求延迟策略（重要！）

### 为什么需要延迟？

东方财富网对高频请求有限流保护，连续快速请求可能导致：

- IP被临时封禁
- 返回空数据或错误页面
- 验证码拦截

### 延迟规则

> ⚠️ **必须遵守**：每次请求东方财富网页面，**必须延迟1秒**后再发起下一次请求！

**执行方式**：

```
请求1 → 等待1秒 → 请求2 → 等待1秒 → 请求3 → ...
```

**适用场景**：

- 使用 `web_fetch` 访问东方财富任何页面时
- 包括：搜索页、行情页、资金流向页、F10页、公告页、新闻页等

**不需要延迟的场景**：

- 使用 `web_search` 工具（这是搜索引擎，不是直接访问东方财富）

### 实施要点

1. **串行请求**：不要并行发起多个东方财富页面请求
2. **间隔1秒**：每次 `web_fetch` 东方财富URL后，等待至少1秒
3. **失败重试**：如果请求失败，等待2秒后重试一次

---

## 分析流程

### Step 1: 模拟东方财富主页搜索框搜索股票

**核心原理**：模拟用户在东方财富主页 https://www.eastmoney.com/default.html 上的搜索框中输入股票名称进行搜索。

**搜索方式**：
东方财富主页的搜索框实际上是将用户输入的关键词通过URL参数传递到搜索服务，格式为：

```
https://so.eastmoney.com/Web/s?keyword={股票名称或代码}
```

**操作步骤**：

1. 使用 `web_fetch` 工具访问搜索URL：`https://so.eastmoney.com/Web/s?keyword={用户输入的股票名称或代码}`
2. 从搜索结果中找到匹配的股票条目
3. 提取股票代码和市场标识
4. 获取股票详情页URL

**如果搜索被限流**：

- 使用 `web_search` 工具搜索"{股票名称} 股票代码 东方财富"作为备选
- 或提示用户手动在东方财富搜索并提供股票代码

**各市场搜索示例**：

| 市场 | 用户输入 | 搜索URL | 详情页URL |
|------|---------|---------|-----------|
| 🇨🇳 A股 | 贵州茅台 | `keyword=贵州茅台` | `quote.eastmoney.com/sh600519.html` |
| 🇨🇳 A股 | 宁德时代 | `keyword=宁德时代` | `quote.eastmoney.com/sz300750.html` |
| 🇭🇰 港股 | 腾讯 | `keyword=腾讯` | `quote.eastmoney.com/hk/00700.html` |
| 🇺🇸 美股 | 苹果/AAPL | `keyword=AAPL` | `quote.eastmoney.com/us/AAPL.html` |
| 🇺🇸 美股 | 美光/MU | `keyword=MU` | `quote.eastmoney.com/us/MU.html` |
| 🇺🇸 美股 | 阿里巴巴 | `keyword=阿里巴巴` | `quote.eastmoney.com/us/BABA.html` |

### Step 2: 访问股票详情页获取基本信息（核心步骤！）

> ⚠️ **重要**：当前价格、涨跌幅等实时行情数据**必须优先从东方财富网获取**！这是最权威的数据源。

根据Step 1获取的股票详情页URL，获取实时行情数据。

#### 🚀 推荐方式：使用 Selenium 脚本（可获取动态数据）

由于东方财富页面数据通过 JavaScript 动态加载，推荐使用 skill 自带的 Selenium 脚本获取数据：

```bash
# 港股示例
python scripts/fetch_stock.py 00700 --market hk --output json

# 美股示例  
python scripts/fetch_stock.py MU --market us --output json

# A股示例
python scripts/fetch_stock.py 600519 --market sh --output json
```

**脚本输出 JSON 格式：**
```json
{
  "success": true,
  "code": "00700",
  "market": "HK",
  "data": {
    "name": "腾讯控股",
    "price": "512.000",
    "change": "-10.500",
    "change_percent": "-2.01%",
    "amount": "132.2亿",
    "market_cap": "4.662万亿",
    "pe": "25.67",
    "pb": "19.95",
    "turnover": "0.88%"
  },
  "source": "东方财富"
}
```

**脚本参数说明：**
| 参数 | 说明 | 示例 |
|------|------|------|
| `code` | 股票代码 | `00700`, `MU`, `600519` |
| `--market` / `-m` | 市场类型 | `hk`, `us`, `sh`, `sz`, `bj`, `auto` |
| `--output` / `-o` | 输出格式 | `json`, `text` |
| `--timeout` / `-t` | 超时时间(秒) | `15` |

#### 备选方式：使用 web_fetch（可能无法获取动态数据）

如果 Selenium 脚本不可用，可使用 `web_fetch` 访问页面，但注意：
- 页面数据通过 JS 动态加载，`web_fetch` 只能获取静态 HTML
- 港股/美股页面可能显示 "-" 或空值
- 需要结合 `web_search` 补充数据

**必须从东方财富获取的数据（优先级最高）**：

| 数据项 | 重要性 | 获取方式 | 备注 |
|--------|--------|----------|------|
| ⭐ **当前股价** | 🔴 核心 | Selenium脚本 / 东方财富详情页 | 必须获取，失败需标注 |
| ⭐ **涨跌幅** | 🔴 核心 | Selenium脚本 / 东方财富详情页 | 必须获取，失败需标注 |
| ⭐ **涨跌额** | 🔴 核心 | Selenium脚本 / 东方财富详情页 | 必须获取，失败需标注 |
| 成交量 | 中 | Selenium脚本 / 东方财富详情页 | - |
| 成交额 | 中 | Selenium脚本 / 东方财富详情页 | - |
| 最高价、最低价 | 中 | Selenium脚本 / 东方财富详情页 | - |
| 开盘价 | 中 | Selenium脚本 / 东方财富详情页 | - |
| 换手率、量比、振幅 | 中 | Selenium脚本 / 东方财富详情页 | - |
| 总市值、流通市值 | 中 | Selenium脚本 / 东方财富详情页 | - |
| PE、PB | 中 | Selenium脚本 / 东方财富详情页 | - |

**各市场详情页URL模板**：

| 市场 | URL格式 | 示例 |
|------|---------|------|
| A股-沪市 | `https://quote.eastmoney.com/sh{代码}.html` | `sh600519.html` |
| A股-深市 | `https://quote.eastmoney.com/sz{代码}.html` | `sz300750.html` |
| A股-北交所 | `https://quote.eastmoney.com/bj{代码}.html` | `bj830799.html` |
| 🇭🇰 **港股** | `https://quote.eastmoney.com/hk/{代码}.html` | `hk/00700.html` |
| 🇺🇸 **美股** | `https://quote.eastmoney.com/us/{代码}.html` | `us/MU.html`, `us/AAPL.html` |

> ⚠️ **重要**：港股使用 `/hk/` 路径，美股使用 `/us/` 路径！旧版 `unify/r/116.` 和 `unify/r/105.` 路径已失效或不稳定！

**数据获取失败处理**：

如果东方财富页面访问失败或数据获取不完整：
1. 优先尝试使用 Selenium 脚本：`python scripts/fetch_stock.py {代码} -m {市场}`
2. 尝试重试一次（等待2秒后）
3. 使用 `web_search` 搜索"{股票名称} 实时股价 今日行情"作为备选
4. **必须在最终报告中标注数据来源状态**（详见数据来源追踪章节）

### Step 3: 获取基本面数据

需要进一步下钻访问以下页面获取详细财务数据：

**个股资料页(F10)**：

```
https://emweb.securities.eastmoney.com/pc_hsf10/pages/index.html?type=web&code={市场代码}{股票代码}
```

**需要获取的指标**：

| 类别     | 指标                                               |
| -------- | -------------------------------------------------- |
| 估值指标 | 市盈率(PE-TTM/动态/静态)、市净率(PB)、市销率(PS)   |
| 盈利能力 | ROE(净资产收益率)、毛利率、净利率、EPS(每股收益)   |
| 成长能力 | 营收同比增长率、净利润同比增长率、扣非净利润增长率 |
| 财务健康 | 资产负债率、流动比率、速动比率、经营现金流         |
| 规模指标 | 总市值、流通市值、总股本、流通股本                 |

**下钻页面**：

- 财务分析：`#/cwfx`
- 公司概况：`#/gsgk`
- 股东研究：`#/gdyj`

### Step 4: 获取新闻面数据

访问以下页面收集新闻和公告信息：

**公司公告**：

```
https://data.eastmoney.com/notices/stock/{股票代码}.html
```

**个股新闻**（使用搜索功能）：

```
https://so.eastmoney.com/news/s?keyword={股票名称}
```

**研究报告**：

```
https://data.eastmoney.com/report/stock/{股票代码}.html
```

**关注要点**：

- 最近3个月重大公告（业绩预告、重大合同、股东变动等）
- 行业政策和动态
- 机构研报评级和目标价
- 市场舆情和热点

### Step 5: 获取资金面数据

访问以下页面分析资金流向：

**主力资金流向**：

```
https://data.eastmoney.com/zjlx/{股票代码}.html
```

**需要获取的数据**：

| 指标                       | 重要性  | 说明                                         |
| -------------------------- | ------- | -------------------------------------------- |
| ⭐**主力净比**       | 🔴 核心 | 页面直接显示，如"主力净比：17.23%"，无需计算 |
| ⭐**今日主力净流入** | 🔴 核心 | 当日主力资金净额                             |
| 5日/10日/20日主力净流入    | 中      | 中长期资金趋势                               |
| 超大单净比、大单净比       | 中      | 资金结构分析                                 |
| 中单净比、小单净比         | 低      | 散户资金动向                                 |

> ⚠️ **重点关注**：**主力净比**是资金面评分的核心指标，直接从页面"实时资金流向"区域读取，无需自己计算！
>
> **页面位置**：在"今日主力净流入"数值的右侧，以百分比形式显示（如：17.23%）

**北向资金持股**：

```
https://data.eastmoney.com/hsgtcg/stock.html?scode={股票代码}
```

**融资融券**：

```
https://data.eastmoney.com/rzrq/detail/{股票代码}.html
```

### Step 6: 技术面参考（可选下钻）

从详情页获取技术指标辅助判断：

**关注指标**：

- 当前价格相对于52周高低点位置
- 均线系统（5/10/20/60/120/250日均线）
- 支撑位和压力位
- 成交量变化趋势
- **10日涨幅**和**20日涨幅**（阶段涨跌幅）

#### 10日/20日涨幅获取方法

> ⚠️ 东方财富网页端和同花顺网页端**均不直接展示**10日和20日涨幅数据。同花顺仅提供5日/3月/1年涨幅，东方财富行情中心支持60日和年初至今涨幅，但10日/20日需自行计算。

**计算公式**：
```
N日涨幅 = (当前收盘价 / N个交易日前收盘价 - 1) × 100%
```

**数据获取方式**（按优先级排序）：

1. **方式一：Selenium脚本获取K线数据**（推荐）
   - 从东方财富个股K线页面获取最近30个交易日的日K数据
   - 取第10个和第20个交易日前的收盘价，代入公式计算

2. **方式二：东方财富K线API**
   ```
   https://push2his.eastmoney.com/api/qt/stock/kline/get?secid={市场代码}.{股票代码}&fields1=f1,f2,f3,f4,f5,f6&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61&klt=101&fqt=1&end=20500101&lmt=25
   ```
   - `klt=101` 表示日K，`lmt=25` 获取最近25个交易日
   - 返回数据中 f51=日期, f52=开盘价, f53=收盘价
   - 取倒数第11条（10日前）和倒数第21条（20日前）的收盘价计算

3. **方式三：web_search 补充**
   - 搜索"{股票名称} 最近20日 历史股价"获取近期价格数据
   - 手动计算涨幅

**10日/20日涨幅在报告中的展示**：

| 涨幅指标 | 数值 | 含义 | 信号判断 |
|---------|------|------|---------|
| 10日涨幅 | {10日涨幅}% | 短期（约2周）股价动量 | >10% 短期强势；<-10% 短期弱势 |
| 20日涨幅 | {20日涨幅}% | 中短期（约1月）股价趋势 | >20% 中期强势；<-15% 中期弱势 |

**涨幅信号判断标准**：

| 10日涨幅 | 20日涨幅 | 综合判断 |
|---------|---------|---------|
| >15% | >25% | 🔴 短期涨幅过大，注意追高风险 |
| 5%~15% | 10%~25% | 🟠 上涨趋势中，关注持续性 |
| -5%~5% | -10%~10% | 🟡 震荡整理，等待方向选择 |
| -15%~-5% | -25%~-10% | 🟢 回调中，关注支撑位企稳机会 |
| <-15% | <-25% | ⚫ 大幅回调，注意风险或超跌反弹机会 |

**技术面评分补充规则**（10日/20日涨幅对评分的影响）：

| 条件 | 评分调整 | 说明 |
|------|---------|------|
| 10日涨幅>5% 且 20日涨幅>10% | +1分 | 短中期均上涨，趋势向好 |
| 10日涨幅<-10% 或 20日涨幅<-20% | -1分 | 短期或中期大幅回调，趋势走弱 |
| 10日涨幅>20% | -1分（风险扣分） | 短期涨幅过大，存在回调风险 |

### Step 6.5: 并购重组分析（条件触发）

> ⚠️ **触发条件**：当发现公司存在正在进行或近期公告的并购、重组、收购事项时，**必须执行此步骤**。

#### 识别并购事项

在 Step 4（新闻面分析）中，如果发现以下关键词，则触发并购分析：

| 触发关键词 | 示例 |
|-----------|------|
| 收购、并购、重组 | "拟收购XX公司100%股权" |
| 重大资产购买 | "重大资产购买报告书" |
| 要约收购 | "发起全面要约收购" |
| 合并、吸收合并 | "拟与XX公司合并" |
| 战略投资、股权收购 | "拟以XX亿元收购XX%股权" |
| 借壳上市 | "XX公司拟借壳上市" |

#### 获取并购标的数据

**需要搜索获取的目标公司关键数据**：

使用 `web_search` 搜索以下信息：
```
搜索关键词：
1. "{收购标的名称} 营收 净利润 毛利率 财务数据"
2. "{收购标的名称} 估值 PE 行业"
3. "{收购方公司} 收购 {标的名称} 方案 对价 比例"
4. "{收购方公司} 并购 重组 进展 最新公告"
```

**必须获取的标的公司数据**：

| 数据项 | 重要性 | 说明 |
|--------|--------|------|
| ⭐ 标的公司营收 | 🔴 核心 | 最近一年/最近一期营收 |
| ⭐ 标的公司净利润 | 🔴 核心 | 最近一年/最近一期归母净利润 |
| ⭐ 标的公司毛利率 | 🔴 核心 | 主营业务毛利率 |
| ⭐ 收购比例 | 🔴 核心 | 拟收购股权比例（如100%、51%、30%等） |
| ⭐ 收购对价 | 🔴 核心 | 交易总金额 |
| ⭐ 公告日股价 | 🔴 核心 | 首次公告收购当日的收盘价（用于计算公告至今涨幅） |
| 标的公司估值 | 高 | 交易估值（评估值） |
| 支付方式 | 高 | 现金/股份/混合支付 |
| 业绩承诺 | 高 | 标的方承诺的未来业绩（净利润承诺） |
| 标的所属行业 | 中 | 行业及竞争地位 |
| 并购进展阶段 | 中 | 预案/草案/审批中/已完成 |
| 商誉金额 | 中 | 收购对价 - 标的净资产 = 商誉 |

#### 获取公告日股价与计算公告至今涨幅

**目的**：直观展示并购公告发布后市场的实际反应和股价变动幅度。

**获取方法**：
1. 确定首次并购公告日期（如"拟收购XX公司"公告发布日期）
2. 使用 `web_search` 搜索"{公司名称} {公告日期} 收盘价 股价"获取公告当日收盘价
3. 或从东方财富K线历史数据中查找对应日期的收盘价

**计算公式**：
```
公告日至今涨幅 = (当前股价 - 公告日收盘价) / 公告日收盘价 × 100%
```

**在报告中展示**：
- 在并购概况表格中新增"公告日期"、"公告日收盘价"、"公告至今涨幅"三行
- 涨幅为正时标绿（🟢），涨幅超过50%时标橙（🟡 警示过热），涨幅超过100%时标红（🔴 严重过热）

#### 并购估值计算模型

**核心公式**：

```
1. 并表后预期营收 = 收购方当前营收 + 标的营收 × 收购比例
2. 并表后预期净利润 = 收购方当前净利润 + 标的净利润 × 收购比例
3. 并表后预期毛利 = 收购方当前毛利 + 标的毛利 × 收购比例
4. 并表后预期毛利率 = 并表后预期毛利 / 并表后预期营收

5. 并表后预期EPS = 并表后预期净利润 / 并购后总股本
   （若为股份支付：并购后总股本 = 原总股本 + 增发股份数）
   （若为现金支付：并购后总股本 = 原总股本）

6. 基于行业PE的预期市值 = 并表后预期净利润 × 行业/可比公司PE
7. 基于当前PE的预期市值 = 并表后预期净利润 × 公司当前PE

8. 预期股价（行业PE法） = 预期市值（行业PE） / 并购后总股本
9. 预期股价（当前PE法） = 预期市值（当前PE） / 并购后总股本

10. 股价涨幅空间 = (预期股价 - 当前股价) / 当前股价 × 100%
```

**估值场景分析**（必须同时计算三种场景）：

| 场景 | PE取值 | 说明 |
|------|--------|------|
| 🟢 乐观情景 | 标的行业高PE（75分位） | 市场情绪好、标的高成长 |
| 🟡 中性情景 | 标的行业中值PE（50分位） | 正常市场环境 |
| 🔴 保守情景 | 标的行业低PE（25分位）或收购方当前PE取低 | 市场低迷、整合风险 |

**业绩承诺估值法**（如有业绩承诺）：

```
承诺期预期利润 = 业绩承诺净利润（通常3年）
承诺期预期PE = 行业合理PE
承诺完成后预期市值 = 承诺净利润 × 承诺期PE
```

#### 并购协同效应评估

| 协同类型 | 评估要点 | 加分/减分 |
|---------|---------|-----------|
| 收入协同 | 标的业务与收购方是否互补，能否交叉销售 | +1~+2分 |
| 成本协同 | 合并后能否降低管理/采购/运营成本 | +1分 |
| 技术协同 | 标的是否具备收购方缺乏的核心技术 | +1~+2分 |
| 行业地位 | 并购后市场份额/行业排名是否提升 | +1分 |
| 整合风险 | 文化差异、管理层留任、客户流失风险 | -1~-2分 |
| 商誉风险 | 商誉/净资产比值越高风险越大 | -1~-3分 |
| 支付方式风险 | 大比例现金支付→负债升高；大比例增发→摊薄EPS | -1~-2分 |

#### 并购分析对评分的影响

并购分析结果需调整原有评分：

**基本面评分调整**：
- 并购后预期营收增长 > 30%：基本面 +1~+2分
- 并购后预期净利润增长 > 50%：基本面 +2分
- 并购后毛利率提升 > 5个百分点：基本面 +1分
- 商誉/净资产 > 50%：基本面 -1~-2分
- 标的净利润为负：基本面 -2分

**新闻面评分调整**：
- 并购获监管批准/进展顺利：新闻面 +1~+2分
- 并购存在不确定性/被否风险：新闻面 -1~-2分
- 有业绩承诺且承诺可信：新闻面 +1分

#### 并购分析输出要求

在最终报告中，需要新增独立的 **"并购重组分析"** 板块，包含：

1. **并购概况**：交易方案简述（标的、对价、比例、支付方式、公告日期、公告日股价、公告至今涨幅）
2. **标的公司画像**：主营业务、营收、净利润、毛利率、所属行业
3. **并表后估值测算**：三种场景（乐观/中性/保守）的详细计算
4. **股价涨幅空间**：基于估值测算的预期涨幅区间
5. **协同效应评估**：加分/减分项列表
6. **并购风险提示**：商誉、整合、审批等核心风险
7. **并购事项对综合评分的调整**：明确标注加减分

---

### Step 6.6: 异动监控分析（仅A股）

> ⚠️ **适用范围**：仅适用于A股（沪深主板、创业板、科创板、北交所），港股/美股不适用此规则。
>
> **核心价值**：异动触发前股价通常会停滞甚至回调。通过计算当前偏离值距异动阈值的距离，可提前预警"上涨天花板"，辅助卖出/止盈决策。

#### 异动核心概念：偏离值

异动判定不是简单的涨跌幅累加，而是计算**个股与对应基准指数的偏离值**，剔除大盘波动影响。

**偏离值计算公式**：
```
偏离值 = 个股区间涨跌幅 - 对应基准指数区间涨跌幅
```

**基准指数对照表**：

| 板块 | 基准指数 | 指数代码 |
|------|---------|---------|
| 上证主板（60xxxx） | 上证指数 | sh000001 |
| 深证主板（00xxxx） | 深证综指 | sz399106 |
| 创业板（30xxxx） | 创业板综指 | sz399102 |
| 科创板（688xxx） | 科创50指数 | sh000688 |
| 北交所（8xxxxx/4xxxxx） | 北证50指数 | bj899050 |

#### 异常波动（普通异动）认定标准

| 板块 | 统计周期 | 触发条件（收盘价涨跌幅偏离值累计） | 特殊情形 |
|------|---------|----------------------------------|---------|
| 沪深主板 | 连续3个交易日 | ≥ ±20% | ST/*ST股票为 ≥ ±12% |
| 创业板 | 连续3个交易日 | ≥ ±30% | - |
| 科创板 | 连续3个交易日 | ≥ ±30% | - |
| 北交所 | 最近3个有成交日 | ≥ ±40% | 统计窗口最长不超过20个交易日 |

**沪深主板补充触发条件（换手率异动）**：
- 连续3个交易日内，日均换手率与前5个交易日日均换手率比值达到 **30倍**
- 且该3个交易日内累计换手率达到 **20%**

#### 严重异常波动认定标准

| 触发情形 | 沪深主板标准 | 创业板/科创板标准 |
|---------|------------|-----------------|
| 频次触发 | 连续10个交易日内，4次出现同向异常波动 | 连续10个交易日内，3次出现同向异常波动 |
| 幅度触发（10日） | 偏离值累计 ≥ +100% 或 ≤ -50% | 同左 |
| 幅度触发（30日） | 偏离值累计 ≥ +200% 或 ≤ -70% | 同左 |

#### 数据获取方法

**需要获取的数据**：

| 数据项 | 获取方式 | 说明 |
|--------|---------|------|
| 个股最近3个交易日收盘价 | K线API / Selenium | 用于计算个股区间涨跌幅 |
| 基准指数最近3个交易日收盘价 | K线API | 用于计算指数区间涨跌幅 |
| 个股最近10/30个交易日收盘价 | K线API | 用于计算严重异动指标 |
| 基准指数最近10/30个交易日收盘价 | K线API | 用于计算严重异动指标 |
| ST/*ST标识 | 东方财富详情页 / F10 | 判断是否适用特殊阈值 |
| 日换手率（最近8个交易日） | K线API / 详情页 | 仅沪深主板需要，用于换手率异动判断 |

**K线API获取基准指数数据**：
```
# 上证指数
https://push2his.eastmoney.com/api/qt/stock/kline/get?secid=1.000001&fields1=f1,f2,f3,f4,f5,f6&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61&klt=101&fqt=1&end=20500101&lmt=35

# 深证综指
https://push2his.eastmoney.com/api/qt/stock/kline/get?secid=0.399106&fields1=f1,f2,f3,f4,f5,f6&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61&klt=101&fqt=1&end=20500101&lmt=35

# 创业板综指
https://push2his.eastmoney.com/api/qt/stock/kline/get?secid=0.399102&fields1=f1,f2,f3,f4,f5,f6&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61&klt=101&fqt=1&end=20500101&lmt=35

# 科创50
https://push2his.eastmoney.com/api/qt/stock/kline/get?secid=1.000688&fields1=f1,f2,f3,f4,f5,f6&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61&klt=101&fqt=1&end=20500101&lmt=35
```

#### 异动分析计算流程

**Step 1：判断板块和对应阈值**

```
if 股票代码.startswith('60') → 沪深主板，阈值20%，基准=上证指数
elif 股票代码.startswith('00') → 沪深主板，阈值20%，基准=深证综指
elif 股票代码.startswith('30') → 创业板，阈值30%，基准=创业板综指
elif 股票代码.startswith('688') → 科创板，阈值30%，基准=科创50
elif 股票代码.startswith('8') or 股票代码.startswith('4') → 北交所，阈值40%，基准=北证50
如果是 ST/*ST 且为沪深主板 → 阈值改为12%
```

**Step 2：计算3日偏离值**

```
个股3日涨跌幅 = (今日收盘价 / 3个交易日前收盘价 - 1) × 100%
指数3日涨跌幅 = (今日指数收盘 / 3个交易日前指数收盘 - 1) × 100%
3日偏离值 = 个股3日涨跌幅 - 指数3日涨跌幅
```

**Step 3：计算异动距离（核心输出）**

```
异动阈值距离 = 板块阈值 - |当前3日偏离值|
异动触发进度 = |当前3日偏离值| / 板块阈值 × 100%
```

**Step 4：计算10日/30日偏离值（严重异动指标）**

```
个股10日涨跌幅 = (今日收盘价 / 10个交易日前收盘价 - 1) × 100%
指数10日涨跌幅 = (今日指数收盘 / 10个交易日前指数收盘 - 1) × 100%
10日偏离值 = 个股10日涨跌幅 - 指数10日涨跌幅

30日偏离值同理
```

#### 异动预警等级

| 3日偏离值进度 | 预警等级 | 含义 | 建议 |
|-------------|---------|------|------|
| ≥100% | 🔴 **已触发异动** | 已达到异常波动标准 | 公司将发公告，短期股价大概率停滞/回调，建议止盈 |
| 80%-99% | 🟠 **临近异动** | 距异动触发仅一步之遥 | 上涨空间极为有限，强烈建议减仓/止盈 |
| 60%-79% | 🟡 **异动警戒** | 偏离值较大，需密切关注 | 关注次日走势，若继续大涨可能触发异动 |
| 40%-59% | 🟢 **轻度偏离** | 有一定偏离但距离异动尚远 | 正常持有，留意加速上涨风险 |
| <40% | ⚪ **安全区间** | 偏离值较小，异动风险低 | 无需担忧异动限制 |

**严重异动预警**：

| 指标 | 预警条件 | 说明 |
|------|---------|------|
| 10日偏离值 | ≥ +80%（距+100%阈值仅20%） | 接近严重异动上限 |
| 10日偏离值 | ≤ -40%（距-50%阈值仅10%） | 接近严重异动下限 |
| 30日偏离值 | ≥ +160%（距+200%阈值仅40%） | 接近严重异动上限 |
| 30日偏离值 | ≤ -56%（距-70%阈值仅14%） | 接近严重异动下限 |

#### 异动分析对评分的影响

**技术面评分调整**：

| 条件 | 评分调整 | 说明 |
|------|---------|------|
| 3日偏离值进度 ≥ 100%（已触发） | -2分 | 已触发异动，短期回调风险极高 |
| 3日偏离值进度 80%-99%（临近） | -1.5分 | 上涨空间极度受限 |
| 3日偏离值进度 60%-79%（警戒） | -1分 | 存在异动触发风险 |
| 10日偏离值 ≥ +80% 或 ≤ -40% | -1分（额外） | 临近严重异动 |
| 30日偏离值 ≥ +160% 或 ≤ -56% | -1分（额外） | 临近严重异动 |

**对投资建议的影响**：

| 异动状态 | 对买入建议的调整 |
|---------|----------------|
| 🔴 已触发异动 | 明确标注"短期不宜追涨"，建仓价应在异动回调后 |
| 🟠 临近异动 | 标注"上涨空间受限"，目标价应考虑异动天花板 |
| 🟡 异动警戒 | 标注"关注异动风险"，止盈位可适当下调 |

#### 异动分析输出要求

在报告中技术面板块之后，新增 **"异动监控"** 子板块，包含：

1. **板块信息**：所属板块、异动阈值、基准指数、ST标识
2. **3日偏离值分析**：个股3日涨跌幅、指数3日涨跌幅、偏离值、异动进度、预警等级
3. **严重异动监测**：10日/30日偏离值、距严重异动阈值距离
4. **异动天花板估算**：基于当前偏离值，估算触发异动时对应的个股最大涨幅空间
5. **监管措施提示**：触发后的信息披露、停牌核查、龙虎榜披露等说明

**异动天花板估算公式**：
```
剩余异动空间 = 板块阈值 - 当前3日偏离值
异动天花板价格 = 当前股价 × (1 + 剩余异动空间/100)
（注意：此为极端估算，实际中指数也会变动）
```

> ⚠️ **注意事项**：
> - 无价格涨跌幅限制的股票（新股上市首日、恢复上市首日等）不纳入异动计算
> - 若指数大幅波动，可能出现"个股涨停但未触发异动"或"个股未涨停却触发异动"的情况
> - 异动分析为辅助参考，不应作为唯一卖出依据

---

### Step 7: 综合分析与建议

基于以上所有数据进行综合评估：

#### 评分体系

| 维度   | 权重 | 评估要点                                                                 |
| ------ | ---- | ------------------------------------------------------------------------ |
| 基本面 | 35%  | PE/PB是否合理、ROE水平、成长性、盈利能力、财务健康                       |
| 新闻面 | 20%  | 是否有重大利好/利空、行业政策、业绩预期、机构评级                        |
| 资金面 | 35%  | **主力净比（核心指标）**、主力资金动向、北向资金增减、融资余额趋势 |
| 技术面 | 10%  | 趋势判断、支撑压力位、量价配合                                           |

> ⚠️ **重要说明**：资金面权重提升至35%，其中"主力净比"是核心评判指标，直接从东方财富页面读取（无需计算），能直接反映当日市场主力态度。

#### 评分标准

**基本面评分（满分10分）**：

- PE低于行业均值且ROE>15%：+3分
- 净利润增长率>20%：+2分
- 毛利率>30%：+2分
- 资产负债率<50%：+2分
- 现金流健康：+1分

**新闻面评分（满分10分）**：

- 有重大利好公告：+3分
- 机构评级为买入/增持：+2分
- 行业政策利好：+2分
- 无负面舆情：+2分
- 业绩预期向好：+1分

**资金面评分（满分10分）**：

| 指标                 | 条件   | 分值 | 说明                                                 |
| -------------------- | ------ | ---- | ---------------------------------------------------- |
| ⭐**主力净比** | >10%   | +4分 | **核心指标**，直接从页面读取，反映当日主力态度 |
| ⭐**主力净比** | 5%-10% | +3分 | 主力明显介入                                         |
| ⭐**主力净比** | 0%-5%  | +2分 | 主力小幅流入                                         |
| ⭐**主力净比** | -5%-0% | +1分 | 主力小幅流出                                         |
| ⭐**主力净比** | <-5%   | +0分 | 主力明显流出                                         |
| 5日主力净流入        | >1亿   | +2分 | 中期资金趋势                                         |
| 北向资金             | 增持   | +2分 | 外资态度                                             |
| 超大单净流入         | 为正   | +1分 | 机构资金动向                                         |
| 换手率               | 3%-8%  | +1分 | 交易活跃度适中                                       |

**主力净比数据来源**：

```
页面：https://data.eastmoney.com/zjlx/{股票代码}.html
位置：实时资金流向区域 → "今日主力净流入"右侧
格式：如 "主力净比：17.23%"
```

> ✅ 直接读取页面数据，无需手动计算！

**资金面评分解读**：

- 8-10分：主力强势介入，短期看多
- 6-8分：主力温和流入，可关注
- 4-6分：资金面中性，需结合其他维度
- 2-4分：主力流出迹象，谨慎
- 0-2分：主力明显撤离，回避

#### 投资建议等级

| 综合评分 | 建议等级 |
| -------- | -------- |
| 8-10分   | 强烈推荐 |
| 6-8分    | 推荐买入 |
| 4-6分    | 观望等待 |
| 2-4分    | 谨慎操作 |
| 0-2分    | 建议回避 |

#### 买卖价位计算

**买入价位**：

- 建仓价：当前价 × 0.95-0.98（回调5%-2%时建仓）
- 加仓价：支撑位附近或均线支撑位

**目标价位**：

- 参考机构目标价
- PE估值法：合理PE × 预测EPS
- 压力位附近

**止损价位**：

- 跌破支撑位
- 通常设置为买入价的92%-95%

---

## Step 8: 生成可视化HTML报告（必须执行）

分析完成后，**必须生成一个可视化的HTML网页报告**并保存到用户工作目录。

### HTML报告要求

1. **文件命名**：`{股票代码}_{股票名称}_分析报告_{日期}.html`

   - 示例：`603618_杭电股份_分析报告_20260226.html`
2. **保存位置**：用户当前工作目录
3. **报告内容**：与Markdown报告内容一致，但以可视化网页形式呈现
4. **使用模板**：使用 `assets/report_template.html` 作为HTML模板

### HTML报告特性

- 📊 **可视化图表**：使用进度条、仪表盘展示评分
- 🎨 **美观样式**：现代化UI设计，响应式布局
- 📱 **支持打印**：可直接打印或导出PDF
- 🔗 **交互链接**：包含东方财富相关页面的快捷链接

### 生成流程

1. 读取 `assets/report_template.html` 模板
2. 将分析数据填充到模板中
3. 使用 `write_to_file` 工具保存HTML文件
4. 使用 `preview_url` 工具在浏览器中预览（可选）

---

## 输出格式

分析完成后，需要输出两种格式的报告：

### 1. 命令行输出（Markdown格式）

按照 `assets/report_template.md` 模板格式输出完整的投资分析报告，包括：

1. **基本信息**：股票代码、名称、行业、市值等
2. **基本面分析**：估值、盈利、成长、财务健康度
3. **新闻面分析**：公告、新闻、研报、舆情
4. **资金面分析**：主力资金、北向资金、融资融券
5. **技术面参考**：价格位置、均线、支撑压力
6. **综合投资建议**：评分、结论、买入价、目标价、止损价
7. **风险提示**

### 2. 可视化网页报告（HTML格式）

使用 `assets/report_template.html` 模板生成可视化网页：

1. 生成HTML文件并保存
2. 告知用户文件保存位置
3. 提供预览链接（如果可行）

---

## 下钻策略

在分析过程中，根据需要深入访问各个子页面：

```
登录引导 → 主页搜索 → 搜索结果页 → 股票详情页 → 下钻各数据页面 → 生成报告
                                        ↓
                        ┌───────────────┼───────────────┐
                        ↓               ↓               ↓
                    F10资料页      资金流向页      公告新闻页
                        ↓               ↓               ↓
                   财务分析        主力追踪         研究报告
                   股东研究        北向资金       
                   公司概况        融资融券
                                        ↓
                              ┌─────────┴─────────┐
                              ↓                   ↓
                        Markdown报告         HTML报告
                        (命令行输出)         (文件保存)
```

## 📊 数据来源追踪（重要！）

### 为什么需要追踪数据来源？

为了确保报告的透明度和可信度，**必须在最终报告中显示每项数据的来源状态**：

- 用户可以清楚知道哪些数据来自东方财富（权威源）
- 用户可以识别哪些数据是通过搜索引擎补充的
- 用户可以了解哪些数据获取失败或未获取

### 数据来源状态定义

| 状态 | 标识 | 说明 |
|------|------|------|
| ✅ **东方财富** | `[东财]` | 成功从东方财富网获取 |
| 🔄 **搜索补充** | `[搜索]` | 东方财富获取失败，通过搜索引擎补充 |
| ❌ **获取失败** | `[失败]` | 无法获取该数据 |
| ⚪ **未参考** | `[未获取]` | 未尝试获取该数据 |

### 核心数据来源要求

以下数据**必须优先从东方财富获取**，并在报告中标注来源状态：

| 数据项 | 东方财富URL | 优先级 |
|--------|-------------|--------|
| 当前股价 | 详情页 `quote.eastmoney.com` | 🔴 必须 |
| 涨跌幅/涨跌额 | 详情页 | 🔴 必须 |
| 总市值 | 详情页 | 🔴 必须 |
| PE/PB | 详情页 | 高 |
| 换手率 | 详情页 | 中 |
| 主力净流入 | `data.eastmoney.com/zjlx/` | 高 |
| 主力净比 | `data.eastmoney.com/zjlx/` | 高 |
| 财务指标(ROE等) | F10资料页 | 中 |
| 公告新闻 | 公告/新闻页 | 中 |

### 报告中数据来源显示格式

**在HTML报告和Markdown报告中，必须添加"数据来源状态"区块**：

#### 示例：数据来源状态表格

```markdown
## 📡 数据来源状态

| 数据项 | 来源 | 状态 |
|--------|------|------|
| 当前股价 | 东方财富 | ✅ 成功 |
| 涨跌幅 | 东方财富 | ✅ 成功 |
| 总市值 | 东方财富 | ✅ 成功 |
| PE/PB | 东方财富 | ✅ 成功 |
| 主力净流入 | 东方财富 | ✅ 成功 |
| 主力净比 | 东方财富 | ✅ 成功 |
| 财报数据 | 搜索引擎 | 🔄 补充 |
| 分析师目标价 | 搜索引擎 | 🔄 补充 |
| 机构持仓 | - | ❌ 失败 |

> 📊 数据完整度：80% | 东财数据占比：60%
```

---

## 注意事项

1. **登录优先**：每次分析前先引导用户登录东方财富，避免限流
2. **搜索准确性**：如果股票名称模糊，可能返回多个结果，需要确认是否为用户想要的股票
3. **数据时效性**：股票数据实时变化，分析结果基于获取时刻的数据
4. **页面访问**：某些页面可能需要多次访问才能获取完整数据
5. **备选方案**：如果东方财富访问受限，使用 `web_search` 作为数据补充来源
6. **双重输出**：必须同时输出Markdown报告和HTML报告
7. **数据来源标注**：必须在报告中显示数据来源状态表格，让用户清楚了解数据可靠性
7. **市场代码对照表**：

| 市场 | URL路径格式 | 示例URL |
|------|------------|---------|
| 🇨🇳 A股-沪市 | `quote.eastmoney.com/sh{代码}.html` | `sh600519.html` |
| 🇨🇳 A股-深市 | `quote.eastmoney.com/sz{代码}.html` | `sz300750.html` |
| 🇨🇳 A股-北交所 | `quote.eastmoney.com/bj{代码}.html` | `bj830799.html` |
| 🇭🇰 **港股** | `quote.eastmoney.com/hk/{代码}.html` | `hk/00700.html` |
| 🇺🇸 **美股** | `quote.eastmoney.com/us/{代码}.html` | `us/MU.html`, `us/AAPL.html` |

> ⚠️ **重要**：旧版 `unify/r/116.` (港股) 和 `unify/r/105.` (美股) 路径已失效！请使用新版 `/hk/` 和 `/us/` 路径！

8. **港美股特殊说明**：
   - **港股**使用 `quote.eastmoney.com/hk/{代码}.html` 路径
   - **美股**使用 `quote.eastmoney.com/us/{代码}.html` 路径
   - 港美股可能没有完整的F10资料页，需使用 `web_search` 补充基本面数据
   - 港美股资金流向数据可能与A股格式不同，需灵活处理
   - 美股代码为英文字母（如 AAPL、MU、TSLA），港股为数字（如 00700）

9. **常见美股代码速查**：
   - AAPL (苹果) / MSFT (微软) / GOOGL (谷歌) / AMZN (亚马逊)
   - TSLA (特斯拉) / NVDA (英伟达) / MU (美光) / AMD (超威)
   - META (Meta) / NFLX (奈飞) / BABA (阿里) / PDD (拼多多) / JD (京东)

## 参考资料

- 详细URL模板和数据解析指南：`references/eastmoney_guide.md`
- Markdown报告模板：`assets/report_template.md`
- HTML报告模板：`assets/report_template.html`

