股票买入尽调分析(Stock Buy Due Diligence)
这个技能解决什么问题
散户买股票最常犯的错,不是"选错公司",而是在对的位置买错了价格。这个技能把机构买方做尽调的流程压缩成一次可执行的分析,强制回答四个问题——四个都必须有量化答案,答不上来就不许下单:
| # | 问题 | 输出物 | 典型错误 |
|---|---|---|---|
| 1 | 值不值得买(公司好不好) | 四维体检 + 三棱镜 + 8 项评分 | 只看营收增速,不看现金流质量 |
| 2 | 现在是不是买点(结构对不对) | 威科夫 Phase A-E + 买点评级 ⭐ | 把"跌得多"当成"便宜",把反弹当反转 |
| 3 | 什么价位买、买多少 | 买入区间 + 三档目标价 + 仓位 | 拍脑袋定目标价,没有 PE 口径 |
| 4 | 错了在哪止损 | 止损位 + 盈亏比 | 不设止损,或止损位放在噪音区 |
核心信条:好公司 ≠ 好买点。 一只股票可以基本面无可挑剔,同时是极差的买入时机。本技能的价值就在于把这两件事拆开评估,并用盈亏比把它们连起来——赔率不够就是不够,公司再好也不买。
何时使用
- 用户想买一只 A 股,问"能不能买 / 值不值得买 / 现在能上车吗"
- 用户已听说某个机会、某个热门赛道,需要独立判断而不是跟着情绪走
- 用户需要一份可留存、可转发、可复盘的书面尽调材料(投教讲解、客户沟通)
- 用户需要明确的买点、目标价、止损位与仓位建议
不适用:短线热点博弈(1-5 天情绪交易)、纯技术面快问快答、港股/美股/期货、组合层面配置建议。
⚠️ 动手前先确认技能选择(用户明确要求)
本技能与本地其他股票技能触发词高度重叠("能不能买""帮我分析XX""威科夫"都会命中)。用户已明确要求:分析之前先问一句用哪个技能,不要替他选。
提问格式(一句话列候选 + 各自定位,别罗列完整清单):
> 用哪个技能做这次分析?
> - 股票买入尽调分析(本技能):买方尽调,出完整 HTML 报告,含交易计划/目标价/盈亏比
> - stock-can-i-buy:投教课程版四维诊断,同样是 HTML 报告
> - stock-analysis-king:短线 1–5 天热点博弈
> - stock-deep-analysis:深度价值面,先财务筛查再看基本面
> - wyckoff-astock:只看威科夫结构,不做基本面
> - 其他(技术面 / 波浪 / 组合日报)
用户没说清楚、或只想快速看个结论时,也要问,不要默认走本技能的重流程。
执行前的两个前提(必须先确认)
- 用户是否持仓。空仓 → 给"买入决策";持仓 → 追加"成本线 + 处置建议(持有/减仓/补仓/止损)"。
- 成本价(若持仓)。成本决定这是"要不要落袋"还是"套住了怎么办",两个问题的答案完全不同。
用户未说明时,先问,不要假设。这两点问错,整份报告的落点就是错的。
执行流程(7 步,串行,不可跳步)
Step 0 · 预检环境
df -k /c | tail -1 # 磁盘至少留 100MB(内联图表库要写 1MB)
ls <skill>/assets/echarts.min.js # 必须存在,约 1,024,740 字节
缺依赖先补,不要带着坏环境开始取数。
Step 1 · 取数与交叉校验
# 一键取 K 线 + 复算全部指标 + 威科夫分段统计(东财失败自动切腾讯)
python <skill>/scripts/prepare_data.py <6位代码> --out ./_build
产出 kline_<code>.json(原始 K 线)与 calc_<code>.json(指标、月度量能、摆动点、量能比、SC 检验结果)。
依 references/data-channels.md 执行。三条铁律:
- 一次取全量、进程内缓存、绝不轮询重试——东财行情接口连续请求会 IP 级封禁 5 分钟以上。
- 关键数字必须双源校验(东财 K 线 vs 腾讯 K 线逐日比对)。复权口径不一致时,以「前复权」为准并在报告注明;差异 >0.5% 必须查明原因再动笔。
- 拿不到就写"数据源未覆盖",绝不估算、绝不编造。媒体转引一律标注"非一手"。
取数清单:日 K(≥250 根)→ 实时快照 → 财务三表 → 一致预期 → 资金面 → 行业与竞品。
Step 2 · 技术指标复算(不采信任何现成指标)
prepare_data.py 已算好 MA5/10/20/60/120/250、BOLL(20,2)、RSI6/12/24、KDJ(9,3,3)、MACD(12,26,9)、ATR14、各周期涨跌幅、250 日高低、最大回撤,并给出均线排列判定。
仍须与快照字段对照一遍:算出来和接口给的不一致,就是发现了问题——要么口径不同(复权/除权),要么数据有误。此时停下来查清,不要挑一个顺眼的用。
Step 3 · 威科夫结构定位
严格按 references/wyckoff.md 执行。这是本技能最容易出错、也最影响结论的一步。
先判吸筹还是派发,再逐级认定阶段,禁止跳级。输出必须是这样的完整链条(缺一环就是没做完):
上涨段 → BC(买入高潮)→ AR(自动反弹)→ Phase B(区间)→ UT/ST → SOW → LPSY → Phase E
或:
下跌段 → PS → SC(卖出高潮)→ AR → ST → Phase B → Spring / SOS+LPS → Phase E(上升)
自检三问(答不上来就写"无结构,不参与"):
- 趋势下跌 → BC 在哪?AR 在哪?区间多宽?
- 判 Phase E → 区间破了没有?
- 等买点 → SC 来了没有?
Step 4 · 评级合成(8 项打分)
按 references/methodology.md 的映射表打分:四维(4)+ 三棱镜(3)+ 威科夫买点(1),利多 +1 / 中性 0 / 利空 −1。
| 合计 | 威科夫状态 | 评级 |
|---|---|---|
| ≥5 | Spring/LPS 触发或 SOS+BU 确认 | 买入 |
| ≥5 | 无买点信号 | 分批建仓(左侧,首仓 ≤1/3) |
| 3–4 | Spring/LPS 触发 | 分批建仓 |
| 3–4 | 无买点信号 | 观望(写明触发条件) |
| 1–2 | 任意 | 观望 |
| ≤0 | 任意 | 回避 |
| 任意 | 派发区 Upthrust / LPSY 确认 | 回避(威科夫一票否决短线) |
| 任意 | 财务/合规一票否决 | 回避(首屏红色警示) |
不允许为了结论好听而调分。 分数表必须原样放进报告,让读者能逐项核对。
Step 5 · 交易计划与盈亏比
按 references/valuation.md 推导。任何评级都要给(回避/观望时标注"转多后的执行参考")。
必含六项:买入区间、三档目标价(各标对应年份 PE)、止损价、盈亏比、仓位、波动率提示。
硬约束:
- 盈亏比 = (第一目标 − 买入中值) ÷ (买入中值 − 止损)
- 盈亏比 < 1.5:1 不得评"买入";1.5–3:1 需要更强基本面支撑;≥3:1 才值得做
- 回避评级给了高目标价(如 +90%),必须同页解释"为什么现在还不是买点",否则评级与目标价自相矛盾
Step 6 · 8 问深度调研 + 新兴行业专项
8 问逐问回答(商业模式/竞争格局/财务质量/估值锚/景气拐点/资金结构/催化剂/风险排雷),缺口列只用 🟢🟡🔴,禁用 ✓:
- 🟢 已查清,有一手数据,结论不依赖推测
- 🟡 有信息但关键变量未定(时点/节奏/幅度不可控)
- 🔴 关键数据缺失,结论靠推测
唯一的红灯必须是最要命的那一问,并在表下用一句话点出它的杀伤力。
命中新兴赛道(机器人/液冷/AI算力/CPO/固态电池/创新药/低空经济/商业航天等)或"新业务占比低但按新业务定价"时,展开成长性专章:默认精简四块(渗透率位置 / 未来空间含对公司净利敞口% / 海外同类估值 / 一句话结论),不写长文。
Step 7 · 生成报告 → 构建 → 验证
- 以
templates/report-template.html为骨架写正文,图表数据用占位符 - 跑
scripts/build_report.py内联 ECharts(禁止任何外部 CDN) - 跑
scripts/verify_report.py做静态检查与数字断言 - 跑
scripts/shot.js用无头浏览器做双分辨率真渲染检查 - 全部通过后才交付
验证不通过不得交付。 图表空白、数字自相矛盾、手机端溢出,都是必须在交付前拦下的问题。
报告结构(14 张卡片,顺序固定)
| # | 章节 | 必须包含 |
|---|---|---|
| 1 | 首屏评级卡 | 评级大字(买入=红/分批=橙/观望=灰/回避=绿)+ 三期限概率 + 威科夫 Phase 与买点评级 |
| 2 | 结论先行 | 三句话讲完:好在哪、坏在哪、所以怎么办 |
| 3 | 四维诊断 | 4 行徽章 + 判定(🟥利多/⬜中性/🟩利空)+ 1–2 条带来源时点的证据 |
| 4 | 走势与威科夫结构 | K 线图(覆盖完整结构区间 150–250 根)+ 关键位表 + 买点等待清单 + 标注歧义脚注 |
| 5 | 七维雷达 | 基本面/技术/情绪/资金/估值/景气/成长,各满分 5 |
| 6 | 估值 × 景气 × 成长 | 三棱镜表:现状 + 判断 |
| 7 | 评级怎么来的 | 8 项打分表,可逐项核对,末行给合计与评级 |
| 8 | 短/中/长期建议 | 含评级失效条件(下修与上修各写清触发点) |
| 9 | 交易计划 | 买入区间 + 三档目标价 + 止损 + 盈亏比 + 仓位 + 波动率提示 |
| 10 | 新兴行业成长性 | 条件触发,精简四块 |
| 11 | 替代威胁专项 | 条件触发(CPO/技术路线切换/政策变化),给时间表 + 价值量归属 + 实际敞口公式 + 证实证伪信号 |
| 12 | 海外同类估值对照 | 8 列表 + 三条结论,落到"贵在收入端还是利润端" |
| 13 | 8 问深度调研 | 红黄绿灯 + 红灯杀伤力一句话 |
| 14 | 下一步怎么做 | 现在做什么 / 什么条件改变动作 / 何时复核 + 行动钩子 |
报告末尾固定放免责声明与数据口径说明(来源、时点、哪些是转引、哪些未覆盖)。
输出规范(硬约束)
图表零依赖
ECharts 必须内联。实测用户网络下 cdn.jsdelivr.net、unpkg.com 均不可达(curl 返回 000),引用即导致 echarts 未定义、图表整块空白——不是画错,是库根本没加载。
python <skill>/scripts/build_report.py <报告.html>
模板里写 <script src="__ECHARTS_INLINE__"></script>,构建后替换为库全文(约 21KB → 1,020KB)。同时保留兜底脚本:typeof echarts === 'undefined' 时显示橙色提示,杜绝静默空白。
移动端适配
用户常在手机审阅、或用手机转发给他人。因此:
- 单栏 max-width:760px、正文 ≥15px、卡片式布局
- 宽表(≥7 列)必须包 .tscroll{overflow-x:auto},否则 390px 屏会挤压错版
- @media (max-width:600px) 降字号
- 交付前用 390px 宽度实测:document.documentElement.scrollWidth <= 391
命名
<公司简称><6位代码>买入尽调分析.html,例:中际旭创300308买入尽调分析.html
报告内 <title> 与首屏 <h1> 统一为「XX公司(代码)买入尽调分析」。
合规红线
- 不出现"必涨/稳赚/满仓/抄底/翻倍"等表述
- 仓位一律表述为"风险预算示例",不是针对特定个人的建议
- 保留免责声明,学员/客户分发时不得删除风险提示
- 媒体转引标"非一手";拿不到的数据写"数据源未覆盖"
数据源优先级
| 优先级 | 数据源 | 用途 | 备注 |
|---|---|---|---|
| 1 | westock-mcp(腾讯自选股) | 四维取数、自选跟踪 | 连接器可能 unavailable,不可依赖 |
| 1 | 东财 datacenter(财报/预期) | 财务三表、一致预期、估值、股东户数 | 稳定,不受行情限流影响 |
| 2 | 东财 push2his + 腾讯 web.ifzq | 日 K 线 | 必须双源校验;东财只发一次 |
| 3 | WebSearch / WebFetch | 两融、资金流、行业、海外对标、新闻 | 标注媒体与日期 |
| 4 | domain_search | 8 问深度调研 | query 只写一句话检索意图 |
完整接口清单、字段名、限流特征与降级矩阵见 references/data-channels.md。
参考文件索引
| 文件 | 内容 | 何时加载 |
|---|---|---|
references/methodology.md |
四维判定标准、三棱镜、8 项评级合成、8 问调研动作 | Step 4、Step 6 |
references/wyckoff.md |
Phase A-E 定义、派发区序列、6 条标注硬约束、自检口诀、真实错误案例 | Step 3(每次必读) |
references/valuation.md |
三档目标价三线推导、盈亏比、仓位计算、海外对标方法 | Step 5 |
references/data-channels.md |
接口清单与字段、限流坑、降级矩阵、双源校验方法 | Step 1 |
references/emerging-industry.md |
渗透率阶段表、敞口计算公式、替代威胁专项框架 | Step 6 |
templates/report-template.html |
报告骨架(含 ECharts 配置与兜底) | Step 7 |
scripts/prepare_data.py |
一键取 K 线 + 指标复算 + 威科夫分段统计 | Step 1、Step 2 |
scripts/build_report.py |
内联 ECharts;--check 只做检查 |
Step 7 |
scripts/verify_report.py |
静态检查 + 结构检查 + K 线一致性 + 业务断言 | Step 7 |
scripts/shot.js |
playwright 双分辨率真渲染检查(读 canvas 像素) | Step 7 |
使用说明.md |
对外说明(怎么用/解决什么问题/提示词库) | 用户要求解释时 |
交付时必须说明的三件事
- 结论:评级 + 一句话理由(不是复述报告,是给出判断)
- 最反直觉的发现:通常是现金流、量能结构、或某个市场定价错误的地方——这才是有价值的部分
- 下一步:具体日期与可观测信号,附行动钩子("到 X 月 X 日跟我说一句『重新看看 XX』,我按最新数据重跑")