DCF 分析器
何時使用此技能
建立公司的折現現金流 (DCF) 估值。當使用者提供公司的 FCF 與 WACC、詢問公司內在價值、或詢問每股公平價值時使用。若公司為金融機構則不使用。
輸入
- FCFF(公司自由現金流)N 年 (N = len(FCFF))
- WACC(加權平均資金成本)或其所有組成部分 (權益成本、債務成本、稅率、E/V、D/V)
- 終端成長率 g
- 公司淨債務 NetDebt
- 流通股數 NShares
使用者可在訊息或 CSV 中提供資料;技能會根據合約將其組裝成 input.json。
步驟
- 驗證輸入值,考量其度量、數值與符號 (無負 CF,g < WACC)。
- 若所有輸入皆正確,轉換需要轉換的項目 (例如將百分比轉為小數:WACC、g、Ke、t...)。
- 若未提供 WACC(但有提供其組成部分),則計算它。
- 將輸入寫入暫存 JSON,透過 Bash 執行
scripts/dcf.py <路徑>, 從 stdout 解析 JSON。 - 建立 WACC 與 g 的敏感度表。
輸出
回傳一個表格,包含公司的企業價值、權益價值與每股公平價值,接著是敏感度表。表格下方,回傳結果的簡短評論。
邊界情況
- 若 g ≥ WACC,回傳警告並要求使用者提供有效值。
- 若敏感度表的某個儲存格中 g 大於 WACC,則該相對的 fv_share 將為 null。
- 若所有 FCF 皆為負數,回傳警告且不進行計算。
- 若有遺漏值,詢問使用者是否遺漏以及應使用哪些值代替。
- 計算過程中出現的任何其他錯誤必須回傳警告,說明問題所在。
合約
技能會寫入 input.json,作為 Python 腳本 scripts/dcf.py 的輸入。透過 Bash 執行:python scripts/dcf.py input.json。
INPUT 結構(鍵):
{
"FCFF": [float, ...],
"WACC": float | null,
"g": float,
"NetDebt": float,
"NShares": float,
"E_V": float | null,
"Ke": float | null,
"D_V": float | null,
"Kd": float | null,
"t": float | null,
"wacc_steps": [float, ...] | null,
"g_steps": [float, ...] | null
}
任何遺漏值使用 null。N 從 len(FCFF) 推導。若 WACC 為 null,則其組成部分(E_V, Ke, D_V, Kd, t)必須全部提供。
腳本會將 JSON 物件輸出至 stdout,技能會對其進行解析。
OUTPUT 結構(成功):
{
"ok": true, "error": null, "field": null,
"enterprise_value": float,
"equity_value": float,
"fair_value_per_share": float,
"sensitivity": [{"wacc": float, "g": float, "fv_share": float | null}, ...]
}
OUTPUT 結構(錯誤):
{"ok": false, "error": "<訊息>", "field": "<鍵>"}
參考資料
所有公式請參考 references/dcf_methodology.md。