这是 AI 理财系列的第 3 篇。本系列讲述如何用 Claude Code 和 LLM Wiki 构建个人理财 AI 系统。
我从来没跑赢过大盘。
不是没努力。我看财报、跟行业新闻、听分析师的判断。每次下决定,感觉都有道理。但回头看,大部分买卖都是被某条消息触发的,朋友推荐、某个超预期的数据、X 上刷屏的观点,感觉上是在分析,说到底是噪音驱动。
结果都是一样的,跑不赢大盘。
后来想明白了,这不是信息量的问题,是决策结构的问题。我管过云基础设施,见过什么叫可靠的系统。投资失败不是因为选的行业不对,是因为根本没有一套系统。每次决策都从零开始,没有一致的逻辑,事后也没办法追溯哪里出了问题。
工程师处理这类问题的方式是设计系统:明确的输入、显式的逻辑、可观测的状态、可预测的输出。我决定把同样的方法用到投资上。
这就是 IOS 的起点,投资操作系统(Investment Operating System)。它运行在 Claude Code 和私有 LLM Wiki 之上,是一个六阶段框架,覆盖从想法生成到仓位管理的完整投资流程。
这篇是系列第 3 篇,专门展开系统本身的复杂度,它包含哪些组件,为什么需要这么多层。
知识库与分析工具
在介绍六个 Stage 之前,先说清楚这套系统的底层依赖——框架从哪里来,Command 是谁开发的,finance-skills 和框架是什么关系。
分析框架
五个框架分别来自两个项目:
RWH upstream 的三个框架(随 upstream 知识库一起引入):
| 框架 | 核心问题 | 用于哪个 Stage |
|---|---|---|
| BAIT | 为什么市场现在错误定价? | Stage 2(基本面研究) |
| Moneyball PW EV | 预期价值超过当前价多少? | Stage 2(基本面研究) |
| Asset Types | 这类商业模式该用什么指标衡量? | Stage 2(基本面研究) |
RWH-overlay 自建的两个框架(在 overlay 的 frameworks/ 目录中维护):
| 框架 | 核心问题 | 用于哪个 Stage |
|---|---|---|
| Chen Yun 方法 | 这只股票是否属于结构性主题赛道? | Stage 1(想法生成) |
| SEPA | 技术上,现在是买入的正确时机吗? | Stage 3(技术确认) |
自建 Command 清单
RWH-overlay 共开发了 14 个自定义 Command(存储在项目的 .claude/commands/ 目录中):
| Command | 用途 |
|---|---|
/kb-sync | 构建并同步合并后的完整知识库(Upstream + Overlay) |
/stock-analyze <TICKER> | 新股票完整研究 Pipeline:15 节论文,含 BAIT、Moneyball、Asset Type |
/stock-refresh <TICKER> | 财报或重大新闻后的论点更新 |
/stock-entry <TICKER> | 单只股票的入场/退出点精细分析 |
/morning-check <TICKER> | 开盘决策:论点检查、SEPA 状态、入场/止损/目标价 |
/morning-check ALL | 批量扫描所有持仓;标记需要处理的信号 |
/etf-analyze <TICKER> | ETF 深度分析:持仓审查、费率、流动性、行业纯净度 |
/etf-check | 事件驱动的行业 ETF 定投决策——检查触发条件 |
/chen-integrate | 解析 Chen Yun 观点,标记需要研究的 Ticker |
/chen-validate <TICKER> | 将 Chen Yun 提及的 Ticker 对照投资框架交叉验证 |
/market-daily | 每日市场报告和行业健康摘要 |
/market-weekly | 应税账户周度行动计划:TLH 机会、蓝筹候选、DCA 执行 |
/market-monthly | 月度持仓和论点回顾 |
/market-quarterly | 季度持仓和策略回顾 |
框架与 finance-skills 的关联
finance-skills 以 Plugin 模式安装,提供数据获取和技术分析能力。各 Command 在执行框架逻辑时按需调用:
| finance-skills 工具 | 为哪个框架/Command 提供支撑 | 具体作用 |
|---|---|---|
finance-market-analysis:sepa-strategy | SEPA 框架 → /morning-check | Stage 判断、Trend Template 8 条件核查、VCP/杯柄形态识别、突破量能验证 |
finance-earnings:calendar | Moneyball PW EV → /stock-analyze | 拉取最新 EPS 数据、与预期差距、管理层指引变化,作为三情景建模的输入 |
finance-market:options-flow | BAIT(Technical 层)→ /stock-analyze | 识别机构期权动向,辅助判断是否存在技术性卖压或逼空信号 |
这些工具在六个 Stage 中反复出现。自建 Command 是对框架逻辑和 finance-skills 数据能力的编排和整合。
六个 Stage 概览
- 想法生成 — 候选标的从哪里来,筛选标准是什么
- 基本面研究 — 三个并行框架(BAIT、Moneyball PW EV、Asset Type)
- 技术确认 — SEPA 趋势与形态分析
- 账户分配 — 选哪个账户,由税务和风险逻辑驱动
- 执行 — 入场价格、止损位、盈亏比、市场环境检查
- 仓位管理 — 入场后每种信号对应的明确规则
Stage 1:想法生成
标的来源有四个渠道:
- Chen Yun 方法:跟踪独立分析师对结构性主题赛道的判断,识别尚未被市场充分定价的板块机会
- 财报驱动:关注业绩指引的变化,不只是超预期或不及预期本身
- 新闻与结构性趋势:电网升级、电池储能、光互联、LEO 卫星——这些都是正在追踪的热门赛道
- 板块轮动信号:资金从哪里流出,往哪里流入
进入初筛的五个标准:板块顺风、营收增速 >15%、管理层可信度、90 天内可识别的催化剂、无明显红旗。满足 ≥3 个条件,就运行:
/stock-analyze <TICKER>
/stock-analyze 做了什么
这个 Command 是整套研究流程的入口,产出一份 15 节的完整论文。它并行读取三层信息:
- RWH wiki(蓝筹股)或 overlay 行业分析(主题股)——提供已蒸馏的基本面背景
- finance-skills 的
finance-earnings:calendar——自动拉取最新财报数据、EPS 与预期的差距、管理层指引变化 - overlay 行业综合分析——把公司层面事件连接到多年期赛道故事
拿到这三层数据后,Command 按顺序应用三个框架:Asset Type 确定估值方法 → BAIT 识别错误定价来源 → Moneyball PW EV 量化机会大小,最终把结论写入 wiki/tickers/<TICKER>/thesis.md。
Stage 2:基本面研究
这个 Stage 包含三个并行分析框架,每个框架回答不同的问题。
BAIT 框架
BAIT 是四类市场错误定价的首字母缩写:Behavioral(行为偏差)、Analytical(分析误差)、Informational(信息不对称)、Technical(技术性卖压)。
投资机会的本质是某种形式的错误定价。BAIT 强迫你明确说出:这个机会属于哪一类,或者哪几类的叠加?需要 ≥3 个类别重叠,才算有足够的安全边际。
Moneyball PW EV 框架
PW EV(概率加权预期价值)要求你为三种情景分别赋值:
| 情景 | 目标价 | 概率 |
|---|---|---|
| Bull Case | $95 | 30% |
| Base Case | $68 | 50% |
| Bear Case | $35 | 20% |
PW EV = 95×0.3 + 68×0.5 + 35×0.2 = $69.50
如果当前股价是 $50,PW EV 高出 39%,上行/下行比例是 3.2:1。
规则:PW EV 必须超过当前价格 15% 以上,且上行/下行比 >2:1,才能进入下一 Stage。
Asset Type 框架
在做估值之前,先明确这是什么类型的资产:高增长科技股、平台型公司、周期性资产、防御型蓝筹……不同类型适用不同的估值方法和持仓策略。
三个框架的分析结果都写入 wiki/tickers/<TICKER>/thesis.md。
thesis.md 的结构
这份文件按固定的 15 节结构记录每次分析:
| 节 | 内容 |
|---|---|
| 执行摘要 | 一段话说清楚:为什么这只股票,为什么现在 |
| 公司概述 | 核心业务、收入结构、主要客户 |
| 资产类型分类 | 高增长 / 平台 / 周期 / 防御,决定后续用哪套估值方法 |
| 竞争优势 | 护城河来源:技术、规模、网络效应、监管壁垒 |
| 行业赛道 | 所属赛道的结构性驱动力和主要风险 |
| BAIT 分析 | 四个维度各打分,标注重叠来源 |
| Moneyball 计算 | 三个情景的目标价、概率权重、PW EV 结论 |
| 看多情景 | 触发条件 + 12-18 个月价格目标 |
| 基准情景 | 中性假设下的预期路径 |
| 看空情景 | 关键风险成真时的估值下限 |
| 关键催化剂 | 接下来 90 天内能改变市场判断的具体事件 |
| 主要风险 | 可能让论点失效的因素 |
| SEPA 技术状态 | Stage 判断 / 趋势模板 / 当前形态 |
| 综合结论 | 是否进入下一 Stage,理由 |
| 变更日志 | 每次更新的时间戳和改变了什么 |
LLM Wiki 通过变更日志追踪论点随时间的演变。
Stage 3:技术确认(SEPA)
基本面研究给出"为什么买",技术分析给出"什么时候买"。SEPA 框架的核心是:
- Stage 2 上升趋势确认
- Trend Template 满足 ≥5/8 条件
- 识别 VCP、杯柄形态或平台整理
- 突破时成交量 >150%
运行 /morning-check <TICKER>,系统会输出四个结论之一:Execute / Chase 50% / Wait / Skip。
SEPA 来自哪里,morning-check 整合了什么
SEPA 分析由 finance-skills 的 finance-market-analysis:sepa-strategy 提供。这个 Skill 自动完成:200 日均线斜率判断(是否在 Stage 2 上升阶段)、Trend Template 的 8 个条件逐一核查、VCP 收缩次数与幅度识别,以及突破当天成交量对比 50 日均量。
/morning-check 在此基础上整合了更多层:
- RWH wiki + thesis.md:当前持仓的论点状态(论点是否仍然成立)
- finance-earnings:calendar:本周是否有财报,是否在静默期内
- data/positions.md:成本基础、当前浮盈/浮亏、已设定的止损位
- overlay 行业分析:板块最新动态是否影响个股判断
最终输出是一个可执行的建议,而不只是一堆数据。
Stage 4:账户分配
这个 Stage 要回答的是,分析完了,这笔投资该放进哪个账户?
| 资产类型 | 账户 |
|---|---|
| 杠杆 ETF(TQQQ、TSLL 等) | Roth IRA only |
| 高成长股(市值 < $100B) | Roth IRA |
| 板块主题 ETF | Roth IRA |
| 蓝筹股(市值 > $100B,持有 ≥1 年) | Taxable |
| 指数 ETF(VTI、QQQ) | Taxable(DCA) |
逻辑很清晰:Roth IRA 是免税账户,适合高换手、高波动的仓位;Taxable 账户要考虑税务成本,适合长期持有的质量型仓位,同时利用 TLH(税务亏损收割)优化税后收益。
这个 Stage 的决策结果体现在两个地方:账户分工规则长期存储在 data/profile.md,每笔实际执行后更新到 data/positions.md(记录放在哪个账户,以及对应的税务批次)。
Stage 5:执行
/morning-check 在执行时输出:
- 入场区间(Pivot 价格 ±5%)
- 止损位(Moneyball Bear Case 或 MA50,取较近者)
- T1/T2 目标价
- 盈亏比(R/R ratio,必须 ≥2:1 才能入场)
- 市场环境检查(SPY/QQQ 是否在 200 日均线以上)
盈亏比不达标,不管多看好这个标的,都不入场。这是系统的规则,不是心情的判断。
日常入场由 /morning-check 给出建议;当需要更精细的入场/退出点分析时,运行 /stock-entry <TICKER>。入场完成后,手动更新 data/positions.md,记录实际入场价、股数、止损位。
Stage 6:仓位管理
入场之后,系统对每一种信号都有明确的行动规则。
Roth IRA 仓位管理
| 信号 | 行动 |
|---|---|
| 触达止损位 | 100% 出场,无例外 |
| 浮盈 >+20%,Stage 2 趋势健康 | 持有,止损上移至成本位 |
| 浮盈 >+20%,跌破 MA50 | 减仓 50%,剩余部分追踪止损 |
| 单日跳空 +30% | 减仓 50% |
| 投资论点被破坏 | 降低出场阈值,评估是否全部退出 |
止损规则没有例外。在你还没有情绪的时候做好决策,到了止损位直接执行。
Taxable 账户
税务是一个一级变量。每周运行 /market-weekly,系统生成 Taxable 账户的周度行动计划:TLH 机会、蓝筹候选、VTI/QQQ 的 DCA 执行时机。
私有数据层:让框架变成专属建议
整个系统有四个目录,其中 data/ 通过 .gitignore 完全私有:
data/positions.md:当前持仓 + 成本基础data/profile.md:风险承受度、税率档位data/strategy/:结合实际持仓的个人投资策略文档
output/ 目录是公开的,放的是不含个人持仓信息的日期相关报告(市场日报、行业摘要等)。wiki/ 是长青内容,也是公开的。私有边界在 data/,不在 output/。
这个设计的价值在于:当你运行 /stock-analyze NVDA 时,Claude Code 不只是给出通用分析,而是会读取你的当前 Roth 仓位并说:
"你的 Roth IRA 已有 6 只个股,达到你设定的上限。要加入 NVDA,需要先退出一个仓位。根据论点强度,SMCI 是当前最弱的——原因如下。"
没有私有数据层:这是一个框架。有了私有数据层:这是针对你具体情况的建议。
positions.md 的结构
以下是一个典型模板(数据均为示意,不含真实持仓):
# Positions
## Roth IRA
### XXXX(入场:2025-01)
- 入场价:$XX.XX | 股数:XXX | 成本基础:$X,XXX
- 止损:$XX.XX | T1:$XX.XX | T2:$XX.XX
- 当前状态:Stage 2 ✅ | 浮盈:+XX%
- 论点状态:Active
- 下次关注触发:XXXX 财报(Q1 2025)
## Taxable
### XXXX(入场:2024-06)
- 入场价:$XX.XX | 股数:XXX | 成本基础:$XX,XXX
- 持有计划:长期(>1年,长期资本利得税率)
- 论点状态:Active
- TLH 状态:上次同标的买入 >30 天,Wash Sale 窗口已开
Claude Code 读取这个文件时,会结合每只股票的 wiki 论文和实时市场数据,生成针对你具体持仓的建议,而不是通用分析。
一周的系统运行方式
实际操作下来,每周大约两到三个小时,分几个固定节点。
周一早上。 开盘前跑 /morning-check ALL,大约 15 分钟扫完所有持仓,标记需要处理的信号。如果有确认入场的标的,接着跑 /stock-entry <TICKER> 拿到精确入场区间、止损位和目标价。收盘后跑 /market-daily 看板块健康摘要。
工作日中。 新标的线索异步到来,脑子里过一遍五条筛选标准,≥3 条就排队跑 /stock-analyze <TICKER>,结果写入 wiki 等我有空来看。已持仓出现重大消息——业绩指引修订、评级下调、供应链事件——随时跑 /stock-refresh <TICKER> 更新论点,不等月度周期。ETF 机会走另一条触发式流程。
周末。 跑 /market-weekly:TLH 机会、蓝筹候选、VTI/QQQ 的 DCA 执行。
每月。 对 5-8 个核心持仓跑 /stock-refresh 全量重评估,再跑 /market-monthly 做整体持仓和策略复盘。
每个流程的决策逻辑在下面的 Workflow 图里。系统不会消灭判断——最终决策还是我来做——但依据的是一致的框架,而不是周二早上的心情。
四个核心 Workflow
系统运转依赖四条 Workflow,每一条的输入、输出和参与的 Command 都是明确的。
1. 个股研究→入场
[新标的线索]
│
├─ Chen Yun 信号 / 赛道扫描 / 财报惊喜 / 新闻
│
▼ 五条筛选标准 ≥3 条通过
[/stock-analyze <TICKER>]
│
├─ BAIT ≥3 overlap?→ 否:Watch List
├─ PW EV > 当前价 15%,上/下比 >2:1?→ 否:Wait
└─ 是 ↓
[/morning-check <TICKER>]
│
├─ SEPA Stage 2 + Trend Template ≥5/8
└─ 输出:Execute / Chase 50% / Wait / Skip
↓ Execute
[/stock-entry <TICKER>] ← 精确入场区间、止损位、T1/T2 目标价
↓
更新 data/positions.md
2. 每日持仓监控
[每天开盘前]
↓
[/morning-check ALL]
│
├─ 扫描所有持仓:止损状态 / 技术结构 / 论点变化
├─ 标记本周有财报的持仓
└─ 输出优先级列表:立即处理 / 观察 / 无需操作
[收盘时]
↓
[/market-daily] ← 板块健康摘要、当日重要信号变化
[持仓出现重大消息(工作日随时)]
↓
[/stock-refresh <TICKER>] ← 更新论点,不等月度周期
3. 赛道 ETF 定投
[触发条件(满足任一)]
① Chen Yun 近 7 天该赛道 ≥3 次提及
② ETF 价格 ≤ MA50 −5%
③ Fear & Greed < 30
↓
[/etf-check --sector <赛道名>]
│
├─ 对比同赛道 ETF(费率 / 流动性 / 成分股纯净度)
└─ 输出:推荐 ETF + 建议买入量(基于目标配比缺口)
[首次评估某赛道 ETF 或需要深度对比]
↓
[/etf-analyze <TICKER>] ← 完整 ETF 深度分析后再确认
↓ 确认
更新 data/positions.md
4. 定期复盘
[每周日]
↓
[/market-weekly]
│
├─ TLH 扫描:浮亏仓位 + Wash Sale 合规检查
├─ 蓝筹候选:RWH 最新 Initiate/Add 推荐 + 当前价位判断
└─ DCA 执行:VTI/QQQ 本周建议买入量
↓
写入 data/morning-checks/taxable-action-YYYY-WXX.md(私有)
[每月]
↓
[/stock-refresh <TICKER>] 对 5-8 个核心持仓 ← 结合最新财报全量重评估
[/market-monthly] ← 整体持仓和策略复盘
系统的输出文件一览
| 文件 | 更新时机 | 是否私有 |
|---|---|---|
wiki/tickers/<TICKER>/thesis.md | /stock-analyze 或 /stock-refresh 后 | 公开 |
output/market/YYYY-MM-DD.md | /market-daily 后 | 公开 |
data/positions.md | 每次交易后 | 私有 |
data/profile.md | 风险偏好或税率变化时 | 私有 |
data/strategy/roth-2026.md | 年度策略调整时 | 私有 |
data/strategy/taxable-2026.md | 年度策略调整时 | 私有 |
data/morning-checks/taxable-action-YYYY-WXX.md | 每周 /market-weekly 后 | 私有 |
为什么"操作系统"是正确的比喻
操作系统不做决策。它提供一个让决策可以可靠发生的环境:管理资源、处理中断、执行规则。
IOS 对投资做的是同样的事。AI 负责分析的繁重工作,我负责提供判断和私有数据。结果是更低的决策错误率、更理性的仓位 sizing,以及最重要的一点——我清楚知道自己为什么持有每一个仓位,以及什么情况会改变我的判断。
结语
IOS 不能保证我跑赢大盘。
但它给了我之前一直缺少的东西,让我清楚知道自己为什么持有每一个仓位,也知道什么情况会改变这个判断。这两点,靠直觉交易做不到。
工程师的优势不是选股更准,是能建一套系统,让决策在你情绪最差的那天也能可靠发生。不是跑得比市场快,而是不再被噪音带着跑。这就够了。