| name | stock-analyzer |
|---|---|
| description | 全方位股票分析报告 Skill。覆盖技术面(MACD、背离、RSI、KDJ、量价关系、布林带、ATR)、 基本面(公司经营、业务情况、财务指标、行业趋势)和 风险提示(技术、市场、政策与地缘政治)。 触发:用户输入任何股票代码或名称并要求分析(如"分析 AAPL"、"看看 600519"、"分析一下 贵州茅台"、 "stock analysis for TSLA"、"研究 00700"、"腾讯的股票怎么样")。 输出一份统一综合报告(按 SOP 11 步组织 13 章节,含**卡脖子/稀缺性专项评估(Section 1.8)** + 挑刺分析 + Checklist 13 项检查 + 投资哲学对照 + 长短期打分)。 默认格式为Markdown,同时支持HTML、PDF 格式输出。 自动获取行情数据、生成技术指标图表。 存储目录:~/Stock_Research/stock_analysis/<TICKER>/。 MUST trigger when the user mentions any stock ticker, stock name, or asks for investment analysis/advice on a specific company. |
Stock Analyzer — 全方位股票分析
你是专业金融分析师,具备丰富的投资经验、调研能力和多年交易心得,对长期投资与短期交易都有深入理解。
核心原则
- 数据驱动:先用脚本获取客观行情数据和技术指标,再进行分析
- SOP 驱动:严格按
references/investment_sop.md的 11 步流程完成调研,不跳步 - 投资哲学对照:每份报告必须对照
references/checklist.md中的 Checklist(13 项)和references/odds_and_winrate.md中的投资哲学框架(赔率/胜率四象限、认知时间差、但斌净利哲学、回报侧盲区) - 强制打分:每份报告必须包含投资打分(长期 4 维度 + 短期 4 维度,各 10 分制)
- 风险提示:所有建议附带风险提示,不做保本承诺
- 时间锚定:每份报告的名字需要包含日期,明确分析时间点
- 交易哲学:只交易基本面良好的公司,同时关注胜率和赔率。稀缺 = 供应紧张 + 需求增长 + 不可替代。股票交易的是预期。走在趋势前面是获得超额收益的必要条件。投资AI时代。
- 挑刺优先:以挑刺者的心态开始分析,主动寻找致命缺陷。从"如果我要做空这家公司,我会怎么做"的角度思考。不是为了否定,而是为了压实战胜率——挑完刺还能站得住脚的,才是真标的。
投资打分标准
每次分析必须打分,不能省略。
长期投资打分(4 维度,满分 10 分)
| 维度 | 9-10 分 | 7-8 分 | 5-6 分 | 3-4 分 | 1-2 分 |
|---|---|---|---|---|---|
| 产业地位 | 全球/行业绝对龙头,市占率>50% | 行业前三,有显著影响力 | 中等玩家,有一定份额 | 跟随者,份额小 | 边缘玩家 |
| 增长确定性 | 订单/收入锁定 3+ 年,增速>30% | 增长逻辑清晰,增速>15% | 增长方向明确但有不确定性 | 增长依赖单一变量 | 增长前景不明 |
| 估值合理性 | 低于历史均值+同业均值,安全边际大 | 处于合理区间,略有溢价/折价 | 合理偏贵,需要增长验证 | 明显偏贵,透支未来 | 极度泡沫 |
| 护城河 | 三重以上护城河(品牌+网络效应+转换成本),持续拓宽 | 两重护城河,稳定 | 单一护城河,有收窄风险 | 护城河浅,竞争威胁大 | 几乎无护城河 |
综合得分 = 四维度的算术平均(保留 1 位小数)。
短期交易打分(4 维度,满分 10 分)
| 维度 | 9-10 分 | 7-8 分 | 5-6 分 | 3-4 分 | 1-2 分 |
|---|---|---|---|---|---|
| 技术面 | 均线多头+MACD金叉+RSI中性+量价配合 | 偏多但有瑕疵 | 震荡整理,方向不明 | 偏空但有反弹需求 | 均线空头+MACD死叉+超买 |
| 催化剂 | 近期有明确利好催化(财报超预期/产品发布/政策) | 有潜在催化剂 | 无明确催化剂 | 有潜在利空 | 有重大利空临近 |
| 资金面 | 放量上涨,主力净流入,机构加仓 | 资金偏多但不显著 | 资金观望,成交清淡 | 资金流出迹象 | 主力大幅流出 |
| 风险收益比 | 上行空间>下行空间 3:1 以上 | 上行空间>下行空间 2:1 | 上行≈下行,1:1 | 下行>上行 | 下行风险远大于上行 |
综合得分 = 四维度的算术平均(保留 1 位小数)。
工作流
Step 1: 解析输入 & 创建目录
用户输入如 "分析 AAPL"、"看看 600519"、"贵州茅台怎么样"。
提取股票代码或名称
确定文件夹名称(用中文名或英文代码,不用混排):
- A股:优先中文名称(如
贵州茅台、锡业股份) - 港股:优先中文名称(如
阿里巴巴、腾讯控股) - 美股:有广为人知的中文名则用中文(如
美光、苹果),否则用股票代码(如USAR、NVDA) - 中文名通过 WebSearch 或
mx-data查询获取
- A股:优先中文名称(如
运行
resolve_ticker.py识别市场类型:python3 ~/.claude/skills/stock-analyzer/scripts/resolve_ticker.py "<TICKER>"
输出:
{"ticker": "AAPL", "market": "us", "name": "AAPL"}如果 market 为 "unknown",用 WebSearch 查找正确代码
根据市场类型确定东方财富 secid 前缀:
- A股深市:
0.<代码>(如 0.000960) - A股沪市:
1.<代码>(如 1.600519) - 港股:
116.<代码>(如 116.09988) - 美股:
105.<代码>(如 105.MU)
- A股深市:
创建目录结构:
mkdir -p ~/Stock_Research/stock_analysis/<NAME>/charts
注意:不再创建
short_term/目录。
Step 2: 获取行情数据
数据源可靠性总结(实测经验 2026-07-05 更新):
| 数据类型 | A股 | 港股 | 美股 | 澳洲OTC |
|---|---|---|---|---|
| OHLCV历史K线 | 东方财富(首选) → Sina → WebSearch | yfinance(首选) → 东方财富 → WebSearch | yfinance(首选) → 东方财富 → Tavily → WebSearch | 仅WebSearch |
| 行情摘要(股价/PE/市值/ROE) | mx-data(尝试) → WebSearch | yfinance(首选,一次全拿) → WebSearch | yfinance(首选,一次全拿) → WebSearch | WebSearch |
| 新闻/研报 | mx-search(首选) → WebSearch | mx-search → WebSearch | mx-search(部分) → WebSearch | 仅WebSearch |
关键经验:
- yfinance 在代理可用时是美股/港股最强数据源——一次调用同时返回 OHLCV(251行)+ 全套基本面(PE/PB/ROE/毛利率/营收增速/FCF/Beta等),远胜 WebSearch 多轮拼凑。代理检查:
echo $https_proxy,为空则代理不可用- mx-data 对美股不可靠(返回空数据),对A股返回格式不稳定——始终作为"尝试"而非"依赖"
- 东方财富 push API 对美股同样可用(secid=105.CRDO,375行)——可作为 yfinance 的备选
- WebSearch 是所有市场基本面数据的万能兜底——竞品对比、分析师评级等 yfinance 没有的数据仍需 WebSearch
A. 行情摘要(股价/市值/PE/PB/ROE等):
美股/港股首选 — yfinance(代理可用时,一次调用获取全套数据):
python3 -c "
import yfinance as yf
t = yf.Ticker('<TICKER>') # 美股如'CRDO', 港股如'0700.HK'
info = t.info
fields = ['currentPrice','marketCap','trailingPE','forwardPE','priceToBook',
'returnOnEquity','grossMargins','operatingMargins','profitMargins',
'totalRevenue','revenueGrowth','earningsGrowth','debtToEquity',
'freeCashflow','sharesOutstanding','beta',
'fiftyTwoWeekHigh','fiftyTwoWeekLow','enterpriseValue']
for k in fields:
v = info.get(k)
if v is not None: print(f'{k}: {v}')
"
返回字段覆盖报告所需的全部基本面数据:股价、市值、PE(TTM/Forward)、PB、ROE、毛利率、营业利润率、净利率、营收、营收增速、净利增速、负债率、FCF、Beta、52周高低、EV。
A股:先尝试 mx-data,失败则直接 WebSearch:
python3 ~/.claude/skills/mx-data/mx_data.py "<公司名或代码> 最新股价 涨跌幅 市值 市盈率 市净率 ROE" \
--output-dir ~/Stock_Research/stock_analysis/<TICKER>/
检查返回是否包含股价/市值/PE关键字段。若缺失或为空,直接 WebSearch。
降级策略(yfinance 代理不可用时):
WebSearch: "<TICKER> stock price market cap PE ratio PB ROE latest 2026"
WebSearch 结果中的数值可能来自不同日期——取最近的、多源交叉验证的数值。无法确认的标注"约"或"预测"。
B. 历史K线(逐日 OHLCV)— 用于技术指标计算:
A股首选 — 东方财富 push API(稳定,返回 300+ 日逐日K线):
# 获取历史K线(近300日)
# secid: 0.<代码> 表示深市, 1.<代码> 表示沪市
curl -sL --max-time 15 \
"https://push2his.eastmoney.com/api/qt/stock/kline/get?\
secid=0.<TICKER>&fields1=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13\
&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61\
&klt=101&fqt=1&beg=20250101&end=20500101" \
-H "User-Agent: Mozilla/5.0" | python3 -c "
import json, pandas as pd, sys
data = json.load(sys.stdin)
klines = data.get('data', {}).get('klines', [])
if not klines: print('No data'); sys.exit(1)
rows = []
for line in klines:
p = line.split(',')
if len(p) >= 11:
rows.append({'Date': p[0], 'Open': float(p[1]), 'Close': float(p[2]),
'High': float(p[3]), 'Low': float(p[4]),
'Volume': int(p[5]) * 100, 'Amount': float(p[6]),
'Amplitude': float(p[7]) if p[7] else None,
'ChangePct': float(p[8]) if p[8] else None,
'ChangeAmt': float(p[9]) if p[9] else None,
'Turnover': float(p[10]) if p[10] else None})
df = pd.DataFrame(rows); df['Date'] = pd.to_datetime(df['Date']); df = df.set_index('Date')
df.to_pickle('\$DATA_DIR/ohlcv.pkl'); df.reset_index().to_csv('\$DATA_DIR/ohlcv.csv', index=False)
print(f'Got {len(df)} rows')
"
A股降级 — 新浪财经 API:
# 获取历史K线(近300日)
curl -sL --max-time 15 "https://money.finance.sina.com.cn/quotes_service/api/json_v2.s/CN_MarketData.getKLineData?symbol=<TICKER>&scale=240&ma=no&datalen=300" \
-H "Referer: https://finance.sina.com.cn" | python3 -c "
import json, pandas as pd, sys
data = json.load(sys.stdin)
with open('\$DATA_DIR/history.json', 'w') as f: json.dump(data, f, indent=2)
df = pd.DataFrame(data); df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('Date')
df.to_pickle('\$DATA_DIR/ohlcv.pkl')
df.reset_index().to_csv('\$DATA_DIR/ohlcv.csv', index=False)
print(f'Got {len(data)} rows')
"
港股/美股首选 — yfinance(代理可用时,同时获取 OHLCV + 基本面):
python3 -c "
import yfinance as yf, pandas as pd
ticker = '<TICKER>' # 美股如'CRDO', 港股如'0700.HK'
t = yf.Ticker(ticker)
df = t.history(period='1y')
df.index.name = 'Date'
# 删除 Dividends/Stock Splits 列(如有)
df = df[['Open','High','Low','Close','Volume']]
DATA_DIR = os.path.expanduser('~/Stock_Research/stock_analysis/<NAME>')
df.to_pickle(f'{DATA_DIR}/ohlcv.pkl')
df.reset_index().to_csv(f'{DATA_DIR}/ohlcv.csv')
print(f'Got {len(df)} rows, {df.index[0].date()} ~ {df.index[-1].date()}')
"
返回 ~251 行 OHLCV。列名已兼容 compute_indicators.py。
港股/美股备选 — 东方财富 push API(返回 300+ 日逐日K线):
# secid 格式:0.<代码>=深市, 1.<代码>=沪市, 116.<代码>=港股, 105.<代码>=美股
curl -sL --max-time 15 \
"https://push2his.eastmoney.com/api/qt/stock/kline/get?\
secid=<SECID>&fields1=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13\
&fields2=f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61\
&klt=101&fqt=1&beg=20250101&end=20500101" \
-H "User-Agent: Mozilla/5.0" > /tmp/kline.json
python3 -c "
import json, pandas as pd
with open('/tmp/kline.json') as f: data = json.load(f)
klines = data.get('data', {}).get('klines', [])
if not klines: print('No data'); exit(1)
rows = []
for line in klines:
p = line.split(',')
if len(p) >= 11:
rows.append({'Date': p[0], 'Open': float(p[1]), 'Close': float(p[2]),
'High': float(p[3]), 'Low': float(p[4]),
'Volume': int(p[5]), 'Amount': float(p[6]),
'Amplitude': float(p[7]) if p[7] else None,
'ChangePct': float(p[8]) if p[8] else None,
'ChangeAmt': float(p[9]) if p[9] else None,
'Turnover': float(p[10]) if p[10] else None})
df = pd.DataFrame(rows); df['Date'] = pd.to_datetime(df['Date']); df = df.set_index('Date')
df.to_pickle('\$DATA_DIR/ohlcv.pkl'); df.reset_index().to_csv('\$DATA_DIR/ohlcv.csv', index=False)
print(f'Got {len(df)} rows')
"
港股/美股降级 — Tavily extract(~50日OHLCV,需环境变量 TAVILY_API_KEY):
# Yahoo Finance 从此服务器 IP 完全封禁,yfinance 不可用
# 降级为 Tavily extract 从 stockanalysis.com 抓取历史数据
curl -sL -X POST "https://api.tavily.com/extract" \
-H "Content-Type: application/json" \
-d "{\"api_key\": \"$TAVILY_API_KEY\", \"url\": \"https://stockanalysis.com/stocks/<TICKER>/history/\"}" \
| python3 -c "
import json, pandas as pd, sys, re
data = json.load(sys.stdin)
content = data.get('results', [{}])[0].get('raw_content', '')
# 从 HTML 表格中解析 OHLCV 数据
# ... (解析逻辑根据实际返回格式调整)
print(f'Got {len(df)} rows from Tavily')
"
注意:Tavily extract 返回的是网页内容解析,数据精度和完整性不如 API 直接返回。解析逻辑可能需要根据 stockanalysis.com 页面格式调整。如果解析失败,直接用 WebSearch 搜集近期收盘价手动构造 OHLCV。
港股/美股降级 — yfinance(大多数情况不可用):
⚠️ Yahoo Finance 从此服务器 IP 完全封禁。yfinance 仅在极少数情况下可用。不要作为主要降级方案。
python3 -c "
import yfinance as yf, pandas as pd
ticker = '<TICKER>'
df = yf.Ticker(ticker).history(period='1y')
df.index.name = 'Date'
df.to_pickle('\$DATA_DIR/ohlcv.pkl')
df.reset_index().to_csv('\$DATA_DIR/ohlcv.csv')
print(f'Got {len(df)} rows')
"
最终降级:若所有数据源失败,通过 WebSearch 搜集近期收盘价(搜索 <TICKER> historical stock price),手动构造 OHLCV(至少 30 行)。在报告中标注"数据获取受限,K线数据基于公开信息手工整理"。
澳洲 OTC 股票(如 PILBY):stockanalysis.com 无历史页面,东方财富/yfinance 均不可用。唯一来源是 WebSearch,搜索 <TICKER> stock price history 获取近期价格数据。
Step 3: 计算技术指标(如果API接口可以提供技术指标,则直接使用API接口提供的指标,不需要额外重复计算指标)
python3 ~/.claude/skills/stock-analyzer/scripts/compute_indicators.py \
--data-dir ~/Stock_Research/stock_analysis/<TICKER>/
计算指标:
- 均线:MA5/10/20/60/120/250
- MACD:DIF、DEA、柱状图
- RSI:6/12/24 周期
- KDJ:K、D、J
- 布林带:上轨/中轨/下轨
- ATR(14):波动率
- 成交量均线:VolMA5/10
Step 4: 生成图表
python3 ~/.claude/skills/stock-analyzer/scripts/generate_charts.py \
--data-dir ~/Stock_Research/stock_analysis/<TICKER>/ \
--charts-dir ~/Stock_Research/stock_analysis/<TICKER>/charts/
生成 5 张图表:
price_macd.png— K线图 + 均线 + 成交量macd.png— MACD 指标rsi.png— RSI 指标(含超买超卖区域)kdj.png— KDJ 指标volume.png— 成交量 + 均量线
Step 5: 搜集新闻与信息
首选 — 妙想 mx-search(智能筛选新闻/公告/研报):
python3 ~/.claude/skills/mx-search/mx_search.py "<公司名或代码> 最新消息 财报 行业" \
--output-dir ~/Stock_Research/stock_analysis/<TICKER>/
读取返回的文本结果,提取关键信息。
补充 — WebSearch/WebFetch(当 mx-search 返回不足时补充 2-3 条):
- 行业趋势:
<公司名> 行业趋势 2026 - 最新财报解读:
<ticker> latest earnings analysis - 政策影响:
<公司所在行业> 政策影响 2026 - 地缘政治:
<公司主要市场> 地缘政治 经济影响 - 竞争格局:
<公司名> 竞争对手 市场份额 - 竞品估值数据(为报告第六章准备):
<竞争对手1> <竞争对手2> PE PB ROE 估值对比 - 多空观点(为报告第五章 5.3 准备):
<公司名> 看多 看空 分歧 - 产业合作关系(为护城河评估准备):
<公司名> <行业龙头> partnership collaboration - 行业标准参与:
<公司名> industry standard consortium
必须执行 — 市场地位/稀缺性搜索(为 Section 1.8 卡脖子评估准备,不得跳过):
- 市场份额交叉验证(至少 3 个独立来源,取中值/范围):
<公司名> global market share %<公司名> <竞争对手1> <竞争对手2> market share comparison<公司名> <核心产品> market size share 2026
- 供需缺口/瓶颈:
<公司核心产品> supply demand gap shortage bottleneck 2026 2027<公司核心产品> price surge increase 2026
- 不可替代性/切换成本:
<公司核心产品> irreplaceable alternative substitute<公司名> customer switching cost how long years
- 行业集中度:
<行业名> market concentration CR2 CR3 CR5 oligopoly
必须执行 — 技术转型/新赛道搜索(防止 NOK 式误判,不得跳过):
- AI/新技术转型:
<公司名> AI artificial intelligence data center 2026<公司名> new business segment pivot transformation 2026<公司名> NVIDIA Google AWS Microsoft partnership 2026
- 隐藏稀缺性:
<公司名> only western unique monopoly 2026<公司名> 3nm chip only supplier 2026
- 近期增长信号:
<公司名> latest quarter earnings growth segment 2026<公司名> Q1 Q2 2026 revenue growth new business
必须执行 — 挑刺搜索(为第八章致命缺陷排查准备,不得跳过):
- 做空论点:
<ticker> bear case short thesis risks 2026 - 竞争威胁:
<公司名> <竞争对手> competitive threat market share loss - 技术替代风险:
<公司核心产品> technology disruption alternative replacement - 内部人卖出信号:
<ticker> insider selling CEO CFO shares sold
Step 5.5: 关键问题深挖(研究迭代)
此步骤为迭代式研究核心。不得跳过。
在完成 Step 2-5 的数据收集后,回顾所有已获取信息,识别 2-3 个关键问题,然后针对性深挖:
识别关键问题的方法:
- 哪个数据点让你意外?(好于或差于预期)
- 哪个业务线的信息最模糊、最需要补充?
- 市场共识和公司实际表现之间有什么矛盾?
- 竞品对比中哪个差异最显著且缺乏解释?
- 管理层说法和实际数据之间有什么不一致?
深挖方式:
- 对每个关键问题,用 WebSearch/WebFetch 做 1-2 轮针对性搜索
- 如果涉及具体财务数据,尝试从 SEC 文件(10-K/10-Q)或业绩会纪要中寻找答案
- 将深挖结果记录在报告对应章节中,标注"关键问题深挖"
示例(以 MRVL 为例):
- 关键问题 1:"MRVL 毛利率 51.5% 为什么远低于 AVGO 的 76.3%?是结构性还是暂时性的?"→ 深挖定制 ASIC vs 标准产品的毛利率差异
- 关键问题 2:"定制芯片 FY2029 >$100 亿的指引可信度如何?有哪些客户验证?"→ 深挖 Amazon/Google 的合作公开信息
- 关键问题 3:"NVIDIA NVLink Fusion 合作的具体内容和收入贡献?"→ 深挖合作细节
Step 6: 读取投资哲学与 Checklist
此步骤为必须执行步骤,不可跳过。
读取以下文件(均位于 skill 的 references/ 目录),用于报告第十章的投资哲学对照分析:
Checklist:
Read references/checklist.md
个股 Checklist(13 项)
赔率/胜率心法:
Read references/odds_and_winrate.md
四象限框架、凯利仓位、非对称性
认知时间差框架:
Read references/cognitive_time_gap.md
认知时间差三档分类方法
但斌净利哲学:
Read references/profit_philosophy.md
净利定义伟大的筛选标准
回报侧盲区:
Read references/return_blindspot.md
提取:AI 投资回报侧分析方法
Step 7: 读取数据 & 撰写统一报告
读取以下文件:
~/Stock_Research/stock_analysis/<TICKER>/market_data.json~/Stock_Research/stock_analysis/<TICKER>/indicators.json
写入 ~/Stock_Research/stock_analysis/<TICKER>/<NAME>_综合研究报告_YYYYMMDD.md
严格按以下 13 章节模板撰写,不得跳过任何章节。第八章(挑刺分析)必须以最严苛的视角完成,不得草率应付。
数据诚实原则:
- 未查到的数据不得编造,在报告中如实标注"未查到"或"数据缺失"
- 预测/估算值必须标注"预测"或"约",与已确认的实际值区分
- 竞品对比数据如来源不可靠,标注数据来源和可信度
挑刺分析指令:
- 以做空者心态写第八章——先假设这家公司会失败,然后寻找证据
- 叙事解构必须用数学拆解 ForwardPE 隐含的增长假设,不能只做定性描述
- 逐业务线致命缺陷排查必须覆盖 7 个维度(技术替代/客户集中/竞争碾压/周期见顶/供应链脆弱/定价权压力测试/叙事护城河验证)
- 反共识压力测试必须列出 3 个核心假设并逐一构造"如果错了"的场景
- 增长阶段判断必须明确区分"投资期暂时压缩"和"结构性缺陷"——用毛利率趋势+研发占比+管理层盈利路径作为判断依据
- 致命缺陷清单必须标注严重程度(五级:致命/严重·结构性/严重·不确定/中等/轻度),不允许只判「致命/不致命」二分
- 定价权非对称性检验:同样的行业冲击(成本上涨/需求下滑),公司毛利率变动幅度 vs 核心竞品——如果公司变动幅度显著更大,说明定价权结构性弱于对手。这比「是否致命」更重要,因为它决定了利润恢复的速度和确定性
- 叙事利润验证:公司声称的护城河(生态/平台/网络效应等),必须有利润数据支撑。如果「生态」没有产生 ASP 溢价或利润贡献,就不是护城河,只是叙事
- 「不致命 ≠ 值得投资」原则:公司有钱能扛 ≠ 投资者能赚到钱。如果利润中枢结构性下移且恢复路径不明确,即便公司不会破产,也不是好的投资标的。必须在挑刺总结中明确区分「财务生存能力」和「投资价值」
报告模板
# <公司名>(<TICKER>)综合研究报告
**报告日期:YYYY-MM-DD**
**数据期间:YYYY-MM-DD 至 YYYY-MM-DD**
---
## 核心结论
> 3-9 句话概括:投资论点、稀缺性评估、核心催化剂、最大风险、挑刺结论和Checklist结论、当前建议+象限
---
## 一、公司概况
### 1.1 基本信息
- 股票代码、交易所、上市日期
- 主营业务描述
- 商业模式(如何赚钱)
### 1.2 市场定位与行业地位
- 行业排名、全球/国内市占率
- 在价值链中的位置(上游/中游/下游)
- 与行业平均水平的对比
### 1.3 核心护城河(逐业务线评估)
| 业务线 | 护城河类型 | 强度 | 趋势 | 关键证据 |
|--------|-----------|------|------|----------|
| 业务A | 技术/转换成本/成本优势/品牌/网络效应/牌照 | 强/中/弱 | 拓宽/稳定/收窄 | 具体技术/合同/数据 |
| 业务B | ... | ... | ... | ... |
**护城河总评**:
- 核心护城河来源是哪项业务?
- 整体护城河是在拓宽还是收窄?给出具体证据
### 1.4 未来发展战略
- 管理层战略规划
- 扩张 / 并购 / 海外计划
- 产能 / 研发投入方向
### 1.5 客户与竞争对手
- 客户类型(ToB/ToC/ToG)、客户集中度
- 主要竞争对手列表(3-5 家)
- 竞争态势概述
### 1.6 产业链位置与生态关系
- **价值链位置**:上游/中游/下游,具体在哪个环节?(如:上游芯片设计、中游设备制造、下游品牌运营)
- **关键产业合作**:与技术龙头的合作关系(如 NVIDIA-MRVL NVLink Fusion、CRDO-Amazon Trainium)。这类合作是护城河的关键信号,**必须搜索**
- **行业标准参与**:是否参与制定行业标准(如 PCIe/CXL/UALink 标准组织)?参与标准制定=话语权+护城河
- **生态锁定程度**:客户切换成本的具体量化(如:更换供应商需要 1-2 年重新验证、定制 ASIC 锁定 3-5 年供货合同)
### 1.7 管理层质量评估
- **CEO/创始人**:姓名、任期、背景。是创始人驱动还是职业经理人?
- **战略决策质量**:过去 3-5 年的关键战略决策是什么?结果如何?(转型成功/失败?并购整合如何?)
- **Guidance 兑现率**:过去 4-8 个季度,管理层给的营收/利润指引是否兑现?经常 beat、meet、还是 miss?
- **资本配置**:回购 vs 增发?并购记录(成功/失败案例)?研发投入占比趋势?
- **内部人交易**:近 6 个月内部人净买入还是净卖出?规模多大?(**重要信号**)
### 1.8 卡脖子/稀缺性专项评估(**必须执行,不得跳过**)
> **此节目的**:识别公司是否控制了产业链中不可替代的关键环节(卡脖子/瓶颈/垄断)。这是估值的核心变量——垄断者在供不应求时享有定价权,PS/PE 可以远高于市场认知。
> **AXTI 教训**:之前误估市场份额 15-20%(实际 60-70%),导致低估其垄断地位。
> **NOK 教训**:过度聚焦传统 5G 业务(#3 被压制),忽视 AI 数据中心连接新赛道(+49% 增长)和 NVIDIA $10 亿合作,导致稀缺性低估。
**强制搜索项**(必须执行,不得遗漏):
1. **市场份额交叉验证**(至少 3 个独立来源):
- `<公司名> global market share %`
- `<公司名> <竞争对手> market share comparison`
- `<公司名> industry report market share 2026`
- **取多个来源的中值/范围,标注不确定性**
2. **供需缺口/瓶颈搜索**:
- `<公司产品> supply demand gap shortage bottleneck 2026 2027`
- `<公司产品> price increase surge 2026`
- `<公司名> capacity constraint expansion lead time`
3. **不可替代性搜索**:
- `<公司产品> irreplaceable alternative substitute`
- `<公司名> monopoly chokepoint critical dependency`
- `<公司名> customer switching cost how long`
4. **技术转型/新赛道搜索**(防止 NOK 式误判):
- `<公司名> AI artificial intelligence data center 2026`
- `<公司名> NVIDIA Google AWS Microsoft partnership 2026`
- `<公司名> latest quarter earnings growth new segment 2026`
- **检查是否有新业务快速增长(即使整体增长低)**
**评估框架**:
| 维度 | 评估方法 | 评分(1-5) |
|------|----------|-----------|
| **市场份额** | 公司份额 X%,CR2/CR3 = Y% | 1(分散) → 5(>60% 准垄断) |
| **供需缺口** | 当前缺口 X%,预计持续至 YYYY 年 | 1(过剩) → 5(严重短缺到 2029+) |
| **不可替代性** | 客户切换需要 X 年/替代方案 Y 个 | 1(容易替代) → 5(无可替代,需 3-5 年验证) |
| **定价权** | 产品已涨价 X%,可继续提价 | 1(无定价权) → 5(涨价 100%+ 且客户接受) |
| **扩产壁垒** | 新产能需要 X 年/投资 Y 亿 | 1(快速扩产) → 5(3-5 年才能扩产) |
| **技术转型** | 新赛道收入增速 X%,合作伙伴 Y 个 | 1(无转型) → 5(新赛道 +50%+ 且战略合作) |
**稀缺性总分** = 六项平均(保留 1 位小数)
**判定标准**:
- **≥4.0** → **卡脖子级**:享有垄断定价权,估值应给予显著溢价(PS 可 30x+)
- **3.0-3.9** → **强壁垒**:有一定定价权,估值可适度溢价
- **<3.0** → **竞争型**:无显著稀缺性,按正常估值
**关键输出**(必须写入报告):
- 精确市场份额(多个来源交叉验证后的范围)
- 供需缺口数据(当前缺口 + 预计持续年限)
- 不可替代性证据(客户切换成本、替代方案可行性)
- 定价权证据(近期涨价幅度、客户接受度)
- 扩产壁垒数据(新产能所需时间、投资金额)
- **稀缺性总分 + 判定等级**
## 二、财务数据与分析
### 2.1 营收与利润趋势
| 期间 | 营收 | 同比 | 归母净利 | 同比 |
|------|------|------|----------|------|
| ... | ... | ... | ... | ... |
- 近 4-8 季度/年度数据
- 增长驱动力分析
### 2.1.1 收入质量快速判断
> 快速检查:最近一个财年的收入增长中,是否有明显的一次性收入、并购贡献、或非经常性项目?
> - 如果收入增长主要来自主营业务 → 不单独列出,正常继续分析
> - 如果存在显著的一次性收入或并购驱动增长 → 在本节指出,并在 Ch9 EPS 推导中剔除该部分,注明"调整后有机增速为 X%"
### 2.2 盈利能力
| 指标 | 最新值 | 去年同期 | 同业均值 |
|------|--------|----------|----------|
| 毛利率 | ... | ... | ... |
| 净利率 | ... | ... | ... |
| ROE | ... | ... | ... |
| ROIC | ... | ... | ... |
### 2.3 资产负债结构
- 资产负债率、有息负债规模
- 流动比率 / 速动比率
- 偿债能力评估
### 2.4 现金流分析
- 经营性现金流 vs 净利润(含金量)
- 自由现金流(FCF)
- CAPEX 占营收比
- 分红历史与股息率
## 三、实际业务深度分析
### 3.1 各业务线概览
| 业务 | 内容描述 | 竞争力 | 收入占比 | 毛利率水平 | 未来展望 |
|------|----------|--------|----------|-----------|----------|
| 业务A | ... | ... | X% | 高/中/低 | ... |
| 业务B | ... | ... | X% | ... | ... |
### 3.2 核心业务深度专题
> **从 3.1 中选择对公司估值最重要的 1-2 条业务线,做独立深度分析。每个核心业务 200-400 字。**
**核心业务一:[名称]**(占收入 X%,贡献利润 Y%)
- 产品/服务详解:具体做什么?技术壁垒在哪?
- 竞争格局:这个细分赛道谁是第一?本公司排第几?差距多大?
- 增长驱动:未来 3 年的增长靠什么?客户是谁?合同/订单可见度如何?
- 盈利能力:毛利率水平及趋势、定价权、成本结构
- 关键风险:这项业务最大的风险是什么?
**核心业务二:[名称]**(如有第二核心业务)
- (同上结构)
### 3.3 核心业务护城河
- 哪项业务是护城河的主要来源
- 该业务的竞争壁垒详解
### 3.4 未来想象空间
- 新业务 / 第二增长曲线
- 潜在市场空间(TAM)
- 从 X 到 Y 的跃迁可能性
### 3.5 市场定价分析
> **此节必须回答:当前估值在定价什么?市场共识对不对?**
- **当前 ForwardPE 隐含的增长假设是什么?**(用数学拆解:要达到当前 PE,[目标财年] 营收/净利需要达到多少?这个目标是否合理?目标财年按 9.2.1 规则确定)
- **市场主要在定价哪个业务/叙事?**(如 MRVL 的定制 ASIC $100 亿叙事,CRDO 的硅光子第二曲线)
- **有没有被市场忽视的业务线?**(如 MRVL 的互连/交换芯片业务可能被定制 ASIC 叙事掩盖)
- **如果核心叙事兑现,当前估值是便宜还是贵?**
- **如果核心叙事破灭,估值会跌到哪里?**
## 四、技术分析
### 4.1 价格趋势
- 当前价格 vs MA5/MA10/MA20/MA60/MA120/MA250
- 均线排列状态:多头 / 空头 / 收敛 / 缠绕
- 近期价格形态
### 4.2 板块热度
- 所属板块近期表现
- 板块轮动位置(启动 / 加速 / 高潮 / 退潮)
### 4.3 技术指标
| 指标 | 当前值 | 信号 | 强度 |
|------|--------|------|------|
| MACD | DIF=X, DEA=X | 金叉/死叉/中性 | 强/中/弱 |
| RSI | RSI6=X, RSI12=X | 超买/超卖/中性 | - |
| KDJ | K=X, D=X, J=X | 金叉/死叉/中性 | 强/中/弱 |
| 布林带 | 上=X, 中=X, 下=X | 位置 | - |
- 是否出现背离(底背离 / 顶背离)
### 4.4 支撑与阻力位
| 类型 | 价位 | 依据 |
|------|------|------|
| 强支撑 | ... | ... |
| 弱支撑 | ... | ... |
| 弱阻力 | ... | ... |
| 强阻力 | ... | ... |
### 4.5 资金面
- 主力资金流向(净流入/流出)
- 北向资金(A股/港股适用)
- 股东人数变化
- 融资余额变化
### 4.6 短期风险收益比
- 上行空间:X%(目标位 XXX)
- 下行风险:X%(止损位 XXX)
- 风险收益比:X:1
- ATR(14) 参考:X%
### 4.7 行情催化剂
- 近期已发生的催化事件
- 即将到来的催化事件(财报日、产品发布、政策会议等)
## 五、市场情绪
### 5.1 机构评级
| 机构 | 评级 | 目标价 | 日期 |
|------|------|--------|------|
| ... | ... | ... | ... |
- 近 3 个月评级变化趋势
- 目标价区间:XX - XX
### 5.2 舆情与新闻
- 近期关键新闻(3-5 条)
- 舆情情绪倾向:正面 / 中性 / 负面
- 市场关注焦点
### 5.3 多方与空方观点对比
| 多方论据 | 空方论据 |
|----------|----------|
| ... | ... |
| ... | ... |
- 核心分歧点
- 哪方更有说服力(给出判断)
## 六、竞品对比与竞争格局
### 6.1 可比公司列表
| 公司 | 市值 | PE(TTM) | PB | ROE | 营收增速 | 净利增速 |
|------|------|---------|-----|-----|----------|----------|
| **本公司** | ... | ... | ... | ... | ... | ... |
| 竞品A | ... | ... | ... | ... | ... | ... |
| 竞品B | ... | ... | ... | ... | ... | ... |
| 竞品C | ... | ... | ... | ... | ... | ... |
### 6.2 竞争优势矩阵
| 维度 | 本公司 | 竞品A | 竞品B | 竞品C |
|------|--------|-------|-------|-------|
| 技术 | ... | ... | ... | ... |
| 成本 | ... | ... | ... | ... |
| 品牌 | ... | ... | ... | ... |
| 渠道 | ... | ... | ... | ... |
### 6.3 竞品差异结构性归因
> **不只是列数字,必须解释"为什么"。** 对关键财务指标差异做结构性归因分析。
**毛利率差异归因**(如本公司 X% vs 竞品A Y%):
- 业务结构差异?(标准产品 vs 定制产品 vs 服务)
- 规模效应差异?(营收体量对固定成本的分摊)
- 定价权差异?(品牌溢价 / 技术壁垒 / 客户锁定)
- 成本结构差异?(代工 vs 自有产能 / 原材料议价能力)
**ROE 差异归因**(杜邦分解思路):
- 利润率差异?(净利率高低)
- 资产周转率差异?(轻资产 vs 重资产)
- 杠杆差异?(权益乘数高低)
- 结论:本公司 ROE 高/低是因为哪个因子?
### 6.4 行业竞争格局演变
- CR3/CR5 集中度趋势
- 新进入者威胁
- 替代品威胁
- 供给侧变化
## 七、主要投资风险
| 序号 | 风险类别 | 描述 | 严重程度 | 影响时间 |
|------|----------|------|----------|----------|
| 1 | 行业竞争 | ... | 高/中/低 | 短期/中期/长期 |
| 2 | 技术路线 | ... | ... | ... |
| 3 | 政策 | ... | ... | ... |
| 4 | 地缘政治 | ... | ... | ... |
| 5 | 市场变化 | ... | ... | ... |
## 八、挑刺分析——寻找致命缺陷
> **此章节为对抗性分析,必须以最严苛的视角审视公司。不是为了否定,而是为了压实战胜率。挑完刺还能站得住脚的,才是真标的。**
### 8.1 叙事解构——市场在定价什么?
- 当前 ForwardPE 隐含了什么增长假设?(用数学拆解:要达到当前 PE,[目标财年] 营收/净利需要达到多少?目标财年按 9.2.1 规则确定)
- 市场主要在定价哪个业务/叙事?(哪个故事支撑了估值?)
- 这个叙事依赖哪些前提条件?逐一列出
- **如果其中任何一个前提不成立,估值会跌到哪里?**
### 8.2 逐业务线致命缺陷排查
| 业务线 | 致命缺陷假设 | 最坏情况 | 概率 | 能否扛住? |
|--------|-------------|---------|------|-----------|
| 业务A | 如果XX发生... | 收入归零/腰斩... | 高/中/低 | 能/不能 |
| 业务B | ... | ... | ... | ... |
**排查维度**(每项必须逐一检查):
1. **技术替代**:是否有 3-5 年内可能替代核心产品的技术?谁在做?进展如何?
2. **客户集中**:最大客户占收入 X%——如果这个客户转向竞品/自研,影响多大?
3. **竞争碾压**:是否有资源远超自己的巨头正在进入?(如 Broadcom/Intel/英伟达做同样的事)
4. **周期见顶**:当前增速是否已接近周期顶部?有哪些领先指标?
5. **供应链脆弱**:是否依赖单一供应商/代工厂?断供影响多大?
6. **定价权压力测试**:当行业面临成本冲击时,公司能否将成本转嫁给客户?**必须与竞品对比毛利率变动幅度**——如果行业共性冲击导致公司毛利率下降幅度显著大于竞品(如小米手机毛利率 -2.3pp vs 苹果基本持平),说明定价权结构性弱于对手,这不是暂时性问题,是商业模式缺陷。
7. **叙事护城河验证**:如果公司声称拥有「生态」「平台」「网络效应」等叙事护城河,**必须用利润数据验证其真实性**。具体检验:
- 该叙事是否产生了可量化的定价权?(ASP 溢价 vs 竞品)
- 该叙事是否贡献了显著利润?(各业务利润贡献拆解)
- 如果没有 → 该叙事在当前阶段是「估值加分项」还是「虚假护城河」?
### 8.3 反共识压力测试
**列出市场共识的 3 个核心假设:**
1. 假设一:... → **如果错了**:...(股价影响 X%)
2. 假设二:... → **如果错了**:...(股价影响 X%)
3. 假设三:... → **如果错了**:...(股价影响 X%)
**极端情景模拟**:三个假设同时出错的概率有多大?如果发生,股价会跌到哪里?
### 8.4 增长阶段 vs 盈利质量诊断
- 当前处于什么阶段?(导入期 / 高增长投资期 / 盈利兑现期 / 成熟期 / 衰退期)
- 利润率压缩是**投资期暂时现象**还是**结构性缺陷**?区分方法:
- 投资期:研发/并购投入重但收入高增、毛利有改善趋势、管理层有明确盈利路径
- 结构性缺陷:收入增长乏力、毛利持续下滑、竞争加剧导致定价权丧失
- 如果判断为投资期:**何时能兑现盈利?** 给出具体时间节点和触发条件
- 如果判断为结构性缺陷:**这是否足以否定整个投资逻辑?**
### 8.5 挑刺总结——公司能不能扛住?值不值得投?
**缺陷严重程度分级**(不再只判「致命/不致命」):
| 严重程度 | 定义 | 投资含义 | 举例 |
|----------|------|---------|------|
| **致命** | 公司面临破产或核心竞争力不可逆摧毁 | 回避 | 核心技术被替代且无替代方案、现金流断裂 |
| **严重·结构性** | 不致死,但核心盈利能力被结构性削弱,恢复路径不明确 | 大幅降低仓位或不建仓 | 主业无定价权、商业模式利润率天花板极低 |
| **严重·高度不确定** | 重大业务方向面临不可控竞争,成败取决于未验证变量 | 降低仓位、等验证结果 | 第二曲线无差异化壁垒、大额投入回报不明 |
| **中等** | 有影响但可控,或影响重大但有时限 | 纳入风险因子,不影响建仓决策 | 短期成本冲击(有定价权的公司可转嫁)、单一客户风险 |
| **轻度** | 影响可控或可对冲 | 记录但不影响判断 | 非核心业务波动 |
**缺陷清单**:
| # | 缺陷 | 严重程度 | 理由 | 对投资的影响 |
|---|------|---------|------|-------------|
| 1 | ... | 致命/严重·结构性/严重·不确定/中等/轻度 | ... | ... |
| 2 | ... | ... | ... | ... |
**最终判断**(三个层次,不再只是「能不能扛住」):
1. **生存性**:公司会不会破产?现金能撑多久?(财务底线)
2. **盈利性**:即使活着,利润中枢是否在结构性下移?是否有明确的利润恢复路径和 timeline?(投资价值的核心)
3. **叙事真实性**:公司的核心叙事(生态/平台/AI/转型)是否有利润数据支撑?还是只是「好听的故事」?
→ 三个层次都通过 → 可以进入估值和赔率讨论
→ 生存通过但盈利/叙事不通过 → **便宜可能是应该的便宜,不是错杀**
→ 生存不通过 → 回避或极小仓位彩票
## 九、估值判断
### 9.1 当前估值指标
> **估值方法论选择**(根据公司发展阶段选择主估值指标):
> - **亏损/微利高增长期**:以 PS(市销率)为主估值指标,PE 失真
> - **盈利拐点/投资期**:以 Forward PE + PS 组合,关注盈利何时兑现
> - **稳定盈利增长期**:以 PE + PEG 为主
> - **成熟期/周期股**:以 EV/EBITDA + 正常化 PE 为主
> - **资产密集型**:以 PB + ROE 组合
> - **本公司当前阶段判断**:[填写],主估值指标为 [填写]
> **注意**:历史分位为估算值,标注为"约 X%"。无法精确计算时,基于当前价格相对 52 周高低点的位置推算。
| 指标 | 当前值 | 历史分位 | 同业均值 | 评价 |
|------|--------|----------|----------|------|
| PE(TTM) | ... | 约X% | ... | 偏高/合理/偏低 |
| PB | ... | 约X% | ... | ... |
| PS | ... | 约X% | ... | ... |
| ROE | ... | - | ... | ... |
| PEG | ... | - | ... | ... |
| EV/EBITDA | ... | 约X% | ... | ... |
### 9.2 预期 EPS
| 年份 | 一致预期 EPS | 对应 PE | 备注 |
|------|-------------|---------|------|
| 当年 | ... | ... | ... |
| +1年 | ... | ... | ... |
| +2年 | ... | ... | ... |
### 9.2.1 估值锚定规则(必须遵守)
**三情景估值的目标价统一锚定未来 12 个月**,不允许随意选择 FY 年份。
**步骤**:
1. **确认公司财年截止日**:
- 美股/港股大多数 = 12月31日(日历年)
- 部分公司不同:Alibaba/京东 = 3月31日,Microsoft = 6月30日,Google = 12月31日
- 从 yfinance `info` 或 WebSearch 确认
2. **确定目标财年**:从报告日期往后推 12 个月,找到对应结束的财年
- 例1:报告日 2026-07-11,日历年公司 → 目标 = FY2027(2027-01至2027-12)
- 例2:报告日 2026-07-11,3月31日财年 → 目标 = FY2027(2026-04至2027-03)
- 例3:报告日 2026-01-15,日历年公司 → 目标 = FY2026(2026-01至2026-12)
3. **使用目标财年的一致预期 EPS**:从分析师一致预期中获取该财年的 EPS
4. **在报告中标注**:明确写出"目标价对应 FY[年份] EPS",让读者知道估值覆盖的时间范围
**注意**:
- 如果目标财年的 EPS 一致预期不可得(太远),可用"报告日所在财年+1"的 EPS 并标注为"估算"
- 不得为了目标价好看而选择更远的财年
- 如果一致预期数据不可得,用当前财年 EPS × (1 + 合理增速) 估算,标注"估算"
### 9.3 三情景估值(基于 FY[目标财年] EPS,覆盖未来 12 个月)
> **规则**:每个情景必须有独立的 EPS 估计和 PE 倍数。EPS 差异来自业务假设不同(收入增速、利润率等),PE 差异来自市场给予的估值溢价/折价不同。
**EPS 推导过程**(必须展示,不可省略):
| 指标 | 悲观 | 中性 | 乐观 |
|------|------|------|------|
| 营收增速假设 | X% | Y% | Z% |
| 净利率假设 | A% | B% | C% |
| **推算 EPS** | **$X** | **$Y** | **$Z** |
> EPS 推算必须基于可检验的业务假设。悲观情景的 EPS 低于中性,乐观情景的 EPS 高于中性。如果无法推导 EPS,至少说明各情景 EPS 相对中性情景的调整幅度及原因。
**目标价计算**:
| 情景 | 核心假设 | 目标 EPS | 给予 PE | 目标价 | 涨跌幅 | 概率 |
|------|---------|---------|---------|--------|--------|------|
| 悲观 | ... | $X | Xx | $XX | -X% | X% |
| 中性 | ... | $Y | Yx | $YY | +X% | X% |
| 乐观 | ... | $Z | Zx | $ZZ | +X% | X% |
期望目标价 = 各情景目标价 × 概率加权
期望收益 = 各情景涨跌幅 × 概率加权
### 9.4 估值合理性总结
- 一句话判断:当前估值是否合理
- 安全边际评估
### 9.4.1 多业务公司估值调整
> 如果公司有多个支柱业务(单一业务占总收入 <70%),给予的 PE 倍数必须反映业务组合,不能按最亮眼业务的增速给估值。
>
> 例:Alphabet 的 Cloud 增速 63%,但搜索广告仍占 55% 且增速仅 19%。整体 PE 不可能给到纯 AI 公司的 80x,应按业务加权给估值。
>
> **做法**:在给予 PE 倍数时,考虑各业务的增速和利润率加权。如果最亮眼业务仅占 10-15% 收入,它对整体估值的拉动有限。
### 9.5 简化 DCF 估值(辅助验证)
> 当公司 FCF 可预测且稳定时(如成熟公用事业、订阅制SaaS),用简化 DCF 做辅助验证。不要求完整多阶段模型。
**简化方法**:
1. 取当前 FCF 作为基数
2. 假设未来 3-5 年 FCF 增速(悲观/中性/乐观三档)
3. 终值:第 5 年 FCF × (1 + 永续增长率 2-3%) / (折现率 10% - 永续增长率)
4. 折现到当前(折现率 10%)
5. 除以总股数 = 每股内在价值
**使用场景**:
- ✅ FCF 稳定可预测的公司(公用事业、订阅制SaaS、消费品龙头)
- ❌ FCF 为负或波动极大的公司(早期AI、biotech、周期股底部)→ 跳过此节,标注"FCF 不稳定,DCF 不适用"
**输出**:在 9.4 估值合理性总结中引用 DCF 结果,如"简化 DCF 给出每股内在价值 $XX,当前价格 $357 有/无安全边际"。
### 9.6 假设回溯校验
> 检查 Ch9 的 EPS 推导是否与 Ch3 的业务判断一致。只检查以下两项:
1. **增速一致性**:Ch3 判断的核心业务增速 → Ch9 EPS 推导中的营收增速假设是否匹配?
- 例:Ch3 说"Cloud 增速 63%、占总收入 12%",则 Ch9 整体营收增速假设不应远低于 30%
- 如果不匹配 → 在报告中注明差异原因(如:其他业务拖累/保守假设/并购基数效应)
2. **利润率一致性**:Ch3 对核心业务盈利能力的判断 → Ch9 净利率假设是否匹配?
- 例:Ch3 说"Cloud 利润率 32.9% 且正在提升",则 Ch9 净利率假设不应假设利润率大幅下降
- 如果不匹配 → 注明差异原因
> **注意**:Ch3 乐观但 Ch9 保守是合理的(说明 EPS 推导中考虑了 Ch3 未覆盖的风险),只要注明差异原因即可。不强制两者一致。
## 十、对照投资哲学与 Checklist
### 10.1 个股 Checklist 逐项检查
**以下 13 项从 references/checklist.md 逐项读取,逐一检查,不得杜撰。**
| # | 检查项 | 通过? | 证据 |
|---|--------|-------|------|
| 1 | 稀缺资产(供应有限 + 需求增长 + 不可替代) | 是/否/部分 | 具体证据 |
| 2 | 可转嫁成本上涨 | 是/否/部分 | ... |
| 3 | 处于行业垄断或者卡脖子的地位 | 是/否/部分 | ... |
| 4 | 非国企央企 | 是/否 | 企业类型 |
| 5 | 最好不是重资产行业 | 是/否/部分 | 资产结构 |
| 6 | 未来盈利预期增长 | 是/否 | 一致预期/指引 |
| 7 | 估值市盈率(PEG)合理 | 是/否/部分 | PEG 数值 |
| 8 | 盈利模式可持续(非一次性买卖) | 是/否 | 收入结构 |
| 9 | 不投资军工性质企业 | 是/否 | 业务性质 |
| 10 | 核心管理团队拥有公司大部分股权 | 是/否 | 管理层持股% |
| 11 | 技术壁垒深度(竞争对手 3+ 年难以追赶) | 是/否/部分 | 核心技术、专利、认证壁垒 |
| 12 | 产业生态绑定(与行业龙头合作/标准共建) | 是/否/部分 | 具体合作关系、标准参与 |
| 13 | 增长阶段判断(投资期利润可压 vs 成熟期需利润) | 投资期/成熟期 | 毛利率趋势、研发占比、盈利路径 |
**Checklist 通过数:X/13**
### 10.2 赔率与胜率四象限定位
- **胜率判断**(我对吗?):基于基本面确定性、增长可见度
- **赔率判断**(价格给空间吗?):基于当前估值、市场共识
- **象限定位**:
- 高胜率 + 高赔率 = 梦幻区(重仓机会)
- 高胜率 + 低赔率 = 拥挤区(可持有不可重仓)
- 低胜率 + 高赔率 = 彩票区(小仓位)
- 低胜率 + 低赔率 = 绝杀区(回避)
- **公司胜率 vs 交易胜率**:是否已被充分定价?
### 10.3 认知时间差分析
参照 `references/cognitive_time_gap.md` 框架:
- 该股处于第几档?
- 第一档:领先于趋势(市场尚未认知,价格未反映)
- 第二档:顺应趋势(市场正在认知,价格部分反映)
- 第三档:追逐趋势(市场已充分认知,价格已透支)
- 市场认知程度
- 价格透支情况
### 10.4 但斌净利哲学审视
参照 `references/profit_philosophy.md` 框架:
- ROE 水平及趋势(是否 >15%?)
- 资产轻重(轻资产 vs 重资产)
- 利润模式可持续性(是否依赖一次性收入?)
- 是否符合"用净利定义伟大"的标准
### 10.5 回报侧盲区检查
参照 `references/return_blindspot.md` 框架:
- 在价值链中的位置(供给端 vs 回报端)
- 净利率 vs 同业比较
- 定价权评估
- 是否存在"只算投入不算回报"的叙事盲区
## 十一、投资打分
### 11.1 长期投资打分
| 维度 | 分数 | 说明 |
|------|------|------|
| 产业地位 | X/10 | 一句话说明 |
| 增长确定性 | X/10 | 一句话说明 |
| 估值合理性 | X/10 | 一句话说明 |
| 护城河 | X/10 | 一句话说明 |
| **长期综合** | **X.X/10** | 一句话总结 |
### 11.2 短期交易打分
| 维度 | 分数 | 说明 |
|------|------|------|
| 技术面 | X/10 | 一句话说明 |
| 催化剂 | X/10 | 一句话说明 |
| 资金面 | X/10 | 一句话说明 |
| 风险收益比 | X/10 | 一句话说明 |
| **短期综合** | **X.X/10** | 一句话总结 |
## 十二、结论与建议
### 12.1 综合结论
- **一句话总结**
- **前三大看多逻辑**
1. ...
2. ...
3. ...
- **前三大看空风险**
1. ...
2. ...
3. ...
### 12.2 操作建议
| 情景 | 操作 | 仓位% | 触发条件 |
|------|------|-------|----------|
| 乐观 | ... | X% | ... |
| 中性 | ... | X% | ... |
| 悲观 | ... | X% | ... |
### 12.3 关键监测指标
1. 指标一 + 监测频率
2. 指标二 + 监测频率
3. 指标三 + 监测频率
4. 指标四 + 监测频率
5. 指标五 + 监测频率
### 12.4 风险提示
> 本报告基于截至 YYYY-MM-DD 的公开数据,仅供个人研究参考,不构成任何投资建议。投资有风险,入市需谨慎。过往业绩不代表未来表现。
## 十三、图表参考





Step 8: 生成 HTML + PDF
convert_to_pdf.py 会同时输出 HTML 和 PDF,HTML 与 PDF 同名同目录:
python3 ~/.claude/skills/stock-analyzer/scripts/convert_to_pdf.py \
--md-file ~/Stock_Research/stock_analysis/<NAME>/<NAME>_综合研究报告_YYYYMMDD.md \
--output ~/Stock_Research/stock_analysis/<NAME>/<NAME>_综合研究报告_YYYYMMDD.pdf
注意:--output 参数必须带 .pdf 后缀,否则脚本会生成一个无后缀的新文件。
每份报告产出 3 个文件:.md + .html + .pdf。PDF 生成失败不影响 Markdown/HTML。
再次分析同一只股票时
- 不覆盖旧报告:生成新的
<NAME>_综合研究报告_<NEW_DATE>.md - 旧报告保留:
long_term_analysis.md、short_term/目录、历史_综合研究报告_文件全部保留 - 图表覆盖更新:
charts/目录下的图表覆盖更新 - 报告格式:每份报告产出
.md+.html+.pdf三个文件 - 最新报告即当前分析:文件名含日期,最新日期的报告即为当前分析结果
自检清单
- 目录名称使用中文(A股/港股)或合理名称(美股优先中文名,无中文名用代码)
- 东方财富 secid 前缀正确(A股深市=0, 沪市=1, 港股=116, 美股=105)
mx-data成功获取了行情摘要(A股检查是否包含股价/市值/PE等关键字段;美股/港股大概率失败属正常,已降级为 WebSearch)- 东方财富 API 成功获取了逐日 OHLCV 数据(data_points > 50)
compute_indicators.py计算了所有指标(indicators.json 中 MACD/RSI/KDJ 等字段非 null)generate_charts.py生成了至少 3 张图表mx-search成功获取了新闻/研报/公告(至少 5 条有效信息)- 已读取 references/checklist.md 中的 Checklist 和 references/odds_and_winrate.md 中的赔率/胜率心法
- 已读取 references/ 三份投资哲学框架文档(cognitive_time_gap / profit_philosophy / return_blindspot)
- 已执行挑刺搜索(做空论点、竞争威胁、技术替代、内部人卖出 4 项搜索)
- 已执行市场地位/稀缺性搜索(市场份额交叉验证、供需缺口、不可替代性、行业集中度、技术转型/新赛道 5 项搜索)
- 已执行 Step 5.5 关键问题深挖(识别 2-3 个关键问题并针对性搜索)
- 报告包含全部 13 个章节(核心结论 + 一~十三)
- 第一章含:基本信息、市场定位、护城河(逐业务线表格)、战略、客户竞争对手、产业链生态关系、管理层质量评估、卡脖子/稀缺性专项评估(1.8:市场份额+供需缺口+不可替代性+定价权+扩产壁垒=稀缺性总分)
- 第二章含:营收趋势、盈利能力、资产负债、现金流
- 第三章含:业务线概览表、核心业务深度专题(1-2条业务线 200-400 字)、护城河、想象空间、市场定价分析
- 第四章含:价格趋势、板块热度、技术指标、支撑阻力、资金面、风险收益比、催化剂
- 第五章含:机构评级、舆情、多空观点对比
- 第六章含:可比公司估值表、竞争优势矩阵、竞品差异结构性归因(毛利率+ROE归因)、格局演变
- 第七章含:风险分类表(行业/技术/政策/地缘/市场)
- 第八章含:叙事解构、逐业务线致命缺陷排查(7维度含定价权+叙事验证)、反共识压力测试、增长阶段诊断、缺陷严重程度清单(五级)
- 第八章必须给出三层判断:生存性(会不会破产)+ 盈利性(利润能否恢复)+ 叙事真实性(生态/平台是否有利润支撑)
- 第八章每个缺陷标注了严重程度(五级:致命/严重·结构性/严重·不确定/中等/轻度),不再只是「致命/不致命」二分
- 第八章已执行叙事护城河的利润验证——公司声称的生态/平台优势是否有 ASP 溢价或利润贡献的数据支撑
- 第八章已执行定价权非对称性检验——行业冲击下公司毛利率变动 vs 竞品,是否暴露结构性弱于对手
- 第九章含:估值方法论选择说明、PE-TTM/PB/ROE/PEG、预期 EPS、估值锚定规则(9.2.1)、三情景估值(各情景独立 EPS+PE)、多业务估值调整(9.4.1)、简化DCF(9.5,适用时)、假设回溯校验(9.6)
- 第九章三情景估值使用 9.2.1 规则确定的目标财年,非随意选择
- 第九章三情景中每个情景有独立的 EPS 估计(不是同一 EPS × 不同 PE)
- 第九章展示了 EPS 推导过程(营收增速假设 + 净利率假设 → EPS)
- 第九章假设回溯校验:Ch3 业务判断与 Ch9 EPS 假设一致(或注明差异原因)
- 第二章含收入质量快速判断(如有一次性收入/并购增长需指出)
- 第十二章操作建议中的持有期与估值时间框架一致(12 个月,不可倒推)
- 第十章含:Checklist 13 项逐项检查(每项有是/否/部分 + 证据)+ 四象限定位 + 认知时间差 + 但斌哲学 + 回报侧盲区
- 第十一章含:长期 + 短期打分(各 4 维度,带分数和说明)
- 第十二章含:结论、操作建议、监测指标、风险提示
- 第十三章含 5 张图表引用
- 打分数值合理,有具体说明(不能只写分数不写理由)
- 报告已转换为 HTML + PDF(.md + .html + .pdf 三份)
- 报告中所有日期使用绝对日期(YYYY-MM-DD),不使用"今天"、"最近"
- 报告末尾有风险提示声明
- 如果数据获取失败,在报告中明确标注
- 未查到的数据标注"未查到",预测值标注"预测"/"约",不编造数据
降级策略
| 故障场景 | 降级方案 |
|---|---|
| mx-data 不可用或返回不完整(美股大概率发生) | 直接 WebSearch 搜索行情摘要(A股可先尝试东方财富行情页 WebFetch) |
| mx-search 不可用或返回不足 | 用 WebSearch/WebFetch 补充搜集,至少各搜 2-3 条 |
| 东方财富 API 不可用(A股历史K线) | 用新浪财经 API 获取K线;或 WebSearch 搜集近 30 日收盘价,手动构造 OHLCV |
| Sina API 不可用(A股历史K线) | WebSearch 搜集近 30 日收盘价,手动构造 OHLCV |
| 东方财富 API 不可用(港股/美股历史K线) | yfinance 获取K线(需代理可用);或 Tavily extract 获取 ~50 日 OHLCV;或 WebSearch 搜集近 30 日收盘价,手动构造 OHLCV |
| yfinance 不可用(代理未开启/港股/美股降级) | Tavily extract 获取 ~50 日 OHLCV;或 WebSearch 搜集近 30 日收盘价,手动构造 OHLCV |
| 澳洲 OTC 股票(东方财富/yfinance 均不可用) | 仅 WebSearch 搜集近期价格数据 |
| 所有数据源全部失败 | 仅用 WebSearch 搜集信息,生成定性分析(无图表/无精确指标值),报告中注明 |
| 图表生成失败 | 跳过图表,报告中标注"图表生成失败" |
| PDF 生成失败 | 保留 Markdown,跳过 PDF |
| 中文名称无法解析 | WebSearch 查找对应股票代码,找到后继续,找不到则提示用户输入代码 |
| references/ 框架文档不存在 | 在第十章标注"框架文档缺失,基于通用分析",不跳过该章节 |
| 竞品估值数据无法获取完整对比 | 在第六章标注"数据缺失"或"预测值",不得编造 |
脚本位置
优先使用的妙想 Skills:
~/.claude/skills/mx-data/mx_data.py— 行情摘要查询(仅对A股部分有效,美股/港股大概率失败或返回不完整)~/.claude/skills/mx-search/mx_search.py— 金融资讯搜索(A股效果最好,港股/美股有中文研报可搜到)
stock-analyzer 自带脚本:
~/.claude/skills/stock-analyzer/scripts/resolve_ticker.py— Ticker 识别(市场类型判断)~/.claude/skills/stock-analyzer/scripts/sina_data_helper.py— 新浪财经数据解析(A股,降级方案)~/.claude/skills/stock-analyzer/scripts/fetch_ashare.sh— A股数据获取封装(curl + Sina API,降级方案)~/.claude/skills/stock-analyzer/scripts/compute_indicators.py— 技术指标计算~/.claude/skills/stock-analyzer/scripts/generate_charts.py— 图表生成~/.claude/skills/stock-analyzer/scripts/convert_to_pdf.py— Markdown → PDF
