功能特性
Richfolio 在一条单一管道中集成了 18+ 项能力 — 全部运行在免费版 API 上。
两阶段 AI 分析(Think/Plan 框架)
Richfolio 采用一个两阶段认知框架,灵感来自 OpenAlice 的 Think/Plan 架构:
阶段 1:Observe(Think) — Gemini 为每个股票代码提取结构化观察:有哪些价位信号(P/E 低于均值、接近 52 周低点、低于 200 日均线)、哪些动量信号生效(RSI < 35、MACD 看涨、布林带 %B < 0.15、随机指标 %K < 20)、风险标记、1 句话的估值与技术摘要、新闻情绪以及配置上下文。该阶段不给出动作建议 — 纯数据解析。
阶段 2:Decide(Plan) — 另一次 Gemini 调用接收结构化的观察(而非原始数字)以及全部决策规则、历史推理上下文,然后套用 STRONG BUY 标准产出最终建议。由于决策阶段处理的是预先消化过的观察,STRONG BUY 标准应用得更一致。
每个股票代码会获得一个动作:STRONG BUY、BUY、HOLD 或 WAIT,并附带建议金额、限价单价格、价值评级(股票)以及抄底信号(超卖检测)。如果 Gemini API 不可用或额度耗尽,Richfolio 会自动回退到基于缺口的建议。对 Gemini 的临时错误(503/429),会以退避策略自动重试最多 2 次。
STRONG BUY 标的在邮件和 Telegram 消息中还会附带“详细分析”链接。点击会打开 GitHub Pages 上的专属分析页,内含交互式 TradingView 图表、详细的买入论点、风险分析、关键指标、基本面和动作摘要 — 全部由 Gemini 2.5 Flash 生成。

财报日历守护
Richfolio 会通过 Yahoo Finance 的 calendarEvents 模块自动检测即将到来的财报日期(零额外 API 调用 — 复用现有的 quoteSummary 请求),并应用程序化的安全上限:
- 财报 ≤ 3 天 → 强制 HOLD — 临近财报持有的风险/收益过于不对称,不适合买入建议
- 财报 ≤ 7 天 → 上限为 BUY — 财报临近时绝不发出 STRONG BUY
- 财报 ≤ 14 天 → 在邮件中显示为彩色徽章、在 Telegram 中显示为
[earnings Xd]标签,以便提醒
这一守护既体现在 AI 提示词里(软指令),也作为程序化硬上限在守护管道中执行(AI 无法覆盖)。灵感来自 OpenAlice 的财报日历感知能力,用于规避高风险事件期间的仓位。
AI 后置守护验证管道
AI 返回建议之后,程序化验证管道会运行 6 项顺序检查,在到达用户之前捕捉常见的 AI 错误。灵感来自 OpenAlice 带上下文隔离的守护管道概念:
- 债券 ETF 上限 — 短久期债券 ETF(BSV、SHY 等)硬上限为 BUY,最大置信度 65%
- 财报临近 — 程序化执行财报日历守护
- STRONG BUY 标准强制 — 校验配置缺口 ≥ 2%、置信度 ≥ 80%,且至少存在 1 个价位信号;任一未达标即降级为 BUY
- 最多 2 个 STRONG BUY — 按置信度排序,只保留前 2,其它降级
- 置信度合理性 — 上限 95%(AI 偶尔会输出 98-100);HOLD/WAIT 上限 70%
- 买入金额合理性 — 建议买入额上限为缺口金额;HOLD/WAIT 的买入额置零
每个守护触发时都会记录日志便于排查。守护之间彼此独立 — 它们接收建议数据,而非原始的券商/API 对象。
技术动量信号
Richfolio 通过 Yahoo Finance 获取 250 天的历史价格数据,并为投资组合中的每个标的计算技术指标:
- SMA50 / SMA200 — 50 日与 200 日简单移动平均线,以及当前价相对于各自的位置
- RSI(14) — 14 日相对强弱指数(低于 30 = 超卖、高于 70 = 超买)
- MACD — 异同移动平均线(EMA12 − EMA26,信号线 = MACD 的 EMA9)。通过金叉/死叉和柱状图方向检测动量切换。适合趋势行情
- 布林带 — SMA(20) ± 2 个标准差。跟踪 %B(在带内的位置:0 = 下轨、1 = 上轨)、带宽(波动率)以及收敛检测(带宽处于 120 日范围的底部 20%,预示突破即将到来)。适合震荡行情
- ATR(14) — Wilder 平滑的平均真实波幅。报告为绝对值和相对价格的百分比。ATR% > 3% = 高波动(AI 放宽限价单),ATR% < 1% = 低波动(收紧限价单)。在仓位规模判断时有用
- 随机指标 — %K(14) 与 3 日平滑 %D。%K < 20 = 超卖确认(并入 STRONG BUY 的动量条件),%K > 80 = 超买。以不同的计算方式补充 RSI
- OBV(能量潮) — 累计的能量潮配合 10 日线性回归趋势分析。仅报告方向:上升(吸筹)、下降(派发)或走平(中性)。OBV 的绝对值跨标的没有意义 — 只看趋势
- 金叉 / 死叉 — SMA50 上穿(看涨)或下穿(看跌)SMA200
- 动量信号 — 基于价格相对均线及 RSI 分类为看涨、看跌或中性
- 近期低点 — 7 日和 30 日低点,用于识别附近的支撑位
AI 提示词中包含明确的冲突解决规则:当 MACD 与布林带冲突时,趋势行情信 MACD,震荡行情信布林带。两者一致时提升置信度。布林带收敛叠加同时的 MACD 金叉/死叉被视为最强入场信号。
所有技术数据 — 包括成交量变化(7 日相对 30 日均值) — 都会喂给 AI 提示词,以便给出更有依据的建议。对于 STRONG BUY 标的,动量细节(包括 MACD 交叉/柱状图、%B 和收敛状态)会直接显示在邮件和 Telegram 消息中。
限价单价格
当 Gemini 给出 STRONG BUY 或 BUY 时,也会建议一个略低于当前市价的限价单价格。建议价格基于最近的支撑位:
- 均线支撑 — 价格接近 50 日或 200 日均线
- 近期低点 — 7 日或 30 日低点作为支撑下沿
- 整数关口 — 整数价位的心理支撑
限价单价格及其依据会在每日邮件、Telegram 消息和盘中提醒中针对 STRONG BUY 标的展示。
价值投资框架
对于个股(不包括 ETF 和加密货币),AI 会套用结构化的价值投资框架,根据五项基本面标准给出 A-D 评级:
- ROE > 15% — 强盈利能力
- 负债权益比 < 50% — 稳健杠杆
- FCF/经营性现金流 > 80% — 强现金转化能力
- 盈利同比正增长 — 业务在成长
- 价格低于分析师目标价 — 市场低估
| 评级 | 满足项 | 含义 |
|---|---|---|
| A | 4-5 | 优秀价值 |
| B | 3 | 良好价值 |
| C | 1-2 | 一般价值 |
| D | 0 | 估值偏高 |
价值评级会进入 AI 的置信度计算(A 加约 10 分,D 减约 10 分),并在邮件和 Telegram 中以彩色徽章呈现。
所有基本面数据来自 Yahoo Finance 的 financialData 模块,被并入既有的 quoteSummary 调用 — 零额外 API 开销。
抄底模型
对所有标的(股票、ETF、加密货币),AI 会评估四项抄底指标以识别潜在的吸筹区:
- RSI < 30 — 超卖区域
- 成交量萎缩 > 20% — 卖压衰竭(7 日均值 vs 之前 30 日均值)
- 价格低于 200 日均线 — 深度价值区域
- 出现死叉 — 利空可能已经反映在价格中(在 RSI 极低时是逆向信号)
不同资产类别使用不同阈值,以减少误报:
- 加密货币(BTC、ETH):2 项及以上指标命中即标记抄底信号。3 项及以上才考虑升级 STRONG BUY。
- 股票与 ETF:3 项及以上才标记抄底信号(更严格)。全部 4 项齐备才考虑升级 STRONG BUY。
抄底信号会在每日邮件、盘中提醒和 Telegram 消息中显示。成交量变化基于既有图表数据计算 — 不增加额外 API 调用。
配置缺口分析
将当前持仓与目标配置百分比对比。每个标的会根据偏离目标的程度被评分,并给出以美元和股数表达的建议买入金额。
分析使用实际投资组合价值与配置估值中的较大者,使得即使你当前持仓小于目标配置规模,缺口计算仍然有意义。
动态 P/E 信号
将滚动 P/E 与从 Yahoo Finance 历史财报数据计算得到的均值 P/E 比较。无需手动设定基准 — 系统会获取季度 EPS 并自动计算均值。
低于历史均值的标记为 below avg(潜在价值),高于均值的标记为 above avg(潜在高估)。ETF 和加密货币因无财报数据自动跳过此信号。
ETF 重叠检测
当你持有的个股同时是目标投资组合里 ETF 的前十持仓时,Richfolio 会检测这一重叠并相应降低该 ETF 的买入优先级。
示例: 如果你持有 30 股 AAPL,而 VOO 包含约 7% 的 AAPL,你直接持有的 AAPL 已部分覆盖了 VOO 的配置缺口。VOO 的建议买入金额会按重叠价值扣减。
这能防止你通过 ETF 不知不觉过度集中于已持有的股票。
52 周区间信号
将每个标的的当前价格定位在其 52 周区间内(0% = 在最低、100% = 在最高):
- 接近低位(低于 20%)— 潜在买入机会
- 接近高位(高于 80%)— 谨慎对待
- 区间中部 — 中性
AI 分析会把这一信号与 P/E、配置数据一同纳入建议。
带情绪评分的新闻摘要
通过 NewsAPI 获取每个标的的头条新闻,使用批量请求以保持在免费版 100 次/日的额度内。基于公司名称映射匹配最近 24 小时内的头条到对应代码。
Gemini 会为每条相关头条评分:
- 情绪:看涨、看跌或中性
- 影响:高、中或低(对股价的潜在推动力)
- 总体情绪:每个标的的聚合(看涨、看跌、中性或混合)
情绪标签会在 AI 提示词的头条旁显示(例如 "Apple beats estimates" [看涨,影响大]),并汇总到整体新闻情绪评估中。这一升级把先前二元的相关/不相关过滤替换为更丰富的信号提取 — 而没有额外 API 成本(同一次 Gemini 调用,只是输出 schema 更丰富)。
推理持久化
每次日运行后,Richfolio 会把每个 AI 建议的快照 — 动作、置信度、价格和理由 — 写入一个滚动 7 天的历史文件(state/reasoning-history.json)。下次运行时,AI 会收到一段 “HISTORICAL CONTEXT”,展示它自己的判断是如何演变的:
AAPL: BUY 72% ($185) → BUY 68% ($187) → HOLD 55% ($192) — 弱化中
SMH: HOLD 45% ($220) → BUY 70% ($210) → STRONG BUY 85% ($205) — 强化中
这让 AI 能识别信念动量 — 如果一个标的连续 3 天以上强化,趋势得到确认;若在弱化,AI 会变得更谨慎。灵感来自 OpenAlice 的脑/记忆持久化概念,后者把认知状态作为可审计的提交记录跟踪。
在 GitHub Actions 中,使用 actions/cache 缓存 state/ 目录即可让推理历史跨工作流持久保存。
投资组合健康度
基于当前持仓计算两个组合级指标:
- 加权 Beta — 按仓位加权的组合级市场风险
- 预估年度股息收入 — 基于当前股息率和持仓规模的预计年度股息
盘中提醒
不要错过当日的入场时机。早间简报运行后,Richfolio 会把 AI 建议保存为基线。盘中检查(npm run intraday)在交易时段每 2 小时运行一次,重新获取价格和技术指标,重新运行 Gemini 分析(跳过新闻以节省 API 额度),并与早间基线对比。
只在以下情况触发提醒:
- 置信度提升至少 5 个百分点(可配置)且高于 80%(可配置)
- 动作升级 — 例如早间的 BUY 在下午变成 STRONG BUY
- 新信号 — 早间未推荐的标的现在出现强买入信号
提醒通过邮件和 Telegram 投递,格式聚焦,展示早间 vs 当前对比、价格变化、AI 推理以及 STRONG BUY 信号的限价单价格。无提醒就无消息 — 你只在重要时刻才会收到 Richfolio。
所有阈值都可通过 CONFIG_JSON 变量里的 intradayAlerts 段配置。详见配置说明。

每周再平衡报告
一份单独的每周报告(npm run weekly)专注于投资组合漂移和再平衡动作。没有新闻、没有 AI — 只有一张清爽的表格,显示:
- BUY — 仓位偏低(缺口 > 1%)
- TRIM — 仓位偏高(缺口 < -1%)
- OK — 在目标范围内的仓位
附带超配警告,并标记出不在目标投资组合内的持仓。

双通道投递
每份报告通过两个通道送达:
- 邮件 — 由 Resend 投递的暗色主题 HTML 邮件,内含完整细节(配置表、P/E 信号、AI 建议、技术动量、限价单、新闻)
- Telegram — 由 Telegram Bot API 投递的精简纯文本摘要,为移动阅读优化(包含 STRONG BUY 的技术细节和限价单)
两个通道彼此独立 — 任一未配置时,另一个仍能正常投递。