{"id":957,"date":"2026-05-27T11:45:13","date_gmt":"2026-05-27T03:45:13","guid":{"rendered":"https:\/\/qubitledge.com\/?p=957"},"modified":"2026-05-29T23:46:05","modified_gmt":"2026-05-29T15:46:05","slug":"nvidia-corporation-nvda-dcf-%e4%bc%b0%e5%80%bc%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a","status":"publish","type":"post","link":"https:\/\/qubitledge.com\/index.php\/2026\/05\/27\/nvidia-corporation-nvda-dcf-%e4%bc%b0%e5%80%bc%e5%88%86%e6%9e%90%e6%8a%a5%e5%91%8a\/","title":{"rendered":"\u3010\u534a\u5bfc\u4f53\u3011NVIDIA Corporation (NVDA) DCF \u4f30\u503c\u5206\u6790\u62a5\u544a"},"content":{"rendered":"\n\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>NVIDIA DCF \u4f30\u503c\u5206\u6790<\/title>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/echarts@5.5.0\/dist\/echarts.min.js\"><\/script>\n<style>\n* { margin: 0; padding: 0; box-sizing: border-box; }\n:root {\n  --bg-primary: #0a0e17;\n  --bg-secondary: #111827;\n  --bg-card: #1a1f2e;\n  --bg-card-hover: #222838;\n  --border: #2a3042;\n  --text-primary: #e2e8f0;\n  --text-secondary: #94a3b8;\n  --text-muted: #64748b;\n  --accent: #76b900;\n  --accent-dim: rgba(118,185,0,0.15);\n  --nvidia-green: #76b900;\n  --bear-red: #ef4444;\n  --base-blue: #3b82f6;\n  --bull-green: #22c55e;\n  --gold: #f59e0b;\n}\nhtml { scroll-behavior: smooth; }\nbody {\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', sans-serif;\n  background: var(--bg-primary);\n  color: var(--text-primary);\n  line-height: 1.6;\n  overflow-x: hidden;\n}\n.container { max-width: 1200px; margin: 0 auto; padding: 0 24px; }\n\n\/* Navigation *\/\nnav {\n  position: fixed; top: 0; left: 0; right: 0; z-index: 100;\n  background: rgba(10,14,23,0.85);\n  backdrop-filter: blur(20px);\n  border-bottom: 1px solid var(--border);\n  padding: 12px 0;\n}\nnav .container { display: flex; align-items: center; justify-content: space-between; }\nnav .logo { font-size: 18px; font-weight: 700; color: var(--nvidia-green); letter-spacing: -0.5px; }\nnav .logo span { color: var(--text-primary); font-weight: 400; }\nnav .nav-links { display: flex; gap: 24px; }\nnav .nav-links a {\n  color: var(--text-secondary); text-decoration: none; font-size: 14px;\n  transition: color 0.2s;\n}\nnav .nav-links a:hover { color: var(--nvidia-green); }\n.hamburger {\n  display: none; background: none; border: none; cursor: pointer; padding: 4px;\n  flex-direction: column; gap: 5px;\n}\n.hamburger span {\n  display: block; width: 22px; height: 2px; background: var(--text-secondary);\n  border-radius: 2px; transition: all 0.3s;\n}\n.hamburger.active span:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); }\n.hamburger.active span:nth-child(2) { opacity: 0; }\n.hamburger.active span:nth-child(3) { transform: rotate(-45deg) translate(5px, -5px); }\n\n\/* Table horizontal scroll wrapper *\/\n.table-scroll-wrapper {\n  position: relative; overflow-x: auto; -webkit-overflow-scrolling: touch;\n  margin: 0 -28px; padding: 0 28px;\n  scrollbar-width: thin; scrollbar-color: var(--border) transparent;\n}\n.table-scroll-wrapper::-webkit-scrollbar { height: 4px; }\n.table-scroll-wrapper::-webkit-scrollbar-track { background: transparent; }\n.table-scroll-wrapper::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }\n.table-scroll-wrapper .scroll-hint {\n  position: absolute; top: 50%; right: 0; transform: translateY(-50%);\n  width: 32px; height: 48px; background: linear-gradient(to right, transparent, rgba(10,14,23,0.9));\n  display: flex; align-items: center; justify-content: center;\n  color: var(--text-muted); font-size: 16px; pointer-events: none;\n  opacity: 1; transition: opacity 0.3s;\n}\n.table-scroll-wrapper.scrolled .scroll-hint { opacity: 0; }\n\n\/* Hero *\/\n.hero {\n  min-height: 100vh; display: flex; align-items: center; justify-content: center;\n  position: relative; overflow: hidden;\n  background: radial-gradient(ellipse at 30% 50%, rgba(118,185,0,0.08) 0%, transparent 60%),\n              radial-gradient(ellipse at 70% 50%, rgba(59,130,246,0.06) 0%, transparent 60%);\n}\n.hero-content { text-align: center; position: relative; z-index: 2; }\n.hero-badge {\n  display: inline-block; padding: 6px 16px; border-radius: 20px;\n  background: var(--accent-dim); color: var(--accent);\n  font-size: 13px; font-weight: 600; margin-bottom: 24px;\n  border: 1px solid rgba(118,185,0,0.3);\n}\n.hero h1 {\n  font-size: clamp(40px, 7vw, 72px); font-weight: 800;\n  letter-spacing: -2px; line-height: 1.1; margin-bottom: 16px;\n}\n.hero h1 .green { color: var(--nvidia-green); }\n.hero p { font-size: 18px; color: var(--text-secondary); max-width: 600px; margin: 0 auto 40px; }\n.hero-ticker {\n  display: flex; gap: 32px; justify-content: center; flex-wrap: wrap;\n}\n.ticker-card {\n  background: var(--bg-card); border: 1px solid var(--border);\n  border-radius: 12px; padding: 20px 28px; text-align: center; min-width: 160px;\n}\n.ticker-card .label { font-size: 12px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 1px; }\n.ticker-card .value { font-size: 28px; font-weight: 700; margin-top: 4px; }\n.ticker-card .value.green { color: var(--bull-green); }\n.ticker-card .value.red { color: var(--bear-red); }\n.ticker-card .value.white { color: var(--text-primary); }\n.scroll-indicator {\n  position: absolute; bottom: 40px; left: 50%; transform: translateX(-50%);\n  animation: bounce 2s infinite;\n}\n.scroll-indicator svg { width: 24px; height: 24px; color: var(--text-muted); }\n@keyframes bounce {\n  0%, 20%, 50%, 80%, 100% { transform: translateX(-50%) translateY(0); }\n  40% { transform: translateX(-50%) translateY(-10px); }\n  60% { transform: translateX(-50%) translateY(-5px); }\n}\n\n\/* Sections *\/\nsection { padding: 100px 0; }\n.section-header { margin-bottom: 48px; }\n.section-header h2 {\n  font-size: 32px; font-weight: 700; letter-spacing: -0.5px; margin-bottom: 8px;\n}\n.section-header p { color: var(--text-secondary); font-size: 16px; }\n.section-divider {\n  width: 48px; height: 3px; background: var(--nvidia-green);\n  border-radius: 2px; margin-top: 16px;\n}\n\n\/* Cards *\/\n.card {\n  background: var(--bg-card); border: 1px solid var(--border);\n  border-radius: 16px; padding: 28px; transition: all 0.3s;\n}\n.card:hover { background: var(--bg-card-hover); border-color: rgba(118,185,0,0.3); }\n\n\/* Scenario Cards *\/\n.scenario-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-bottom: 40px; }\n.scenario-card {\n  background: var(--bg-card); border: 1px solid var(--border);\n  border-radius: 16px; padding: 28px; cursor: pointer;\n  transition: all 0.3s; position: relative; overflow: hidden;\n}\n.scenario-card::before {\n  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px;\n}\n.scenario-card.bear::before { background: var(--bear-red); }\n.scenario-card.base::before { background: var(--base-blue); }\n.scenario-card.bull::before { background: var(--bull-green); }\n.scenario-card.active { border-color: rgba(118,185,0,0.5); transform: translateY(-2px); }\n.scenario-card .tag {\n  display: inline-block; padding: 3px 10px; border-radius: 6px;\n  font-size: 11px; font-weight: 600; text-transform: uppercase;\n  letter-spacing: 0.5px; margin-bottom: 16px;\n}\n.scenario-card.bear .tag { background: rgba(239,68,68,0.15); color: var(--bear-red); }\n.scenario-card.base .tag { background: rgba(59,130,246,0.15); color: var(--base-blue); }\n.scenario-card.bull .tag { background: rgba(34,197,94,0.15); color: var(--bull-green); }\n.scenario-card .price { font-size: 36px; font-weight: 800; margin: 12px 0 4px; }\n.scenario-card .upside { font-size: 15px; font-weight: 600; }\n.scenario-card .upside.neg { color: var(--bear-red); }\n.scenario-card .meta { margin-top: 16px; font-size: 13px; color: var(--text-muted); }\n.scenario-card .meta span { display: block; margin-top: 4px; }\n\n\/* Key Metrics Grid *\/\n.metrics-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin: 32px 0; }\n.metric-card {\n  background: var(--bg-card); border: 1px solid var(--border);\n  border-radius: 12px; padding: 20px;\n}\n.metric-card .label { font-size: 12px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; }\n.metric-card .value { font-size: 24px; font-weight: 700; margin-top: 6px; }\n\n\/* Chart *\/\n.chart-container { width: 100%; height: 420px; margin: 20px 0; }\n.chart-container.tall { height: 500px; }\n\n\/* Table *\/\n.data-table { width: 100%; border-collapse: collapse; margin: 16px 0; }\n.data-table th {\n  background: var(--bg-secondary); color: var(--text-secondary);\n  font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px;\n  padding: 12px 16px; text-align: right; font-weight: 600;\n  border-bottom: 2px solid var(--border);\n}\n.data-table th:first-child { text-align: left; }\n.data-table td {\n  padding: 12px 16px; text-align: right; border-bottom: 1px solid var(--border);\n  font-size: 14px; font-variant-numeric: tabular-nums;\n}\n.data-table td:first-child { text-align: left; color: var(--text-secondary); font-weight: 500; }\n.data-table tr:hover td { background: rgba(118,185,0,0.03); }\n.data-table .highlight { color: var(--nvidia-green); font-weight: 700; }\n.data-table .bold { font-weight: 700; }\n.data-table .pct { color: var(--text-muted); }\n\n\/* Valuation Bridge *\/\n.bridge-container { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 24px 0; }\n.bridge-step {\n  background: var(--bg-card); border: 1px solid var(--border);\n  border-radius: 12px; padding: 20px 24px; text-align: center; min-width: 140px;\n}\n.bridge-step .label { font-size: 11px; color: var(--text-muted); text-transform: uppercase; }\n.bridge-step .value { font-size: 22px; font-weight: 700; margin-top: 4px; }\n.bridge-arrow { color: var(--text-muted); font-size: 24px; }\n\n\/* Sensitivity Heatmap *\/\n.heatmap-table { width: 100%; border-collapse: collapse; }\n.heatmap-table th, .heatmap-table td {\n  padding: 10px 14px; text-align: center; font-size: 14px;\n  border: 1px solid var(--border);\n}\n.heatmap-table th { background: var(--bg-secondary); font-weight: 600; }\n.heatmap-table th:first-child { text-align: left; }\n.heatmap-table td { font-variant-numeric: tabular-nums; }\n\n\/* Risk Cards *\/\n.risk-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }\n.risk-card {\n  background: var(--bg-card); border: 1px solid var(--border);\n  border-radius: 12px; padding: 24px;\n}\n.risk-card h4 { font-size: 16px; margin-bottom: 12px; display: flex; align-items: center; gap: 8px; }\n.risk-card.downside h4 { color: var(--bear-red); }\n.risk-card.upside h4 { color: var(--bull-green); }\n.risk-card ul { list-style: none; }\n.risk-card li {\n  padding: 8px 0; border-bottom: 1px solid var(--border);\n  font-size: 14px; color: var(--text-secondary);\n  display: flex; gap: 8px; align-items: flex-start;\n}\n.risk-card li:last-child { border-bottom: none; }\n.risk-card li .num { color: var(--text-muted); font-size: 12px; font-weight: 600; min-width: 20px; }\n\n\/* Conclusion *\/\n.conclusion-box {\n  background: linear-gradient(135deg, rgba(118,185,0,0.08), rgba(59,130,246,0.05));\n  border: 1px solid rgba(118,185,0,0.2);\n  border-radius: 16px; padding: 36px; margin-top: 40px;\n}\n.conclusion-box h3 { font-size: 20px; margin-bottom: 16px; color: var(--nvidia-green); }\n.conclusion-box p { color: var(--text-secondary); font-size: 15px; line-height: 1.8; }\n.conclusion-box p strong { color: var(--text-primary); }\n\n\/* Footer *\/\nfooter {\n  border-top: 1px solid var(--border);\n  padding: 40px 0; text-align: center;\n  color: var(--text-muted); font-size: 13px;\n}\n\n\/* Scroll animations *\/\n.fade-in {\n  opacity: 0; transform: translateY(30px);\n  transition: opacity 0.8s ease, transform 0.8s ease;\n}\n.fade-in.visible { opacity: 1; transform: translateY(0); }\n\n\/* Responsive *\/\n@media (max-width: 768px) {\n  .container { padding: 0 16px; }\n  .scenario-grid { grid-template-columns: 1fr; }\n  .metrics-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }\n  .risk-grid { grid-template-columns: 1fr; }\n  .hero-ticker { flex-direction: column; align-items: center; gap: 12px; }\n  .hero-ticker .ticker-card { width: 100%; max-width: 280px; }\n  .ticker-card .value { font-size: 22px; }\n  section { padding: 60px 0; }\n  .section-header h2 { font-size: 24px; }\n  .section-header { margin-bottom: 32px; }\n\n  \/* Hamburger menu *\/\n  .hamburger { display: flex; }\n  nav .nav-links {\n    display: none; position: absolute; top: 100%; left: 0; right: 0;\n    background: rgba(10,14,23,0.95); backdrop-filter: blur(20px);\n    flex-direction: column; padding: 16px 24px; gap: 0;\n    border-bottom: 1px solid var(--border);\n  }\n  nav .nav-links.open { display: flex; }\n  nav .nav-links a { padding: 12px 0; border-bottom: 1px solid var(--border); font-size: 15px; }\n  nav .nav-links a:last-child { border-bottom: none; }\n\n  \/* Tables scrollable *\/\n  .data-table { font-size: 12px; white-space: nowrap; }\n  .data-table th, .data-table td { padding: 10px 14px; min-width: 80px; }\n  .heatmap-table { white-space: nowrap; }\n  .heatmap-table th, .heatmap-table td { padding: 10px 12px; min-width: 70px; font-size: 13px; }\n  .card { padding: 20px; }\n  .table-scroll-wrapper { margin: 0 -20px; padding: 0 20px; }\n\n  \/* WACC grid stack *\/\n  .wacc-grid { grid-template-columns: 1fr !important; }\n  .wacc-grid .card { min-width: 0; }\n\n  \/* Bridge horizontal scroll *\/\n  .bridge-container { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch;\n    padding-bottom: 8px; scrollbar-width: thin; scrollbar-color: var(--border) transparent; }\n  .bridge-container::-webkit-scrollbar { height: 4px; }\n  .bridge-container::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }\n  .bridge-step { min-width: 120px; flex-shrink: 0; }\n  .bridge-arrow { flex-shrink: 0; }\n\n  \/* Charts smaller on mobile *\/\n  .chart-container { height: 320px !important; }\n  .chart-container.tall { height: 380px !important; }\n\n  \/* Scenario cards *\/\n  .scenario-card .price { font-size: 28px; }\n  .conclusion-box { padding: 24px; }\n  .conclusion-box p { font-size: 14px; }\n  .hero p { font-size: 15px; padding: 0 16px; }\n}\n<\/style>\n<\/head>\n<body>\n\n<nav>\n  <div class=\"container\">\n    <div class=\"logo\">NVDA <span>DCF Analysis<\/span><\/div>\n    <div class=\"hamburger\" id=\"hamburger\" onclick=\"toggleMenu()\">\n      <span><\/span><span><\/span><span><\/span>\n    <\/div>\n    <div class=\"nav-links\" id=\"navLinks\">\n      <a href=\"#overview\" onclick=\"closeMenu()\">Overview<\/a>\n      <a href=\"#scenarios\" onclick=\"closeMenu()\">Scenarios<\/a>\n      <a href=\"#projections\" onclick=\"closeMenu()\">Projections<\/a>\n      <a href=\"#valuation\" onclick=\"closeMenu()\">Valuation<\/a>\n      <a href=\"#sensitivity\" onclick=\"closeMenu()\">Sensitivity<\/a>\n      <a href=\"#risks\" onclick=\"closeMenu()\">Risks<\/a>\n    <\/div>\n  <\/div>\n<\/nav>\n\n<!-- Hero -->\n<section class=\"hero\">\n  <div class=\"hero-content\">\n    <div class=\"hero-badge\">Discounted Cash Flow Analysis<\/div>\n    <h1>NVIDIA <span class=\"green\">DCF<\/span><br>Valuation Model<\/h1>\n    <p>\u57fa\u4e8e\u73b0\u91d1\u6d41\u6298\u73b0\u6cd5\u7684\u4e09\u60c5\u666f\u4f30\u503c\u5206\u6790\uff0c\u6db5\u76d6 Bear\/Base\/Bull \u589e\u957f\u5047\u8bbe\u4e0e WACC \u654f\u611f\u6027\u6d4b\u8bd5<\/p>\n    <div class=\"hero-ticker\">\n      <div class=\"ticker-card\">\n        <div class=\"label\">Current Price<\/div>\n        <div class=\"value white\">$214.86<\/div>\n      <\/div>\n      <div class=\"ticker-card\">\n        <div class=\"label\">Market Cap<\/div>\n        <div class=\"value white\">$5,222B<\/div>\n      <\/div>\n      <div class=\"ticker-card\">\n        <div class=\"label\">FY2025 Revenue<\/div>\n        <div class=\"value green\">$130.5B<\/div>\n      <\/div>\n      <div class=\"ticker-card\">\n        <div class=\"label\">FY2025 Gross Margin<\/div>\n        <div class=\"value green\">75.0%<\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div class=\"scroll-indicator\">\n    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M19 14l-7 7m0 0l-7-7m7 7V3\"\/><\/svg>\n  <\/div>\n<\/section>\n\n<!-- Historical Overview -->\n<section id=\"overview\">\n  <div class=\"container\">\n    <div class=\"section-header fade-in\">\n      <h2>\u5386\u53f2\u8d22\u52a1\u6570\u636e<\/h2>\n      <p>NVIDIA FY2021-FY2025 \u5173\u952e\u8d22\u52a1\u6307\u6807\u56de\u987e<\/p>\n      <div class=\"section-divider\"><\/div>\n    <\/div>\n\n    <div class=\"chart-container fade-in\" id=\"chart-revenue\"><\/div>\n\n    <div class=\"metrics-grid fade-in\">\n      <div class=\"metric-card\">\n        <div class=\"label\">FY2025 \u8425\u6536<\/div>\n        <div class=\"value\" style=\"color:var(--nvidia-green)\">$130.5B<\/div>\n      <\/div>\n      <div class=\"metric-card\">\n        <div class=\"label\">FY25 vs FY24 \u589e\u901f<\/div>\n        <div class=\"value\" style=\"color:var(--nvidia-green)\">+114.2%<\/div>\n      <\/div>\n      <div class=\"metric-card\">\n        <div class=\"label\">FY2025 \u6bdb\u5229\u7387<\/div>\n        <div class=\"value\">75.0%<\/div>\n      <\/div>\n      <div class=\"metric-card\">\n        <div class=\"label\">FY2025 EBIT \u5229\u6da6\u7387<\/div>\n        <div class=\"value\">62.4%<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"card fade-in\">\n      <div class=\"table-scroll-wrapper\" onscroll=\"this.classList.toggle('scrolled', this.scrollLeft > 10)&#8221;>\n        <span class=\"scroll-hint\">&#x276F;<\/span>\n        <table class=\"data-table\">\n        <thead>\n          <tr>\n            <th>\u6307\u6807 ($M)<\/th><th>FY2021<\/th><th>FY2022<\/th><th>FY2023<\/th><th>FY2024<\/th><th>FY2025<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr class=\"bold\"><td>\u8425\u4e1a\u6536\u5165<\/td><td>16,676<\/td><td>26,914<\/td><td>26,974<\/td><td>60,922<\/td><td class=\"highlight\">130,497<\/td><\/tr>\n          <tr><td>\u8425\u6536\u589e\u901f<\/td><td>&#8211;<\/td><td class=\"pct\">61.4%<\/td><td class=\"pct\">0.2%<\/td><td class=\"pct\">125.8%<\/td><td class=\"pct\">114.2%<\/td><\/tr>\n          <tr class=\"bold\"><td>\u6bdb\u5229\u6da6<\/td><td>10,828<\/td><td>17,475<\/td><td>15,356<\/td><td>44,301<\/td><td class=\"highlight\">97,858<\/td><\/tr>\n          <tr><td>\u6bdb\u5229\u7387<\/td><td class=\"pct\">64.9%<\/td><td class=\"pct\">64.9%<\/td><td class=\"pct\">56.9%<\/td><td class=\"pct\">72.7%<\/td><td class=\"pct\">75.0%<\/td><\/tr>\n          <tr><td>R&#038;D<\/td><td>3,950<\/td><td>5,268<\/td><td>7,339<\/td><td>8,675<\/td><td>12,914<\/td><\/tr>\n          <tr><td>SG&#038;A<\/td><td>655<\/td><td>2,166<\/td><td>2,440<\/td><td>2,654<\/td><td>3,491<\/td><\/tr>\n          <tr class=\"bold\"><td>EBIT<\/td><td>6,223<\/td><td>10,041<\/td><td>5,577<\/td><td>32,972<\/td><td class=\"highlight\">81,453<\/td><\/tr>\n          <tr><td>EBIT \u5229\u6da6\u7387<\/td><td class=\"pct\">37.3%<\/td><td class=\"pct\">37.3%<\/td><td class=\"pct\">20.7%<\/td><td class=\"pct\">54.1%<\/td><td class=\"pct\">62.4%<\/td><\/tr>\n        <\/tbody>\n      <\/table>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- Scenarios -->\n<section id=\"scenarios\" style=\"background:var(--bg-secondary);\">\n  <div class=\"container\">\n    <div class=\"section-header fade-in\">\n      <h2>\u4e09\u60c5\u666f\u4f30\u503c\u7ed3\u679c<\/h2>\n      <p>Bear \/ Base \/ Bull \u4e09\u79cd\u589e\u957f\u5047\u8bbe\u4e0b\u7684\u5185\u5728\u4ef7\u503c<\/p>\n      <div class=\"section-divider\"><\/div>\n    <\/div>\n\n    <div class=\"scenario-grid fade-in\">\n      <div class=\"scenario-card bear\" onclick=\"selectScenario('bear')\">\n        <div class=\"tag\">Bear Case<\/div>\n        <div style=\"font-size:14px;color:var(--text-secondary)\">\u5185\u5728\u4ef7\u503c<\/div>\n        <div class=\"price\" style=\"color:var(--bear-red)\">$35.62<\/div>\n        <div class=\"upside neg\">&#9660; 83.4%<\/div>\n        <div class=\"meta\">\n          <span>5Y CAGR: 8.2%<\/span>\n          <span>WACC: 11.5% | TG: 2.0%<\/span>\n        <\/div>\n      <\/div>\n      <div class=\"scenario-card base active\" onclick=\"selectScenario('base')\">\n        <div class=\"tag\">Base Case<\/div>\n        <div style=\"font-size:14px;color:var(--text-secondary)\">\u5185\u5728\u4ef7\u503c<\/div>\n        <div class=\"price\" style=\"color:var(--base-blue)\">$99.89<\/div>\n        <div class=\"upside neg\">&#9660; 53.5%<\/div>\n        <div class=\"meta\">\n          <span>5Y CAGR: 25.0%<\/span>\n          <span>WACC: 10.5% | TG: 3.0%<\/span>\n        <\/div>\n      <\/div>\n      <div class=\"scenario-card bull\" onclick=\"selectScenario('bull')\">\n        <div class=\"tag\">Bull Case<\/div>\n        <div style=\"font-size:14px;color:var(--text-secondary)\">\u5185\u5728\u4ef7\u503c<\/div>\n        <div class=\"price\" style=\"color:var(--bull-green)\">$193.05<\/div>\n        <div class=\"upside neg\">&#9660; 10.2%<\/div>\n        <div class=\"meta\">\n          <span>5Y CAGR: 36.0%<\/span>\n          <span>WACC: 9.5% | TG: 3.5%<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"chart-container fade-in\" id=\"chart-scenarios\"><\/div>\n\n    <div class=\"card fade-in\" style=\"margin-top:20px;\">\n      <h3 style=\"font-size:16px;margin-bottom:16px;\">\u60c5\u666f\u5047\u8bbe\u5bf9\u6bd4<\/h3>\n      <div class=\"table-scroll-wrapper\" onscroll=\"this.classList.toggle('scrolled', this.scrollLeft > 10)&#8221;>\n        <span class=\"scroll-hint\">&#x276F;<\/span>\n      <table class=\"data-table\">\n        <thead>\n          <tr>\n            <th>\u5173\u952e\u5047\u8bbe<\/th><th>Bear<\/th><th>Base<\/th><th>Bull<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr><td>FY1 \u8425\u6536\u589e\u901f<\/td><td>12.0%<\/td><td>40.0%<\/td><td>55.0%<\/td><\/tr>\n          <tr><td>FY5 \u8425\u6536\u589e\u901f<\/td><td>5.0%<\/td><td>12.0%<\/td><td>20.0%<\/td><\/tr>\n          <tr><td>FY1 \u6bdb\u5229\u7387<\/td><td>72.0%<\/td><td>75.0%<\/td><td>76.0%<\/td><\/tr>\n          <tr><td>FY5 \u6bdb\u5229\u7387<\/td><td>68.0%<\/td><td>74.0%<\/td><td>75.0%<\/td><\/tr>\n          <tr><td>R&#038;D (FY1\/FY5)<\/td><td>8.0% \/ 7.2%<\/td><td>7.5% \/ 6.7%<\/td><td>7.0% \/ 6.3%<\/td><\/tr>\n          <tr><td>WACC<\/td><td>11.5%<\/td><td>10.5%<\/td><td>9.5%<\/td><\/tr>\n          <tr><td>\u7ec8\u503c\u589e\u957f\u7387<\/td><td>2.0%<\/td><td>3.0%<\/td><td>3.5%<\/td><\/tr>\n        <\/tbody>\n      <\/table>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- Projections -->\n<section id=\"projections\">\n  <div class=\"container\">\n    <div class=\"section-header fade-in\">\n      <h2>\u8425\u6536\u4e0e\u81ea\u7531\u73b0\u91d1\u6d41\u9884\u6d4b<\/h2>\n      <p>\u4e09\u60c5\u666f\u4e0b\u7684 5 \u5e74\u9884\u6d4b\u5bf9\u6bd4<\/p>\n      <div class=\"section-divider\"><\/div>\n    <\/div>\n\n    <div class=\"chart-container tall fade-in\" id=\"chart-projections\"><\/div>\n\n    <div class=\"chart-container fade-in\" id=\"chart-ufcf\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- WACC & Valuation -->\n<section id=\"valuation\" style=\"background:var(--bg-secondary);\">\n  <div class=\"container\">\n    <div class=\"section-header fade-in\">\n      <h2>WACC \u4e0e\u4f30\u503c\u8be6\u60c5<\/h2>\n      <p>\u8d44\u672c\u6210\u672c\u8ba1\u7b97\u4e0e\u4f01\u4e1a\u4ef7\u503c\u6865<\/p>\n      <div class=\"section-divider\"><\/div>\n    <\/div>\n\n    <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:20px;\" class=\"fade-in wacc-grid\">\n      <div class=\"card\">\n        <h3 style=\"font-size:16px;margin-bottom:20px;color:var(--nvidia-green);\">CAPM \u6210\u672c\u80a1\u6743<\/h3>\n        <div class=\"table-scroll-wrapper\" onscroll=\"this.classList.toggle('scrolled', this.scrollLeft > 10)&#8221;>\n        <table class=\"data-table\">\n          <tbody>\n            <tr><td>\u65e0\u98ce\u9669\u5229\u7387 (Rf)<\/td><td>4.56%<\/td><\/tr>\n            <tr><td>Beta (5Y Monthly)<\/td><td>2.24<\/td><\/tr>\n            <tr><td>\u80a1\u6743\u98ce\u9669\u6ea2\u4ef7 (ERP)<\/td><td>5.50%<\/td><\/tr>\n            <tr class=\"bold\"><td style=\"color:var(--nvidia-green)\">Ke = Rf + \u03b2 \u00d7 ERP<\/td><td style=\"color:var(--nvidia-green)\">16.88%<\/td><\/tr>\n          <\/tbody>\n        <\/table>\n        <\/div>\n        <h3 style=\"font-size:16px;margin:24px 0 16px;color:var(--gold);\">\u6210\u672c\u503a\u52a1<\/h3>\n        <div class=\"table-scroll-wrapper\" onscroll=\"this.classList.toggle('scrolled', this.scrollLeft > 10)&#8221;>\n        <table class=\"data-table\">\n          <tbody>\n            <tr><td>\u7a0e\u524d Kd<\/td><td>5.20%<\/td><\/tr>\n            <tr><td>\u6709\u6548\u7a0e\u7387<\/td><td>16.5%<\/td><\/tr>\n            <tr class=\"bold\"><td>\u7a0e\u540e Kd<\/td><td>4.34%<\/td><\/tr>\n          <\/tbody>\n        <\/table>\n        <\/div>\n      <\/div>\n      <div class=\"card\">\n        <h3 style=\"font-size:16px;margin-bottom:20px;color:var(--base-blue);\">\u8d44\u672c\u7ed3\u6784<\/h3>\n        <div class=\"table-scroll-wrapper\" onscroll=\"this.classList.toggle('scrolled', this.scrollLeft > 10)&#8221;>\n        <table class=\"data-table\">\n          <tbody>\n            <tr><td>\u5e02\u503c<\/td><td>$5,222,016M<\/td><\/tr>\n            <tr><td>\u51c0\u503a\u52a1<\/td><td style=\"color:var(--bull-green)\">-$72,102M<\/td><\/tr>\n            <tr><td>\u4f01\u4e1a\u4ef7\u503c<\/td><td>$5,149,914M<\/td><\/tr>\n            <tr><td>\u80a1\u6743\u6743\u91cd (We)<\/td><td>101.4%<\/td><\/tr>\n            <tr><td>\u503a\u52a1\u6743\u91cd (Wd)<\/td><td>-1.4%<\/td><\/tr>\n          <\/tbody>\n        <\/table>\n        <\/div>\n        <div style=\"margin-top:24px;padding:16px;background:rgba(118,185,0,0.08);border-radius:10px;border:1px solid rgba(118,185,0,0.2);\">\n          <div style=\"font-size:12px;color:var(--text-muted);text-transform:uppercase;\">\u5404\u60c5\u666f WACC<\/div>\n          <div style=\"display:flex;gap:24px;margin-top:8px;\">\n            <div><span style=\"font-size:12px;color:var(--text-muted);\">Bear:<\/span> <strong>11.5%<\/strong><\/div>\n            <div><span style=\"font-size:12px;color:var(--text-muted);\">Base:<\/span> <strong style=\"color:var(--nvidia-green)\">10.5%<\/strong><\/div>\n            <div><span style=\"font-size:12px;color:var(--text-muted);\">Bull:<\/span> <strong>9.5%<\/strong><\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"card fade-in\" style=\"margin-top:24px;\">\n      <h3 style=\"font-size:16px;margin-bottom:20px;\">\u4f30\u503c\u6865 (Valuation Bridge) \u2014 Base Case<\/h3>\n      <div class=\"bridge-container\">\n        <div class=\"bridge-step\"><div class=\"label\">PV FCFs<\/div><div class=\"value\">$609B<\/div><\/div>\n        <div class=\"bridge-arrow\">+<\/div>\n        <div class=\"bridge-step\"><div class=\"label\">PV Terminal<\/div><div class=\"value\">$1,891B<\/div><\/div>\n        <div class=\"bridge-arrow\">=<\/div>\n        <div class=\"bridge-step\" style=\"border-color:var(--nvidia-green);\"><div class=\"label\">Enterprise Value<\/div><div class=\"value\" style=\"color:var(--nvidia-green)\">$2,500B<\/div><\/div>\n        <div class=\"bridge-arrow\">+<\/div>\n        <div class=\"bridge-step\"><div class=\"label\">Net Cash<\/div><div class=\"value\" style=\"color:var(--bull-green)\">+$72B<\/div><\/div>\n        <div class=\"bridge-arrow\">=<\/div>\n        <div class=\"bridge-step\" style=\"border-color:var(--base-blue);\"><div class=\"label\">Equity Value<\/div><div class=\"value\" style=\"color:var(--base-blue)\">$2,428B<\/div><\/div>\n        <div class=\"bridge-arrow\">\u00f7<\/div>\n        <div class=\"bridge-step\"><div class=\"label\">Shares<\/div><div class=\"value\">24,304M<\/div><\/div>\n        <div class=\"bridge-arrow\">=<\/div>\n        <div class=\"bridge-step\" style=\"border-color:var(--gold);background:rgba(245,158,11,0.08);\"><div class=\"label\">Implied Price<\/div><div class=\"value\" style=\"color:var(--gold)\">$99.89<\/div><\/div>\n      <\/div>\n      <div style=\"text-align:center;margin-top:12px;\">\n        <span style=\"font-size:14px;color:var(--text-muted);\">\u7ec8\u503c\u5360 EV \u6bd4\u91cd: <\/span>\n        <span style=\"font-size:16px;font-weight:700;color:var(--bear-red);\">75.6%<\/span>\n        <span style=\"font-size:13px;color:var(--text-muted);margin-left:12px;\">(\u4f30\u503c\u9ad8\u5ea6\u4f9d\u8d56\u957f\u671f\u5047\u8bbe)<\/span>\n      <\/div>\n    <\/div>\n\n    <div class=\"chart-container fade-in\" id=\"chart-bridge\"><\/div>\n  <\/div>\n<\/section>\n\n<!-- Sensitivity -->\n<section id=\"sensitivity\">\n  <div class=\"container\">\n    <div class=\"section-header fade-in\">\n      <h2>\u654f\u611f\u6027\u5206\u6790<\/h2>\n      <p>\u5173\u952e\u53c2\u6570\u53d8\u5316\u5bf9\u6bcf\u80a1\u5185\u5728\u4ef7\u503c\u7684\u5f71\u54cd<\/p>\n      <div class=\"section-divider\"><\/div>\n    <\/div>\n\n    <div class=\"card fade-in\" style=\"margin-bottom:24px;\">\n      <h3 style=\"font-size:16px;margin-bottom:16px;\">WACC vs \u7ec8\u503c\u589e\u957f\u7387 \u2014 \u6bcf\u80a1\u5185\u5728\u4ef7\u503c ($)<\/h3>\n      <div class=\"table-scroll-wrapper\" onscroll=\"this.classList.toggle('scrolled', this.scrollLeft > 10)&#8221;>\n        <span class=\"scroll-hint\">&#x276F;<\/span>\n        <table class=\"heatmap-table\" id=\"heatmap1\"><\/table>\n      <\/div>\n    <\/div>\n\n    <div class=\"card fade-in\" style=\"margin-bottom:24px;\">\n      <h3 style=\"font-size:16px;margin-bottom:16px;\">\u8425\u6536 CAGR vs \u7ec8\u7aef EBIT \u5229\u6da6\u7387 \u2014 \u6bcf\u80a1\u5185\u5728\u4ef7\u503c ($)<\/h3>\n      <div class=\"table-scroll-wrapper\" onscroll=\"this.classList.toggle('scrolled', this.scrollLeft > 10)&#8221;>\n        <span class=\"scroll-hint\">&#x276F;<\/span>\n        <table class=\"heatmap-table\" id=\"heatmap2\"><\/table>\n      <\/div>\n    <\/div>\n\n    <div class=\"card fade-in\">\n      <h3 style=\"font-size:16px;margin-bottom:16px;\">Beta vs \u65e0\u98ce\u9669\u5229\u7387 \u2014 \u6bcf\u80a1\u5185\u5728\u4ef7\u503c ($)<\/h3>\n      <div class=\"table-scroll-wrapper\" onscroll=\"this.classList.toggle('scrolled', this.scrollLeft > 10)&#8221;>\n        <span class=\"scroll-hint\">&#x276F;<\/span>\n        <table class=\"heatmap-table\" id=\"heatmap3\"><\/table>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- Risks -->\n<section id=\"risks\" style=\"background:var(--bg-secondary);\">\n  <div class=\"container\">\n    <div class=\"section-header fade-in\">\n      <h2>\u98ce\u9669\u56e0\u7d20\u5206\u6790<\/h2>\n      <p>\u5f71\u54cd NVIDIA \u4f30\u503c\u7684\u6838\u5fc3\u53d8\u91cf<\/p>\n      <div class=\"section-divider\"><\/div>\n    <\/div>\n\n    <div class=\"risk-grid fade-in\">\n      <div class=\"risk-card downside\">\n        <h4>&#9660; \u4e0b\u884c\u98ce\u9669<\/h4>\n        <ul>\n          <li><span class=\"num\">01<\/span> AI CapEx \u5468\u671f\u6027\u56de\u8c03\uff0c\u5927\u578b\u79d1\u6280\u516c\u53f8\u524a\u51cf\u57fa\u5efa\u6295\u8d44<\/li>\n          <li><span class=\"num\">02<\/span> \u7f8e\u4e2d\u79d1\u6280\u9650\u5236\u8fdb\u4e00\u6b65\u6269\u5927\uff0c\u5f71\u54cd\u7ea6 10-15% \u4e2d\u56fd\u5e02\u573a\u6536\u5165<\/li>\n          <li><span class=\"num\">03<\/span> AMD MI300\u3001Google TPU\u3001\u81ea\u7814\u82af\u7247\u4fb5\u8680\u5e02\u573a\u4efd\u989d<\/li>\n          <li><span class=\"num\">04<\/span> \u5148\u8fdb\u5236\u7a0b\u6210\u672c\u4e0a\u5347\uff0c\u6bdb\u5229\u7387\u53ef\u80fd\u56de\u843d\u81f3 70% \u4ee5\u4e0b<\/li>\n          <li><span class=\"num\">05<\/span> $5.2T \u5e02\u503c\u5b9a\u4ef7\u6781\u9ad8\uff0c\u4e1a\u7ee9\u4e0d\u53ca\u9884\u671f\u53ef\u80fd\u5f15\u53d1\u5927\u5e45\u56de\u8c03<\/li>\n        <\/ul>\n      <\/div>\n      <div class=\"risk-card upside\">\n        <h4>&#9650; \u4e0a\u884c\u50ac\u5316\u5242<\/h4>\n        <ul>\n          <li><span class=\"num\">01<\/span> \u81ea\u52a8\u9a7e\u9a76 L4\/L5\u3001AI \u673a\u5668\u4eba\u3001\u86cb\u767d\u8d28\u6298\u53e0\u7b49\u65b0\u573a\u666f\u91ca\u653e\u9700\u6c42<\/li>\n          <li><span class=\"num\">02<\/span> CUDA\/XLA \u751f\u6001\u5f62\u6210\u5f3a\u5927\u9501\u5b9a\u6548\u5e94\uff0c\u8f6f\u4ef6\u6536\u5165\u8d21\u732e\u63d0\u5347<\/li>\n          <li><span class=\"num\">03<\/span> Rubin (2027) \/ Rubin Ultra (2028) \u67b6\u6784\u7ee7\u7eed\u62c9\u5927\u7ade\u4e89\u5dee\u8ddd<\/li>\n          <li><span class=\"num\">04<\/span> \u8fb9\u7f18\u8ba1\u7b97\u3001\u6570\u5b57\u5b6a\u751f\u3001\u5de5\u4e1a AI \u7b49\u65b0\u5e02\u573a\u63d0\u4f9b\u989d\u5916\u589e\u957f\u52a8\u529b<\/li>\n          <li><span class=\"num\">05<\/span> AI \u5e94\u7528\u5168\u9762\u7206\u53d1\uff0c\u5e26\u52a8\u6570\u636e\u4e2d\u5fc3 GPU \u9700\u6c42\u8d85\u9884\u671f\u589e\u957f<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n\n    <div class=\"conclusion-box fade-in\">\n      <h3>\u6295\u8d44\u7ed3\u8bba<\/h3>\n      <p>\n        NVIDIA \u662f\u5168\u7403 AI \u57fa\u7840\u8bbe\u65bd\u6d6a\u6f6e\u7684\u6838\u5fc3\u53d7\u76ca\u8005\uff0c\u57fa\u672c\u9762\u5353\u8d8a\u3002\u7136\u800c\uff0c\u5f53\u524d <strong>$5.2T \u7684\u5e02\u503c<\/strong> \u5df2\u7ecf priced in \u4e86\u6781\u5176\u6fc0\u8fdb\u7684\u957f\u671f\u589e\u957f\u5047\u8bbe\u3002\u5373\u4f7f\u5728\u6301\u7eed\u589e\u957f\u7684 <strong>Bull Case<\/strong> \u4e2d\uff0836% CAGR\uff09\uff0cDCF \u4ecd\u663e\u793a\u7ea6 <strong>10% \u7684\u4e0b\u884c\u7a7a\u95f4<\/strong>\u3002Base Case \u7ec8\u503c\u5360 EV \u7684 <strong>75.6%<\/strong>\uff0c\u4f30\u503c\u5bf9\u957f\u671f\u5047\u8bbe\u9ad8\u5ea6\u654f\u611f\u3002\n      <\/p>\n      <p style=\"margin-top:16px;\">\n        \u6295\u8d44\u8005\u5e94\u5bc6\u5207\u5173\u6ce8\u5b63\u5ea6\u8425\u6536\u589e\u901f\u662f\u5426\u7ef4\u6301 30%+\u3001\u6bdb\u5229\u7387\u662f\u5426\u7a33\u5b9a\u5728 75%+\u3001AI CapEx \u5468\u671f\u662f\u5426\u51fa\u73b0\u62d0\u70b9\u4fe1\u53f7\uff0c\u7b49\u5f85\u80a1\u4ef7\u56de\u8c03\u81f3 Base Case \u5185\u5728\u4ef7\u503c\uff08~$100\uff09\u9644\u8fd1\u518d\u8003\u8651\u5165\u573a\u3002\n      <\/p>\n    <\/div>\n  <\/div>\n<\/section>\n\n<footer>\n  <div class=\"container\">\n    <p>NVIDIA DCF Valuation Analysis | 2026-05-27 | For research purposes only, not investment advice<\/p>\n    <p style=\"margin-top:8px;\">Data: stockanalysis.com, NVIDIA Q1 FY2027, FRED, Damodaran Online<\/p>\n  <\/div>\n<\/footer>\n\n<script>\n\/\/ ========== DATA ==========\nconst DATA = {\n  historical: {\n    rev: [16.7, 26.9, 27.0, 60.9, 130.5],\n    gp: [10.8, 17.5, 15.4, 44.3, 97.9],\n    ebit: [6.2, 10.0, 5.6, 32.97, 81.5],\n    gm: [64.9, 64.9, 56.9, 72.7, 75.0],\n    ebitMargin: [37.3, 37.3, 20.7, 54.1, 62.4],\n  },\n  scenarios: {\n    bear: {\n      rev: [146.2, 160.8, 173.6, 184.1, 193.3],\n      ufcf: [74.7, 81.1, 86.3, 90.2, 93.3],\n      ebitMargin: [61.5, 60.8, 60.1, 59.4, 58.7],\n      fcfMargin: [51.1, 50.4, 49.7, 49.0, 48.3],\n      price: 35.62, upside: -83.4, ev: 937.9,\n      sumPV: 324.1, pvTV: 613.8,\n    },\n    base: {\n      rev: [182.7, 241.2, 301.4, 355.7, 398.4],\n      ufcf: [99.0, 131.0, 164.4, 193.3, 215.8],\n      ebitMargin: [65.3, 65.6, 65.9, 65.7, 65.5],\n      fcfMargin: [54.2, 54.3, 54.5, 54.3, 54.2],\n      price: 99.89, upside: -53.5, ev: 2499.9,\n      sumPV: 609.0, pvTV: 1890.9,\n    },\n    bull: {\n      rev: [202.3, 293.3, 395.9, 506.8, 608.2],\n      ufcf: [113.4, 165.0, 223.6, 284.5, 340.1],\n      ebitMargin: [67.0, 67.3, 67.6, 67.3, 67.1],\n      fcfMargin: [56.1, 56.3, 56.5, 56.1, 55.9],\n      price: 193.05, upside: -10.2, ev: 4764.0,\n      sumPV: 863.8, pvTV: 3900.2,\n    }\n  },\n  sensitivity1: {\n    wacc: [8.5, 9.5, 10.5, 11.5, 12.5],\n    tg: [2.0, 2.5, 3.0, 3.5, 4.0],\n    data: [\n      [259.72, 323.79, 422.41, 592.98, 964.50],\n      [155.18, 184.10, 229.07, 304.45, 443.64],\n      [104.84, 120.54, 142.48, 176.78, 237.40],\n      [76.44, 85.63, 98.10, 115.59, 142.35],\n      [58.52, 64.22, 71.62, 81.61, 95.12],\n    ]\n  },\n  sensitivity2: {\n    cagr: [20, 25, 30, 35, 40],\n    em: [50, 55, 60, 65, 70],\n    data: [\n      [50.65, 61.28, 74.36, 91.83, 116.79],\n      [62.15, 77.50, 98.06, 127.52, 173.01],\n      [75.57, 97.09, 128.18, 174.60, 254.15],\n      [91.21, 121.00, 166.06, 237.89, 370.94],\n      [109.38, 149.98, 214.14, 321.81, 531.28],\n    ]\n  },\n  sensitivity3: {\n    beta: [1.50, 1.75, 2.00, 2.25, 2.50],\n    rf: [3.5, 4.0, 4.5, 5.0, 5.5],\n    data: [\n      [164.46, 152.26, 142.48, 134.31, 127.31],\n      [144.01, 131.98, 122.45, 114.52, 107.71],\n      [127.45, 115.91, 106.75, 99.18, 92.67],\n      [113.88, 102.99, 94.32, 87.19, 81.03],\n      [102.65, 92.50, 84.30, 77.65, 71.90],\n    ]\n  }\n};\n\nconst COLORS = { bear: '#ef4444', base: '#3b82f6', bull: '#22c55e' };\nconst YEARS_HIST = ['FY2021','FY2022','FY2023','FY2024','FY2025'];\nconst YEARS_FORE = ['FY2026E','FY2027E','FY2028E','FY2029E','FY2030E'];\n\n\/\/ ========== CHARTS ==========\nconst isMobile = window.innerWidth <= 768;\nconst chartTheme = {\n  textStyle: { color: '#94a3b8', fontFamily: '-apple-system, BlinkMacSystemFont, sans-serif' },\n  legend: { textStyle: { color: '#94a3b8' } },\n};\nconst dataZoomMobile = isMobile ? [{\n  type: 'inside', xAxisIndex: 0,\n  filterMode: 'none', zoomOnMouseWheel: false,\n  moveOnMouseMove: true, moveOnMouseWheel: false,\n}] : [];\n\n\/\/ Chart 1: Historical Revenue &#038; Margins\nconst chartRevenue = echarts.init(document.getElementById('chart-revenue'));\nchartRevenue.setOption({\n  ...chartTheme,\n  tooltip: { trigger: 'axis', backgroundColor: '#1a1f2e', borderColor: '#2a3042', textStyle: { color: '#e2e8f0' } },\n  legend: { data: ['Revenue ($B)', 'Gross Margin', 'EBIT Margin'], top: 0 },\n  grid: { top: 50, right: isMobile ? 50 : 60, bottom: isMobile ? 50 : 40, left: isMobile ? 55 : 70 },\n  dataZoom: dataZoomMobile,\n  xAxis: { type: 'category', data: YEARS_HIST, axisLine: { lineStyle: { color: '#2a3042' } }, axisLabel: { color: '#94a3b8', fontSize: isMobile ? 11 : 12 } },\n  yAxis: [\n    { type: 'value', name: '$B', axisLabel: { color: '#94a3b8' }, splitLine: { lineStyle: { color: '#1e2535' } }, axisLine: { lineStyle: { color: '#2a3042' } } },\n    { type: 'value', name: '%', axisLabel: { color: '#94a3b8', formatter: '{value}%' }, splitLine: { show: false }, axisLine: { lineStyle: { color: '#2a3042' } } },\n  ],\n  series: [\n    { name: 'Revenue ($B)', type: 'bar', data: DATA.historical.rev, itemStyle: { color: '#76b900', borderRadius: [4,4,0,0] }, barWidth: 36 },\n    { name: 'Gross Margin', type: 'line', yAxisIndex: 1, data: DATA.historical.gm, smooth: true, lineStyle: { color: '#3b82f6', width: 3 }, itemStyle: { color: '#3b82f6' }, symbolSize: 8 },\n    { name: 'EBIT Margin', type: 'line', yAxisIndex: 1, data: DATA.historical.ebitMargin, smooth: true, lineStyle: { color: '#f59e0b', width: 3 }, itemStyle: { color: '#f59e0b' }, symbolSize: 8 },\n  ]\n});\n\n\/\/ Chart 2: Scenario Comparison (Bar)\nconst chartScenarios = echarts.init(document.getElementById('chart-scenarios'));\nchartScenarios.setOption({\n  ...chartTheme,\n  tooltip: { trigger: 'axis', backgroundColor: '#1a1f2e', borderColor: '#2a3042', textStyle: { color: '#e2e8f0' } },\n  legend: { data: ['Implied Price', 'Current Price'], top: 0 },\n  grid: { top: 50, right: isMobile ? 100 : 40, bottom: 40, left: isMobile ? 90 : 100 },\n  yAxis: { type: 'category', data: ['Bull Case', 'Base Case', 'Bear Case'], axisLine: { lineStyle: { color: '#2a3042' } }, axisLabel: { color: '#e2e8f0', fontSize: isMobile ? 12 : 14, fontWeight: 600 } },\n  xAxis: { type: 'value', name: '$', axisLabel: { color: '#94a3b8', formatter: '${value}' }, splitLine: { lineStyle: { color: '#1e2535' } }, axisLine: { lineStyle: { color: '#2a3042' } } },\n  series: [\n    {\n      name: 'Implied Price', type: 'bar',\n      data: [\n        { value: 193.05, itemStyle: { color: '#22c55e' } },\n        { value: 99.89, itemStyle: { color: '#3b82f6' } },\n        { value: 35.62, itemStyle: { color: '#ef4444' } },\n      ],\n      barWidth: 32, borderRadius: [0, 6, 6, 0],\n      label: { show: true, position: 'right', formatter: '${c}', color: '#e2e8f0', fontWeight: 700, fontSize: 16 },\n    },\n    {\n      name: 'Current Price', type: 'bar',\n      data: [\n        { value: 214.86, itemStyle: { color: 'rgba(148,163,184,0.3)' } },\n        { value: 214.86, itemStyle: { color: 'rgba(148,163,184,0.3)' } },\n        { value: 214.86, itemStyle: { color: 'rgba(148,163,184,0.3)' } },\n      ],\n      barWidth: 16, borderRadius: [0, 6, 6, 0],\n      label: { show: true, position: 'right', formatter: '${c}', color: '#64748b', fontSize: 11 },\n    }\n  ]\n});\n\n\/\/ Chart 3: Revenue Projections (3 scenarios)\nconst chartProj = echarts.init(document.getElementById('chart-projections'));\nfunction updateProjections() {\n  const allRev = [...DATA.historical.rev, ...DATA.scenarios.base.rev, ...DATA.scenarios.bear.rev.slice(-1)];\n  const allYears = [...YEARS_HIST, ...YEARS_FORE];\n  chartProj.setOption({\n    ...chartTheme,\n    tooltip: { trigger: 'axis', backgroundColor: '#1a1f2e', borderColor: '#2a3042', textStyle: { color: '#e2e8f0' }, formatter: function(p) { let s = p[0].axisValue + '<br\/>'; p.forEach(item => { s += `<span style=\"color:${item.color}\">\u25cf<\/span> ${item.seriesName}: <b>$${item.value.toFixed(1)}B<\/b><br\/>`; }); return s; } },\n    legend: { data: ['Historical', 'Bear', 'Base', 'Bull'], top: 0 },\n    grid: { top: 50, right: isMobile ? 20 : 40, bottom: isMobile ? 60 : 40, left: isMobile ? 50 : 70 },\n    dataZoom: dataZoomMobile,\n    xAxis: { type: 'category', data: allYears, axisLine: { lineStyle: { color: '#2a3042' } }, axisLabel: { color: '#94a3b8', rotate: isMobile ? 45 : 30, fontSize: isMobile ? 10 : 12 } },\n    yAxis: { type: 'value', name: '$B', axisLabel: { color: '#94a3b8' }, splitLine: { lineStyle: { color: '#1e2535' } }, axisLine: { lineStyle: { color: '#2a3042' } } },\n    series: [\n      { name: 'Historical', type: 'bar', data: [...DATA.historical.rev, null, null, null, null, null, null, null, null, null], itemStyle: { color: '#76b900', borderRadius: [4,4,0,0] }, barWidth: 28 },\n      { name: 'Bear', type: 'line', data: [null, null, null, null, DATA.historical.rev[4], ...DATA.scenarios.bear.rev], smooth: true, lineStyle: { color: '#ef4444', width: 2.5, type: 'dashed' }, itemStyle: { color: '#ef4444' }, symbolSize: 6 },\n      { name: 'Base', type: 'line', data: [null, null, null, null, DATA.historical.rev[4], ...DATA.scenarios.base.rev], smooth: true, lineStyle: { color: '#3b82f6', width: 3 }, itemStyle: { color: '#3b82f6' }, symbolSize: 8, areaStyle: { color: { type: 'linear', x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: 'rgba(59,130,246,0.15)' }, { offset: 1, color: 'rgba(59,130,246,0)' }] } } },\n      { name: 'Bull', type: 'line', data: [null, null, null, null, DATA.historical.rev[4], ...DATA.scenarios.bull.rev], smooth: true, lineStyle: { color: '#22c55e', width: 2.5, type: 'dashed' }, itemStyle: { color: '#22c55e' }, symbolSize: 6 },\n    ]\n  });\n}\nupdateProjections();\n\n\/\/ Chart 4: UFCF Projections\nconst chartUFCF = echarts.init(document.getElementById('chart-ufcf'));\nchartUFCF.setOption({\n  ...chartTheme,\n  tooltip: { trigger: 'axis', backgroundColor: '#1a1f2e', borderColor: '#2a3042', textStyle: { color: '#e2e8f0' }, formatter: function(p) { let s = p[0].axisValue + '<br\/>'; p.forEach(item => { s += `<span style=\"color:${item.color}\">\u25cf<\/span> ${item.seriesName}: <b>$${item.value.toFixed(1)}B<\/b><br\/>`; }); return s; } },\n  legend: { data: ['Bear', 'Base', 'Bull'], top: 0 },\n  grid: { top: 50, right: isMobile ? 20 : 40, bottom: isMobile ? 50 : 40, left: isMobile ? 50 : 70 },\n  dataZoom: dataZoomMobile,\n  xAxis: { type: 'category', data: YEARS_FORE, axisLine: { lineStyle: { color: '#2a3042' } }, axisLabel: { color: '#94a3b8', fontSize: isMobile ? 11 : 12 } },\n  yAxis: { type: 'value', name: '$B', axisLabel: { color: '#94a3b8' }, splitLine: { lineStyle: { color: '#1e2535' } }, axisLine: { lineStyle: { color: '#2a3042' } } },\n  series: [\n    { name: 'Bear', type: 'bar', data: DATA.scenarios.bear.ufcf, itemStyle: { color: '#ef4444', borderRadius: [4,4,0,0] }, barGap: '10%', barWidth: 20 },\n    { name: 'Base', type: 'bar', data: DATA.scenarios.base.ufcf, itemStyle: { color: '#3b82f6', borderRadius: [4,4,0,0] }, barWidth: 20 },\n    { name: 'Bull', type: 'bar', data: DATA.scenarios.bull.ufcf, itemStyle: { color: '#22c55e', borderRadius: [4,4,0,0] }, barWidth: 20 },\n  ]\n});\n\n\/\/ Chart 5: Valuation Bridge (Pie)\nconst chartBridge = echarts.init(document.getElementById('chart-bridge'));\nchartBridge.setOption({\n  ...chartTheme,\n  tooltip: { trigger: 'item', backgroundColor: '#1a1f2e', borderColor: '#2a3042', textStyle: { color: '#e2e8f0' }, formatter: '{b}: ${c}B ({d}%)' },\n  series: [{\n    type: 'pie', radius: ['45%', '70%'], center: ['50%', '50%'],\n    label: { color: '#e2e8f0', fontSize: 13, formatter: '{b}\\n${c}B ({d}%)' },\n    data: [\n      { value: 609, name: 'PV of FCFs', itemStyle: { color: '#76b900' } },\n      { value: 1891, name: 'PV of Terminal', itemStyle: { color: '#3b82f6' } },\n      { value: -72, name: 'Net Cash', itemStyle: { color: '#22c55e' } },\n    ],\n    emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0,0,0,0.5)' } },\n  }]\n});\n\n\/\/ ========== HEATMAPS ==========\nfunction buildHeatmap(tableId, rowData, colData, values, rowLabel, colLabel) {\n  const table = document.getElementById(tableId);\n  let html = '<thead><tr><th>' + rowLabel + '<\/th>';\n  colData.forEach(c => html += '<th>' + c + '<\/th>');\n  html += '<\/tr><\/thead><tbody>';\n  const allVals = values.flat();\n  const min = Math.min(...allVals);\n  const max = Math.max(...allVals);\n  const range = max - min;\n\n  for (let i = 0; i < rowData.length; i++) {\n    html += '<tr><th>' + rowData[i] + '<\/th>';\n    for (let j = 0; j < colData.length; j++) {\n      const v = values[i][j];\n      const ratio = range > 0 ? (v - min) \/ range : 0.5;\n      \/\/ Green gradient for higher values\n      const r = Math.round(30 + (1-ratio) * 20);\n      const g = Math.round(60 + ratio * 130);\n      const b = Math.round(40 + (1-ratio) * 10);\n      const bgColor = `rgb(${r},${g},${b})`;\n      const textColor = ratio > 0.5 ? '#e2e8f0' : '#94a3b8';\n      const currentPrice = 214.86;\n      const isClose = Math.abs(v - currentPrice) < 15;\n      const border = isClose ? 'border: 2px solid var(--gold);' : '';\n      html += `<td style=\"background:${bgColor};color:${textColor};${border}\">$${v.toFixed(2)}<\/td>`;\n    }\n    html += '<\/tr>';\n  }\n  html += '<\/tbody>';\n  table.innerHTML = html;\n}\n\nbuildHeatmap('heatmap1',\n  ['8.5%', '9.5%', '10.5%', '11.5%', '12.5%'],\n  ['2.0%', '2.5%', '3.0%', '3.5%', '4.0%'],\n  DATA.sensitivity1.data,\n  'WACC \\\\ TG', 'TG'\n);\n\nbuildHeatmap('heatmap2',\n  ['20%', '25%', '30%', '35%', '40%'],\n  ['50%', '55%', '60%', '65%', '70%'],\n  DATA.sensitivity2.data,\n  'CAGR \\\\ EBIT', 'EBIT Margin'\n);\n\nbuildHeatmap('heatmap3',\n  ['1.50', '1.75', '2.00', '2.25', '2.50'],\n  ['3.5%', '4.0%', '4.5%', '5.0%', '5.5%'],\n  DATA.sensitivity3.data,\n  'Beta \\\\ Rf', 'Risk-Free'\n);\n\n\/\/ ========== INTERACTIONS ==========\nfunction selectScenario(scenario) {\n  document.querySelectorAll('.scenario-card').forEach(c => c.classList.remove('active'));\n  document.querySelector(`.scenario-card.${scenario}`).classList.add('active');\n}\n\n\/\/ ========== SCROLL ANIMATIONS ==========\nconst observer = new IntersectionObserver((entries) => {\n  entries.forEach(entry => {\n    if (entry.isIntersecting) {\n      entry.target.classList.add('visible');\n    }\n  });\n}, { threshold: 0.1 });\n\ndocument.querySelectorAll('.fade-in').forEach(el => observer.observe(el));\n\n\/\/ ========== RESIZE ==========\nwindow.addEventListener('resize', () => {\n  chartRevenue.resize();\n  chartScenarios.resize();\n  chartProj.resize();\n  chartUFCF.resize();\n  chartBridge.resize();\n});\n\n\/\/ ========== MOBILE MENU ==========\nfunction toggleMenu() {\n  const nav = document.getElementById('navLinks');\n  const btn = document.getElementById('hamburger');\n  nav.classList.toggle('open');\n  btn.classList.toggle('active');\n}\nfunction closeMenu() {\n  document.getElementById('navLinks').classList.remove('open');\n  document.getElementById('hamburger').classList.remove('active');\n}\n\n\/\/ ========== TABLE SCROLL HINT AUTO-HIDE ==========\ndocument.querySelectorAll('.table-scroll-wrapper').forEach(wrap => {\n  const check = () => {\n    if (wrap.scrollWidth <= wrap.clientWidth) {\n      const hint = wrap.querySelector('.scroll-hint');\n      if (hint) hint.style.display = 'none';\n    }\n  };\n  check();\n  window.addEventListener('resize', check);\n});\n<\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u62a5\u544a\u57fa\u4e8e\u73b0\u91d1\u6d41\u6298\u73b0\u6cd5\uff08DCF\uff09\uff0c\u6784\u5efa\u4e86 Bear \/ Base \/ Bull \u4e09\u79cd\u60c5\u666f\u6a21\u578b\uff0c\u8bc4\u4f30\u5176\u5185\u5728\u4ef7\u503c\u3002Base Case \u5047\u8bbe\u672a\u67655\u5e74\u8425\u6536 CAGR \u7ea6 25%\uff0c\u6bdb\u5229\u7387\u7ef4\u6301\u5728 74-75% \u7684\u9ad8\u6c34\u5e73\u3002<\/p>\n","protected":false},"author":1,"featured_media":962,"comment_status":"closed","ping_status":"open","sticky":false,"template":"html-full-article","format":"standard","meta":{"footnotes":""},"categories":[27,18],"tags":[],"class_list":["post-957","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-27","category-18"],"_links":{"self":[{"href":"https:\/\/qubitledge.com\/index.php\/wp-json\/wp\/v2\/posts\/957","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qubitledge.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qubitledge.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qubitledge.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qubitledge.com\/index.php\/wp-json\/wp\/v2\/comments?post=957"}],"version-history":[{"count":4,"href":"https:\/\/qubitledge.com\/index.php\/wp-json\/wp\/v2\/posts\/957\/revisions"}],"predecessor-version":[{"id":969,"href":"https:\/\/qubitledge.com\/index.php\/wp-json\/wp\/v2\/posts\/957\/revisions\/969"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/qubitledge.com\/index.php\/wp-json\/wp\/v2\/media\/962"}],"wp:attachment":[{"href":"https:\/\/qubitledge.com\/index.php\/wp-json\/wp\/v2\/media?parent=957"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qubitledge.com\/index.php\/wp-json\/wp\/v2\/categories?post=957"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qubitledge.com\/index.php\/wp-json\/wp\/v2\/tags?post=957"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}