company-valuation
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCompany Valuation
公司估值
Triangulates intrinsic value via three methods, then blends them to an implied share price:
- DCF — 5-year FCFF projection, discount at WACC, terminal value.
- Relative — apply peer median P/E, EV/Revenue, EV/EBITDA.
- 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.
通过三种方法交叉验证内在价值,再综合得出隐含股价:
- DCF —— 5年FCFF(自由现金流)预测,以WACC折现,计算终值。
- 相对估值 —— 应用可比公司中位数P/E、EV/收入、EV/EBITDA倍数。
- 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:
| Condition | Method path |
|---|---|
| Path A (primary): yfinance for financials + peer multiples |
| Path B: delegate to |
| Both missing | Path C: pip-install yfinance, then Path A. |
| Use default |
If printed, use that value as in Step 4d instead of the hardcoded 4.5%.
RF_10Y=rf检测数据源和运行依赖。本技能支持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"`决策树:
| 条件 | 方法路径 |
|---|---|
| 路径A(首选):使用yfinance获取财务数据和可比公司倍数 |
| 路径B:委托 |
| 两者均缺失 | 路径C:pip安装yfinance,然后使用路径A。 |
| 使用默认值 |
如果输出,则在步骤4d中使用该值作为,而非硬编码的4.5%。
RF_10Y=rfStep 2: Choose Methods & Set Defaults
步骤2:选择方法与设置默认值
Method applicability
方法适用性
| Company type | DCF | Relative | SOTP | Fallback |
|---|---|---|---|---|
| Mature cash-flow (CPG, telecom, utilities) | ✅ primary | ✅ | ❌ | — |
| High-growth SaaS / software | ✅ with care | ✅ primary | ❌ | Use EV/Revenue + Rule of 40 |
| Multi-segment conglomerate | ✅ | ✅ | ✅ primary | See |
| Banks / insurance | ❌ | ✅ (P/B, P/TBV) | ❌ | DDM or excess return; note in output |
| Pre-revenue | ❌ | EV/Revenue only | ❌ | Flag low confidence |
| REITs | ❌ | ✅ (P/FFO, P/AFFO) | ❌ | NAV-based |
| Cyclicals (energy, semis, industrials) | ✅ on mid-cycle | ✅ | sometimes | Normalize through-cycle |
| 公司类型 | DCF | 相对估值 | SOTP | 备选方案 |
|---|---|---|---|---|
| 成熟现金流型(消费品、电信、公用事业) | ✅ 首选 | ✅ | ❌ | — |
| 高增长SaaS/软件 | ✅ 谨慎使用 | ✅ 首选 | ❌ | 使用EV/收入 + 40法则 |
| 多分部企业集团 | ✅ | ✅ | ✅ 首选 | 参见 |
| 银行/保险 | ❌ | ✅(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.
| Parameter | Default | Rationale |
|---|---|---|
| Projection horizon | 5 years | Standard explicit forecast window |
Terminal growth | 2.5% | ~ long-run US GDP |
Risk-free rate | Live 10Y UST from Step 1, else 4.5% | Current cost of capital anchor |
Equity risk premium | 5.5% | Damodaran mid-range |
| Beta | | Market-observed levered beta |
Cost of debt | | Effective rate; fallback to IG spread |
| Tax rate | 3-yr median effective rate, floored 15%, capped 30% | Strips out one-offs |
| Margin assumptions | 3-yr median of each ratio | Smooths cyclical noise |
| SBC treatment | Cash for software/SaaS; non-cash for industrials/CPG | Industry convention |
| Peer count | 4-6 | Balances signal vs noise |
| Peer multiple | Median (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 grid | WACC ±1% in 0.5% steps × g from 1.5-3.5% in 0.5% | 5×5 matrix |
See for current risk-free rates, ERP tables, and sector WACC benchmarks.
references/wacc_erp_rates.md以下每个参数在进入步骤3前必须有值。除非用户覆盖,否则使用以下默认值。
| 参数 | 默认值 | 依据 |
|---|---|---|
| 预测期限 | 5年 | 标准明确预测窗口 |
终值增长率 | 2.5% | ~美国长期GDP增长率 |
无风险利率 | 步骤1获取的实时10年期美国国债收益率,否则为4.5% | 当前资本成本锚点 |
股权风险溢价 | 5.5% | Damodaran中位数区间 |
| Beta值 | yfinance的 | 市场观测的杠杆Beta |
债务成本 | | 有效利率;备选为投资级利差 |
| 税率 | 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矩阵 |
参见获取当前无风险利率、ERP表格及行业WACC基准。
references/wacc_erp_rates.mdStep 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):
| Need | Row |
|---|---|
| Revenue | |
| EBIT | |
| Net income | |
| D&A | |
| CapEx | |
| ΔNWC | |
| SBC | |
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标签):
| 需求 | 行标签 |
|---|---|
| 收入 | |
| EBIT(息税前利润) | |
| 净利润 | |
| 折旧与摊销 | |
| 资本支出 | |
| 营运资金变化 | |
| 股权激励 | |
Step 4: DCF Build
步骤4:构建DCF模型
Full methodology + industry-specific tweaks in . Quick skeleton:
references/dcf.mdpython
undefined完整方法论及行业特定调整参见。快速框架:
references/dcf.mdpython
undefined4a. 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.mdpython
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.mdpython
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.mdStep 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
undefinedpython
undefinedBlended 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:
- 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."
- Snapshot — sector, industry, market cap, current price, 3M / 12M price change, LTM revenue growth.
- Three-method summary — 3-column table: method | implied price | weight | brief rationale.
- DCF build — assumptions table (growth path, margins, WACC components, terminal method) + 5-yr FCFF projection table + EV-to-equity bridge.
- 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.
- SOTP (if applicable) — segment table + adjustments + equity value.
- Sensitivity matrix — WACC × g grid (5×5), base case highlighted.
- Scenarios — Bull / Base / Bear table with levers + implied price.
- Key risks — 3-5 bullets: which assumption moves the answer most; what could break the thesis.
按以下顺序输出:
- 核心结论 —— 一句话:综合公允价值、当前市价、上涨/下跌空间、最乐观/悲观的方法。示例:“AAPL公允价值≈215美元(综合),当前市价198美元→约9%上涨空间;DCF模型最乐观,估值228美元。”
- 快照信息 —— 行业、板块、市值、当前价格、3个月/12个月价格变动、过去12个月收入增长率。
- 三种方法汇总 —— 3列表格:方法 | 隐含股价 | 权重 | 简要依据。
- DCF模型详情 —— 假设表(增长路径、利润率、WACC构成、终值方法)+ 5年FCFF预测表 + 企业价值到股权价值的转换过程。
- 可比公司对比 —— 表格展示可比公司的预期P/E、EV/收入、EV/EBITDA、毛利率、收入增长率;最后一行为中位数;标记目标公司的溢价/折价。
- SOTP估值(如适用)—— 分部表 + 调整项 + 股权价值。
- 敏感性矩阵 —— WACC × 增长率网格(5×5),高亮基准场景。
- 场景模拟 —— 乐观/基准/悲观场景表格,包含调整变量 + 隐含股价。
- 关键风险 —— 3-5个要点:哪些假设对结果影响最大;哪些因素可能打破估值逻辑。
Error handling
错误处理
| Missing / edge case | Action |
|---|---|
yfinance returns | Use sector-default beta from |
| Negative LTM EBITDA | Skip EV/EBITDA multiple; rely on EV/Revenue + DCF |
| Negative LTM EPS | Skip P/E multiple; use forward P/E if positive, else skip |
| Growth > WACC in Gordon | Cap |
| Fewer than 3 years history | Use what's available; flag data confidence as "low" |
| Peer data fetch fails | Drop that peer from median; note in output |
| No segment data for SOTP | Skip Section 6; proceed with DCF + Relative only |
| 缺失/边缘情况 | 操作 |
|---|---|
yfinance返回beta为 | 使用 |
| 过去12个月EBITDA为负 | 跳过EV/EBITDA倍数;依赖EV/收入 + DCF模型 |
| 过去12个月EPS为负 | 跳过P/E倍数;如预期P/E为正则使用,否则跳过 |
| 戈登模型中增长率>WACC | 将 |
| 历史数据不足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
参考文件
- — DCF methodology + industry-specific guidance (software, retail, financials, healthcare, energy, manufacturing, CPG, telecom, REITs, streaming)
references/dcf.md - — Peer selection, multiple adjustment rules, Rule of 40, peer sets by theme
references/relative_valuation.md - — Sum-of-parts methodology, conglomerate discount detection, catalysts
references/sotp.md - — Risk-free rates, equity risk premiums, sector WACC benchmarks, sector-default betas
references/wacc_erp_rates.md
- —— DCF方法论 + 行业特定指南(软件、零售、金融、医疗、能源、制造、消费品、电信、REITs、流媒体)
references/dcf.md - —— 可比公司选择、倍数调整规则、40法则、按主题划分的可比公司组
references/relative_valuation.md - —— 分部加总法方法论、企业集团折价检测、催化因素
references/sotp.md - —— 无风险利率、股权风险溢价、行业WACC基准、行业默认beta值
references/wacc_erp_rates.md