持仓体检报告

SKILL研究检索
研究检索 未标注权限 许可证不明确
安装这个技能

为 A 股持仓组合生成单页自包含 HTML「持仓体检」报告。当用户说「帮我做一份持仓体检」「诊断这几只票该砍哪只」「逐只体检 + 组合风险分析」,或需要对多只 A 股做估值/财务/资金/技术四维诊断并落地成可视化 HTML 时使用。覆盖 westock-data 行情数据拉取、neodata 估值与最新财报、组合协方差/风险贡献/相关性测算、无依赖 SVG 图表渲染、环境编码陷阱绕坑。

一句话选型结论

按资料字段整理

持仓体检报告是研究检索类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类研究检索 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_6c074ba0/stock-portfolio-checkup
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

研究检索
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_6c074ba0仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791636442
正文体量11.0 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
查资料并整理出处

让模型按主题查资料,并把引用来源整理成清单。

网页与文献要点提炼

把长文、论文、网页压成能直接看的要点。

竞品与行业汇总

按关键词汇总竞品动态与行业信息。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在研究检索场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
持仓体检报告当前 未标注权限 未标注 未标注 未标注 有
寻找技能 浏览器控制 GitHub 仓库 3120.0 万 Codex、Claude、Cursor 有
自我改进 Agent 接触敏感数据 ClawHub 市场 1646.4 万 OpenClaw 有
灵魂追踪 联网访问 GitHub 仓库 758.9 万 Codex、Claude、Cursor 有
自我完善 联网访问 ClawHub 市场 682.9 万 OpenClaw 有
微软代工厂 调用外部服务 GitHub 仓库 661.4 万 Codex、Claude、Cursor 有

SKILL.md 全文

11.0 KB
模型实际读到的说明书原文,来自技能仓库

持仓体检报告(A 股组合四维诊断 → 单页 HTML)

适用场景

用户给出 3–8 只 A 股(有时带仓位),要求:
- 逐只体检:估值贵不贵 / 基本面质量 / 主力资金动向 / 技术位置
- 给每只一个「保留 / 减仓 / 砍」的判断
- 组合视角:行业集中度、相关性、整体风险
- 给出加减仓优先级
- 输出单页 HTML,中文界面,涨红跌绿

交付物标准

单个 .html 文件,完全自包含(不引 CDN、不引 ECharts,图表手写 inline SVG),保证离线/嵌入预览可渲染。参考体量 60–120 KB。

必备版块:结论卡 → 组合分层 → 五只总览表 → 四维评分卡 → 估值分位图 → 成长×估值散点 → 主力资金 → 多周期涨跌 → 基本面质量 → 技术位置 → 逐只点评 → 组合视角(相关性热力图/风险贡献/降波情景/可交互仓位调整器)→ 加减仓优先级 → 前提追问 → 数据来源与免责。

执行流程

阶段 1|拉数据(并行)

先读 references/data-sources.md(含命令清单、字段口径、踩坑记录)。

要点:
1. westock-data:npx -y westock-data-clawhub@1.0.4
- kline <codes> --period day --limit 250 --fq qfq → 价格与波动
- technical <codes> --group all → 均线/MACD/KDJ/RSI/BOLL/SAR 一次取全
- asfund <codes> → 主力当日/5/10/20 日净流入、融资余额及环比、龙虎榜
- chip <codes> → 获利比例、平均成本、集中度
- finance <codes> --type lrb|zcfz|xjll --num 3~6、profile、dividend、shareholder
- ⚠️ 该 CLI 没有 quote 命令(渠道限制),现价取 technical 的 closePrice
2. neodata-financial-search:估值与最新财报的唯一权威口径
- python scripts/query.py --query "<股票> <代码> 最新滚动市盈率 市净率 估值历史分位" --data-type api
- --query "<股票> <代码> 2026年半年报 营业收入 归母净利润 扣非净利润 同比增长率 ROE" --data-type api
- --data-type doc 取机构研报、目标价、新闻(判断"为什么跌")
- 报 TOKEN_MISSING/TOKEN_EXPIRED 时才调 connect_cloud_service → --save-token

口径优先级(关键):westock 财务库期末可能落后一两个季度,neodata 往往已含最新中报。
→ 基本面判断以 neodata 为准;PE/PB 及其分位统一用 neodata,保证同一估值序列可比。 若两边不一致,在报告「数据来源与口径」里显式说明差异。

阶段 2|量化测算

跑 scripts/portfolio.py 的思路(可复制改写):
- 解析 kline markdown 表 → 近 120 日日收益率
- 样本协方差矩阵 → 组合年化波动(年化系数 √244)、个股年化波动
- 风险贡献 w_i·(Σw)_i / (w'Σw) → 找出「风险超配」的标的
- 两两相关系数矩阵 + 平均相关性
- 等权组合累计收益与最大回撤
- 降波情景:砍某只 / 换入低波资产(假设年化 18%、相关 0.25)→ 组合波动变化

务必算"风险贡献 vs 资金权重":这通常是报告里最有说服力的一张图(常见结论:某只高波动股占 20% 仓位却贡献 30%+ 风险)。

阶段 3|写作与判断框架

四维评分(0–10):估值(绝对水平+历史分位)、基本面(增长/盈利质量/财务结构)、资金(主力+杠杆资金)、技术(均线位置/超买超卖/趋势)。

判断要避免的三种错误:
1. 把"跌得多"当成"该砍"——必须区分"便宜"与"便宜得有原因"(业绩趋势转负 + 资金外流 + 减持信号 = 有原因)
2. 把"涨得多"当成"该留"——年内涨幅第一的票如果估值在 70% 分位、扣非利润近零、波动最大,它才是该砍的
3. 只看个股不看组合——底部区间的低相关标的可能是组合唯一的"分散器",砍掉它组合波动反而上升(用情景测算验证并写进报告)

必写的反直觉提醒:明确告诉用户这个结论与"卖赚钱的、留亏钱的"直觉相反,依据是估值分位/扣非质量/资金流向/波动贡献,不是浮盈浮亏。

仓位未知时的处理:显式声明"假设等权",并做一个交互式滑块面板(用内嵌协方差矩阵在 JS 里实时重算组合波动与风险贡献),让用户拖出自己的真实仓位看结论如何变化。

阶段 4|渲染与验证

  1. 图表全部手写 inline SVG,用 JS 函数生成后 innerHTML 注入
  2. viewBox="0 0 1040 …" + width="100%" 自适应;配色用 CSS 变量同源(但 SVG 属性里不要写 var(--x),直接写字面色值)
  3. 验证(本机无 headless 浏览器时的低成本方案):node --check 查语法 + 自写 DOM 桩 eval 脚本,检查每个容器是否被写入、SVG 元素数量是否合理、innerHTML 里有无 NaN/undefined/Infinity
    - 提取内联脚本做语法检查:python -c "import re;s=open('报告.html',encoding='utf-8').read();open('data/_chk.js','w',encoding='utf-8').write('\n'.join(re.findall(r'<script>(.*?)</script>',s,re.S)))" 然后 node --check data/_chk.js。(不要用 bash 进程替换 <(...),Windows 下 node --check <(...) 会报 Cannot find module 'C:\dev\fd\63')
  4. 回验嵌入数值:用 Python 重新解析 HTML 里内嵌的 COV 矩阵,独立复算一次等权波动率 / 风险贡献,确认与正文写的数字一致(防止改数据时漏改一处)
  5. 可选视觉校验:本机有 Edge 时可用 msedge.exe --headless=new --disable-gpu --window-size=1280,12000 --screenshot=out.png <url> 截图。注意 file:// 路径含中文会失败(报 cmd.exe %VAR% 语法错误)→ 先把 HTML 复制成 ASCII 路径(如 data/preview.html)再截。再用 PIL 裁剪分段检查。
  6. 交付前用 present_files 展示

阶段 5|标的被更正后如何最小改动重做

用户事后更正组合成员(「不是 A,是 B」)时,不要重跑整条链路:

  1. 先确认新代码(search 命令,或用行情接口探测;注意 A 股代码容易记错,如润贝航科是 001316 而非其他)
  2. 只拉新标的的全套数据(kline/technical/asfund/chip/profile/finance/dividend/shareholder + neodata 估值/财报/研报),其余标的复用已有文件
  3. 复制 portfolio.py 为 portfolio2.py,改 codes/names,重算协方差、相关性、风险贡献、情景——组合层面的每一个数字都会变
  4. 复制 scen.py 为 scen2.py 重算降波情景(含低波资产假设)
  5. 用 grep -c "<旧标的>" 逐项清理正文残留(含 JS 数据对象、CORR/COV 矩阵、order/keys 数组、颜色映射、预设按钮、硬编码基准值如 29.7)
  6. 同步更新冒烟脚本 smoke.js 里的 ranges 代码与 presets,再跑一次验证

大文件(80 KB+)批量改写的两个致命坑:

  • 不要并发/连发多个 Edit:对同一个大 HTML 连续快速提交多个 Edit,会出现部分改写被覆盖丢失(表现为验证时某些编号 MISS,且 grep 仍能搜到旧标的)。→ 逐个提交、每批改完立即 grep 校验;发现 MISS 就单独重跑那一条。稳妥做法是先用 Python 做一次全局 str.replace 处理高频替换(代码/名称/行业),再手工修剩余的数字与文案。
  • JS 模板字符串里不要出现裸换行:形如$("portNote").innerHTML = `${"...\n "}$("x")...` 若反引号被换行截断,node --check 会报 Unexpected end of input。同理,模板字符串内不能出现中文全角引号 “ ”(会报 Unexpected identifier)→ 中文引号改用「」。
  • 每次改完必跑一遍 node --check + 冒烟脚本,别攒到最后。

环境陷阱(Windows,必读)

  • bash 工具 PATH 可能残缺(视会话/机器而定,有些会话里 ls/head/awk/cat 正常可用,有些不全)。先试探一次:若常用命令报 not found,则文件与命令操作改走 PowerShell + Read 工具。
  • PowerShell 工具吞 stdout:Write-Output 不显示 → 一律 | Out-File -Encoding utf8 落盘后用 Read 读
  • 中文乱码:运行 CLI 前设 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8,否则输出被按 GBK 解码变成「鍛戒护」这类乱码
  • 解析 CLI 输出的 markdown 表时按首个非空行找表头,别硬编码行号(不同命令前缀行数不同)

数据口径陷阱(容易静默算错)

  • 250 日区间位置必须用收盘价(close 的 max/min),不要用 high/low 列。用 intraday high/low 会让区间变宽、pos250 偏小,而且会让所有标的的数字一起变——一旦混用,报告里四个未改动标的的"距年线/区间"会悄悄改口径。
  • 单标的 kline 与批量 kline 表头不同:批量(多代码逗号分隔)有 symbol 列,单代码没有(date | open | last | high | low | volume | amount | exchange)。解析要分别处理。列索引:[0]=date [1]=open [2]=last(收盘) [3]=high [4]=low。
  • chip 的 chipConcentration90 才是报告里用的"筹码集中度"(数值越小越集中);别误取 70。
  • 非两融 / 小盘标的:margintrade 返回 null、lhb / blocktrade 返回「当日无龙虎榜/大宗交易数据」——属正常,正文写「—」或改述,不要当成抓取失败。
  • wind 行业分类会误导:润贝航科主营航材分销+国产化自研,wind 因主营含航空油料/化学品把它归入"石油石化"。写行业集中度时要按实际业务描述并注明分类来源。
  • 日均成交额差异巨大时,主力资金条形图会被最大流出项压扁(如 +1.13 亿 vs -59.7 亿),小节里要显式提示"图上几乎不可见但方向相反"。
  • dividend 若做过送转:每股派现金额需按送转后的股本折算,否则股息率算错(例:10 派 4.36 元转 4 股,派息总额按转增前股本,折算到现股本约 0.31 元/股)。

免责声明(必须写入报告)

标明数据来源与截止日期、口径差异、评分卡为自建规则非机构评级,并明确"不构成投资建议"。

常见问题

5 问
答案由本站依据条目字段整理
持仓体检报告怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_6c074ba0/stock-portfolio-checkup。安装方式为未标注。装完刷新技能列表或重开客户端。

持仓体检报告支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

持仓体检报告权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

持仓体检报告收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

持仓体检报告用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。