跳到正文

研究指南

公司研究与估值

股票DCF估值怎么做:用自己核对的输入完成现金流计算

股票DCF应展示从已核对经营输入到年度现金流、企业价值和每股权益价值的完整路径。先决定估值的是哪一种现金流,再选择匹配折现率,保存观测输入来源,并将所有未来假设明确标记。计算器可以执行公式,却不能证明假设可信,数值输出完整也不表示财报和资本结构都已经查齐。

本文建立虚构公司三年显式预测及持续经营终值模型,采用外部提供并核对的输入,不假装自动取得完整财报。Python合成计算可以独立运行,不是CoTrading专用估值页面验证,也不是Vibe集成测试或市场目标价承诺。真实公司有其他资产、索取权和会计调整时,需要在短模型之外继续展开。

先选择现金流与折现率组合

本例使用企业自由现金流FCFF,并以假设的加权平均资本成本折现。Damodaran企业估值原始章节是这一组合的方法来源。如果改用股权自由现金流FCFE,折现率与融资处理都要改变;已经由FCFE得到的股权价值,不能再机械减一次净债务。

简化公式为FCFF = EBIT × (1 − 税率) + 折旧 − 资本开支 − 营运资金增加。金额统一为百万CNY,股本为百万普通股,所以权益价值除以股本后得到CNY每股。下文25%税率是建模假设,不是任何发行人的现行法定或实际税率。对真实公司的税损、递延与地区差异应另外核对。

Damodaran从盈利到现金流章节讨论税与再投资的转换;其中历史税率案例不作为当前税务规则引用。实际应用还应检查租赁、并购、研发资本化等调整,不能以简短公式代替完整经济分析。折旧加回也不意味着企业不再需要维护性资本投入。

建立来源与假设分开的输入表

从发行人披露或其他已经核实的材料取得合适财报、现金流明细、债务、现金和股本,保留期间、单位、币种、发布日期与原文位置。历史数标为观测,未来增长、利润率、再投资和折现率标为假设。一个预测出现在表格里,不能因此被改名为已验证事实。

本例输入紧凑,专门检查税后经营利润、折旧和再投资如何形成现金流,并把企业到股权的桥接单独验算。营运资金列表示增加额,正数需要减去;不要把营运资金期末余额直接作为当期现金流扣减。

预测年EBIT折旧资本开支营运资金增加FCFF
110058270.00
211059375.50
3120610383.00

折现率10%,持续增长2%,债务150,多余现金30,模型采用摊薄等价股本100百万股。为简化,不包含其他非经营资产或索取权;真实公司有少数股东权益、优先索取权或非经营投资时要扩展价值桥。如果现金流定义已经处理相关融资项目,也要检查是否出现重复调整。

逐年折现,再计算终值

样例假设每年现金流在年末取得,第t年除以(1 + wacc) ** t。第4年开始持续经营,因此第3年末终值为FCFF3 × (1 + g) / (wacc − g),再折现三年。不能折现四年,因为终值公式已经把第4年现金流资本化到第3年末这个边界。

flows = [D(ebit) * (1-D("0.25")) + D(da) - D(capex) - D(wc)
         for ebit, da, capex, wc in drivers]
pv = [flow / (1+wacc)**t for t, flow in enumerate(flows, 1)]
terminal = flows[-1] * (1+growth) / (wacc-growth)
terminal_pv = terminal / (1+wacc)**len(flows)
enterprise = sum(pv) + terminal_pv
equity = enterprise - D("150") + D("30")
per_share = equity / D("100")

完整标准库模型为docs/growth/research/round-5/examples/R545.py。实际输出三年FCFF为70.00、75.50、83.00;企业价值983.47;权益价值863.47;每股8.63。中间计算保留精度,只在展示时舍入。Python Decimal官方文档支持这里的数值表示,不证明财务输入本身正确。

下载完整示例。使用Python 3.12+,仅需标准库,全部为合成数据;下载后运行python R545.py。

检查时可以手算第一年:100乘75%得到75,加折旧5,减资本开支8和营运资金增加2,得到70。再用相同约定核对第二、三年。不要只看最终每股数,错一个负号可能被另一个输入抵消,让最后数字看似合理,年度桥却无法还原。

对账企业价值到每股权益价值

先检查企业价值等于显式现金流现值与终值现值之和,再减债务150、加多余现金30,净扣减120,得到模型权益863.47。百万货币除以100百万股,显示舍入后为每股8.63。如果股数误按普通股数量100处理而金额仍为百万,结果会发生量纲错误;所以单位必须写在输入表和价值桥旁。

桥接表应单列债务与现金,区分多余现金和经营必需现金,并记录资产负债表日期。若该日后融资或股本显著改变,要用证据更新,或说明时点不匹配。增加小数位无法修补过时资本结构。对于可转债、期权和其他稀释工具,还需避免股本扩大与债务扣减重复计入同一权利。

先看敏感性,再解释每股数字

本模型终值现值占企业价值80.84%,说明持续经营假设主导结果。这不自动证明模型错误,但意味着不能只给单个估值数字,必须审阅支撑终值的增长与再投资。最后一年如果处于异常高现金转换状态,直接永久延续可能过于乐观,应先正规化经营水平。

保持增长2%与经营输入不变,实际执行的折现率敏感性为:9%时每股10.06,10%时8.63,11%时7.53。脚本断言顺序与舍入值。一个百分点就引起明显变化,因此将8.63展示为8.6347并不增加经济精度,反而可能掩盖假设不确定性。

持续增长还需要相应再投资和资本回报支持。本简化模型没有独立建立长期投入资本回报率约束,不能把终值增长2%当成已经验证可持续。真实应用应核对终值现金流、增长与再投资之间的关系,再决定采用哪些情景。敏感性表检验假设影响,不等于给假设分配了发生概率。

缺输入或口径不兼容时停止

不同机制反例把USD债务与CNY经营现金流混用,样例明确阻断mixed_currency。即使FCFF公式完全正确,也不能直接减一笔未转换的外币索取权。需要另行设计带日期的汇率与转换假设,本模型没有提供这一层,不能靠数字看起来接近而放行。

其他断言分别拒绝持续增长等于折现率,以及股本为零。缺关键输入也应停止相关计算,不自动猜一个值凑齐表格。终值利差非正或经济上不合理时,需要回到假设审阅,而不是设置一个默认终值让程序继续打印结果。

交付输入证据表、年度计算、终值假设、价值桥、敏感性和未处理调整。新财报、融资变化或主动修改假设后重新计算,保留旧版本供对照。最终结果是一组可质疑、可重建的条件估值,不是精确目标价承诺;模型越透明,越容易发现真正需要继续研究的经营假设。

把模型打包给另一位研究者

给每个输入编号,并连接使用它的公式。资本开支更正后,应能找到受影响的年度FCFF、对应现值、必要时的终值假设,以及企业价值和每股输出。不能只改最终展示价格,留下年度表仍是旧数字。输入到输出的关系明确,才容易执行局部重算,并核对修订前后差额。

交付中将观测输入与情景假设分区。另一位研究者应能只换折现率而不改财务来源表,也能修正披露债务而不悄悄改变增长假设。新模型保留旧输出并标明版本原因,区分财报更正、资本结构更新和研究者主动调整假设。三者都可能影响每股值,但解释含义不同。

最后从保留表独立重算一年的现金流与企业到权益桥。结果一致,只说明选定输入上的操作一致;结果不一致则先找首个不同引用或公式,再修改投资解释。用另一段文字重复同一个最终数字不是独立核算,模型的可复查性来自输入、公式与中间值都能被重新建立。

模型表还要注明预测起点与估值日的关系。本文只用抽象第1、2、3年和年末折现,没有处理财年已经过去一部分的存根期。真实估值日在年中时,应明确剩余现金流和折现时间安排,不能把完整年度重复计入。选择年中折现也需要一致修改各年与终值时间,不应只调一行以得到更喜欢的每股数。

对账通过以后,仍应把不确定输入列成研究问题。例如资本开支能否支持假设增长、现金是否真的多余、债务是否包含所有重要索取权。问题来自模型依赖,可以据此安排查证顺序;它们比给结果统一附一句风险提示更能帮助下一位研究者继续工作。

常见问题

可以直接用经营现金流替代FCFF吗?

不能直接替换,要检查利息、再投资和会计定义,保持现金流与估值框架匹配。

算出来高于市场价就代表机会吗?

不能据此决定。还需检查假设、遗漏索取权与风险;本例只验证合成输入上的计算。

相关阅读