跳到正文

公司估值:DCF、倍数与内在价值

如何判断一家公司的真实价值?DCF和倍数是估计内在价值的两个主要框架——它们是一切股权投资的基石。

第 4 篇 · 共 30 篇 约 3 分钟

在购买股票之前,你想确认价格是否合理。估值是估计公司真实价值的一门学问。

核心思想:一家公司的价值等于其未来现金流的现值。

两种估值框架

1. 折现现金流(DCF): 预测未来现金流,折现到今天,然后加总。

2. 相对估值(倍数): 将公司的估值指标与类似公司或其自身历史均值进行比较。

两者各有优缺点。成熟的分析师会同时使用两者。

DCF:基础

一家公司价值等于其未来现金流的现值:

V0=∑t=1nCFt(1+r)t+Vn(1+r)nV_0 = \sum_{t=1}^{n} \frac{CF_t}{(1+r)^t} + \frac{V_n}{(1+r)^n}

其中:

  • CFtCF_t = 第tt年的自由现金流
  • rr = 折现率(WACC)
  • VnV_n = 第nn年的终值

自由现金流(FCF): 企业在支付所有运营费用及维持/增长所需投资后产生的现金。

FCF=营业收益×(1−税率)+折旧−资本支出−营运资本变动FCF = 营业收益 \times (1 - 税率) + 折旧 - 资本支出 - 营运资本变动

折现率:WACC

折现率应反映现金流的风险。对于上市公司,这通常是WACC(加权平均资本成本):

WACC=we×re+wd×rd×(1−t)WACC = w_e \times r_e + w_d \times r_d \times (1 - t)

其中:

  • wew_e = 资本结构中股权的比例
  • wdw_d = 债务的比例
  • rer_e = 股权成本(股东要求的回报率)
  • rdr_d = 债务成本
  • tt = 企业税率

股权成本通常用资本资产定价模型(CAPM)估计:

re=rf+β×(rm−rf)r_e = r_f + \beta \times (r_m - r_f)

其中β\beta衡量股票对市场变动的敏感性。

终值

DCF最难的部分是估计终值——超出你明确预测期的价值。两种常用方法:

1. 戈登增长模型(永续):

TVn=FCFn+1r−g=FCFn(1+g)r−gTV_n = \frac{FCF_{n+1}}{r - g} = \frac{FCF_n(1+g)}{r - g}

假设自由现金流以固定速率gg永远增长。

2. 退出倍数:

TVn=EBITDAn×EV/EBITDA 倍数TV_n = EBITDA_n \times \text{EV/EBITDA 倍数}

假设公司以行业典型EV/EBITDA倍数出售(如15倍EBITDA),由此得到企业终值,再折现回今天。不要把FCF与EV/EBITDA倍数相乘——这会把扣除资本支出后的股权现金流数字与企业价值倍数混合,从而给出错误的结果。

估值倍数

倍数比DCF更快、更直观——但它们是捷径,不是全貌。

市盈率(P/E):

P/E=股价每股收益P/E = \frac{股价}{每股收益}

低市盈率可能意味着股票便宜——也可能是市场预期盈利将下降。

企业价值/EBITDA(EV/EBITDA):

EV/EBITDA=企业价值EBITDAEV/EBITDA = \frac{企业价值}{EBITDA}

在比较不同资本结构(负债水平)的公司时优于市盈率。

市净率(P/B):

P/B=股价每股净资产P/B = \frac{股价}{每股净资产}

通常用于银行、保险和重资产企业。

Python实现DCF

import numpy as np
import pandas as pd

def dcf_valuation(fcf_forecast, terminal_growth, discount_rate, terminal_multiple=None,
                  forecast_years=5, ebitda_forecast=None):
    """
    Discounted Cash Flow valuation.

    Parameters
    ----------
    fcf_forecast : list of floats
        Free cash flow for each forecast year
    terminal_growth : float
        Terminal growth rate (g) used by the Gordon Growth branch
    discount_rate : float
        WACC (r)
    terminal_multiple : float, optional
        Exit EV/EBITDA multiple (only used if `ebitda_forecast` is supplied)
    forecast_years : int
        Number of explicit forecast years
    ebitda_forecast : list of floats, optional
        EBITDA for each forecast year; required when `terminal_multiple` is given.
        Terminal value is then `terminal_ebitda * terminal_multiple`.

    Returns
    -------
    pv_total : float
        Enterprise value
    """
    # PV of explicit forecast period
    pv_explicit = 0
    for t, fcf in enumerate(fcf_forecast, 1):
        pv_explicit += fcf / (1 + discount_rate) ** t

    # Terminal value
    if terminal_multiple is not None:
        if ebitda_forecast is None or len(ebitda_forecast) != len(fcf_forecast):
            raise ValueError(
                "An EBITDA forecast of the same length as `fcf_forecast` is "
                "required when using an EV/EBITDA exit multiple."
            )
        terminal_ebitda = ebitda_forecast[-1] * (1 + terminal_growth)
        terminal_value = terminal_ebitda * terminal_multiple
    else:
        # Gordon Growth Model: TV = FCF_{n+1} / (r - g)
        terminal_fcf = fcf_forecast[-1] * (1 + terminal_growth)
        terminal_value = terminal_fcf / (discount_rate - terminal_growth)

    # PV of terminal value
    pv_terminal = terminal_value / (1 + discount_rate) ** forecast_years

    return pv_explicit + pv_terminal


def pe_comparable(peer_pe_ratios, earnings):
    """
    Estimate stock value using P/E of comparable companies.
    """
    median_pe = np.median(peer_pe_ratios)
    return earnings * median_pe


def ev_ebitda_comparable(peer_ev_ebitda, ebitda):
    """
    Estimate enterprise value using EV/EBITDA of comparables.
    """
    median_multiple = np.median(peer_ev_ebitda)
    return ebitda * median_multiple

提示词

用 numpy 写一组公司估值工具函数:DCF(显式期折现 + 终值,支持 Gordon 增长和 EV/EBITDA 退出倍数两种终值),以及用 np.median 取中位数的 P/E 和 EV/EBITDA 可比公司估值。

关键假设决定价值

DCF对假设极其敏感:

  • 折现率: WACC变化1%可以将估值改变20-30%
  • 终值增长率: 即使0.5%也影响巨大(这就是永续公式对gg如此敏感的原因)
  • 预测期长度: 5年vs 10年会使结果显著不同

这就是为什么两位分析师用相同的公开信息可能得出截然不同的结论——他们做出了不同的假设。

核心要点

  • DCF:公司价值等于其未来现金流的现值
  • 自由现金流是衡量价值创造的黄金标准
  • 终值通常是DCF价值的最大组成部分
  • 倍数是依赖于可比公司选择的快速估计
  • 估值是艺术与科学的结合——所有模型都需要判断力

参考文献

  • Penman, Financial Statement Analysis and Security Valuation. McGraw-Hill, 2019. ISBN: 978-0-07-337966-3.
  • Damodaran, Investment Valuation. Wiley, 2012. ISBN: 978-1-118-13074-1.
  • Koller, Goedhart, Wessels, Valuation: Measuring and Managing the Value of Companies. Wiley, 2020. ISBN: 978-1-119-66845-5.