company-valuation

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Company Valuation

公司估值

Triangulates intrinsic value via three methods, then blends them to an implied share price:
  1. DCF — 5-year FCFF projection, discount at WACC, terminal value.
  2. Relative — apply peer median P/E, EV/Revenue, EV/EBITDA.
  3. SOTP — when 2+ distinct reporting segments exist, value each at pure-play peer multiples.
Always present a WACC × terminal-growth sensitivity table and Bull/Base/Bear scenarios.
Disclaimer: Research/educational output. Not financial advice.

通过三种方法交叉验证内在价值,再综合得出隐含股价:
  1. DCF —— 5年FCFF(自由现金流)预测,以WACC折现,计算终值。
  2. 相对估值 —— 应用可比公司中位数P/E、EV/收入、EV/EBITDA倍数。
  3. SOTP —— 当公司存在2个及以上独立报告分部时,使用纯业务可比公司倍数为每个分部估值。
始终呈现WACC × 终值增长率敏感性分析表,以及乐观/基准/悲观场景。
免责声明:本内容为研究/教育用途,不构成财务建议。

Step 1: Detection Flow

步骤1:检测流程

Detect data source and runtime deps. The skill supports 3 method paths — pick the richest one available.
Environment status:
!`python3 -c "import yfinance, numpy, pandas; print('YFIN_OK')" 2>/dev/null || echo "YFIN_MISSING"`
!`(command -v funda && funda --version) 2>/dev/null || echo "FUNDA_CLI_MISSING"`
!`python3 -c "import yfinance as yf; t=yf.Ticker('^TNX'); p=t.fast_info.last_price; print(f'RF_10Y={p/100:.4f}')" 2>/dev/null || echo "RF_FETCH_FAIL"`
Decision tree:
ConditionMethod path
YFIN_OK
Path A (primary): yfinance for financials + peer multiples
YFIN_MISSING
but
FUNDA_CLI_MISSING
is not set
Path B: delegate to
finance-data-providers:funda-data
skill for fundamentals
Both missingPath C: pip-install yfinance, then Path A.
python3 -m pip install -q yfinance numpy pandas
RF_FETCH_FAIL
Use default
rf = 0.045
and note stale risk-free rate in output
If
RF_10Y=
printed, use that value as
rf
in Step 4d instead of the hardcoded 4.5%.

检测数据源和运行依赖。本技能支持3种方法路径——选择可用的最丰富路径。
环境状态
!`python3 -c "import yfinance, numpy, pandas; print('YFIN_OK')" 2>/dev/null || echo "YFIN_MISSING"`
!`(command -v funda && funda --version) 2>/dev/null || echo "FUNDA_CLI_MISSING"`
!`python3 -c "import yfinance as yf; t=yf.Ticker('^TNX'); p=t.fast_info.last_price; print(f'RF_10Y={p/100:.4f}')" 2>/dev/null || echo "RF_FETCH_FAIL"`
决策树
条件方法路径
YFIN_OK
路径A(首选):使用yfinance获取财务数据和可比公司倍数
YFIN_MISSING
FUNDA_CLI_MISSING
未设置
路径B:委托
finance-data-providers:funda-data
技能获取基本面数据
两者均缺失路径C:pip安装yfinance,然后使用路径A。
python3 -m pip install -q yfinance numpy pandas
RF_FETCH_FAIL
使用默认值
rf = 0.045
,并在输出中注明无风险利率可能过时
如果输出
RF_10Y=
,则在步骤4d中使用该值作为
rf
,而非硬编码的4.5%。

Step 2: Choose Methods & Set Defaults

步骤2:选择方法与设置默认值

Method applicability

方法适用性

Company typeDCFRelativeSOTPFallback
Mature cash-flow (CPG, telecom, utilities)✅ primary
High-growth SaaS / software✅ with care✅ primaryUse EV/Revenue + Rule of 40
Multi-segment conglomerate✅ primarySee
references/sotp.md
Banks / insurance✅ (P/B, P/TBV)DDM or excess return; note in output
Pre-revenueEV/Revenue onlyFlag low confidence
REITs✅ (P/FFO, P/AFFO)NAV-based
Cyclicals (energy, semis, industrials)✅ on mid-cyclesometimesNormalize through-cycle
公司类型DCF相对估值SOTP备选方案
成熟现金流型(消费品、电信、公用事业)✅ 首选
高增长SaaS/软件✅ 谨慎使用✅ 首选使用EV/收入 + 40法则
多分部企业集团✅ 首选参见
references/sotp.md
银行/保险✅(P/B、P/TBV)股息贴现模型(DDM)或超额收益法;在输出中注明
未盈利仅使用EV/收入标记低置信度
房地产投资信托(REITs)✅(P/FFO、P/AFFO)基于资产净值(NAV)
周期性行业(能源、半导体、工业)✅ 基于周期中期有时适用跨周期标准化

Defaults table

默认参数表

Every parameter below MUST have a value before moving to Step 3. Use these unless the user overrides.
ParameterDefaultRationale
Projection horizon5 yearsStandard explicit forecast window
Terminal growth
g
2.5%~ long-run US GDP
Risk-free rate
rf
Live 10Y UST from Step 1, else 4.5%Current cost of capital anchor
Equity risk premium
erp
5.5%Damodaran mid-range
Beta
info['beta']
from yfinance
Market-observed levered beta
Cost of debt
kd
interest_expense / total_debt
, else 5.5%
Effective rate; fallback to IG spread
Tax rate3-yr median effective rate, floored 15%, capped 30%Strips out one-offs
Margin assumptions3-yr median of each ratioSmooths cyclical noise
SBC treatmentCash for software/SaaS; non-cash for industrials/CPGIndustry convention
Peer count4-6Balances signal vs noise
Peer multipleMedian (not mean)Robust to outliers
Method weights (no SOTP)DCF 50% / Relative 50%Equal triangulation
Method weights (with SOTP)DCF 40% / Relative 30% / SOTP 30%SOTP gets weight when applicable
Sensitivity gridWACC ±1% in 0.5% steps × g from 1.5-3.5% in 0.5%5×5 matrix
See
references/wacc_erp_rates.md
for current risk-free rates, ERP tables, and sector WACC benchmarks.

以下每个参数在进入步骤3前必须有值。除非用户覆盖,否则使用以下默认值。
参数默认值依据
预测期限5年标准明确预测窗口
终值增长率
g
2.5%~美国长期GDP增长率
无风险利率
rf
步骤1获取的实时10年期美国国债收益率,否则为4.5%当前资本成本锚点
股权风险溢价
erp
5.5%Damodaran中位数区间
Beta值yfinance的
info['beta']
市场观测的杠杆Beta
债务成本
kd
利息支出 / 总债务
,否则为5.5%
有效利率;备选为投资级利差
税率3年中位数有效税率,下限15%,上限30%剔除一次性因素
利润率假设各比率的3年中位数平滑周期性波动
股权激励(SBC)处理软件/SaaS视为现金支出;工业/消费品视为非现金支出行业惯例
可比公司数量4-6家平衡信号与噪音
可比公司倍数中位数(而非均值)对异常值更稳健
方法权重(无SOTP)DCF 50% / 相对估值 50%均等交叉验证
方法权重(含SOTP)DCF 40% / 相对估值 30% / SOTP 30%适用时给予SOTP相应权重
敏感性分析网格WACC ±1%,步长0.5% × 增长率1.5-3.5%,步长0.5%5×5矩阵
参见
references/wacc_erp_rates.md
获取当前无风险利率、ERP表格及行业WACC基准。

Step 3: Pull Data

步骤3:拉取数据

python
import yfinance as yf
import numpy as np
import pandas as pd

TICKER = "AAPL"  # replace
t = yf.Ticker(TICKER)

info       = t.info
income_a   = t.income_stmt
cashflow_a = t.cashflow
balance_a  = t.balance_sheet
income_q   = t.quarterly_income_stmt
cashflow_q = t.quarterly_cashflow

earnings_est = t.earnings_estimate
revenue_est  = t.revenue_estimate

price       = info.get("currentPrice") or info.get("regularMarketPrice")
market_cap  = info.get("marketCap")
shares_out  = info.get("sharesOutstanding")
total_debt  = info.get("totalDebt") or 0
cash        = info.get("totalCash") or 0
beta        = info.get("beta") or 1.0
sector      = info.get("sector")
industry    = info.get("industry")
Key financial statement rows (yfinance labels):
NeedRow
Revenue
Total Revenue
EBIT
Operating Income
Net income
Net Income
D&A
Depreciation And Amortization
(in cashflow)
CapEx
Capital Expenditure
(negative)
ΔNWC
Change In Working Capital
(cashflow)
SBC
Stock Based Compensation
(cashflow)

python
import yfinance as yf
import numpy as np
import pandas as pd

TICKER = "AAPL"  # 替换为目标股票代码
t = yf.Ticker(TICKER)

info       = t.info
income_a   = t.income_stmt
cashflow_a = t.cashflow
balance_a  = t.balance_sheet
income_q   = t.quarterly_income_stmt
cashflow_q = t.quarterly_cashflow

earnings_est = t.earnings_estimate
revenue_est  = t.revenue_estimate

price       = info.get("currentPrice") or info.get("regularMarketPrice")
market_cap  = info.get("marketCap")
shares_out  = info.get("sharesOutstanding")
total_debt  = info.get("totalDebt") or 0
cash        = info.get("totalCash") or 0
beta        = info.get("beta") or 1.0
sector      = info.get("sector")
industry    = info.get("industry")
关键财务报表行(yfinance标签):
需求行标签
收入
Total Revenue
EBIT(息税前利润)
Operating Income
净利润
Net Income
折旧与摊销
Depreciation And Amortization
(现金流表)
资本支出
Capital Expenditure
(负值)
营运资金变化
Change In Working Capital
(现金流表)
股权激励
Stock Based Compensation
(现金流表)

Step 4: DCF Build

步骤4:构建DCF模型

Full methodology + industry-specific tweaks in
references/dcf.md
. Quick skeleton:
python
undefined
完整方法论及行业特定调整参见
references/dcf.md
。快速框架:
python
undefined

4a. Revenue growth path — fade from Y1 (consensus or hist CAGR) to terminal g

4a. 收入增长路径 —— 从第1年(一致预期或历史CAGR)逐步衰减至终值增长率g

hist_cagr = (rev[-1] / rev[0]) ** (1 / (len(rev)-1)) - 1 y1 = float(revenue_est.loc["+1y", "growth"]) if "+1y" in revenue_est.index else hist_cagr g_terminal = 0.025 growth_path = np.linspace(y1, g_terminal + 0.01, 5)
hist_cagr = (rev[-1] / rev[0]) ** (1 / (len(rev)-1)) - 1 y1 = float(revenue_est.loc["+1y", "growth"]) if "+1y" in revenue_est.index else hist_cagr g_terminal = 0.025 growth_path = np.linspace(y1, g_terminal + 0.01, 5)

4b. Margins — 3y median

4b. 利润率 —— 3年中位数

ebit_margin = float((income_a.loc["Operating Income"] / income_a.loc["Total Revenue"]).iloc[:3].median()) da_pct = float((cashflow_a.loc["Depreciation And Amortization"] / income_a.loc["Total Revenue"]).iloc[:3].median()) capex_pct = float((cashflow_a.loc["Capital Expenditure"].abs() / income_a.loc["Total Revenue"]).iloc[:3].median()) nwc_pct = float((cashflow_a.loc["Change In Working Capital"].abs() / income_a.loc["Total Revenue"]).iloc[:3].median()) tax_rate = max(0.15, min(0.30, 0.21)) # use effective if available
ebit_margin = float((income_a.loc["Operating Income"] / income_a.loc["Total Revenue"]).iloc[:3].median()) da_pct = float((cashflow_a.loc["Depreciation And Amortization"] / income_a.loc["Total Revenue"]).iloc[:3].median()) capex_pct = float((cashflow_a.loc["Capital Expenditure"].abs() / income_a.loc["Total Revenue"]).iloc[:3].median()) nwc_pct = float((cashflow_a.loc["Change In Working Capital"].abs() / income_a.loc["Total Revenue"]).iloc[:3].median()) tax_rate = max(0.15, min(0.30, 0.21)) # 如有可用则使用有效税率

4c. FCFF per year

4c. 每年FCFF

rev_t = [float(income_a.loc["Total Revenue"].iloc[0])] fcff = [] for g in growth_path: rev_t.append(rev_t[-1] * (1 + g)) ebit = rev_t[-1] * ebit_margin nopat = ebit * (1 - tax_rate) fcff.append(nopat + rev_t[-1]*da_pct - rev_t[-1]*capex_pct - rev_t[-1]*nwc_pct)
rev_t = [float(income_a.loc["Total Revenue"].iloc[0])] fcff = [] for g in growth_path: rev_t.append(rev_t[-1] * (1 + g)) ebit = rev_t[-1] * ebit_margin nopat = ebit * (1 - tax_rate) fcff.append(nopat + rev_t[-1]*da_pct - rev_t[-1]*capex_pct - rev_t[-1]*nwc_pct)

4d. WACC

4d. WACC计算

rf, erp, kd = 0.045, 0.055, 0.055 # override rf with live value from Step 1 ke = rf + beta * erp e_v = market_cap / (market_cap + total_debt) d_v = 1 - e_v wacc = e_vke + d_vkd*(1 - tax_rate)
rf, erp, kd = 0.045, 0.055, 0.055 # 使用步骤1的实时值覆盖rf ke = rf + beta * erp e_v = market_cap / (market_cap + total_debt) d_v = 1 - e_v wacc = e_vke + d_vkd*(1 - tax_rate)

4e. Terminal value — compute both, use midpoint

4e. 终值 —— 计算两种方法,取中间值

tv_gordon = fcff[-1] * (1 + g_terminal) / (wacc - g_terminal) tv_exit = (rev_t[-1] * ebit_margin + rev_t[-1] * da_pct) * 15 # peer median EV/EBITDA tv_base = 0.5 * (tv_gordon + tv_exit)
tv_gordon = fcff[-1] * (1 + g_terminal) / (wacc - g_terminal) tv_exit = (rev_t[-1] * ebit_margin + rev_t[-1] * da_pct) * 15 # 可比公司中位数EV/EBITDA tv_base = 0.5 * (tv_gordon + tv_exit)

4f. Bridge to equity

4f. 从企业价值到股权价值的转换

pv_fcff = sum(f / (1+wacc)**(i+1) for i, f in enumerate(fcff)) pv_tv = tv_base / (1+wacc)**5 ev = pv_fcff + pv_tv equity = ev + cash - total_debt implied_price_dcf = equity / shares_out

**Gates:** (a) if `wacc <= g_terminal` → stop, g too aggressive; (b) if `pv_tv / ev > 0.85` or `< 0.45` → flag and show both TV methods; (c) if `wacc` is outside the sector sanity band in `references/wacc_erp_rates.md` → note.

---
pv_fcff = sum(f / (1+wacc)**(i+1) for i, f in enumerate(fcff)) pv_tv = tv_base / (1+wacc)**5 ev = pv_fcff + pv_tv equity = ev + cash - total_debt implied_price_dcf = equity / shares_out

**校验规则**:(a) 如果`wacc <= g_terminal` → 终止,增长率过于激进;(b) 如果`pv_tv / ev > 0.85`或`< 0.45` → 标记并展示两种终值计算方法;(c) 如果`wacc`超出`references/wacc_erp_rates.md`中的行业合理区间 → 注明。

---

Step 5: Relative Valuation

步骤5:相对估值

Select 4-6 peers. Peer map and adjustment rules in
references/relative_valuation.md
.
python
PEERS = ["MSFT", "ORCL", "CRM", "NOW", "SAP", "WDAY"]  # pick by industry
multiples = {}
for p in PEERS:
    pi = yf.Ticker(p).info
    multiples[p] = {
        "pe_fwd": pi.get("forwardPE"),
        "ev_rev": pi.get("enterpriseToRevenue"),
        "ev_ebitda": pi.get("enterpriseToEbitda"),
        "ps": pi.get("priceToSalesTrailing12Months"),
    }
med_pe     = np.nanmedian([v["pe_fwd"] for v in multiples.values()])
med_ev_rev = np.nanmedian([v["ev_rev"] for v in multiples.values()])
med_ev_eb  = np.nanmedian([v["ev_ebitda"] for v in multiples.values()])

eps_ttm    = float(income_q.loc["Diluted EPS"].iloc[:4].sum())
rev_ttm    = float(income_q.loc["Total Revenue"].iloc[:4].sum())
ebitda_ttm = float(income_q.loc["EBIT"].iloc[:4].sum()) + float(cashflow_q.loc["Depreciation And Amortization"].iloc[:4].sum())
net_debt   = total_debt - cash

implied_pe       = med_pe * eps_ttm
implied_ev_rev   = (med_ev_rev * rev_ttm - net_debt) / shares_out
implied_ev_ebit  = (med_ev_eb  * ebitda_ttm - net_debt) / shares_out
implied_price_rel = np.nanmedian([implied_pe, implied_ev_rev, implied_ev_ebit])
Adjust peer median ±10-30% if target's growth or margin profile diverges materially. Always state the adjustment and reason. Rule of 40 anchor for SaaS in
references/relative_valuation.md
.

选择4-6家可比公司。可比公司映射及调整规则参见
references/relative_valuation.md
python
PEERS = ["MSFT", "ORCL", "CRM", "NOW", "SAP", "WDAY"]  # 按行业选择
multiples = {}
for p in PEERS:
    pi = yf.Ticker(p).info
    multiples[p] = {
        "pe_fwd": pi.get("forwardPE"),
        "ev_rev": pi.get("enterpriseToRevenue"),
        "ev_ebitda": pi.get("enterpriseToEbitda"),
        "ps": pi.get("priceToSalesTrailing12Months"),
    }
med_pe     = np.nanmedian([v["pe_fwd"] for v in multiples.values()])
med_ev_rev = np.nanmedian([v["ev_rev"] for v in multiples.values()])
med_ev_eb  = np.nanmedian([v["ev_ebitda"] for v in multiples.values()])

eps_ttm    = float(income_q.loc["Diluted EPS"].iloc[:4].sum())
rev_ttm    = float(income_q.loc["Total Revenue"].iloc[:4].sum())
ebitda_ttm = float(income_q.loc["EBIT"].iloc[:4].sum()) + float(cashflow_q.loc["Depreciation And Amortization"].iloc[:4].sum())
net_debt   = total_debt - cash

implied_pe       = med_pe * eps_ttm
implied_ev_rev   = (med_ev_rev * rev_ttm - net_debt) / shares_out
implied_ev_ebit  = (med_ev_eb  * ebitda_ttm - net_debt) / shares_out
implied_price_rel = np.nanmedian([implied_pe, implied_ev_rev, implied_ev_ebit])
如果目标公司的增长或利润率与可比公司存在显著差异,调整可比公司中位数±10-30%。始终说明调整及原因。SaaS行业的40法则锚点参见
references/relative_valuation.md

Step 6: SOTP (multi-segment only)

步骤6:SOTP估值(仅多分部公司)

Skip unless the 10-K reports 2+ operating segments with distinct economics. yfinance does NOT expose segment data — user must supply or parse from filings. Full methodology in
references/sotp.md
:
  • Identify segments + pure-play peer for each
  • Apply peer median EV/EBITDA (or EV/Rev for growth segments)
  • Subtract unallocated corporate costs (cap 2-5% of revenue if unknown)
  • Subtract net debt, minority interest; divide by shares
SOTP discount = (SOTP price − market price) / SOTP price. Flag if >20% (conglomerate discount).

除非10-K报告显示存在2个及以上具有独立经济特性的运营分部,否则跳过此步骤。yfinance不提供分部数据——用户必须提供或从文件中解析。完整方法论参见
references/sotp.md
  • 识别各分部及对应的纯业务可比公司
  • 应用可比公司中位数EV/EBITDA(增长分部使用EV/收入)
  • 扣除未分配的公司成本(未知时上限为收入的2-5%)
  • 扣除净债务、少数股东权益;除以总股数
SOTP折价 = (SOTP股价 − 市价) / SOTP股价。如果折价>20%则标记为企业集团折价。

Step 7: Triangulate, Sensitivity, Scenarios

步骤7:交叉验证、敏感性分析与场景模拟

python
undefined
python
undefined

Blended implied price

综合隐含股价

if sotp_price is None: blended = 0.5implied_price_dcf + 0.5implied_price_rel else: blended = 0.4implied_price_dcf + 0.3implied_price_rel + 0.3*sotp_price
if sotp_price is None: blended = 0.5implied_price_dcf + 0.5implied_price_rel else: blended = 0.4implied_price_dcf + 0.3implied_price_rel + 0.3*sotp_price

5x5 sensitivity grid

5x5敏感性分析网格

wacc_grid = [wacc + dx for dx in (-0.01, -0.005, 0, 0.005, 0.01)] g_grid = [0.015, 0.020, 0.025, 0.030, 0.035] sens = {} for w in wacc_grid: for g in g_grid: tv = fcff[-1]*(1+g)/(w-g) pv = sum(f/(1+w)**(i+1) for i,f in enumerate(fcff)) + tv/(1+w)**5 sens[(w,g)] = (pv + cash - total_debt) / shares_out

Also produce Bull / Base / Bear: shift revenue growth ±300bps, EBIT margin ±200bps, WACC ∓100bps, terminal g 3.0% / 2.5% / 1.5%.

---
wacc_grid = [wacc + dx for dx in (-0.01, -0.005, 0, 0.005, 0.01)] g_grid = [0.015, 0.020, 0.025, 0.030, 0.035] sens = {} for w in wacc_grid: for g in g_grid: tv = fcff[-1]*(1+g)/(w-g) pv = sum(f/(1+w)**(i+1) for i,f in enumerate(fcff)) + tv/(1+w)**5 sens[(w,g)] = (pv + cash - total_debt) / shares_out

同时生成乐观/基准/悲观场景:收入增长率±300个基点,EBIT利润率±200个基点,WACC∓100个基点,终值增长率3.0% / 2.5% / 1.5%。

---

Step 8: Respond to the User

步骤8:响应用户

Output in this order:
  1. Headline verdict — one sentence: blended fair value, vs. current, % upside/downside, most bullish/bearish method. Example: "AAPL fair value ≈ $215 (blended), vs. current $198 → ~9% upside; DCF is most bullish at $228."
  2. Snapshot — sector, industry, market cap, current price, 3M / 12M price change, LTM revenue growth.
  3. Three-method summary — 3-column table: method | implied price | weight | brief rationale.
  4. DCF build — assumptions table (growth path, margins, WACC components, terminal method) + 5-yr FCFF projection table + EV-to-equity bridge.
  5. Peer comparison — table of peers with P/E fwd, EV/Rev, EV/EBITDA, gross margin, rev growth; bottom row = median; flag target's premium/discount.
  6. SOTP (if applicable) — segment table + adjustments + equity value.
  7. Sensitivity matrix — WACC × g grid (5×5), base case highlighted.
  8. Scenarios — Bull / Base / Bear table with levers + implied price.
  9. Key risks — 3-5 bullets: which assumption moves the answer most; what could break the thesis.
按以下顺序输出:
  1. 核心结论 —— 一句话:综合公允价值、当前市价、上涨/下跌空间、最乐观/悲观的方法。示例:“AAPL公允价值≈215美元(综合),当前市价198美元→约9%上涨空间;DCF模型最乐观,估值228美元。”
  2. 快照信息 —— 行业、板块、市值、当前价格、3个月/12个月价格变动、过去12个月收入增长率。
  3. 三种方法汇总 —— 3列表格:方法 | 隐含股价 | 权重 | 简要依据。
  4. DCF模型详情 —— 假设表(增长路径、利润率、WACC构成、终值方法)+ 5年FCFF预测表 + 企业价值到股权价值的转换过程。
  5. 可比公司对比 —— 表格展示可比公司的预期P/E、EV/收入、EV/EBITDA、毛利率、收入增长率;最后一行为中位数;标记目标公司的溢价/折价。
  6. SOTP估值(如适用)—— 分部表 + 调整项 + 股权价值。
  7. 敏感性矩阵 —— WACC × 增长率网格(5×5),高亮基准场景。
  8. 场景模拟 —— 乐观/基准/悲观场景表格,包含调整变量 + 隐含股价。
  9. 关键风险 —— 3-5个要点:哪些假设对结果影响最大;哪些因素可能打破估值逻辑。

Error handling

错误处理

Missing / edge caseAction
yfinance returns
None
for beta
Use sector-default beta from
references/wacc_erp_rates.md
Negative LTM EBITDASkip EV/EBITDA multiple; rely on EV/Revenue + DCF
Negative LTM EPSSkip P/E multiple; use forward P/E if positive, else skip
Growth > WACC in GordonCap
g = wacc − 0.5%
and flag
Fewer than 3 years historyUse what's available; flag data confidence as "low"
Peer data fetch failsDrop that peer from median; note in output
No segment data for SOTPSkip Section 6; proceed with DCF + Relative only
缺失/边缘情况操作
yfinance返回beta为
None
使用
references/wacc_erp_rates.md
中的行业默认beta值
过去12个月EBITDA为负跳过EV/EBITDA倍数;依赖EV/收入 + DCF模型
过去12个月EPS为负跳过P/E倍数;如预期P/E为正则使用,否则跳过
戈登模型中增长率>WACC
g
上限设为
wacc − 0.5%
并标记
历史数据不足3年使用可用数据;标记数据置信度为“低”
可比公司数据拉取失败将该公司从中位数计算中剔除;在输出中注明
SOTP估值无分部数据跳过第6节;仅使用DCF + 相对估值继续

Caveats to include

需包含的提示

  • TTM data lags real-time; peer multiples reflect market sentiment (can overshoot)
  • DCF is garbage-in/garbage-out; sensitivity matters more than a point estimate
  • yfinance data is unofficial; cross-check any decision with primary filings
  • Not financial advice

  • TTM数据滞后于实时数据;可比公司倍数反映市场情绪(可能偏离合理区间)
  • DCF模型结果依赖输入质量;敏感性分析比单点估值更重要
  • yfinance数据非官方;任何决策需与原始文件交叉验证
  • 不构成财务建议

Reference Files

参考文件

  • references/dcf.md
    — DCF methodology + industry-specific guidance (software, retail, financials, healthcare, energy, manufacturing, CPG, telecom, REITs, streaming)
  • references/relative_valuation.md
    — Peer selection, multiple adjustment rules, Rule of 40, peer sets by theme
  • references/sotp.md
    — Sum-of-parts methodology, conglomerate discount detection, catalysts
  • references/wacc_erp_rates.md
    — Risk-free rates, equity risk premiums, sector WACC benchmarks, sector-default betas
  • references/dcf.md
    —— DCF方法论 + 行业特定指南(软件、零售、金融、医疗、能源、制造、消费品、电信、REITs、流媒体)
  • references/relative_valuation.md
    —— 可比公司选择、倍数调整规则、40法则、按主题划分的可比公司组
  • references/sotp.md
    —— 分部加总法方法论、企业集团折价检测、催化因素
  • references/wacc_erp_rates.md
    —— 无风险利率、股权风险溢价、行业WACC基准、行业默认beta值