简介:来自顶级投行高盛的估值培训中文版PPT,系统讲解股票估值原理、方法与实战应用,适合金融从业者、投行新人及投资研究学习者夯实估值基本功。课程依“原理—方法—应用”展开,既说明价值的多视角、现金流索取权与价值层次,也详细拆解DCF估值的现金流界定、计量与折现率三个环节;随后对比DDM、FCFF、FCFE、NAV等绝对估值法,以及PE、PB、EV/EBITDA等相对估值法,并给出匹配、富不可敌国、平均利润率回归等应用原则,帮助读者理解不同类型公司的适用估值路径。压缩包内含1个pptx演示文稿,大小约310KB,便于直接打开复习。已有86人学习/下载。从内容预览看,既有理论推导,也有计算公式与练习提示,能直观看到高盛内部培训的思路脉络;无论用于系统学习投资分析,还是求职面试前快速梳理估值框架,这份材料都能提供高信息密度的参考。
1. 一份估值培训 pptx 真正值钱的部分,通常藏在备注栏和边界条件里
拿到任何投行估值培训中文版 pptx,第一反应都是翻到 DCF 主表看结果。可实际翻过几份以后你会发现,十页里至少有五页数字是“为了排版好看”才留在页面上的,真正决定估值结论的,是备注里那句“管理层指引按 2024 年口径调整”或“净债务含少数股东权益”。这篇讲的是把估值培训资料当模型而不是当 PPT 读:先拆出估值页面的标准表达逻辑,再把 pptx 里的表格、备注栏和嵌入 Excel 挖出来逐项核对,最后用三个验证动作落成一张自己能复核的底稿。适合需要把估值讲义转成中文项目材料的人,也适合准备投行面试、想搞清楚终值为什么能占估值七成的人。
2. 高盛估值培训中文版的内容分层:DCF 骨架、WACC 参数与终值假设
投行估值培训不管封面怎么写,页面的推进逻辑都高度一致:先做三张报表预测,再算无杠杆自由现金流,然后单独开 WACC 参数页,接着用 DCF 汇总和敏感性分析收口。中文版讲义真正难的不是翻译名词,而是把不同年份、不同汇率口径的数字整齐地装进同一个逻辑框架。所以我一般会先按“模型该有的参数顺序”给 PPT 排页,而不是按页数顺序读。
2.1 从三张报表预测到自由现金流:培训资料的路径依赖
估值培训页面上最常出现的一句话是“先配平资产负债表”。这句话背后是一个常见的培训设计:预测利润表给出 EBIT,预测现金流量表给出营运资本变动,预测资产负债表倒挤出入账的融资缺口。这种路径依赖是有原因的,DCF 里最容易被高估的现金流,往往不是收入增速,而是“资本开支和折旧的差值”“营运资本占收入的百分比”这些从三张表联动中产生的细项。
中文版讲义里尤其要留意的是“资本开支”和“维护性资本开支”的翻译。很多页面把 CapEx 统一写成“资本性支出”,但模型里的维护性 CapEx 才和 DCF 占款相关,扩张性 CapEx 通常只在报表预测里出现。遇到这一类词,我建议在整理底稿时给它们单独加一列“口径备注”,而不是简单照抄到 Excel 里。
2.2 WACC 参数页的翻译与复核口径
WACC 页是估值培训里最像“参数说明书”的一页。标准公式是:
WACC = E / (E + D) × Ke + D / (E + D) × Kd × (1 - Tax Rate)
其中股权成本 Ke 依赖无风险利率、股权风险溢价和 Beta;债权成本 Kd 还要根据利息抵税换成税后口径。中文版最容易出错的不是公式本身,而是 Beta 的再杠杆处理。训练资料里通常会给“可比公司平均 Beta”和“目标资本结构”两组数,但不会每一步都写清楚用的到底是账面资产负债率还是市值资产负债率。
我习惯在整理 WACC 页时先把口径列成一张对照表,核对讲义上的每一项对应到 Excel 里的哪个单元格。
| 参数 | 讲义常见写法 | 译文陷阱 | 复核方式 |
|---|---|---|---|
| Beta Unlevered | 无杠杆 Beta / 剔杠杆 Beta | 是否剔除了现金影响 | 用可比公司中位数独立再算一次 |
| Beta Relevered | 再杠杆 Beta / 目标 Beta | 目标 D/E 是市值还是账面 | 用长期目标资本结构倒推 |
| 债权成本 | Kd 或“利息率×(1-税率)” | 是否扣过税 | 拆开成税前、税后两步 |
| 市场风险溢价 | ERP / 股权风险溢价 | 是否包含国家风险溢价 | 与页面来源年份比对 |
这四行不用做得很复杂,只要能保证培训材料里出现的 WACC 值可以被同一个口径复现,就算过了一关。真实投行实践里,WACC 差 1 个百分点,终值对总估值的贡献就可能差 15% 以上,所以这一步值得较真。
2.3 终值假设:单靠“永续增长率”就能把估值差拉出 20%
终值页在估值培训里通常只有一页,但它往往是整个 DCF 模型中价值占比最高的一行。永续增长法下:
TV = FCF_T × (1 + g) / (WACC - g)
退出倍数法下则是:
TV = Terminal EBITDA × Exit Multiple
中文讲义里常把 Terminal Value 译成“期末价值”或“残值”,这两个译法都容易让人低估它的重要性。训练页面上那个巨大的终值数字,本质上是由两个假设决定的:你给了它多少年自由现金流增长,以及退出倍数隐含的永续增长率是多少。接待面试场合,一个很好的追问是:“终值占企业价值比例超过 80% 时,前面十年预测还算不算数?”
我在实际对照中一般会用退出倍数法反推永续增长率,公式是退出倍数对应的隐含永续增长率再和页面上的假设做差。如果差值大于 0.5%,说明讲义中的 DCF 与可比公司估值之间有一处“内部打架”了。
2.4 用解包命令先验证:这份讲义是可复算模型,还是展示模型
无论页面上写了多少公式,第一步先把 pptx 当 zip 拆开看内容结构:
mkdir -p gs_valuation && cd gs_valuation unzip -o "./顶级投行培训资料-高盛估值培训珍贵中文版.pptx" -d pptx_material grep -R "<a:t>" pptx_material/ppt/slides --include="*.xml" -h | sed 's/<[^>]*>//g' | head -100这组命令做两件事:unzip把 pptx 解压成 XML 素材;grep把幻灯片里所有文本框内容提取到标准输出,head -100控制只预览前 100 行。如果看到的文字里没有公式和单元格引用,只有一段段结论性描述,那就说明这份讲义的“可操作性”重点在备注栏和嵌入对象里,不在页面上。
提示:不要在 XML 里看到几个隐藏文本框就直接当作模型逻辑,很多是幻灯片动画产生的重复元素。真正能复算的内容要看后续章节里讲的表格、备注和 OLE 嵌入对象。
3. 拆解 pptx 数据层:用 python-pptx 提取估值表格、文本框与备注
估值培训 pptx 的难点不在文件格式,而在内容载体太杂。同一个 DCF 表,可能一部分是文本框拼接出来的,一部分是真表格,还有一部分是从 Excel 截图放进来的图片。想把它整理成能复核的中文底稿,就得先把这些载体分清楚。
3.1 先按 shape 类型判断哪些页有“真数字”
python-pptx 对形状类型的枚举基本可以覆盖投行 PPT 里常见的几种载体:
| 形状类型 | 含义 | 估值内容里通常代表什么 |
|---|---|---|
| TEXT_BOX | 文本框 | 指标名称、说明文字、手工敲的数字 |
| TABLE | 原生表格 | 可复制的财务预测表、敏感性分析表 |
| PICTURE | 图片 | 常见的是 Excel 截图和模型截图,无法直接提取原值 |
| PLACEHOLDER | 占位符 | 标题、正文模板,偶尔有页脚口径 |
| GROUP | 组合形状 | 经常把“数字+文字”组合成自定义估值表 |
图片在这个场景里是最不值得花时间处理的。截图里的数字一旦放大不清晰,直接用它做核对基本没有意义。真正能提取出数字的只有原生表格、文本框和嵌入工作表。
3.2 用 python-pptx 把整份估值培训资料导出成可搜索文本
下面这段脚本可以直接提取所有幻灯片的文本框、原生表格和备注栏文本:
from pathlib import Path from pptx import Presentation from pptx.enum.shapes import MSO_SHAPE_TYPE src = Path("顶级投行培训资料-高盛估值培训珍贵中文版.pptx") prs = Presentation(str(src)) for slide_idx, slide in enumerate(prs.slides, start=1): print(f"=== Slide {slide_idx} ===") for shape in slide.shapes: shape_type = shape.shape_type if shape_type == MSO_SHAPE_TYPE.TABLE: table = shape.table for row in table.rows: cells = [cell.text.strip() for cell in row.cells] print("TABLE:", " | ".join(cells)) elif shape_type in ( MSO_SHAPE_TYPE.TEXT_BOX, MSO_SHAPE_TYPE.PLACEHOLDER, ): if shape.has_text_frame: text = shape.text_frame.text.replace("\n", " / ") if text.strip(): print("TEXT:", text) elif shape_type == MSO_SHAPE_TYPE.GROUP: # 组合形状里的子形状不会被 shape.text_frame 直接覆盖 for sub in shape.shapes: if sub.has_text_frame and sub.text_frame.text.strip(): print("GROUP_TEXT:", sub.text_frame.text.strip()) if slide.has_notes_slide: notes = slide.notes_slide.notes_text_frame.text.strip() if notes: print("NOTES:", notes[:500])脚本逻辑按形状类型分流:表格按行拼接,文本框和占位符直接输出文本,组合形状做一层递归取出内部文字,最后单独打印备注栏前 500 个字符。slide_idx从 1 开始,方便和 PDF 预览页码对照。
参数说明:cell.text.strip()是对每个单元格单独清洗,避免转义空格干扰最终比对;notes[:500]仅截取备注前 500 字,因为投行培训讲义备注栏经常贴了一整段取数说明,全量打印反而淹没有用的参数。若输出结果里中文出现乱码,先检查终端编码,不要一上来就怀疑库有问题。
3.3 把导出的文本与页面表格建立“口径索引”
导出文本只是第一步,真正的是把每页的数字映射到一个模型应有的参数名上。我在工作中会为每份估值培训建一个三字段对照表:中文讲义说法、英文对应项、底稿单元格。比如讲义写“营运资本变动占收入 2%”,英文对应是Change in NWC / Revenue,底稿里就填到DCF_FCF_NWC_RATE。
这种索引比逐页翻译效率高很多,因为后续一旦发现某个假设需要调,你只需要在索引表里改一条,就能知道哪几页需要同步更新。执行提取后,把输出保存为slides_text.tsv,再用 Excel 或脚本做 vlookup 即可。
4. 批注、OLE 和 XML:挖出估值培训页背后的可复算层级
很多中文版估值 pptx 表面上是一张张静态页面,实际上在文件内部埋着完整的 Excel 模型。对这些嵌入对象的识别,直接决定了这份讲义到底只是“能看”还是“能算”。
4.1 检查 ppt/embeddings 目录,判断是否带 Excel 原始模型
用解包命令查看嵌入文件:
ls -la pptx_material/ppt/embeddings/ cat pptx_material/ppt/slides/_rels/slide2.xml.rels第一条命令列出嵌入目录里是否存在.xlsx文件;第二条命令查看第 2 页的关联文件,里面Target="../embeddings/oleObject1.xlsx"这样的关系就表示该页嵌入了一个 Excel 对象。这里slide2.xml.rels里的slide2应对应实际页码,如果发现嵌入对象只在最后一页,大概率是模型截图而不是可编辑模型。
如果embeddings目录为空,这份培训资料的数字就需要用 Python 从 XML 层直接核对。常见做法是解压后用grep -R "<f>" pptx_material/ppt/embeddings查看嵌入 Excel 里是否保留公式,只有保留公式的对象才能做完整校验。
4.2 用 zipfile 提取嵌入工作簿并检查内部公式
import zipfile from pathlib import Path import re src = Path("顶级投行培训资料-高盛估值培训珍贵中文版.pptx") out = Path("pptx_unzip") with zipfile.ZipFile(src) as z: z.extractall(out) for name in z.namelist(): if "embeddings" in name and name.endswith(".xlsx"): target = out / "embedded" / Path(name).name target.parent.mkdir(parents=True, exist_ok=True) target.write_bytes(z.read(name)) print("saved:", target)这组操作先把 pptx 完整解包,再把所有嵌入的 xlsx 复制到pptx_unzip/embedded目录。参数上,z.extractall(out)会把整个 pptx 解开,方便后续查看ppt/slides下的 XML;name.endswith(".xlsx")是文件后缀过滤条件,有的旧资料可能嵌入.xls,需要把条件改为(".xls"),但要注意旧格式解出来的不是标准 XML,要用另外的工具。
提取成功后继续看工作簿的公式结构:
sheet = Path("pptx_unzip/embedded/xl/worksheets/sheet1.xml") xml_text = sheet.read_text(encoding="utf-8") for formula in re.findall(r"<f>([^<]+)</f>", xml_text)[:20]: print("FORMULA:", formula)这段代码只截取前 20 个公式,用来快速判断嵌入 Excel 是真模型还是只有数值输出。如果公式里大量出现VLOOKUP和OFFSET,说明至少有外部数据连接;如果只有=DCF!B12*C12这类前后页引用,说明模型结构是完整的,可以直接把讲义里的终值和它逐格对比。
4.3 用 XML 单元格引用定位“敏感性表”的输入输出
估值培训最常用的敏感区间是“企业价值 / 股权价值 / 每股价值”三行。要在嵌入 Excel 里定位这些数,需要同时看sheet1.xml里的单元格引用和值:
sheet = Path("pptx_unzip/embedded/xl/worksheets/sheet1.xml") xml_text = sheet.read_text(encoding="utf-8") for ref, value in re.findall(r'<c r="([A-Z]+\d+)"[^>]*>\s*(?:<f>.*?</f>)?\s*<v>([^<]+)</v>', xml_text): print(ref, value)正则里的ref是单元格坐标,value是计算后的缓存值。注意,<v>里的数字可能是文本型数字,也可能是从共享字符串表引用的序号,需要再用sharedStrings.xml一起解析。这样做的目的不是把整个 Excel 反推出来,而是只看结果区附近 10 行,够判断题目给出的“股权价值”和“每股价值”是不是同一个假设下的产出。
4.4 当嵌入工作表确实不存在时,用图片和批注做人工回填
没有嵌入 Excel 的培训资料并不代表不能复核,只是复核成本变高。此时我一般会先把页面上所有出现“约”“左右”“依据公司指引”这类词的地方标出来,再看对应页的批注。投行做材料的习惯是:不会轻易把计算过程贴到共享页面,但批注里会写“这个数来自 2023 年第四季度投资者日”这类来源信息。
这些来源信息对估值底稿的价值,有时比一个公式还大。因为年报和投资者日两个来源的收入预测口径往往不同,知道来源才能判断要不要对齐后调整。
5. 把估值培训讲义变成能重新运算的模型底稿:三步复核技巧
拿到整理完的中文版估值资料,先别急着读正文,按下面三个动作做一遍,能省掉绝大部分“看着合理但算不回去”的问题。
5.1 第一步,用 WACC ±0.5% 回推终值占比
给同一个 DCF 主表分别代入 WACC = 原值 - 0.5% 和 WACC = 原值 + 0.5%,记录两个结果。如果每股价值的变动幅度超过 5%,说明终值是这块估值的绝对主导项。这时要把讲义里的永续增长率单独拎出来,用(退出倍数 × Terminal EBITDA - 最后一年 FCF) / 最后一年 FCF反推隐含永续增长率,再和页面参数做差。差值小于 0.3% 是正常范围,大于 0.5% 就说明讲义中两处假设不是同一次计算的产物。
5.2 第二步,用可比公司区间校验中文译文里的倍数口径
培训资料里出现“XX 倍”的时候,必须确认分母是净利润、EBITDA 还是自由现金流。中文讲义常把“P/E”和“EV/EBITDA”混在同一个表格里,翻译成本特别低的“每股收益倍数”反而让口径更难辨认。我的办法是只用两个数字做校验:如果讲义同时给出 EV/EBITDA 和企业价值,那么企业价值 ÷ EBITDA必须落在可比公司表的中位数附近;如果差了超过 30%,优先怀疑是净 debt 或 minority interest 的口径问题。
5.3 第三步,全文搜“约”“预计”“一致预期”三个词
这一步最土但最有价值。把提取出来的文本里包含这三个词的句子全部列为待核实项,统一存成assumptions_review.md,每条后面跟两个字段:来源和是否进入当前模型。一个参数如果既没有年报来源也没有分析师一致预期,它在培训页面里的作用基本只是示意,不应该出现在最终底稿。把这三项写成一段简单的筛选脚本,放进每次培训材料的更新流程里,比在页面上反复打注释可靠得多。
本文还有配套的精品资源,点击获取