如何做一份金融市场深度研究:从宏观周期到估值与风险

Chen Xi
Chen Xi

金融市场研究最容易陷入两个极端:一种是堆满宏观数据,却说不清它们怎样影响资产;另一种是先有“看多”或“看空”的结论,再从新闻里寻找支持。

真正有用的研究不应该从价格目标开始,而应该从一个可以被证伪的问题开始。例如:

AI 算力产业链未来两年的盈利增长,主要来自终端需求继续扩张,还是来自短期供给瓶颈带来的高价格?

这个问题比“AI 概念还能不能涨”更适合研究。它限定了产业、期限和关键变量,也允许我们找到推翻结论的证据。

本文整理一套我比较认可的研究方法:从宏观环境进入行业,再落到公司现金流、市场预期和风险边界。它不是选股公式,也不构成任何投资建议,而是一套组织证据的方式。

先定义研究任务

动手收集数据之前,至少写清楚五件事:

项目 需要回答的问题
研究对象 是行业、公司、指数、债券还是商品?
时间范围 关注一个季度、两年盈利周期,还是十年产业趋势?
比较基准 与历史均值、同行、指数还是无风险利率比较?
核心假设 哪几个变量共同决定结论?
证伪条件 出现什么数据时必须承认原判断错误?

期限尤其重要。利率上升可能压低当期估值,却未必改变一家公司的长期竞争力;技术突破可能改善十年空间,却无法解释下个季度的库存。把不同时间尺度混在一起,几乎一定会得到自相矛盾的结论。

image

第一层:宏观不是背景板

宏观研究不需要预测每一个数据点,但要判断资产正处于什么环境。最常用的四组变量是:

  • 增长:实际 GDP、工业生产、PMI、新订单和就业;
  • 通胀:CPI、PPI、工资、商品价格和通胀预期;
  • 流动性:政策利率、实际利率、货币供应、信用扩张和收益率曲线;
  • 风险偏好:信用利差、波动率、汇率和跨资产相关性。

研究这些数据时,需要先分清四组概念:

同比和环比

同比适合观察中期方向,但容易受基数影响;环比更接近当前动量,却可能包含季节性噪声。不能因为同比仍高,就忽略最近几个月已经连续减速。

名义和实际

企业收入通常以名义金额披露,但产量和真实需求需要剔除价格影响。通胀较高时,名义增长可能很好看,实际销量却没有增加。

水平和变化率

PMI 从 60 降到 55,仍然可能代表扩张,只是扩张速度下降。利率保持高位和利率继续上升,对估值的影响也不同。

已公布数据和当时可得数据

宏观序列会被修订。回测时如果直接使用今天下载的完整历史数据,就可能无意中用到当时尚未公布的修订值。研究记录应标注数据发布日期和版本。

数据源应尽量靠近原始发布者。中国宏观数据可以从国家统计局国家数据中国人民银行获取;跨国比较可以使用 IMF World Economic Outlook 数据库;美国宏观序列可以从圣路易斯联储 FRED查询。

一个很值得注意的细节是“数据版本”。例如 IMF 的 2026 年 4 月 WEO 明确说明,其估计和预测基于截至 2026 年 4 月 1 日可获得的信息。引用预测时,必须保留这个时间戳,而不能把旧预测当成今天的事实。

第二层:行业研究要拆成量、价和产能

“市场空间很大”不是完整的行业结论。行业收入最简单的拆法是:

Revenue=Volume×Price×Mix\text{Revenue} = \text{Volume} \times \text{Price} \times \text{Mix}

分别对应销量、价格和产品结构。继续向下研究,可以建立一张供需表:

需求侧 供给侧
终端客户数量 名义产能
单客户使用量 有效产能与良率
更新周期 产能利用率
库存和订单 库存和交付周期
替代产品价格 新增资本开支

以 AI 算力产业链为例,不能只看 GPU 出货量。服务器还依赖高带宽内存、先进封装、交换芯片、光模块、电力和冷却。产业利润往往集中在最紧缺的环节,而瓶颈会移动。

研究时应该不断追问:

  1. 当前真正限制交付的是哪个环节?
  2. 这个瓶颈需要多长时间扩产?
  3. 扩产后价格和利润率会怎样变化?
  4. 下游资本开支是由真实收入驱动,还是由竞争性投入驱动?
  5. 需求减少 10% 时,谁的库存和固定成本压力最大?

市场规模最好从“客户数 × 单位用量 × 单价”自下而上计算,再与机构给出的总量预测交叉验证。只引用一个很大的 TAM 数字,无法判断利润最终属于谁。

第三层:把公司故事翻译成财务驱动

行业景气不等于每家公司都能赚钱。公司层至少要回答四个问题:

收入从哪里来

把收入按产品、地区和客户拆开,再区分销量、价格、汇率和并购影响。增长高度依赖单一客户时,应单独做客户集中度压力测试。

利润率为什么变化

毛利率上升可能来自产品结构改善,也可能只是原材料价格暂时下降。经营利润率还会受到研发、销售费用和规模效应影响。

利润能否变成现金

自由现金流可以简化为:

FCF=Cash Flow from OperationsCapital Expenditure\text{FCF} = \text{Cash Flow from Operations} - \text{Capital Expenditure}

如果利润增长伴随应收账款、库存和资本开支快速上升,现金流可能明显弱于利润。此时需要检查增长是否依赖放宽信用、提前备货或持续融资。

投入资本是否有效

可以用投入资本回报率观察公司创造价值的效率:

ROIC=NOPATInvested Capital\text{ROIC} = \frac{\text{NOPAT}}{\text{Invested Capital}}

高增长但 ROIC 长期低于资本成本的公司,可能只是把更多资金投入低回报项目。

A 股公司应优先查看巨潮资讯上交所定期报告等法定披露渠道;研究美股时可以使用 SEC EDGAR。SEC 还提供无需 API Key 的 EDGAR XBRL 接口,可以按公司提取标准化财务事实。

第四层:估值研究的是市场已经相信什么

好公司并不自动等于好价格。估值至少要同时观察相对估值、绝对估值和市场隐含预期。

相对估值

常见指标包括 P/E、EV/EBITDA、P/B、P/S 和自由现金流收益率。比较时必须保证:

  • 商业模式和资本结构相近;
  • 会计口径一致;
  • 盈利处于相似周期;
  • 没有把一次性利润当成持续利润。

亏损公司使用 P/E 没有意义;高资本开支行业只看 EBITDA,也可能忽略真实现金消耗。

现金流折现

企业价值可以写成:

EV=t=1TFCFFt(1+WACC)t+Terminal Value(1+WACC)T\text{EV} = \sum_{t=1}^{T} \frac{\text{FCFF}_t}{(1+\text{WACC})^t} + \frac{\text{Terminal Value}}{(1+\text{WACC})^T}

DCF 的价值不在于算出一个精确到小数点后的目标价,而在于暴露假设:收入增速、利润率、再投资需求、资本成本和永续增长率分别贡献了多少价值。

反向 DCF

与其先预测现金流再求价格,不如从当前价格反推市场隐含的增长和利润率:

当前估值要求公司未来五年保持怎样的收入增速和自由现金流率?

如果隐含假设已经接近产能、市场份额或利润率的物理上限,即使公司仍在增长,估值风险也可能很高。

第五层:价格还受到预期和仓位影响

基本面改善并不保证价格立即上涨。市场交易的是“实际结果相对于预期的差异”。

一个公司收入增长 30%,如果市场此前预期 40%,价格仍可能下跌。相反,利润下降但好于最悲观预期,也可能带来反弹。因此需要区分:

  • 基本面水平;
  • 基本面变化方向;
  • 市场此前的预期;
  • 资金仓位是否已经拥挤。

这一层的数据往往不如财报可靠。分析师一致预期、期权偏度、融资余额、基金持仓和成交结构都只能作为代理变量,不能把单一指标解释成完整的“聪明钱方向”。

情景分析:用变量代替故事

研究报告至少应该有乐观、基准和压力三种情景。每种情景都要改变真正的驱动变量,而不是简单给估值乘一个随意系数。

以 AI 算力产业链为例,可以这样组织:

变量 乐观情景 基准情景 压力情景
下游资本开支 维持高增速 增速正常回落 项目推迟
供给瓶颈 持续较久 逐步缓解 快速转为过剩
产品价格 保持稳定 温和下降 明显下跌
毛利率 高位稳定 向中枢回归 价格战压缩
估值 盈利消化估值 估值小幅收缩 盈利和估值同时下修

情景不是预测三个目标价,而是识别哪些变量最值得跟踪。当关键变量越过预设边界时,应更新结论,而不是修改故事来保护原结论。

用简单代码检查收益和风险

金融研究不一定需要复杂模型。一段基础代码已经能避免只看累计收益:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np
import pandas as pd


def risk_summary(price: pd.Series) -> dict:
price = price.dropna().sort_index()
returns = price.pct_change().dropna()

annual_return = (price.iloc[-1] / price.iloc[0]) ** (
252 / max(len(returns), 1)
) - 1
annual_volatility = returns.std() * np.sqrt(252)

drawdown = price / price.cummax() - 1
max_drawdown = drawdown.min()

return {
"annual_return": annual_return,
"annual_volatility": annual_volatility,
"max_drawdown": max_drawdown,
}

这里仍有许多假设:252 个交易日是否适用、收益是否独立同分布、数据是否包含复权、样本是否跨越完整周期。代码能统一口径,却不能替代对数据生成过程的理解。

给每条证据加上时间戳

我习惯为研究建立一张证据表:

字段 示例
指标 先进封装产能利用率
当前方向 上升 / 持平 / 下降
数据来源 公司公告或交易所问询回复
统计口径 月度、季度或累计值
发布日期 市场何时真正知道这条信息
支持的假设 供给瓶颈仍然存在
证伪阈值 交付周期连续两个季度缩短

“发布日期”必须单独记录。季度数据描述的是过去三个月,但市场只能在公告发布后使用它。回测如果把季度末日期当成可交易日期,就形成了前视偏差。

image

常见的研究陷阱

只收集支持自己的材料

建立仓位后,人会本能地降低反面证据的权重。解决办法是提前写下证伪条件,并主动寻找最强的反方解释。

用相关性代替因果关系

两个变量同步上升,可能只是共同受到第三个变量影响。至少要检查时间顺序、传导机制和其他可能解释。

忽略幸存者偏差

只研究今天仍在指数中的公司,会漏掉已经退市、被收购或经营失败的样本,历史表现因此被高估。

混用数据口径

单季度和累计值、自然年和财年、人民币和美元、名义值和实际值,都可能制造虚假增长。合并数据前必须保留单位、频率和口径。

把模型精度当成研究质量

复杂模型可以很好地拟合历史,却未必抓住稳定机制。金融数据非平稳、样本少且制度会变化,样本外稳定性通常比样本内拟合更重要。

一份研究最终应该留下什么

完整报告不一定很长,但应至少保留:

  1. 一句话研究问题;
  2. 三到五个核心驱动变量;
  3. 原始数据和口径说明;
  4. 关键假设及其敏感性;
  5. 乐观、基准和压力情景;
  6. 最可能推翻结论的证据;
  7. 下一次更新时间和需要跟踪的指标。

研究的目的不是显得信息很多,而是减少做决策时的模糊空间。宏观判断告诉我们环境,行业研究解释利润池,公司分析连接到现金流,估值揭示市场预期,风险管理则规定自己错了以后怎么办。

当这五层能够互相验证时,一份市场调研才从“资料汇总”变成真正可以使用、也可以被推翻的研究。

本文仅讨论金融市场研究方法,不构成证券、基金、数字资产或其他金融产品的投资建议。历史数据和示例不能保证未来结果。