DCF 模型
在 Excel 中構建機構級質量的 DCF(現金流折現)估值模型——包括收入預測、自由現金流(FCF)構建、加權平均資本成本(WACC)、終值、悲觀/基準/樂觀情景以及 5x5 敏感性表。與 excel-author 技能配合使用。用於內在價值股票分析。
技能元數據
| 來源 | 可選 — 使用 hermes skills install official/finance/dcf-model 安裝 |
| 路徑 | optional-skills/finance/dcf-model |
| 版本 | 1.0.0 |
| 作者 | Anthropic(由 Nous Research 改編) |
| 許可證 | Apache-2.0 |
| 平臺 | linux, macos, windows |
| 標籤 | finance, valuation, dcf, excel, openpyxl, modeling, investment-banking |
| 相關技能 | excel-author, pptx-author, comps-analysis, lbo-model, 3-statement-model |
參考:完整 SKILL.md
以下是 Hermes 在觸發此技能時加載的完整技能定義。這是技能激活時代理所看到的指令。
環境
此技能假設使用 無頭模式 openpyxl —— 您將在磁盤上生成一個 .xlsx 文件。
遵循 excel-author 技能關於單元格著色、公式、命名範圍和敏感性表的約定。
交付前重新計算:python /path/to/excel-author/scripts/recalc.py ./out/model.xlsx。
DCF 模型構建器
概述
此技能遵循投資銀行標準,創建用於股票估值的機構級質量 DCF 模型。每次分析都會生成一個詳細的 Excel 模型(DCF 工作表底部包含敏感性分析)。
工具
- 默認使用用戶提供的所有信息以及可用於數據源的 MCP 服務器。
關鍵約束 - 請先閱讀這些內容
這些約束適用於所有 DCF 模型構建過程。開始前請審閱:
公式優於硬編碼(不可協商):
- 每個預測、利潤率、折現因子、現值 (PV) 和敏感性單元格 必須 是活動的 Excel 公式——絕不能是將 Python 中計算的值作為數字寫入
- 使用 openpyxl 時:
ws["D20"] = "=D19*(1+$B$8)"是正確的;ws["D20"] = calculated_revenue是 錯誤 的 - 唯一允許的硬編碼數字是:(1) 原始歷史輸入數據,(2) 假設驅動因素(增長率、WACC 輸入、終值增長率 g),(3) 當前市場數據(股價、債務餘額)
- 如果您發現自己在 Python 中計算某物並寫入結果—— 停止 。當用戶更改假設時,模型必須能夠靈活調整。
逐步與用戶驗證(不要端到端構建):
- 數據檢索後 → 向用戶展示原始輸入塊(收入、利潤率、股份數、淨債務)並在進行預測前確認
- 收入預測後 → 展示預測的收入頂線和增長率,在構建利潤率明細前確認
- FCF 構建後 → 展示完整的 FCF 時間表,在計算 WACC 前確認邏輯
- WACC 後 → 展示計算過程和輸入,在折現前確認
- 終值 + 現值後 → 展示股權價值橋接(企業價值 EV → 股權價值 → 每股價值),在敏感性表前確認
- 在每個階段捕捉錯誤——如果在構建敏感性表後發現錯誤的利潤率假設,意味著需要重建下游所有內容
敏感性表:
- 使用奇數行和列(標準:5×5,有時 7×7)——這保證有一個真正的中心單元格
- 中心單元格 = 基準情景。 構建軸值,使中間行標題和中間列標題完全等於模型的實際假設(例如,如果基準 WACC = 9.0%,則中間行為 9.0%;如果終值增長率 g = 3.0%,則中間列為 3.0%)。因此,中心單元格的輸出必須等於模型的實際隱含股價——這是驗證表格構建正確的健全性檢查。
- 高亮顯示中心單元格,使用中藍色填充 (
#BDD7EE) + 粗體字體,以便立即識別哪個單元格是基準情景。 - 用完整的 DCF 重計算公式填充 所有 單元格(通常 3 個表 × 25 個單元格 = 75 個)
- 使用 openpyxl 循環以編程方式寫入公式
- 無 佔位符文本, 無 線性近似, 無 需要的手動步驟
- 每個單元格必須針對該假設組合重新計算完整的 DCF
單元格批註:
- 在創建每個硬編碼值 時 添加單元格批註
- 格式:“來源:[系統/文檔], [日期], [參考], [URL 如果適用]”
- 每個藍色輸入在移至下一部分之前必須有批註
- 不要推遲到最後或寫“TODO: 添加來源”
模型佈局規劃:
- 在寫入任何公式 之前 定義 所有 部分的行位置
- 首先寫入 所有 標題和標籤
- 其次寫入 所有 部分分隔符和空行
- 然後 使用鎖定的行位置寫入公式
- 創建後立即測試公式
公式重算:
- 交付前運行
python recalc.py model.xlsx 30 - 修復所有錯誤,直到狀態為“success”
- 要求零公式錯誤(#REF!、#DIV/0!、#VALUE! 等)
情景模塊:
- 為悲觀/基準/樂觀情況創建獨立的模塊
- 在每個模塊內,橫向展示各預測年份的假設
- 使用 IF 公式:
=IF($B$6=1,[Bear cell],IF($B$6=2,[Base cell],[Bull cell])) - 驗證公式是否引用了正確的情景模塊單元格
DCF 流程工作流
第 1 步:數據檢索與驗證
從 MCP 服務器、用戶提供的數據和網絡獲取數據。
數據源優先級:
- MCP 服務器(如果已配置)- 來自 Daloopa 等提供商的結構化財務數據
- 用戶提供的數據 - 來自其研究的歷史財務數據
- 網絡搜索/抓取 - 必要時獲取當前價格、Beta 值、債務和現金
驗證清單:
- 驗證淨債務與淨現金(對估值至關重要)
- 確認稀釋後流通股數(檢查最近的回購/增發)
- 驗證歷史利潤率是否與商業模式一致
- 將收入增長率與行業基準進行交叉核對
- 驗證稅率是否合理(通常為 21-28%)
第 2 步:歷史分析(3-5 年)
分析並記錄:
- 收入增長趨勢:計算複合年均增長率 (CAGR),識別驅動因素
- 利潤率演變:追蹤毛利率、EBIT 利潤率、自由現金流 (FCF) 利潤率
- 資本密集度:折舊與攤銷 (D&A) 和資本支出 (CapEx) 佔收入的百分比
- 營運資本效率:淨營運資本 (NWC) 變化佔收入增長的百分比
- 回報指標:投入資本回報率 (ROIC)、淨資產收益率 (ROE) 趨勢
創建顯示以下內容的彙總表:
Historical Metrics (LTM):
Revenue: $X million
Revenue growth: X% CAGR
Gross margin: X%
EBIT margin: X%
D&A % of revenue: X%
CapEx % of revenue: X%
FCF margin: X%
第 3 步:構建收入預測
方法論:
- 從最新的實際收入開始(最近十二個月 LTM 或最近一個財年)
- 為每個預測年份應用增長率
- 同時顯示美元金額和計算出的增長百分比
增長率框架:
- 第 1-2 年:較高的增長率,反映近期可見性
- 第 3-4 年:逐漸緩和至行業平均水平
- 第 5 年及以後:接近永續增長率
公式結構:
- 收入(第 N 年) = 收入(第 N-1 年) × (1 + 增長率)
- 增長%(第 N 年) = 收入(第 N 年) / 收入(第 N-1 年) - 1
三種情景方法:
Bear Case: Conservative growth (e.g., 8-12%)
Base Case: Most likely scenario (e.g., 12-16%)
Bull Case: Optimistic growth (e.g., 16-20%)
第 4 步:運營費用建模
固定/可變成本分析:
運營費用應模擬現實的經營槓桿:
- 銷售與營銷 (S&M):通常佔收入的 15-40%,具體取決於商業模式
- 研發 (R&D):科技公司通常佔 10-30%
- 一般及行政 (G&A):通常佔收入的 8-15%,隨著公司規模擴大顯示出槓桿效應
關鍵原則:
- 所有百分比均基於收入,而非毛利
- 模擬經營槓桿:隨著收入規模擴大,百分比應下降
- 為 S&M、R&D、G&A 保持單獨的明細項目
- 計算 EBIT = 毛利 - 總運營費用
利潤率擴張框架:
Current State → Target State (Year 5)
Gross Margin: X% → Y% (justify based on scale, efficiency)
EBIT Margin: X% → Y% (result of revenue growth + opex leverage)
第 5 步:自由現金流計算
按正確順序構建 FCF:
EBIT
(-) Taxes (EBIT × Tax Rate)
= NOPAT (Net Operating Profit After Tax)
(+) D&A (non-cash expense, % of revenue)
(-) CapEx (% of revenue, typically 4-8%)
(-) Δ NWC (change in working capital)
= Unlevered Free Cash Flow
營運資本建模:
- 計算為收入變化量(delta revenue)的百分比
- 典型範圍:收入變化量的 -2% 到 +2%
- 負數 = 現金來源(營運資本釋放)
- 正數 = 現金使用(營運資本積累)
維護性資本支出與增長性資本支出:
- 維護性資本支出:維持當前運營(約佔收入的 2-3%)
- 增長性資本支出:支持擴張(額外佔收入的 2-5%)
- 總資本支出應與公司的增長戰略保持一致
第 6 步:資本成本 (WACC) 研究
用於股權成本的 CAPM 方法論:
Cost of Equity = Risk-Free Rate + Beta × Equity Risk Premium
Where:
- Risk-Free Rate = Current 10-Year Treasury Yield
- Beta = 5-year monthly stock beta vs market index
- Equity Risk Premium = 5.0-6.0% (market standard)
債務成本計算:
After-Tax Cost of Debt = Pre-Tax Cost of Debt × (1 - Tax Rate)
Determine Pre-Tax Cost of Debt from:
- Credit rating (if available)
- Current yield on company bonds
- Interest expense / Total Debt from financials
資本結構權重:
Market Value Equity = Current Stock Price × Shares Outstanding
Net Debt = Total Debt - Cash & Equivalents
Enterprise Value = Market Cap + Net Debt
Equity Weight = Market Cap / Enterprise Value
Debt Weight = Net Debt / Enterprise Value
WACC = (Cost of Equity × Equity Weight) + (After-Tax Cost of Debt × Debt Weight)
特殊情況:
- 淨現金頭寸:如果現金 > 債務,淨債務為負數
- 債務權重可能為負
- WACC 計算相應調整
- 無債務:WACC = 股權成本
典型 WACC 範圍:
- 大盤股、穩定型:7-9%
- 成長型公司:9-12%
- 高增長/高風險:12-15%
第 7 步:應用折現率(5-10 年預測)
年中慣例:
- 假設現金流發生在年中
- 折現期:0.5, 1.5, 2.5, 3.5, 4.5 等
- 折現因子 = 1 / (1 + WACC)^期數
現值計算:
For each projection year:
PV of FCF = Unlevered FCF × Discount Factor
Example (Year 1):
FCF = $1,000
WACC = 10%
Period = 0.5
Discount Factor = 1 / (1.10)^0.5 = 0.9535
PV = $1,000 × 0.9535 = $954
預測期選擇:
- 5 年:大多數分析的標準
- 7-10 年:具有更長增長跑道的高增長公司
- 3 年:成熟、穩定的企業
第 8 步:終值計算
永續增長法(首選):
Terminal FCF = Final Year FCF × (1 + Terminal Growth Rate)
Terminal Value = Terminal FCF / (WACC - Terminal Growth Rate)
Critical Constraint: Terminal Growth < WACC (otherwise infinite value)
永續增長率選擇:
- 保守:2.0-2.5%(GDP 增長率)
- 中性:2.5-3.5%
- 激進:3.5-5.0%(僅適用於市場領導者)
不要超過:無風險利率或長期 GDP 增長率
退出倍數法(替代方案):
Terminal Value = Final Year EBITDA × Exit Multiple
Where Exit Multiple comes from:
- Industry comparable trading multiples
- Precedent transaction multiples
- Typical range: 8-15x EBITDA
終值的現值:
PV of Terminal Value = Terminal Value / (1 + WACC)^Final Period
Where Final Period accounts for timing:
5-year model with mid-year convention: Period = 4.5
終值合理性檢查:
- 應占企業價值的 50-70%
- 如果 >75%,模型可能過度依賴終值假設
- 如果 <40%,檢查終值假設是否過於保守
第 9 步:企業價值到股權價值的橋樑
估值摘要結構:
(+) Sum of PV of Projected FCFs = $X million
(+) PV of Terminal Value = $Y million
= Enterprise Value = $Z million
(-) Net Debt [or + Net Cash if negative] = $A million
= Equity Value = $B million
÷ Diluted Shares Outstanding = C million shares
= Implied Price per Share = $XX.XX
Current Stock Price = $YY.YY
Implied Return = (Implied Price / Current Price) - 1 = XX%
關鍵調整項:
- 淨債務 = 總債務 - 現金及等價物
- 如果為正數:從企業價值(EV)中減去(降低股權價值)
- 如果為負數(淨現金):加到企業價值(EV)中(增加股權價值)
- 使用稀釋後股數:包括期權、限制性股票單位(RSU)、可轉換證券
- 其他調整項(如適用):
- 少數股東權益
- 養老金負債
- 經營租賃義務
估值輸出格式:
Valuation Component,Amount ($M)
PV Explicit FCFs,X.X
PV Terminal Value,Y.Y
Enterprise Value,Z.Z
(-) Net Debt,A.A
Equity Value,B.B
,,
Shares Outstanding (M),C.C
Implied Price per Share,$XX.XX
Current Share Price,$YY.YY
Implied Upside/(Downside),+XX%
第 10 步:敏感性分析
在 DCF 工作表的底部構建三個敏感性表,展示估值如何隨不同假設變化:
- WACC 與終值增長率 - 顯示企業價值對摺現率和永續增長率的敏感性
- 收入增長率與 EBIT 利潤率 - 顯示頂層收入增長和經營槓桿的影響
- Beta 係數與無風險利率 - 顯示對股權成本組成部分的敏感性
實施方法:這些是簡單的二維網格(不是 Excel 的“數據表”功能),每個單元格中包含公式。每個單元格必須包含針對該特定假設組合的完整 DCF 重新計算。有關使用 openpyxl 以編程方式填充所有 75 個單元格的詳細要求,請參閱關鍵約束部分。
<correct_patterns>
本節包含構建 DCF 模型時應遵循的所有正確模式。
情景塊選擇模式 - 請遵循此方法
假設按情景分別組織在不同的塊中:
關鍵結構 - 每個節標題佔三行:
BEAR CASE ASSUMPTIONS (section header, merge cells across)
Assumption,FY1,FY2,FY3,FY4,FY5
Revenue Growth (%),12%,10%,9%,8%,7%
EBIT Margin (%),45%,44%,43%,42%,41%
BASE CASE ASSUMPTIONS (section header, merge cells across)
Assumption,FY1,FY2,FY3,FY4,FY5
Revenue Growth (%),16%,14%,12%,10%,9%
EBIT Margin (%),48%,49%,50%,51%,52%
BULL CASE ASSUMPTIONS (section header, merge cells across)
Assumption,FY1,FY2,FY3,FY4,FY5
Revenue Growth (%),20%,18%,15%,13%,11%
EBIT Margin (%),50%,51%,52%,53%,54%
每個情景塊必須有一個列標題行,在節標題下方立即顯示預測年份(FY2025E、FY2026E 等)。如果沒有此行,用戶無法判斷哪個假設值對應哪一年。
如何引用假設 - 創建合併列:
- 案例選擇器單元格(例如 B6)包含 1=悲觀、2=基準或 3=樂觀
- 創建一個合併列,使用 INDEX 或 OFFSET 公式從正確的情景塊中提取數據
- 預測公式引用合併列(乾淨的單元格引用)
- 每個情景塊包含跨越預測年份的全套 DCF 假設
推薦的合併列模式(使用 INDEX):
=INDEX(B10:D10, 1, $B$6)
不要使用這種 - 分散在各處的 IF 語句:
=IF($B$6=1,[悲觀塊單元格],IF($B$6=2,[基準塊單元格],[樂觀塊單元格]))
合併列方法集中了邏輯,使模型更易於審計。
正確的收入預測模式
創建帶有 INDEX 公式的合併列,然後在預測中引用它:
步驟 1 - FY1 增長率的合併列:
=INDEX([悲觀 FY1 增長率]:[樂觀 FY1 增長率], 1, $B$6)
步驟 2 - 收入預測引用合併列:
第 1 年收入: =D29*(1+$E$10)
其中:
- D29 = 上一年收入
- $E$10 = FY1 增長率的合併列單元格(包含 INDEX 公式)
- $B$6 = 案例選擇器(1=悲觀,2=基準,3=樂觀)
這種方法比在每個預測公式中嵌入 IF 語句更簡潔,並且更容易審計正在使用的情景假設。
正確的 FCF 公式模式
使用帶有 INDEX 公式的合併列,然後在 FCF 計算中引用它們:
合併列方法:
Item,Formula,Reference
D&A,=E29*$E$21,$E$21 = consolidation column for D&A %
CapEx,=E29*$E$22,$E$22 = consolidation column for CapEx %
Δ NWC,=(E29-D29)*$E$23,$E$23 = consolidation column for NWC %
Unlevered FCF,=E57+E58-E60-E62,E57=NOPAT E58=D&A E60=CapEx E62=Δ NWC
每個合併列單元格都包含一個 INDEX 公式,根據案例選擇器從相應的情景塊中提取數據。這保持了預測公式的簡潔性和可審計性。
在編寫公式之前,確認情景塊的行位置並設置合併列。
正確的單元格註釋格式
每個硬編碼值都需要遵循此格式:
"來源: [系統/文檔], [日期], [參考], [URL 如適用]"
示例:
Item,Source Comment
Stock price,Source: Market data script 2025-10-12 Close price
Shares outstanding,Source: 10-K FY2024 Page 45 Note 12
Historical revenue,Source: 10-K FY2024 Page 32 Consolidated Statements
Beta,Source: Market data script 2025-10-12 5-year monthly beta
Consensus estimates,Source: Management guidance Q3 2024 earnings call
正確的假設表結構
關鍵:每個情景塊需要三個結構元素:
- 節標題行(合併單元格):例如,“悲觀情景假設”
- 列標題行顯示年份 - 這是必需的,請勿跳過
- 數據行包含假設值
結構:
BEAR CASE ASSUMPTIONS (section header - merge across columns A:G)
Assumption,FY1,FY2,FY3,FY4,FY5
Revenue Growth (%),X%,X%,X%,X%,X%
EBIT Margin (%),X%,X%,X%,X%,X%
Terminal Growth,X%,,,,
WACC,X%,,,,
BASE CASE ASSUMPTIONS (section header - merge across columns A:G)
Assumption,FY1,FY2,FY3,FY4,FY5
Revenue Growth (%),X%,X%,X%,X%,X%
EBIT Margin (%),X%,X%,X%,X%,X%
Terminal Growth,X%,,,,
WACC,X%,,,,
BULL CASE ASSUMPTIONS (section header - merge across columns A:G)
Assumption,FY1,FY2,FY3,FY4,FY5
Revenue Growth (%),X%,X%,X%,X%,X%
EBIT Margin (%),X%,X%,X%,X%,X%
Terminal Growth,X%,,,,
WACC,X%,,,,
如果沒有顯示預測年份(FY2025E、FY2026E 等)的列標題行,用戶無法判斷哪個假設值對應哪一年。此行是強制性的。
然後創建一個合併列(通常是右側的下一列),該列使用 INDEX 公式根據案例選擇器從選定的情景塊中提取數據。您的預測公式應引用此合併列。
正確的行規劃流程
1. 首先編寫所有標題和標籤:
Row,Content
1,[Company Name] DCF Model
2,Ticker | Date | Year End
4,Case Selector
7,KEY ASSUMPTIONS
26,Assumption headers
27-31,Growth assumptions
...,...
2. 編寫所有分隔符和空行
3. 然後使用鎖定的行位置編寫公式
4. 創建後立即測試公式
將其視為建築施工:
- 好做法:先澆築地基,再砌牆(結構穩定)
- 壞做法:先砌牆,再澆築地基(牆體倒塌)
Excel 版本:
- 好做法:先添加標題,再編寫公式(公式穩定)
- 壞做法:先編寫公式,再添加標題(公式出錯)
正確的敏感性表格實現
重要提示:這些不是 Excel 的“數據表”(Data Table)功能。這些是簡單的網格,你需要使用 openpyxl 編寫常規公式。是的,這意味著總共約有 75 個公式(3 個表格 × 每個表格 25 個單元格),但這很簡單且是必須的。
以編程方式使用公式填充:
每個敏感性表格必須完全填充公式,以便針對每種假設組合重新計算隱含股價。不要使用 Excel 的數據表功能(它需要人工干預,無法通過 openpyxl 自動化)。
實施方法 - 具體示例:
表格結構 — 5×5 網格(奇數維度,基準情況居中):
如果模型的基準 WACC = 9.0% 且基準永續增長率 = 3.0%,則圍繞這些值對稱構建座標軸:
WACC vs Terminal Growth, 2.0%, 2.5%, 3.0%, 3.5%, 4.0%
8.0%, [fml], [fml], [fml], [fml], [fml]
8.5%, [fml], [fml], [fml], [fml], [fml]
9.0%, [fml], [fml], [★ ], [fml], [fml] ← middle row = base WACC
9.5%, [fml], [fml], [fml], [fml], [fml]
10.0%, [fml], [fml], [fml], [fml], [fml]
↑
middle col = base terminal g
★ = 中心單元格。 其公式輸出必須等於模型的實際隱含股價(來自估值摘要)。對此單元格應用中藍色填充(#BDD7EE)和粗體字體,以便在視覺上錨定基準情況。
座標軸值規則: axis_values = [base - 2*step, base - step, base, base + step, base + 2*step] — 圍繞基準對稱,奇數計數保證存在中心。
公式模式 - 單元格 B88(WACC=8.0%,永續增長率=2.0%):
B88 中的公式應使用以下參數重新計算隱含價格:
- 來自行標題的 WACC:
$A88(8.0%) - 來自列標題的永續增長率:
B$87(2.0%)
推薦方法: 引用主 DCF 計算,但替換這些值。
示例公式結構:
=([使用 $A88 作為折現率的自由現金流現值總和] + [使用 B$87 作為增長率和 $A88 作為 WACC 的終值] - [淨債務]) / [股數]
關鍵 - 為 5x5 網格中的每個單元格編寫公式(每個表格 25 個單元格,共 75 個單元格)。 使用 openpyxl 在循環中以編程方式寫入這些公式。不要跳過此步驟或保留佔位符文本。
Python 實現模式:
# Pseudocode for populating sensitivity table
for row_idx, wacc_value in enumerate(wacc_range):
for col_idx, term_growth_value in enumerate(term_growth_range):
# Build formula that uses wacc_value and term_growth_value
formula = f"=<DCF recalc using {wacc_value} and {term_growth_value}>"
ws.cell(row=start_row+row_idx, column=start_col+col_idx).value = formula
敏感性表格必須在打開模型時立即生效,無需用戶執行任何手動步驟。
</correct_patterns>
<common_mistakes>
本節包含構建 DCF 模型時要避免的所有錯誤模式。
錯誤:簡化的敏感性表格近似值或佔位符文本
不要使用線性近似:
// WRONG - Linear approximation
B97: =B88*(1+(0.096-0.116)) // Assumes linear relationship
// WRONG - Division shortcut
B105: =B88/(1+(E48-0.07)) // Doesn't recalculate full DCF
不要保留佔位符文本:
// WRONG - Placeholder note
"Note: Use Excel Data Table feature (Data → What-If Analysis → Data Table) to populate sensitivity tables."
// WRONG - Empty cells
[leaving cells blank because "this is complex"]
不要混淆術語:
- ❌ “敏感性表格需要 Excel 的數據表功能”(不 - 那是我們無法使用的特定 Excel 工具)
- ✅ “敏感性表格是每個單元格中都包含公式的簡單網格”(是 - 這就是我們要構建的內容)
為什麼這些捷徑是錯誤的:
- 線性近似公式實際上並沒有重新計算 DCF - 它們只是應用簡單的數學調整
- 關係並非線性的,因此結果將不準確
- 佔位符文本需要用戶手動干預
- 交付時模型無法立即使用
- 不專業,未達到客戶交付標準
- 空單元格 = 未完成的交付物
要拒絕的常見合理化藉口: “編寫 75+ 個公式感覺很複雜,所以我會留個筆記讓用戶手動完成。”
現實情況: 當你在 Python 中使用 openpyxl 循環時,編寫 75 個公式非常簡單。每個公式都遵循相同的模式 - 只需替換行/列值。這是交付物中必需的一部分。
正確做法: 用針對該特定假設組合重新計算完整 DCF 的公式填充每個敏感性單元格
錯誤:缺少單元格註釋
不要這樣做:
- 創建所有硬編碼輸入時不加註釋
- 認為“我稍後再添加”
- 編寫“TODO: 添加來源”
- 留下沒有文檔說明的藍色輸入單元格
為什麼這是錯誤的:
- 無法驗證數據來源
- 不符合 xlsx 技能要求
- 未達到審計準備狀態
- 浪費後期修復的時間
正確做法: 在創建每個硬編碼值時添加單元格註釋
錯誤:公式行引用偏移
症狀:
FCF 部分引用了錯誤的假設行:
折舊與攤銷: =E29*$E$34 // 應該是 $E$21,但引用了錯誤的行
資本支出: =E29*$E$41 // 應該是 $E$22,但行偏移了
發生原因:
- 先編寫公式
- 然後插入標題
- 所有行引用發生偏移
- 現在公式指向錯誤的單元格 → #REF! 錯誤
正確做法: 先鎖定行佈局,然後編寫公式
錯誤:跨情景的每個假設僅佔單行
不要這樣構建假設:
Assumption,Bear,Base,Bull
Revenue Growth FY1,10%,13%,16%
Revenue Growth FY2,9%,12%,15%
這種垂直佈局使得難以查看每個情景中跨年份的進展。
為什麼這是錯誤的:
- 難以查看每個情景中假設隨年份的變化
- 難以在整個預測期內比較不同情景的假設
- 審查情景邏輯時直觀性較差
正確做法:
- 為每個情景(悲觀、基準、樂觀)創建單獨的塊
- 在每個塊內,水平展示跨越預測年份的假設
- 這使得每個情景的假設作為一個 cohesive 集合更易於審查
錯誤:無邊框
不要交付沒有邊框的模型:
- 無章節劃分
- 所有單元格混在一起
- 難以閱讀且不專業
為什麼這是錯誤的:
- 未達到客戶交付標準
- 難以導航
- 看起來不專業
正確做法: 在所有主要章節周圍添加邊框
錯誤:字體顏色錯誤或無字體顏色區分
不要這樣做:
- 所有文本均為黑色
- 僅使用填充顏色(無字體顏色變化)
- 混淆哪些單元格是藍色,哪些是黑色
為什麼這是錯誤的:
- 無法區分輸入值和公式
- 審計變得不可能
- 違反 xlsx 技能要求
正確做法: 所有硬編碼輸入使用藍色文本,所有公式使用黑色文本,工作表鏈接使用綠色
錯誤:基於毛利的運營費用
不要這樣做:
S&M: =E33*0.15 // E33 = 毛利(錯誤)
為什麼這是錯誤的:
- 運營費用應隨收入縮放,而非毛利
- 產生不現實的利潤率 progression
- 不符合企業的實際運營方式
正確做法:
S&M: =E29*0.15 // E29 = 收入(正確)
前 5 大錯誤總結
- 公式行引用偏移 → 在編寫公式之前定義所有行位置
- 缺少單元格註釋 → 在創建單元格時添加註釋,而不是最後才加
- 簡化的敏感性表格 → 用完整的 DCF 重算公式填充所有單元格,而非近似值
- 情景塊引用錯誤 → 確保 IF 公式從正確的悲觀/基準/樂觀塊中提取數據
- 無邊框 → 添加專業的章節邊框,以達到客戶交付標準的外觀
此外,請注意以下錯誤:
WACC 計算錯誤
- 在資本結構中混合賬面價值和市場價值
- 錯誤地使用權益貝塔而非資產貝塔/去槓桿貝塔
- 對債務成本應用錯誤的稅率
- 無風險利率不正確(必須使用當前的 10 年期國債收益率)
- 未能根據淨債務與淨現金頭寸進行調整
增長假設缺陷
- 永續增長率 > WACC(導致無限價值)
- 預測增長率與歷史表現不一致
- 忽視行業增長限制
- 收入增長與單位經濟效益不符
- 利潤率擴張缺乏運營依據
終值錯誤
- 使用錯誤的增長方法(永續增長法 vs 退出倍數法)
- 終值 > 企業價值的 80%(表明過度依賴)
- 終值利潤率與穩態假設不一致
- 終值的折現期錯誤
現金流預測錯誤
- 運營費用基於毛利而非收入
- 折舊與攤銷/資本支出百分比與商業模式不符
- 營運資本變動計算不當
- 各年間稅率不一致
- NOPAT(稅後淨營業利潤)計算錯誤
這些是最常見的錯誤。在開始構建任何 DCF 模型之前,請重新閱讀本節。
</common_mistakes>
Excel 文件創建
此技能使用 xlsx 技能進行所有電子表格操作。 xlsx 技能提供:
- 標準化的公式構建規則
- 數字格式約定
- 通過
recalc.py腳本自動重算公式 - 全面的錯誤檢查和驗證
此技能創建的所有 Excel 文件必須遵循 xlsx 技能要求,包括零公式錯誤和 proper 重算。
質量評分標準
每個 DCF 模型必須最大化以下方面:
- 基於歷史表現的現實收入和利潤率假設
- 使用適當 CAPM 方法的資本成本計算
- 顯示估值範圍的全面敏感性分析
- 有支持理由的清晰終值計算
- 支持情景分析的專業模型結構
- 所有關鍵假設的透明文檔記錄
輸入要求
最低必需輸入
- 公司標識符:股票代碼或公司名稱
- 增長假設:預測期的收入增長率(或“使用共識預期”)
- 可選參數:
- 預測期(默認:5 年)
- 情景案例(悲觀/基準/樂觀的增長和利潤率假設)
- 永續增長率(默認:2.5-3.0%)
- 如果不使用 CAPM,則提供特定的 WACC 輸入
Excel 模型結構
工作表架構
創建兩個工作表:
- DCF - 主估值模型,底部包含敏感性分析
- WACC - 資本成本計算
關鍵:敏感性表格位於 DCF 工作表的底部(而不是單獨的工作表)。這使所有估值輸出保持在一起。
公式重算(強制)
創建或修改 Excel 模型後,使用 excel-author 技能中的 recalc.py 腳本重算所有公式:
python recalc.py [path_to_excel_file] [timeout_seconds]
示例:
python recalc.py AAPL_DCF_Model_2025-10-12.xlsx 30
該腳本將:
- 使用 LibreOffice 重算所有工作表中的所有公式
- 掃描所有單元格以查找 Excel 錯誤(#REF!、#DIV/0!、#VALUE!、#NAME?、#NULL!、#NUM!、#N/A)
- 返回包含錯誤位置和數量的詳細 JSON
預期輸出格式:
{
"status": "success", // or "errors_found"
"total_errors": 0, // Total error count
"total_formulas": 42, // Number of formulas in file
"error_summary": {} // Only present if errors found
}
如果發現錯誤,輸出將包含詳細信息:
{
"status": "errors_found",
"total_errors": 2,
"total_formulas": 42,
"error_summary": {
"#REF!": {
"count": 2,
"locations": ["DCF!B25", "DCF!C25"]
}
}
}
在交付模型之前,修復所有錯誤並重新運行 recalc.py,直到狀態為“success”。
格式標準
重要:遵循 xlsx 技能中的公式構建規則和數字格式約定。DCF 技能添加了特定的視覺呈現標準。
配色方案 - 兩層結構:
第 1 層:字體顏色(xlsx 技能強制要求)
- 藍色文本 (RGB: 0,0,255):所有硬編碼輸入(股價、股數、歷史數據、假設)
- 黑色文本 (RGB: 0,0,0):所有公式和計算
- 綠色文本 (RGB: 0,128,0):指向其他工作表的鏈接(WACC 工作表引用)
第 2 層:填充顏色 — 專業藍/灰調色板(除非用戶另有指定,否則為默認值)
- 保持極簡 — 填充色僅使用藍色和灰色。不要引入綠色、黃色、橙色或多種強調色。顏色過多的模型看起來不專業。
- 默認填充調色板:
- 章節標題:深藍色 (RGB: 31,78,121 /
#1F4E79) 背景,配白色粗體文本 - 子標題/列標題:淺藍色 (RGB: 217,225,242 /
#D9E1F2) 背景,配黑色粗體文本 - 輸入單元格:淺灰色 (RGB: 242,242,242 /
#F2F2F2) 背景,配藍色字體 — 或者如果追求極致極簡,也可以使用白色背景配藍色字體 - 計算單元格:白色背景,配黑色字體
- 輸出/彙總行(每股價值、企業價值 EV 等):中藍色 (RGB: 189,215,238 /
#BDD7EE) 背景,配黑色粗體字體
- 章節標題:深藍色 (RGB: 31,78,121 /
- 僅此而已 — 3 種藍色 + 1 種灰色 + 白色。 抵制添加更多顏色的衝動。
- 用戶提供的模板或明確的顏色偏好始終覆蓋這些默認值。
兩層結構如何協同工作:
- 輸入單元格:藍色字體 + 淺灰色填充 = “硬編碼輸入”
- 公式單元格:黑色字體 + 白色背景 = “計算值”
- 工作表鏈接:綠色字體 + 白色背景 = “來自其他工作表的引用”
- 關鍵輸出:黑色粗體字體 + 中藍色填充 = “這是答案”
字體顏色告訴你它是什麼(輸入/公式/鏈接)。填充顏色告訴你你在哪裡(標題/數據/輸出)。
邊框標準(專業外觀必需)
主要部分周圍使用粗邊框 (1.5pt):
- KEY INPUTS(關鍵輸入)部分
- PROJECTION ASSUMPTIONS(預測假設)部分
- 5-YEAR CASH FLOW PROJECTION(5 年現金流預測)部分
- TERMINAL VALUE(終值)部分
- VALUATION SUMMARY(估值摘要)部分
- 每個 SENSITIVITY ANALYSIS(敏感性分析)表格
子部分之間使用中邊框 (1pt):
- Company Details(公司詳情)與 Historical Performance(歷史表現)之間
- Growth Assumptions(增長假設)與 EBIT Margin(EBIT 利潤率)與 FCF Parameters(自由現金流參數)之間
數據表周圍使用細邊框 (0.5pt):
- 情景假設表(Bear | Base | Bull | Selected)
- 歷史與預測財務數據矩陣
無邊框: 表格內的單個單元格(保持整潔,易於掃描)
邊框是強制性的 - 沒有專業邊框的模型不符合客戶交付標準。
數字格式(遵循 xlsx 技能標準):
- 年份:格式化為文本字符串(例如,“2024” 而不是 “2,024”)
- 百分比:
0.0%(一位小數) - 貨幣:百萬單位使用
$#,##0;每股單位使用$#,##0.00- 始終在標題中指定單位(“Revenue ($mm)”) - 零值:使用數字格式將所有零顯示為 “-”(例如,
$#,##0;($#,##0);-) - 大數字:
#,##0帶千位分隔符 - 負數:
(#,##0)用括號表示(不使用減號)
單元格註釋(所有硬編碼輸入強制要求):
根據 xlsx 技能,所有硬編碼值必須具有記錄來源的單元格註釋。格式:“Source: [系統/文檔], [日期], [參考], [URL 如果適用]”
關鍵:在創建單元格時立即添加註釋。不要推遲到最後。
DCF 工作表詳細結構
第 1 部分:標題
Row,Content
1,[Company Name] DCF Model
2,Ticker: [XXX] | Date: [Date] | Year End: [FYE]
3,Blank
4,Case Selector Cell (1=Bear 2=Base 3=Bull)
5,Case Name Display (formula: =IF([Selector]=1"Bear"IF([Selector]=2"Base""Bull")))
第 2 部分:市場數據(不區分大小寫)
Item,Value
Current Stock Price,$XX.XX
Shares Outstanding (M),XX.X
Market Cap ($M),[Formula]
Net Debt ($M),XXX [or Net Cash if negative]
第 3 部分:DCF 情景假設
為每個情景(悲觀、基準、樂觀)創建單獨的假設塊,其中包含 DCF 特定假設(收入增長率 %、EBIT 利潤率 %、稅率 %、折舊與攤銷佔收入 %、資本支出佔收入 %、淨營運資本變動佔收入變動 %、永續增長率、WACC),並在預測年份橫向排列。每個塊必須包括章節標題、顯示預測年份(FY1, FY2 等)的列標題行以及數據行。請參閱 <correct_patterns> 部分中的“Correct Assumption Table Structure”以獲取確切佈局。
第 4 部分:歷史與預測財務數據
引用一個整合列(例如,“Selected Case”),該列從情景塊中提取數據,而不是在每個預測行中使用分散的 IF 公式。
Income Statement ($M),2020A,2021A,2022A,2023A,2024E,2025E,2026E
Revenue,XXX,XXX,XXX,XXX,[=E29*(1+$E$10)],[=F29*(1+$E$11)],[=G29*(1+$E$12)]
% growth,XX%,XX%,XX%,XX%,[=E29/D29-1],[=F29/E29-1],[=G29/F29-1]
,,,,,,
Gross Profit,XXX,XXX,XXX,XXX,[=E29*E33],[=F29*F33],[=G29*G33]
% margin,XX%,XX%,XX%,XX%,[=E33/E29],[=F33/F29],[=G33/G29]
,,,,,,
Operating Expenses:,,,,,,,
S&M,XXX,XXX,XXX,XXX,[=E29*0.15],[=F29*0.14],[=G29*0.13]
R&D,XXX,XXX,XXX,XXX,[=E29*0.12],[=F29*0.11],[=G29*0.10]
G&A,XXX,XXX,XXX,XXX,[=E29*0.08],[=F29*0.07],[=G29*0.07]
Total OpEx,XXX,XXX,XXX,XXX,[=E36+E37+E38],[=F36+F37+F38],[=G36+G37+G38]
,,,,,,
EBIT,XXX,XXX,XXX,XXX,[=E33-E39],[=F33-F39],[=G33-G39]
% margin,XX%,XX%,XX%,XX%,[=E41/E29],[=F41/F29],[=G41/G29]
,,,,,,
Taxes,(XX),(XX),(XX),(XX),[=E41*$E$24],[=F41*$E$24],[=G41*$E$24]
Tax rate,XX%,XX%,XX%,XX%,[=E43/E41],[=F43/F41],[=G43/G41]
,,,,,,
NOPAT,XXX,XXX,XXX,XXX,[=E41-E43],[=F41-F43],[=G41-G43]
關鍵公式模式:
- 收入增長:
=E29*(1+$E$10),其中 $E$10 是第一年增長的整合列 - 非:
=E29*(1+IF($B$6=1,$B$10,IF($B$6=2,$C$10,$D$10)))
這種方法更簡潔,更易於審計,並通過集中情景邏輯防止公式錯誤。
第 5 部分:自由現金流構建
關鍵:驗證行引用指向正確的假設行。在創建後立即測試公式。
Cash Flow ($M),2020A,2021A,2022A,2023A,2024E,2025E,2026E
NOPAT,XXX,XXX,XXX,XXX,[=E45],[=F45],[=G45]
(+) D&A,XXX,XXX,XXX,XXX,[=E29*$E$21],[=F29*$E$21],[=G29*$E$21]
% of Rev,XX%,XX%,XX%,XX%,[=E58/E29],[=F58/F29],[=G58/G29]
(-) CapEx,(XX),(XX),(XX),(XX),[=E29*$E$22],[=F29*$E$22],[=G29*$E$22]
% of Rev,XX%,XX%,XX%,XX%,[=E60/E29],[=F60/F29],[=G60/G29]
(-) Δ NWC,(XX),(XX),(XX),(XX),[=(E29-D29)*$E$23],[=(F29-E29)*$E$23],[=(G29-F29)*$E$23]
% of Δ Rev,XX%,XX%,XX%,XX%,[=E62/(E29-D29)],[=F62/(F29-E29)],[=G62/(G29-F29)]
,,,,,,
Unlevered FCF,XXX,XXX,XXX,XXX,[=E57+E58-E60-E62],[=F57+F58-F60-F62],[=G57+G58-G60-G62]
行引用示例(基於佈局規劃):
- $E$21 = 折舊與攤銷 % 假設(整合列,第 21 行)
- $E$22 = 資本支出 % 假設(整合列,第 22 行)
- $E$23 = 淨營運資本 % 假設(整合列,第 23 行)
- E29 = 當年收入(第 29 行)
- E45 = 當年稅後淨營業利潤 NOPAT(第 45 行)
在編寫公式之前:確認這些行號與實際佈局匹配。先測試一列,然後複製到其他列。
第 6 部分:折現與估值
DCF Valuation,2024E,2025E,2026E,2027E,2028E,Terminal
Unlevered FCF ($M),XXX,XXX,XXX,XXX,XXX,
Period,0.5,1.5,2.5,3.5,4.5,
Discount Factor,0.XX,0.XX,0.XX,0.XX,0.XX,
PV of FCF ($M),XXX,XXX,XXX,XXX,XXX,
,,,,,,
Terminal FCF ($M),,,,,,,XXX
Terminal Value ($M),,,,,,,XXX
PV Terminal Value ($M),,,,,,,XXX
,,,,,,
Valuation Summary ($M),,,,,,
Sum of PV FCFs,XXX,,,,,
PV Terminal Value,XXX,,,,,
Enterprise Value,XXX,,,,,
(-) Net Debt,(XX),,,,,
Equity Value,XXX,,,,,
,,,,,,
Shares Outstanding (M),XX.X,,,,,
IMPLIED PRICE PER SHARE,$XX.XX,,,,,
Current Stock Price,$XX.XX,,,,,
Implied Upside/(Downside),XX%,,,,,
WACC 工作表結構
COST OF EQUITY CALCULATION,,
Risk-Free Rate (10Y Treasury),X.XX%,[Yellow input]
Beta (5Y monthly),X.XX,[Yellow input]
Equity Risk Premium,X.XX%,[Yellow input]
Cost of Equity,X.XX%,[Calculated blue]
,,
COST OF DEBT CALCULATION,,
Credit Rating,AA-,[Yellow input]
Pre-Tax Cost of Debt,X.XX%,[Yellow input]
Tax Rate,XX.X%,[Link to DCF sheet]
After-Tax Cost of Debt,X.XX%,[Calculated blue]
,,
CAPITAL STRUCTURE,,
Current Stock Price,$XX.XX,[Link to DCF]
Shares Outstanding (M),XX.X,[Link to DCF]
Market Capitalization ($M),"X,XXX",[Calculated]
,,
Total Debt ($M),XXX,[Yellow input]
Cash & Equivalents ($M),XXX,[Yellow input]
Net Debt ($M),XXX,[Calculated]
,,
Enterprise Value ($M),"X,XXX",[Calculated]
,,
WACC CALCULATION,Weight,Cost,Contribution
Equity,XX.X%,X.X%,X.XX%
Debt,XX.X%,X.X%,X.XX%
,,
WEIGHTED AVERAGE COST OF CAPITAL,X.XX%,[Green output]
關鍵 WACC 公式:
Market Cap = Price × Shares
Net Debt = Total Debt - Cash
Enterprise Value = Market Cap + Net Debt
Equity Weight = Market Cap / EV
Debt Weight = Net Debt / EV
WACC = (Cost of Equity × Equity Weight) + (After-tax Cost of Debt × Debt Weight)
敏感性分析(DCF 工作表底部)
術語提醒:“敏感性表格” = 簡單的二維網格,包含行標題、列標題以及每個數據單元格中的公式。不是 Excel 的“數據表”功能(數據 → 模擬分析 → 數據表)。你將使用 openpyxl 將常規 Excel 公式寫入每個單元格。
位置:DCF 工作表的第 87 行及以下(不是單獨的工作表)
三個垂直堆疊的敏感性表格:
- WACC vs 永續增長率(第 87-100 行)- 5x5 網格 = 25 個包含公式的單元格
- 收入增長率 vs EBIT 利潤率(第 102-115 行)- 5x5 網格 = 25 個包含公式的單元格
- Beta 係數 vs 無風險利率(第 117-130 行)- 5x5 網格 = 25 個包含公式的單元格
需編寫的公式總數:75(這是必需項,非可選項)
關鍵要求:所有敏感性表格單元格必須使用 openpyxl 以編程方式填充公式。不要使用線性近似捷徑。不要留下佔位符文本或關於手動步驟的說明。不要因為“太複雜”而合理化留空單元格的行為——使用 Python 循環來生成公式。
表格設置:
- 創建包含行/列標題(要測試的假設值)的表格結構
- 用公式填充每個數據單元格,該公式需:
- 使用行標題值(例如,WACC = 9.0%)
- 使用列標題值(例如,永續增長率 = 3.0%)
- 使用這些特定假設重新計算完整的 DCF
- 返回該情景下的隱含每股價格
- 交付時,所有單元格必須包含有效的公式
- 使用條件格式設置單元格格式:較高值為綠色漸變,較低值為紅色漸變
- 加粗基準情形單元格
- 表格之間保留 1-2 個空白行
無需人工干預——當用戶打開文件時,敏感性表格必須完全可用。
案例選擇器實現
三情景框架:
悲觀情形 (Bear Case)
- 保守的收入增長(歷史範圍的低端)
- 利潤率壓縮或無擴張
- 較高的 WACC(風險溢價增加)
- 較低的永續增長率
- 較高的資本支出 (CapEx) 假設
基準情形 (Base Case)
- 共識預期或管理層指引的收入增長
- 基於經營槓桿的適度利潤率擴張
- 當前市場隱含的 WACC
- 與 GDP 一致的永續增長(2.5-3.0%)
- 標準資本支出 (CapEx) 假設
樂觀情形 (Bull Case)
- 樂觀的收入增長(預測範圍的高端)
- 顯著的利潤率擴張
- 較低的 WACC(風險溢價降低)
- 較高的永續增長(3.5-5.0%)
- 降低的資本支出強度
公式實現:
不要在整個模型中分散使用嵌套的 IF 公式。相反,創建一個合併列,使用 INDEX 或 OFFSET 公式從相應的情景塊中提取數據。
推薦模式(使用 INDEX):
=INDEX(B10:D10, 1, $B$6),其中 B10:D10 = 悲觀/基準/樂觀值,1 = 行偏移量,$B$6 = 案例選擇器單元格(1、2 或 3)
然後在所有預測中引用合併列:
第 1 年收入: =D29*(1+$E$10),其中 $E$10 是第 1 年增長率的合併列值。
這種方法集中了情景邏輯,使模型更易於審計和維護。
交付物結構
文件命名:[Ticker]_DCF_Model_[Date].xlsx
兩個工作表:
- DCF - 完整模型,包含悲觀/基準/樂觀情景 + 底部的三個敏感性表格(WACC vs 永續增長率、收入增長率 vs EBIT 利潤率、Beta 係數 vs 無風險利率)
- WACC - 資本成本計算
關鍵功能:案例選擇器(1/2/3)、帶有 INDEX/OFFSET 公式的合併列、顏色編碼的單元格、所有輸入項的單元格批註、專業的邊框
最佳實踐
模型構建
- 增量構建:在完成每一部分後再進入下一部分
- 邊建邊測:輸入示例數字以驗證公式
- 使用一致的結構:相似的計算遵循相似的模式
- 註釋複雜公式:為不尋常的計算添加註釋
- 建立檢查機制:在適用的地方進行求和檢查和平衡檢查
文檔記錄
- 記錄所有假設:解釋關鍵輸入背後的理由
- 引用數據來源:註明每個數據點的來源
- 解釋方法論:描述任何非標準方法
- 標記不確定性:突出顯示可見性有限的領域
質量控制
- 交叉核對計算:以多種方式驗證數學計算
- 壓力測試假設:運行敏感性分析以確保模型穩健
- 同行評審:讓其他人檢查公式
- 版本控制:隨著工作進展保存版本
常見變體
高增長科技公司
- 更長的預測期(7-10 年)
- 較高的初始增長率(20-30%)
- 隨時間顯著擴張的利潤率
- 較高的 WACC(12-15%)
- 對單位經濟效益建模(用戶數、每用戶平均收入 ARPU 等)
成熟/穩定型公司
- 較短的預測期(3-5 年)
- 溫和的增長率(GDP +1-3%)
- 穩定的利潤率
- 較低的加權平均資本成本(WACC)(7-9%)
- 專注於現金流生成和資本配置
週期性公司
- 模擬整個經濟週期
- 將利潤率標準化為週期中值
- 考慮谷底和峰值情景
- 根據週期性調整 Beta 係數
多業務板塊公司
- 為每個業務單元分別構建貼現現金流(DCF)模型
- 不同板塊採用不同的增長率和利潤率
- 分部加總估值法(Sum-of-parts valuation)
- 考慮協同效應
故障排除
如果遇到錯誤或不合理的結果,請閱讀 TROUBLESHOOTING.md 以獲取詳細的調試指導。
工作流集成
在構建 DCF 模型開始時
-
收集市場數據:
- 檢查是否有可用的 MCP 服務器以獲取當前市場數據
- 使用網絡搜索/抓取功能獲取股價、Beta 係數和其他市場指標
- 如果需要特定數據,向用戶請求
-
收集歷史財務數據:
- 檢查是否有可用的 MCP 服務器(如 Daloopa 等)
- 如果無法通過 MCP 獲取,向用戶請求
- 如有必要,從 10-K 年報中手動提取
-
開始構建模型,使用本技能中詳述的 DCF 方法
在模型構建過程中
- 使用 openpyxl 構建 Excel 模型,包含公式(而非硬編碼值)
- 遵循 xlsx 技能約定進行公式構建和格式化
- 僅在用戶要求或提供特定品牌指南時應用填充顏色
在交付模型之前(強制)
-
驗證結構:
- 包含熊市/基準/牛市情景塊,以及跨越預測年份的假設
- 情景選擇器功能正常,公式引用正確的情景塊
- 敏感性表格位於 DCF 工作表底部(而非單獨的工作表)
- 字體顏色:藍色表示輸入值,黑色表示公式,綠色表示工作表鏈接
- 所有硬編碼輸入值均添加單元格註釋
- 主要部分周圍設有專業的邊框
-
重新計算公式:運行
python recalc.py model.xlsx 30 -
檢查輸出:
- 如果
status為"success"→ 繼續執行第 4 步 - 如果
status為"errors_found"→ 檢查error_summary並閱讀 TROUBLESHOOTING.md 以獲取調試指導
- 如果
-
修復錯誤並重新運行 recalc.py,直到狀態為 "success"
-
抽查公式:
- 測試一個自由現金流(FCF)公式——它是否引用了正確的假設行?
- 更改情景選擇器——合併列是否正確更新?
- 驗證收入公式是否引用合併列(而非嵌套的 IF 公式)
-
交付模型
可用數據源
- MCP 服務器:如果已配置(如用於歷史財務數據的 Daloopa)
- 網絡搜索/抓取:用於獲取當前股價、Beta 係數和市場數據
- 用戶提供的數據:歷史財務數據、共識預期
- 手動提取:作為後備方案,從 SEC EDGAR 文件中提取
最終輸出檢查清單
在交付 DCF 模型之前:
必需項:
- 運行
python recalc.py model.xlsx 30直到狀態為 "success"(零公式錯誤) - 兩個工作表:DCF(底部包含敏感性分析)、WACC
- 字體顏色:藍色=輸入值,黑色=公式,綠色=工作表鏈接
- 所有硬編碼輸入值均添加單元格註釋
- 敏感性表格完全由公式填充
- 主要部分周圍設有專業的邊框
驗證項:
- 運營費用(OpEx)基於收入(而非毛利潤)
- 終值佔企業價值(EV)的 50-70%
- 永續增長率 < WACC
- 稅率 21-28%
- 文件命名:
[Ticker]_DCF_Model_[Date].xlsx
數據源 — 優先使用 MCP,網絡作為後備
下文許多地方提到“使用 S&P Kensho MCP / Daloopa MCP / FactSet MCP”。這些是原始 Cowork 插件上下文中的商業金融數據 MCP。在 Hermes 中:
- 如果你配置了任何結構化金融數據 MCP(Hermes 支持 MCP — 參見
native-mcp技能),優先使用它來獲取時點可比公司數據、先例交易數據和 filings 數據。 - 否則,回退到:
- 針對 SEC EDGAR (
https://www.sec.gov/cgi-bin/browse-edgar) 使用web_search/web_extract獲取美國 filings 數據 - 公司投資者關係頁面獲取新聞稿、財報演示文稿
- 使用
browser_navigate訪問交互式數據門戶 - 用戶提供的數據(當上下文中沒有時,明確詢問用戶)
- 針對 SEC EDGAR (
- 切勿偽造。如果無法 sourced 倍數、先例或 filing 數字,將單元格標記為
[UNSOURCED]並向用戶展示。
歸屬
本技能改編自 Anthropic 的 Claude for Financial Services 插件套件(Apache-2.0)。已移除 Office-JS / Cowork 實時 Excel 路徑;此版本通過 excel-author 技能的約定面向無頭 openpyxl。原始來源:https://github.com/anthropics/financial-services