# Periodic Review

> 定期投资复盘工具。检查关注个股价格与估值区间变化、宏观数据与央行/美联储政策更新、人民币汇率、全球大事件，跟踪 8 个宏观边际变量的 regime 信号灯（macro/宏观边际变量追踪.md）与港股流动性三层信号灯（macro/港股流动性追踪.md），提示需要更新的 wiki 页面，输出至 wiki/journal/。

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

---


# 定期投资复盘 Skill

不绑定频率，按需执行。聚焦**会改变投资决策的信号**：个股估值区间变化、重大事件、宏观政策转向、汇率异动。过滤市场噪音（指数涨跌、情绪指标、资金流向）。

## 文件结构

```
skills/periodic-review/
├── SKILL.md                              # 本文件：执行流程与方法论
├── templates/review-report.md            # 复盘报告模板
└── scripts/fetch_data.py                 # 数据获取脚本（个股行情+汇率+大盘指数波动）
```

### 关注列表

关注个股列表由 `wiki/stocks/focus/` 目录定义（全局约束，见 CLAUDE.md）。脚本自动从该目录读取符号链接，并从文件标题行解析股票代码。双重上市（如 `603259.SH / 2359.HK`）默认取第一个代码（A 股）报价。

### 数据获取脚本

```bash
python3 skills/periodic-review/scripts/fetch_data.py --all        # 全部（默认）
python3 skills/periodic-review/scripts/fetch_data.py --stocks     # 关注个股当前价
python3 skills/periodic-review/scripts/fetch_data.py --forex      # 人民币汇率
python3 skills/periodic-review/scripts/fetch_data.py --indices    # 大盘指数波动监测
```

## When to Use

- 用户请求复盘 / review
- 用户问"最近有什么变化"
- 用户要求检查持仓状态

## 执行流程

**步骤 1 的各子任务之间无依赖，应分别用独立的工具调用并行执行。**

---

### Step 1: 并行数据采集

同时启动以下 10 组采集（1A 行情 / 1B 汇率 / 1C 宏观+政策 / 1D 半导体 / 1E 行业 / 1F 美联储+全球 / 1G 两融余额 / 1H 国家队ETF / 1I 大盘指数波动 / 1J 港股流动性）：

#### 1A. 关注个股行情 + 估值锚点（脚本 + wiki）

**两件事并行：**

1. **运行脚本获取行情**：`python3 skills/periodic-review/scripts/fetch_data.py --stocks`
2. **读取 wiki/stocks/focus/*.md**（即关注列表中的个股），提取每只股票的：
   - 估值锚点（价格区间表格中的买入价、合理价值、减仓价、清仓价）
   - 个股"下一步关注"章节中的近期催化剂/风险事件
   - 若页面无价格区间表（未做过 value-invest 分析），锚点记为 "—"

**估值区间判定规则**：

| 当前价位置 | 区间 | 含义 |
|-----------|------|------|
| < 买入价 | 买入区间 | 低于安全边际，积极买入 |
| 买入价 ~ 合理价值 | 关注区间 | 低估但未到安全边际 |
| 合理价值 ~ 减仓价 | 持有区间 | 合理估值，持有 |
| 减仓价 ~ 清仓价 | 减仓区间 | 高估，分批减仓 |
| > 清仓价 | 清仓区间 | 显著高估，清仓 |

**重点关注**：相比上次复盘，是否有个股跨越了区间边界。

#### 1B. 人民币汇率

运行脚本：`python3 skills/periodic-review/scripts/fetch_data.py --forex`

输出：USD/CNY 最新汇率。

若脚本获取失败，改用 WebSearch 搜索"人民币汇率 USD CNY"。

#### 1C. 宏观数据与政策（WebSearch + akshare）

**1C-1. 检查近期是否有宏观数据发布**

参照中国宏观数据发布节奏表，判断自上次复盘以来是否有新数据：

| 数据 | 通常发布时间 | akshare 接口 |
|------|-------------|-------------|
| PMI | 每月最后一天 | `macro_china_pmi()` |
| CPI/PPI | 每月 9-12 日 | `macro_china_cpi()` / `macro_china_ppi()` |
| M2/信贷 | 每月 10-15 日 | `macro_china_money_supply()` / `macro_china_new_financial_credit()` |
| GDP | 季后 15-17 日（1/4/7/10月） | `macro_china_gdp()` |
| 进出口 | 每月 7-10 日 | `macro_china_hgjck()` |
| 社零 | 每月 15-16 日 | `macro_china_consumer_goods_retail()` |
| 工业增加值 | 每月 15-16 日 | `macro_china_gyzjz()` |
| LPR | 每月 20 日 | `macro_china_lpr()` |

若有新数据发布，用 akshare 拉取最新值，与上期对比。

**1C-2. 央行重大操作**

WebSearch 搜索：`央行 降息 降准 MLF LPR`（限最近一周或自上次复盘以来）

关注：降准/降息、LPR 调整、MLF/PSL 等非常规操作。常规逆回购不需要关注。

**1C-3. 国内重大政策**

WebSearch 搜索：`国务院 证监会 财政部 重大政策`（限最近一周）

关注：产业政策、资本市场改革、财政刺激、房地产政策等可能影响持仓的政策。

#### 1D. AI 硬件 / 半导体周期信号检查

读取 `wiki/macro/AI硬件追踪.md` 中"周期位置与见顶信号"的五信号仪表盘，逐项检查是否有更新（本节产出喂给 Step 2.5 变量④ AI capex）：

1. **信号1 GPU交货周期**：WebSearch `NVIDIA B200 B300 lead time delivery weeks 2026` — 交期是否进一步缩短？
2. **信号2 存储价格**：WebSearch `DRAM contract price QoQ 2026` + `HBM price trend 2026` — 是否出现环比下跌？
3. **信号3 云Capex**：仅在财报季（1/4/7/10月）后检查。WebSearch `Amazon Google Meta Microsoft capex guidance 2026 2027` — 是否有调低指引？
4. **信号4 TSMC利用率**：仅在TSMC月度营收公告后检查。WebSearch `TSMC utilization rate advanced node CoWoS` — 是否跌破90%？
5. **信号5 NVIDIA指引**：仅在NVIDIA财报（2/5/8/11月）后检查。WebSearch `NVIDIA earnings guidance data center revenue` — 是否miss？

**输出**：逐项更新信号状态（🟢/⚠️/🔴），与上次状态对比标注变化，更新综合预警级别。

#### 1E. 重点行业动态（WebSearch + 读取 sectors）

跟踪以下核心行业的近期变化，与持仓个股关联评估：

| 行业 | 关联焦点个股 | 监测要点 | WebSearch 关键词 |
|------|-------------|---------|----------------|
| 有色金属 | 紫金矿业 | 铜/金/铝/锂价格变化、央行购金、矿端供给事件 | `LME copper gold price 2026` + `中国 黄金 储备 进口` |
| 人工智能 | （影响半导体/科技股全链）| 模型发布、企业级应用渗透、AI 资本开支信号、Agent 进展 | `AI capex 2026 enterprise adoption` + `AI agent revenue` |
| 水泥 | 海螺水泥 | 水泥价格指数、错峰生产/反内卷政策、地产新开工数据 | `水泥价格指数 2026` + `错峰生产 反内卷 水泥` |

**输出**：每个行业 1-2 句话标注本期关键变化、对关联个股的影响（中性/利好/利空）、以及对应 sector 页面是否需要更新。

注：人工智能行业的 GPU 交期/Capex 数据已在 1D 半导体周期信号中覆盖，本节聚焦应用端（企业付费、Agent 渗透率、模型发布等）以避免重复。

#### 1F. 美联储与全球大事件（WebSearch）

**1F-1. 美联储动态**

WebSearch 搜索：`Federal Reserve FOMC interest rate decision`（限最近一周）

关注：
- FOMC 利率决议结果
- 关键官员讲话的鹰/鸽信号转变
- 美国重要数据（CPI、非农、PCE）对降息预期的影响

**1F-2. 全球大事件**

WebSearch 搜索：`重大国际新闻 市场影响`（限最近一周）

关注：
- 地缘冲突（中东、俄乌、台海、中美关系）
- 贸易政策（关税、制裁、供应链）
- 大宗商品剧烈波动（原油、铜、黄金）
- 重大科技/AI 事件（影响持仓科技股）

#### 1G. A股两融余额检查（杠杆水位监测）

**触发条件**（满足任一即检查，否则整节跳过）：
- 距上次复盘**跨月**（每月第一次复盘必查）
- 距上次复盘**单周融资余额变化 > ±2%**（短期加/去杠杆信号）
- WebSearch 发现**两融政策变化**（保证金比例调整 / 标的池扩容）

**数据获取**（akshare T+1 更新）：

```python
import akshare as ak
sh = ak.macro_china_market_margin_sh()
sz = ak.macro_china_market_margin_sz()
last_sh = sh.iloc[-1]
last_sz = sz.iloc[-1]
total = (last_sh['融资余额'] + last_sz['融资余额']) / 1e8  # 亿元
print(f"两市融资余额: {total:,.0f} 亿元 ({last_sh['日期']})")
# 速度：近 5/10/21 个交易日变化
for w in [5, 10, 21]:
    prior = (sh.iloc[-1-w]['融资余额'] + sz.iloc[-1-w]['融资余额']) / 1e8
    print(f"  近{w}日: {prior:,.0f} → {total:,.0f} = {total-prior:+,.0f}亿 ({(total-prior)/prior*100:+.1f}%)")
```

跨月时同步获取流通市值（`macro_china_stock_market_cap()` 月频）重算占比：
```python
mc = ak.macro_china_stock_market_cap()
# 取最近一个非 NaN 月的总市值，× 流通比 ~75% 估算流通市值
```

**重点关注指标**（对接 [wiki/macro/A股两融余额追踪.md](../../wiki/macro/A股两融余额追踪.md) 四档信号灯）：

| 信号档 | 阈值 | 动作 |
|---|---|---|
| 🟢 正常 | < 25,000 亿 且 占比 < 3% | 仅追加数据点 |
| 🟡 警惕 | 25,000-30,000 亿 或 占比 3-4% | 追加数据点 + 报告中提示 |
| 🟠 偏高 | > 30,000 亿 且 占比 > 4% | 触发 [系统性风险防御](../../wiki/strategies/系统性风险防御.md) 结构层信号 |
| 🔴 极端 | > 35,000 亿 且 占比 > 5% | 启动减仓窗口验证 |

**输出**：
- **跨月或变化 > 2%** → 追加新读数到 `wiki/macro/A股两融余额追踪.md` 表 3.1（关键节点表）末行 + 重算近期速度表 3.2 + 信号档判定
- **未跨月且变化 < 2%** → 仅在报告中写"两融余额 X 亿（信号档 🟢/🟡），与上期持平"，不更新 wiki
- **跨档（如 🟢→🟡 或 🟡→🟠）** → 在报告中**单独高亮**，提示是否需要更新 [系统性风险防御](../../wiki/strategies/系统性风险防御.md) 触发表

#### 1H. 国家队 ETF 持仓动向（无更新即跳过）

**触发条件**（满足任一才检索，否则整节跳过）：
- 距上次复盘跨过**基金季报披露窗口**（每季度结束后 15-22 天，即 4 月中下旬 / 7 月中下旬 / 10 月中下旬 / 1 月中下旬）
- 距上次复盘跨过**半年报/年报披露窗口**（3 月中下旬 / 8 月中下旬）
- WebSearch 发现**汇金/社保/证金重大声明**（新入市 / 新减持 / 政策表态）
- 宽基 ETF 出现**连续 5 日大额净赎回**（单日流出 > 50 亿规模）

**检索关键词**：
- `中央汇金 ETF 持仓 {当前季度}`
- `国家队 减持/增持 宽基ETF {月份}`
- `社保基金 持仓 {季度}`

**重点关注指标**：
- 汇金系 ETF 总持仓市值变化（vs wiki 中基线）
- 按指数类型的减持/增持结构（科创 50 / 沪深 300 / 上证 50 / 中证 500/1000）
- 节奏特征（集中期/分散期）
- 是否伴随社保动向

**输出**：
- 有更新 → 列出数据变化 + 更新 `wiki/macro/国家队ETF追踪.md` 的提示
- **无新数据** → 在报告中写"**本期无国家队新动向**"并跳过，不生成噪音

#### 1I. 大盘指数波动监测（跨市场 regime 信号，过滤点位噪音）

运行脚本：`python3 skills/periodic-review/scripts/fetch_data.py --indices`

跟踪 7 个指数的**波动 regime 与风格分化**——标普500 / 纳斯达克100 / 沪深300 / 上证50 / 中证500 / 中证1000 / 恒生科技。**只看波动结构，不报日常点位涨跌**（点位涨跌仍按本 skill 开篇的噪音过滤原则丢弃）。

脚本对每个指数输出：最近收盘、YTD 涨跌、近 1 月 / 近 3 月年化已实现波动、**波动档**，以及逐年（2021–2025）年化波动率基准表与 5 年均值。

> 波动档 = 近 3 月波动落在该指数**自身** 5 年区间的相对位置（平静 / 正常 / 偏高 / 极端↑ / 极静↓）。跨指数不可直接比绝对值——恒生科技常年 35%、A 股大盘常年 15–20%，"高不高"只跟自己历史比，脚本已折算。

**只在以下情况写进报告（否则一句"各指数波动档无变化"带过）**：

1. **波动档跨入偏高 / 极端↑**（或较上次复盘明显抬升）→ 市场进入高波动 regime，提示核对 [系统性风险防御](../../wiki/strategies/系统性风险防御.md) 结构层信号。
2. **风格 / 市场分化**：大盘（沪深300/上证50）vs 小盘（中证500/1000）vs 美股（标普/纳指）vs 港股科技（恒生科技）的 YTD 显著背离（如小盘强大盘弱、A 弱美强）→ 与持仓层级结构对照。
3. **恒生科技波动 / YTD 异动** → 与中概、港股科技持仓关联。

**输出**：默认仅一行"各指数波动档 + 有无 regime 变化"；有跨档或显著分化才展开。**不写指数日常涨跌点位，不做点位预测。**

#### 1J. 港股流动性检查（三层信号灯，对接 [wiki/macro/港股流动性追踪.md](../../wiki/macro/港股流动性追踪.md)）

**每次复盘必跑**（脚本 ~1-2 分钟，⚡回扫窗口应覆盖距上次复盘天数）：

```bash
python3 skills/scheduled-ingest/scripts/fetch_hk_liquidity.py --days-back <距上次复盘天数+3>
```

脚本输出三层灯（货币面 结余/HIBOR 取紧 · 交易面 5 日均成交 · 资金流+估值 南向 5 日净买）+ 修饰标签 + ⚡事件回扫（兑换保证触发 `market_activities`≠0 / 南向单日 |净买|>100 亿 / 1M HIBOR 单日 >50bp）+ 缺数清单。档位 SSOT 见 [`docs/hk-liquidity-plan.md` §4](../../docs/hk-liquidity-plan.md)。

**输出规则**（变化优先，同 1G/2.5 哲学）：
- **灯翻转或 ⚡ 事件** → 报告单独高亮 + 更新追踪页 §一（整节置换）/§3.2（追加一行）/必要时 §二；🔴 或兑换保证触发 → 提示核对 [系统性风险防御](../../wiki/strategies/系统性风险防御.md) 港股侧
- **无翻转无 ⚡** → 报告一行"港股流动性：三层灯 X/X/X 维持"带过，追踪页仍追加 §3.2 一行（纯时间序列）
- **缺数项**（如 AH 源间歇挂）→ 照实显示"未评级/—"，**禁止用上期值补位**
- 与 1A 港股个股（腾讯/美团/阿里/蜜雪）、1I 恒生科技波动联判：流动性灯 🔴 + 个股跨档同现时在报告合并为"港股侧"一节

**数据纪律**：追踪页在高时效红线上（美联储利率/汇率）→ 任何数字更新 L1/L2/L3 全跑；脚本输出的来源表是 L2 阶段 A 清单底稿，主 agent 仍须可见输出清单。

---

### Step 2: 读取 wiki 基准

从 `wiki/macro/宏观仪表盘.md` 提取上次更新的核心指标值，用于对比是否有变化。

若该文件不存在，跳过此步，Wiki 变更检测中的宏观对比标注"无基准数据"。

> 个股估值锚点已在 Step 1A 中一并读取，不再重复。

---

### Step 2.5: 宏观边际变量 regime 检查（读 + 更新 [宏观边际变量追踪.md](../../wiki/macro/宏观边际变量追踪.md)）

读取 `wiki/macro/宏观边际变量追踪.md` 的 8 变量仪表盘（Fed 路径 / 美国通胀 / 美元+美债 / AI capex / 日元 carry / 美伊油价 / 中国财政 / 中国货币-地产）。这是**比 1A-1I 高一层的 regime 合成层**——不重新取数，用 Step 1 已采集数据（1B 汇率 / 1C 宏观+政策 / 1D AI硬件 / 1F 美联储+全球）+ **仅必要时**对某变量补一次 WebSearch，逐变量判断：

> **自上次复盘，该变量是否 ① 跨了监控阈值，或 ② 信号灯翻转（🟢/⚠️/🔴 升降级）？**

| 情况 | 动作 |
|---|---|
| **无变化**（多数变量/多数复盘）| 报告一句"宏观边际变量：8 项无 regime 变化"，**不展开**（变化优先，过滤噪音）|
| **某变量跨阈值 / 翻灯** | ① 更新页面该行 信号灯 + "上次→本次"列 + "边际正在变"格 + frontmatter `updated` + 更新记录；② 报告**单独高亮** shift + 对 focus 的传导 |
| **主轴轮动**（每季度审一次）| 审"8 变量是否还是当前主导"，主轴可能换（如 Fed×AI → 中国财政×地产），报告说明 |

**数据纪律（强制）**：本页在数据写入纪律的**高时效红线**上（美联储/美债/汇率/油价/AI 算力/中国地产全在列）。**任何对页面数字的更新走 L1/L2/L3**——shift 变量的新数字必须 WebFetch 核（[观测]），不接受 WebSearch 摘要。多数复盘 shift ≤ 2 个，成本可控；**无 shift 不写页 = 不触发**。

**不重复取数**：本步消费 1C（宏观）/ 1D（AI 硬件→变量④）/ 1F（美联储+全球→变量①②⑥）/ 1B（汇率→变量③）的产出。与 1G 两融四档是两套独立信号灯（1G 看 A 股杠杆水位，本页看全球 regime）。

---

### Step 3: Wiki 变更检测

扫描采集到的信息，与 wiki 现有页面交叉比对，检测以下变更：

1. **个股估值区间跨越**
   - 股价从一个区间跳到另一个区间（如从"持有"进入"买入"）
   - → 提示：`stocks/xxx.md` 的"当前股价"行和区间判定需要更新

2. **个股重大事件**
   - 发布了新季报/年报
   - 重大公告（并购、分红、回购、管理层变动等）
   - → 提示：`stocks/xxx.md` 需要 ingest 新数据，估值模型可能需要修订

3. **宏观数据更新**
   - 有新的 PMI/CPI/PPI/M2/GDP 等数据发布
   - → 提示：`macro/宏观仪表盘.md` 对应指标需要更新
   - 若新数据改变了经济周期判断 → 提示需修订

4. **政策变化**
   - 央行降准/降息、LPR 调整 → 提示：`macro/资本市场政策.md` 需追加
   - 行业政策变化 → 提示：相关 `sectors/xxx.md` 需更新

5. **汇率重大变动**
   - 突破关键整数关口（如 7.0、7.1、7.2、6.8）
   - → 提示：`macro/宏观仪表盘.md` 汇率部分需要更新

6. **美联储政策转向**
   - 利率决议结果、点阵图变化、鹰鸽转向
   - → 提示：`macro/宏观仪表盘.md` 美国部分需要更新

7. **行业格局变化**
   - 关注个股所在行业出现重大新闻（竞争对手财报、行业事件）
   - → 提示：相关 `sectors/xxx.md` 需要更新

8. **两融余额信号档跨档**
   - 融资余额从 🟢→🟡 / 🟡→🟠 / 🟠→🔴
   - → **自动追加**新读数到 `macro/A股两融余额追踪.md` 表 3.1，并提示是否同步更新 `strategies/系统性风险防御.md` 结构层触发表
   - 跨档不跨档但跨月 → 仅追加数据点不提示更新策略表

9. **宏观边际变量 regime shift**
   - 8 变量（见 Step 2.5）中任一跨监控阈值 / 翻信号灯
   - → 该变量已在 **Step 2.5** 更新 `macro/宏观边际变量追踪.md`（走 L1/L2/L3）并在报告高亮；若 shift 触及系统性风险（如 10Y 破阈、carry unwind 信号）→ 提示核对 `strategies/系统性风险防御.md`

10. **港股流动性灯翻转 / ⚡ 事件**
    - 三层灯（见 1J）任一翻转，或兑换保证触发 / 南向单日超百亿 / 放量恐慌·自满
    - → 已在 **1J** 更新 `macro/港股流动性追踪.md`（走 L1/L2/L3）并在报告高亮；货币面 🔴 或资金流 🔴 → 提示核对 `strategies/系统性风险防御.md` 港股侧 + 关联 focus 港股标的（腾讯/美团/阿里/蜜雪）区间判定

**重要**：本模块只做提示，不自动修改 wiki 页面，有三个**例外**：(a) 第 8 项两融追踪表（跨月或变化 > 2% 直接追加数据点，纯时间序列无判断成分）；(b) 第 9 项宏观边际变量页由 **Step 2.5** 更新（含判断，故走完整 L1/L2/L3，区别于两融的"无判断 auto 追加"）；(c) 第 10 项港股流动性追踪页由 **1J** 更新（§一置换 + §3.2 追加走 L1/L2/L3，高时效红线）。其他更新由用户确认后再执行。

---

### Step 4: 合成报告

按 `templates/review-report.md` 模板合成复盘报告，写入 `wiki/journal/YYYY-MM-DD.md`。

---

### Step 5: 更新索引与日志

1. 检查 `wiki/index.md` 的"投资日志"章节，若无本次复盘条目则添加
2. 在 `wiki/log.md` 头部追加操作记录

---

## 输出要求

- **简洁**：每个模块用数据+一句话判断，不写废话
- **对比**：个股价格必须对照估值区间，给出明确的区间判定
- **信号优先**：只输出会影响投资决策的信息，过滤噪音
- **变化优先**：重点标出与上次复盘相比发生变化的部分

## 与其他 Skill 的关系

| Skill | 关系 |
|-------|------|
| yahoo-finance | 个股行情和汇率数据源 |
| macro-analysis | 宏观指标数据源（有新数据发布时调用） |
| value-invest | 估值模型的生产者，本 skill 消费其输出的价格区间 |

## Error Handling

- yfinance 或 akshare 接口报错：标注"数据获取失败"，跳过该模块继续
- WebSearch 无结果：去掉日期限定，用更宽泛的关键词重试一次
- wiki 中个股缺少估值区间：价格区间列显示"—"

