| name | periodic-review |
| description | 定期投资复盘工具。检查关注个股价格与估值区间变化、宏观数据与央行/美联储政策更新、人民币汇率、全球大事件,跟踪 8 个宏观边际变量的 regime 信号灯(macro/宏观边际变量追踪.md)与港股流动性三层信号灯(macro/港股流动性追踪.md),提示需要更新的 wiki 页面,输出至 wiki/journal/。 |
定期投资复盘 Skill
不绑定频率,按需执行。聚焦会改变投资决策的信号:个股估值区间变化、重大事件、宏观政策转向、汇率异动。过滤市场噪音(指数涨跌、情绪指标、资金流向)。
文件结构
skills/periodic-review/
├── SKILL.md # 本文件:执行流程与方法论
├── templates/review-report.md # 复盘报告模板
└── scripts/fetch_data.py # 数据获取脚本(个股行情+汇率+大盘指数波动)
关注列表
关注个股列表由 wiki/stocks/focus/ 目录定义(全局约束,见 CLAUDE.md)。脚本自动从该目录读取符号链接,并从文件标题行解析股票代码。双重上市(如 603259.SH / 2359.HK)默认取第一个代码(A 股)报价。
数据获取脚本
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)
两件事并行:
- 运行脚本获取行情:
python3 skills/periodic-review/scripts/fetch_data.py --stocks
- 读取 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 GPU交货周期:WebSearch
NVIDIA B200 B300 lead time delivery weeks 2026 — 交期是否进一步缩短?
- 信号2 存储价格:WebSearch
DRAM contract price QoQ 2026 + HBM price trend 2026 — 是否出现环比下跌?
- 信号3 云Capex:仅在财报季(1/4/7/10月)后检查。WebSearch
Amazon Google Meta Microsoft capex guidance 2026 2027 — 是否有调低指引?
- 信号4 TSMC利用率:仅在TSMC月度营收公告后检查。WebSearch
TSMC utilization rate advanced node CoWoS — 是否跌破90%?
- 信号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 更新):
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['日期']})")
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() 月频)重算占比:
mc = ak.macro_china_stock_market_cap()
重点关注指标(对接 wiki/macro/A股两融余额追踪.md 四档信号灯):
| 信号档 | 阈值 | 动作 |
|---|
| 🟢 正常 | < 25,000 亿 且 占比 < 3% | 仅追加数据点 |
| 🟡 警惕 | 25,000-30,000 亿 或 占比 3-4% | 追加数据点 + 报告中提示 |
| 🟠 偏高 | > 30,000 亿 且 占比 > 4% | 触发 系统性风险防御 结构层信号 |
| 🔴 极端 | > 35,000 亿 且 占比 > 5% | 启动减仓窗口验证 |
输出:
- 跨月或变化 > 2% → 追加新读数到
wiki/macro/A股两融余额追踪.md 表 3.1(关键节点表)末行 + 重算近期速度表 3.2 + 信号档判定
- 未跨月且变化 < 2% → 仅在报告中写"两融余额 X 亿(信号档 🟢/🟡),与上期持平",不更新 wiki
- 跨档(如 🟢→🟡 或 🟡→🟠) → 在报告中单独高亮,提示是否需要更新 系统性风险防御 触发表
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%,"高不高"只跟自己历史比,脚本已折算。
只在以下情况写进报告(否则一句"各指数波动档无变化"带过):
- 波动档跨入偏高 / 极端↑(或较上次复盘明显抬升)→ 市场进入高波动 regime,提示核对 系统性风险防御 结构层信号。
- 风格 / 市场分化:大盘(沪深300/上证50)vs 小盘(中证500/1000)vs 美股(标普/纳指)vs 港股科技(恒生科技)的 YTD 显著背离(如小盘强大盘弱、A 弱美强)→ 与持仓层级结构对照。
- 恒生科技波动 / YTD 异动 → 与中概、港股科技持仓关联。
输出:默认仅一行"各指数波动档 + 有无 regime 变化";有跨档或显著分化才展开。不写指数日常涨跌点位,不做点位预测。
每次复盘必跑(脚本 ~1-2 分钟,⚡回扫窗口应覆盖距上次复盘天数):
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。
输出规则(变化优先,同 1G/2.5 哲学):
- 灯翻转或 ⚡ 事件 → 报告单独高亮 + 更新追踪页 §一(整节置换)/§3.2(追加一行)/必要时 §二;🔴 或兑换保证触发 → 提示核对 系统性风险防御 港股侧
- 无翻转无 ⚡ → 报告一行"港股流动性:三层灯 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 的 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 现有页面交叉比对,检测以下变更:
-
个股估值区间跨越
- 股价从一个区间跳到另一个区间(如从"持有"进入"买入")
- → 提示:
stocks/xxx.md 的"当前股价"行和区间判定需要更新
-
个股重大事件
- 发布了新季报/年报
- 重大公告(并购、分红、回购、管理层变动等)
- → 提示:
stocks/xxx.md 需要 ingest 新数据,估值模型可能需要修订
-
宏观数据更新
- 有新的 PMI/CPI/PPI/M2/GDP 等数据发布
- → 提示:
macro/宏观仪表盘.md 对应指标需要更新
- 若新数据改变了经济周期判断 → 提示需修订
-
政策变化
- 央行降准/降息、LPR 调整 → 提示:
macro/资本市场政策.md 需追加
- 行业政策变化 → 提示:相关
sectors/xxx.md 需更新
-
汇率重大变动
- 突破关键整数关口(如 7.0、7.1、7.2、6.8)
- → 提示:
macro/宏观仪表盘.md 汇率部分需要更新
-
美联储政策转向
- 利率决议结果、点阵图变化、鹰鸽转向
- → 提示:
macro/宏观仪表盘.md 美国部分需要更新
-
行业格局变化
- 关注个股所在行业出现重大新闻(竞争对手财报、行业事件)
- → 提示:相关
sectors/xxx.md 需要更新
-
两融余额信号档跨档
- 融资余额从 🟢→🟡 / 🟡→🟠 / 🟠→🔴
- → 自动追加新读数到
macro/A股两融余额追踪.md 表 3.1,并提示是否同步更新 strategies/系统性风险防御.md 结构层触发表
- 跨档不跨档但跨月 → 仅追加数据点不提示更新策略表
-
宏观边际变量 regime shift
- 8 变量(见 Step 2.5)中任一跨监控阈值 / 翻信号灯
- → 该变量已在 Step 2.5 更新
macro/宏观边际变量追踪.md(走 L1/L2/L3)并在报告高亮;若 shift 触及系统性风险(如 10Y 破阈、carry unwind 信号)→ 提示核对 strategies/系统性风险防御.md
-
港股流动性灯翻转 / ⚡ 事件
- 三层灯(见 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: 更新索引与日志
- 检查
wiki/index.md 的"投资日志"章节,若无本次复盘条目则添加
- 在
wiki/log.md 头部追加操作记录
输出要求
- 简洁:每个模块用数据+一句话判断,不写废话
- 对比:个股价格必须对照估值区间,给出明确的区间判定
- 信号优先:只输出会影响投资决策的信息,过滤噪音
- 变化优先:重点标出与上次复盘相比发生变化的部分
与其他 Skill 的关系
| Skill | 关系 |
|---|
| yahoo-finance | 个股行情和汇率数据源 |
| macro-analysis | 宏观指标数据源(有新数据发布时调用) |
| value-invest | 估值模型的生产者,本 skill 消费其输出的价格区间 |
Error Handling
- yfinance 或 akshare 接口报错:标注"数据获取失败",跳过该模块继续
- WebSearch 无结果:去掉日期限定,用更宽泛的关键词重试一次
- wiki 中个股缺少估值区间:价格区间列显示"—"