> ### 内置报告视觉层(可选;优先级低于本 skill 的实质输出要求)
>
> 本 skill 自带一套报告视觉层,不依赖任何外部技能——单独安装本 skill 即可完整复现该风格。
> 规范:references/report-style.md;可直接套用的单文件模板:templates/report-style-template.html;hero 图内嵌脚本:scripts/embed_hero.py。
> 风格:哑光质感(低反光 / 低饱和 / 明度立骨)· 正文无衬线 16px · 高对比(正文 17:1)· 面向老年读者优化;亮面仅作局部点缀(单页 ≤2 处、总面积 ≤2%)。
>
> - 适用范围:仅作用于呈现层——单文件 HTML 交付物的版式与配色。Markdown 文本、xlsx/docx/pptx 等交付形态,以及本 skill 规定的内容结构、取数纪律、核验要求、来源分级、口径标注,均不受其约束。
> - 生效方式:默认不自动叠加;由用户显式要求(如「用那套纸感风格」「参考上次那个模板」),或交付形态确为单文件 HTML 且用户未另行指定风格时套用。允许局部套用(例如只要配色)。
> - 优先级:低于本 skill 的全部实质输出要求。 二者冲突时一律以内容为准、改样式;不得为凑版式而删减、压缩、改写或改变本 skill 规定内容之性质(例:把结论改成引语、把洞察降级成金句、省略口径与来源标注)。
> - 原则:实质大于形式。 视觉层缺失或降级,不得成为内容缩水的理由。
持仓每周跟踪
一、功能概述
对用户自选的持仓组合做周度跟踪,产出一份结构化周报:
- 任意标的可配:持仓清单由用户在
config/holdings.json中自行定义(A股/港股/美股/B股/ETF 均可),不预设任何默认持仓 - 假设反证体检:每只持仓可配置"投资假设 + 反证阈值",每周扫描是否被击穿(本机制是手段,服务于"细致梳理本周企业信息"这一目的)
- 双层扫描:企业层(公告/财报/经营动态)+ 行业层(行业级事件对持仓的影响)
- 结论先行:核心结论置顶,逐家"结论先行 + 多空 + 数据来源"
- 数据纯净:一手公告/官方渠道/正规数据源优先,严禁社交媒体/论坛 UGC 作数据源
二、输入说明
| 输入项 | 必填 | 说明 |
|---|---|---|
持仓清单 config/holdings.json |
是 | 复制 config/holdings.example.json 为 holdings.json,填入自己的标的与假设账本 |
| 跟踪区间 | 否 | 默认最近 7 天(上周五至今/ISO 周);可指定任意起止日 |
数据接口 config/config.json |
否 | 行情/新闻接口配置(见第五节);未配置时提示并请求用户提供行情数据或使用公开渠道 |
| 关注焦点 | 否 | 如"重点看中报季披露"——附加扫描维度 |
首次使用三步:① 复制 config/holdings.example.json → config/holdings.json;② 按示例格式填入你的持仓、每只标的的投资假设与反证阈值;③(可选)配置数据接口。之后每周一句"生成持仓周报"即可。
三、输出说明
- 产物:HTML 周报,命名
持仓周报_{YYYY-Wxx}_{起止日期}.html - 结构(顺序固定):
1. 页眉:周次、覆盖区间、持仓口径、数据源声明
2. 一、核心结论(结论先行):本周假设触发情况、新增失效、接近阈值预警、强确认/经营向上、行情概览——4–6 条
3. 二、假设扫描总览:触发条数 + 接近阈值预警条数 + 前瞻信号(若有)+ 阈值健康度说明
4. 三、行情快照:持仓行情表(现价/当日%/PE/股息率/YTD%/近5日%);多币种持仓附汇率时点
5. 四、逐家经营动态:每家一张卡片——本周核心事件 + 假设状态 + 多/空 + 数据来源
6. 五、行业层扫描(有行业级事件时):行业事件对相关持仓的影响
7. 六、多空排序:全部持仓按梯队排序的单表总览(强确认/稳健🟢/接近阈值🔍/⚠触发),每标的附一句话判定
8. 七、(可选)或有持仓/衍生品监控:配置了watch_only/衍生品标的时启用
9. 八、经营判断校准账(可选):本周新增判断预登记(判断陈述+冻结证据+校准判定规则+预计校准时点)+ 待校准累计引用
10. 九、关键节点日历:未来 2–4 周待跟踪事件(财报日/股东会/解禁/行业事件)
11. 十、时点完整性声明:本周已知数据缺口逐条列明(不掩盖),每条附处置方式
12. 页脚:配色说明(涨红跌绿·A股惯例,可配置)、免责声明
四、方法论与工作流程
4.1 总原则
- 周报主体是"细致梳理本周企业信息",阈值体检只是手段——机制永远处在辅助章节,不得让周报沦为阈值仪表盘
- 结论先行:每层信息先给判断再给论据;正反两面都要有
- 指令要素全覆盖:涉及"企业及所属行业"、"正股及关联衍生品"类复合需求时,逐项覆盖,禁止只做熟悉的一半
- 价格锚点当日实取:充当阈值判据的价格(股价/商品价/汇率)在周报生成当日必须实时取数,禁止沿用区间表述或上周数值
4.2 假设反证账本(holdings.json 核心结构)
每只持仓配置若干条可证伪的投资假设,每条假设附反证阈值(击穿即触发警示):
{
"name": "示例公司A",
"code": "600xxx.SH",
"market": "A股",
"assumptions": [
{
"id": "A-01",
"hypothesis": "直销占比提升支撑双位数营收增长",
"falsifier": "营收同比 < 10%",
"type": "比率型",
"status": "healthy"
},
{
"id": "A-02",
"hypothesis": "品牌溢价稳定,批价不破位",
"falsifier": "批价/出厂价 < 1.15",
"type": "绝对点位型",
"status": "healthy"
}
]
}
阈值设计三要点:
1. 可证伪:每条假设必须能被一个具体数字/事件击穿("长期看好"不是合格假设)
2. 类型标注:比率型(增速/占比)、分位型(估值分位)、绝对点位型(价格阈值)——绝对点位型需定期复核有效期,防止高位锚定漂移
3. 状态流转:healthy(健康)→ leading(接近阈值预警:距阈值近但未击穿;v1.2.0 前旧名"领先预警",历史周报与 holdings.json 中的旧标签同义不改)→ triggered(触发:假设被击穿,需复盘是否逻辑破灭)→ invalid(失效:阈值本身不合理,需修订);另有 confirmed(强确认:本周出现正面验证证据)
🔴 档名语义纪律(v1.2.0 更名根因):旧名"领先预警"承诺的是时间领先性,实际定义是空间接近性(距阈值近)——W35 实证:三条"领先预警"全部是 Q2/半年报滞后数据+距阈值近,真前瞻为零,两个维度被混用。更名后"接近阈值"只表达空间状态;若确有时间上领先于财报的信号(资本开支指引、在手订单/订单指引、扩产投产落地、涨价函、长协预售、行业领先指标如晶圆投入/出口单价),单列标注为「📡 前瞻信号」,且每条必须能回答"领先于什么、领先多久"——答不出就不是前瞻,归"接近阈值"或同步观察。周报中两者分列,禁止混入同一清单。
估值锚口径:同一公司存在多类股份(A/B/H 股、双重上市)时,估值与加仓锚点必须用实际持有的股份类别计价,并在报告中注明折价/溢价。
4.3 每周扫描流程(五步)
Step 1 行情快照:拉取全部持仓最新行情(现价/PE/股息率/YTD/近5日);
多币种持仓标注汇率时点;价格类判据当日实取
Step 2 企业层扫描(近7天):每只持仓——公告、财报/业绩预告、重大经营动态、
股东变动、监管/舆情信号;财报季先查是否已发布盈利预告/季报
Step 3 行业层扫描(近7天):持仓所属行业的重大事件(政策/价格/竞争格局),
评估对持仓的传导影响
Step 4 假设体检:逐条对照反证阈值——触发(击穿)/接近阈值(距阈值近但
未击穿)/强确认(正面验证)/健康;新增触发须在核心结论置顶。
时间上领先于财报的信号(capex 指引/订单/扩产/涨价函/长协)单列
「📡 前瞻信号」,每条注明"领先于什么、领先多久",与接近阈值分列
Step 5 成文:按第三节结构输出 HTML 周报;数据未齐的项标"待补查",
禁止因来源未齐而写"无重要事项"
扫描纪律:
- 时间窗口严格 7 天;交付前对最近 24 小时做一次尾部复扫(防漏盘后/周末公告)
- 每条重要信息须标注来源;关键数据(财报数字)双源核验(公告原文 + 正规媒体/数据源)
- 关联衍生品(可转债/期权等,若配置)须独立扫描事件线(强赎/回售/违约/到期),不能只扫正股
- 空返回 = 检索路径失败,不是"无信息"——换路径重试后仍无才记"未检出"
时点归因与汇总层纪律(2026-08-28 W35 老兔三轮质询实证):
- 事件按披露日归周:财报/公告类事件以实际披露日归属周次。若某事件在发布当周漏判、后续周才补录进假设体系,须标「存量事件·本周首次录入触发判定」+ 原披露日,禁止打「本周新增」标签
- 财报事件发布当周须完成触发判定:不得把当周该做的判定推迟到后续周再补录
- 汇总层必须与明细层同源刷新:核心结论 / top-3「本周最重要的三件事」/ 多空排序表,须先遍历全部持仓的本周真事件后再排序生成。禁止"挑一个填空"式补位——W35 实证:腾讯 Hy4 preview(8/28 发布)已写在腾讯章节正文,但 top-3 先用时点错误的资本开支、再用行业级的道交法填空,导致腾讯在本周重要事件中缺席,被老兔连续三轮质询
- 汇总层不得使有事件的标的缺席:某标的本周确有事件而汇总层未体现,即视为汇总失效,须回明细层重排
4.4 周报写作规范
- 核心结论 4–6 条:①本周假设触发(若有,置顶加粗)②新增阈值失效情况 ③接近阈值预警清单 + 前瞻信号(若有,分列)④强确认/经营向上 ⑤行情概览(领跌/抗跌 + YTD 最弱)
- 逐家卡片:
本周核心(3–5 句,关键数字加粗)+假设状态(逐条🟢/⚠️/✅)+多:…空:…(各 2–4 点)+来源(标注双源核验情况) - 多空排序表:单表总览全部持仓,四档梯队(强确认🟢 / 稳健🟢 / 接近阈值🔍 / ⚠️触发),每标的一句话判定依据——给"一眼看全组合"的收口视图
- 校准账(可选但推荐):对本周新形成的经营判断做预登记——判断陈述(冻结当时的证据快照)+ 校准判定规则(什么结果算"我对/我错")+ 预计校准时点(如中报/年报日);跨周累计可维护独立台账文件(如
config/calibrations.md),周报中引用累计条数并登记本周新增 - 关键节点日历:未来 2–4 周确定日期的事件(财报日/股东会/解禁)+ 窗口级提示(如"中报集中披露窗口")
- 时点完整性声明:本周扫描已知缺口逐条列明(工具故障/字段未返回/数据源盲区),每条附处置方式(降级路径/待补查/结构性盲区提示)——缺口显式化,不掩盖
- 配色:默认 A 股惯例(涨=红、跌=绿),可在 config.json 中改为国际惯例(涨绿跌红)
- 可读性:全表数据标涨跌方向与幅度;缺数据标"待补查",不自填
Resume:长任务状态恢复
长任务(多标的 / 章节多 / 步骤长)在运行时可能因中断或上下文压缩出现"忘了这步、漏了那项"。本技能采用状态外置机制:不依赖上下文记住进度,每个 boundary 把执行状态从外部文件重新灌回。
启用门槛(先判长短,短任务不启用)
满足任一才启用:① 标的数 ≥3;② 产物章节 ≥12 节;③ 预计工具调用 >20 次。
不满足则不创建状态文件,按常规流程一次性跑完——避免给短任务平白加上文件读写成本。
boundary 定义
- 每完成一只标的的企业层+行业层扫描
- 假设体检完成
- 汇总层成文前
每个 boundary 结束时写一次状态文件,下一个 boundary 开始时先读再继续(不在每一步都写,防止"写状态"本身吃掉上下文预算)。
状态文件
路径:.workbuddy/progress/{task}.md(目录不存在则创建)。模板:
# {task_id}
updated_at: {ISO 8601,带时区,如 2026-09-09T14:40+08:00}
session_id: {本次会话标识}
已完成:
- [x] {条目} → 产物:{路径或证据锚点}
剩余:
- [ ] {条目}
下一步:{动作},需先取 {数据}
口径快照:单位={};币种={};期间={};来源={}
读写纪律
- "已完成"必须附产物路径或证据锚点——无凭据不写"已完成"(文件由本技能自己写入,若边界处误记,Resume 会把错误状态灌回并赋予权威)。
- 时间戳检查:读取时先比对
updated_at与session_id;文件不属于本次会话且早于本次开始时间 → 视为可能陈旧,确认后才采用,禁止用旧快照覆盖新进展。 - 以文件为准:聊天中只引用状态文件条目,不另写一套(防双写不一致)。
- 中断收口:任何原因中断时,最后一次写入必须含"已完成 / 剩余 / 下一步"三段,接手方无需回溯聊天即可续跑。
降级
状态文件不可写或目录不可创建时,退化为既有收尾纪律(中断必列已完成/剩余/下一步),不因本机制失败而中断任务。
五、数据源与配置
5.1 数据获取优先级
1. 已配置的 HTTP 数据接口(config.json) ← 行情、财务指标、新闻
2. 公开一手渠道:交易所/公司公告、港交所披露易、SEC 文件
3. 正规财经媒体(仅作新闻线索,关键数字回一手公告核验)
禁止:社交媒体/论坛/股吧 UGC 作数据源或结论源
首次使用数据源建议(先检查、再提示):
运行时先检查 config/config.json 是否已配置数据源——已配置:直接使用,不再重复提示;未配置且用户首次使用:先输出以下建议,再进入手工数据模式:
| 推荐度 | 数据源 | 说明 |
|---|---|---|
| 首推 | Wind API(AIFin Market) | 有免费额度;自行下载注册后将接口配置到 config.json |
| 其次 | WorkBuddy 内置 通达信 MCP | WorkBuddy 环境自带,无需额外注册 |
| 备选 | 东方财富 妙想(MX)/ 同花顺 skill 等 | 按需绑定 |
建议配置两个以上数据源做交叉验证(关键数字双源核对)。本 skill 为通用版本,不强制绑定任何数据源——请用户在 config.json 中绑定适合自己的数据源组合;skill 只约定取数纪律(禁 UGC/双源/缺口显式标注),不约定具体来源。
5.2 计算纪律(脚本强制,V1.1.0)
假设体检判定必须通过 scripts/check_thresholds.py 执行,禁止 LLM 凭记忆判定状态——同一输入同一输出:
1. 本周扫描完成后整理 weekly_data.json:observations(逐条假设的观测值+说明)、triggered/leading 事件名单
2. 执行 python scripts/check_thresholds.py <holdings.json> <weekly_data.json> --prev <上周 weekly_data_Wxx_result.json> → 逐条假设状态(healthy/leading/triggered/confirmed/invalid/no_data)+ 分状态统计。--prev 必带:status_prev 须从上一周本脚本产出继承;不带则该字段退化为读 holdings.json 的状态副本(几乎全 healthy),会使「本周新增触发」判定失真。首周无上周结果时方可省略。
3. no_data 项 = 【待补查】,禁止自填禁止默判"无重要事项";周报假设扫描总览章直接采用脚本输出
4. 纯标准库,Python 3.8+ 可运行
总账回写必须通过 scripts/update_ledger.py 执行,禁止 LLM 逐条 Edit(W36 实测坑:两条假设的状态行文本完全相同 → 一次 replace 命中 2 处却只改 1 处理解;另有 1 条因读取时引号被渲染改写而 MISS 未被察觉 → 该周周报漏更新 1 条)。
- 构造
replacements.json([{tag, old, new}]),old 需带上文行构成全文件唯一键 - 执行
python scripts/update_ledger.py <假设总账.md> <replacements.json>→ 逐条输出 OK / SKIP / MISS / DUP - MISS 与 DUP 是硬失败:MISS = 匹配串与文件字节不符(引号/空格/换行),DUP = 唯一键不唯一
→ 必须修正 old 串后重跑,禁止跳过;退出码非 0 即未完成 - 幂等:重复执行输出 SKIP,不产生叠加;已退出持仓的归档章节不进 replacements(其状态不再更新)
5.3 配置文件
全局配置 config/config.json(复制 config.example.json):
{
"data_source": {
"mode": "api",
"api": {
"base_url": "https://your-data-api.example.com/v1",
"api_key_env": "PORTFOLIO_TRACKER_API_KEY",
"auth_style": "bearer",
"timeout_seconds": 30,
"retry": 2,
"endpoints": {
"quotes": "/quotes?codes={codes}",
"kline": "/kline?code={code}&days=5",
"financials": "/financials?code={code}",
"news": "/news?codes={codes}&days=7",
"notices": "/notices?code={code}&days=7",
"fx": "/fx?pair={pair}"
}
}
},
"report": {
"format": "html",
"directory": "./output",
"color_convention": "cn",
"week_window": "last_7_days"
}
}
持仓配置 config/holdings.json(复制 holdings.example.json,结构见 4.2 与示例文件):
- 每只标的:name / code / market / currency / tags(如核心持仓/观察仓/卖put) / assumptions(假设账本)
- watch_only: true 的标的进入"或有持仓监控"章节,不算核心持仓
api_key_env:密钥只能通过环境变量注入,禁止明文写入任何文件color_convention:cn(涨红跌绿,默认)/intl(涨绿跌红)week_window:last_7_days(默认)/iso_week(ISO 周一起)
5.4 接口未授权或不可访问时的行为(明确提示,禁止静默失败)
| 场景 | 处理 |
|---|---|
| 未配置接口 / base_url 为空 | 提示:「未配置数据接口。请配置 config.json,或粘贴本周行情数据/提供公告链接;公开可查信息将从官方渠道检索。」行情表缺项标"待补查" |
| 401 / 403 | 提示:「数据接口认证失败(HTTP {code}),请检查环境变量 {api_key_env}。」暂停行情章节,公告/新闻章节改走公开渠道 |
| 超时 / 5xx | 提示:「数据接口不可访问({错误}),已重试 {n} 次。」降级为公开渠道 + 用户数据,报告中标注数据源降级 |
| 接口返回空 | 标注「接口未返回」,禁止用旧值/估算值填充;价格判据缺失时该条假设标"数据缺口,本周无法体检" |
六、使用示例
用户:生成本周持仓周报
技能动作:
1. 读取 config/holdings.json(用户自定义的 N 只标的 + 假设账本)与 config/config.json
2. 拉取全部持仓最新行情(含汇率时点);财报季先查各标的是否新发预告/季报
3. 企业层 + 行业层双扫描(近7天,交付前24h尾部复扫)
4. 假设逐条体检:触发/接近阈值/强确认/健康(前瞻信号另列)
5. 按固定结构生成 持仓周报_2026-Wxx_MM-DD_to_MM-DD.html,核心结论置顶
更多场景(首次配置持仓、增删标的、中报季密集披露、衍生品监控)见 examples/example-usage.md。
七、目录结构
portfolio-weekly-tracker/
├── SKILL.md # 本文件
├── scripts/
│ ├── check_thresholds.py # 假设阈值体检脚本(逐条状态判定)
│ └── update_ledger.py # 假设总账幂等回写(唯一键三重分支,防静默漏改)
├── config/
│ ├── config.example.json # 全局配置模板(数据接口/输出/配色)
│ └── holdings.example.json # 持仓清单 + 假设账本模板(用户必填)
├── templates/
│ └── weekly-report-template.html # 周报 HTML 模板(含占位符)
└── examples/
└── example-usage.md # 使用示例
> 跨周校准台账(可选):复制维护 config/calibrations.md,逐条记录判断预登记与校准结果;周报第九章引用其累计数并登记本周新增。
八、注意事项
- 本技能只做信息跟踪与假设体检,不构成投资建议;假设触发 ≠ 自动卖出指令,处置决策归用户
- 持仓与假设是用户的私人配置,技能不得将其写入任何对外产物正文之外的位置,不得硬编码任何默认持仓
- 数据未齐标"待补查",禁止说"无重要事项"(来源未齐 ≠ 无事项)
- 本技能独立运行,不依赖任何其他技能
九、版本记录
- v1.4.1(2026-09-22):同步自本地正源:
check_thresholds.py修复(status_prev 继承上周);frontmatter description 多行化并补触发词;示例配置同步。 - v1.3.9(2026-09-19):status_prev 改为继承上周结果——
check_thresholds.py新增--prev <上周result.json>,指定后 status_prev 从上一周本脚本产出继承并打印继承条数;不指定时退化为读holdings.json的assumptions[].status(该字段默认全 healthy,历史上一再使 status_prev 失真为「几乎全部 healthy」,勿依赖)。消除「假设状态双载体不同步」的结构性缺陷。向后兼容,默认行为不变。 - v1.3.2(2026-09-13):视觉层改为内置——随包分发
references/report-style.md(规范)、templates/report-style-template.html(单文件模板)、scripts/embed_hero.py(hero 图 base64 内嵌),去除对外部技能的依赖,单独安装本 skill 即可复现该风格;保留适用范围 / 生效方式 / 优先级(实质大于形式)声明。 - v1.2.0(2026-09-02):档名语义修正 + 前瞻信号分列。①「领先预警」更名「接近阈值」——旧名承诺时间领先性、实际定义是空间接近性,W35 实证三条"领先预警"全是滞后财报数据+距阈值近、真前瞻为零(根因=两个维度混用,非机制失效);状态 key
leading与历史周报/holdings.json 旧标签同义不改 ②新增「📡 前瞻信号」单列档:仅收时间上领先于财报的信号(capex 指引/在手订单/扩产投产/涨价函/长协/行业领先指标),每条必须注明"领先于什么、领先多久",答不出归接近阈值——与接近阈值分列禁混装 ③无功能性变更,纯命名与清单纪律。