feat: 增加 DCF 等估值工具

This commit is contained in:
R524809
2026-10-22 15:43:17 +08:00
parent f646ee6718
commit a46de853a0
22 changed files with 2645 additions and 3 deletions
+99
View File
@@ -0,0 +1,99 @@
<section class="dcf-calculator return-calculator" aria-label="DCF 估值计算器">
<header class="df-header"><div><div class="df-eyebrow">VALUATION WORKBENCH <span>/ 估值研究</span></div><h2>DCF 估值工作台</h2><p class="df-subtitle">从现金流价值出发,用盈利增长检验回报。</p></div><div class="df-header-actions"><div class="df-header-mark"><span class="df-live-dot"></span> 参数调整 · 即时试算</div><button class="df-help-trigger" type="button" data-help-open aria-label="打开估值概念说明" aria-haspopup="dialog" title="估值概念说明"><svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="1.6" aria-hidden="true"><circle cx="12" cy="12" r="9"></circle><path d="M9.5 9a2.5 2.5 0 0 1 5 .3c0 1.7-2.5 2-2.5 3.7"></path><circle cx="12" cy="16.5" r=".8" fill="currentColor" stroke="none"></circle></svg></button></div></header>
<div class="df-profile-bar">
<div class="df-company-buttons" data-company-buttons role="group" aria-label="切换估值公司"></div>
<button class="export-button" type="button" data-new-company>+ 新增公司</button>
<span class="text-small text-muted df-save-status" data-save-status role="status">每家公司的参数独立保存在本机浏览器</span>
</div>
<form class="df-new-company" data-company-form hidden>
<label>公司名称<input class="form-control" data-company-name maxlength="60" placeholder="输入公司名称" required></label>
<button class="export-button" type="submit">添加</button>
<button class="export-button" type="button" data-cancel-company>取消</button>
<span class="text-small text-destructive" data-company-error role="alert"></span>
</form>
<div class="df-company-empty" data-company-empty role="status" hidden>还没有估值公司,添加一家公司开始估值。</div>
<nav class="df-jumpnav" aria-label="估值工作台导航"><button type="button" data-jump="overview">01 估值总览</button><button type="button" data-jump="parameters">02 DCF 参数</button><button type="button" data-jump="crosscheck">03 双模型校验</button><button type="button" data-jump="detail">04 计算明细</button></nav>
<div class="df-overview" data-section="overview" tabindex="-1"><div class="df-output" aria-live="polite"><div class="df-hero"><div class="df-muted">DCF 每股内在价值</div><div class="df-number" data-price>—</div><div class="df-muted">人民币/股 · 当前现金流假设</div><div class="df-value-note"><span data-margin-label>20%</span> 安全边际参考价 <b data-buy>—</b> <span class="df-muted">元/股</span><div class="df-muted" data-shares-note></div></div></div>
</div><div class="df-top-comparison" aria-live="polite" aria-label="现价与收益门槛对比">
<div><h3>当前股价</h3>
<div class="df-price-readout"><span class="df-market-price" data-market-current>—</span><span class="df-muted">元/股</span><span class="df-zone-badge" data-market-badge hidden></span></div>
<div class="df-muted" data-deviation>填写当前股价后查看所处区间</div>
</div>
<div class="df-top-return"><h3>预计年化 IRR</h3>
<div class="df-top-return-value" data-top-irr>—</div>
<div class="df-muted" data-top-irr-detail>补全交叉验证参数后显示</div>
</div>
<div class="df-top-return"><h3>目标收益所需利润年增速(含边际)</h3>
<div class="df-top-return-value" data-top-growth>—</div>
<div class="df-muted" data-top-growth-detail>按现价与基准退出 PE 反推</div>
</div>
</div></div>
<section class="df-decision" aria-label="双模型结论" aria-live="polite"><div><span class="df-eyebrow">双模型共同参考上限</span><strong data-overview-ceiling>—</strong><span class="df-muted">元/股</span></div><p data-overview-verdict>填写当前股价及利润假设,比较现金流价值与目标收益门槛。</p><button type="button" data-jump="crosscheck">查看校验 ↓</button></section>
<section class="df-market" aria-label="当前股价与估值区间">
<div class="df-market-head">
<div><div class="df-eyebrow">PRICE POSITION</div><h3>现价在估值的什么位置?</h3><div class="df-muted">以当前 DCF 假设为基准的价格区间</div></div>
<div class="df-price-fields">
<label>当前股价(人民币)<input data-field="marketPrice" type="number" min="0" step="any" placeholder="手动输入当前股价"></label>
<label>股价日期(选填)<input data-field="quoteDate" type="date"></label>
</div>
</div>
<div class="df-price-chart" data-market-chart role="img" aria-label="当前股价与 DCF 估值区间" hidden></div>
<div class="df-zone-keys" data-zone-keys hidden>
<div class="df-zone-key"><span><i class="df-zone-dot"></i>低估区间</span><strong data-zone-low>—</strong></div>
<div class="df-zone-key"><span><i class="df-zone-dot"></i>合理区间</span><strong data-zone-fair>—</strong></div>
<div class="df-zone-key"><span><i class="df-zone-dot"></i>高估区间</span><strong data-zone-high>—</strong></div>
</div>
<div class="df-muted df-market-message" data-market-message>请补全现金流与股本后查看估值区间</div>
<div class="df-error" data-market-error role="alert" hidden></div>
<div class="df-interval-rule">
<span class="df-muted">区间依据当前 DCF 假设与折溢价阈值划分,不自动获取行情</span>
<details><summary>区间设置</summary>
<div class="df-fields df-interval-fields">
<label>低估折价/安全边际(%)<input data-field="margin" type="number" min="0" max="99.99" value="20" step="any"></label>
<label>高估溢价阈值(%)<input data-field="premium" type="number" min="0" max="1000" value="20" step="any"></label>
</div>
</details>
</div>
</section>
<div class="df-layout">
<div class="df-form" data-section="parameters" tabindex="-1"><div class="df-column-heading"><span>01</span><div><h3>现金流估值</h3><p>企业能产生多少可分配现金流</p></div><b>DCF</b></div>
<section><div class="df-section-head"><h3>基础参数</h3><span class="df-muted"><span data-context>教学示例 · 人民币</span></span></div>
<div class="df-fields">
<label>现金流口径<select class="cursor-interaction" data-field="basis"><option value="fcff">企业自由现金流 FCFF</option><option value="fcfe">股权自由现金流 FCFE</option></select></label>
<label>基期自由现金流(亿元)<input data-field="fcf" type="number" value="100" step="any"></label>
<label class="df-share-field">当前总股本(亿股,必填)<input data-field="shares" type="number" min="0" step="any" required placeholder="填写该公司总股本"><small class="df-muted">用于每股价值换算,1 亿股 = 100,000,000 股</small></label>
<label>股本数据日期(选填)<input data-field="shareDate" type="date"></label>
<label>现金流基期年份<input data-field="year" type="number" value="2026" step="1"></label>
<label><span data-rate-label>折现率 WACC(%)</span><input data-field="rate" type="number" value="10" step="0.5"></label>
</div></section>
<section><div class="df-section-head"><h3>分段增长率</h3><button class="cursor-interaction" type="button" data-add>+ 添加阶段</button></div>
<div class="df-stages" data-stages></div><div class="df-total df-muted" data-duration></div>
</section>
<section><div class="df-section-head"><h3>永续经营与股权换算</h3></div>
<div class="df-fields">
<label>永续增长率(%)<input data-field="terminal" type="number" value="2" step="0.5"></label>
<label data-debt-field>净债务(亿元,可为负)<input data-field="debt" type="number" value="100" step="any"></label>
<label data-assets-field>其他非经营资产净额(亿元)<input data-field="assets" type="number" value="0" step="any"></label>
<label data-minority-field>少数股东权益(亿元)<input data-field="minority" type="number" value="0" step="any"></label>
</div></section>
<div class="df-results"><h3>价值拆解 <span class="df-muted">/亿元</span></h3><div class="df-result-line"><span>预测期现金流现值</span><b data-pv>—</b></div><div class="df-result-line"><span>永续终值现值</span><b data-tv>—</b></div><div class="df-result-line df-sum"><span data-value-label>企业经营价值</span><b data-ev>—</b></div><div class="df-result-line" data-adjustment><span>− 净债务 + 非经营资产 − 少数股东权益</span><b data-bridge>—</b></div><div class="df-result-line df-sum"><span>股权价值</span><b data-equity>—</b></div><div class="df-composition" aria-hidden="true"><span class="df-segment-a" data-composition-forecast></span><span class="df-segment-b" data-composition-terminal></span></div><div class="df-legend"><span>预测期现金流</span><span>永续终值</span></div><div class="df-muted" data-terminal-share></div></div>
</div>
<div class="df-analysis" data-section="crosscheck" tabindex="-1" data-crosscheck-slot></div>
</div>
<div class="df-error" role="alert" data-error hidden></div>
<div class="df-warning" data-warning hidden></div>
<details class="df-table-section" data-detail data-section="detail" tabindex="-1"><summary class="cursor-interaction">逐年现金流与折现明细 <span class="df-muted" data-table-summary></span></summary><div class="df-table-wrap"><table aria-label="逐年现金流折现"><thead><tr><th>年份/阶段</th><th>增长率</th><th>自由现金流(亿元)</th><th>折现因子</th><th>现值(亿元)</th></tr></thead><tbody data-rows></tbody></table></div></details>
<section class="df-cashflow-section" data-cashflow-section aria-label="逐年现金流与现值图表" hidden>
<div class="df-section-head"><div><h3>逐年现金流与折现现值</h3><p class="df-muted" data-cashflow-caption></p></div><span class="df-muted">单位:亿元</span></div>
<div class="df-cashflow-chart" data-cashflow-chart role="img" aria-label="逐年自由现金流与折现现值对比"></div>
<div class="df-error" data-cashflow-error role="alert" hidden></div>
<p class="df-muted">浅棕为当年自由现金流,深棕为折算到基期的现值;仅展示显式预测期,不含永续终值。悬停或轻触柱形可查看年份、增长阶段及折现因子。</p>
</section>
<footer class="df-foot"><span>假设示例 · 年末现金流 · 永续增长法</span><span data-model-note></span></footer>
<p class="df-muted df-note">净利润不能直接代替自由现金流。FCFF 按 WACC 折现后调整为股权价值,FCFE 按股权资本成本折现。非经营资产不得与净债务中的超额现金重复计入。所有金额使用人民币,股本在预测期内保持不变,终值采用持续经营假设。</p>
</section>