{"product_id":"perpetuity","title":"Perpetuity Calculator","description":"\u003cstyle\u003e\n.ppty-calculator {\n  --ink: #0f172a;\n  --muted: #475569;\n  --border: #e2e8f0;\n  --surface: #ffffff;\n  --tint: #f8fafc;\n  --primary: #1d4ed8;\n  --accent: #c2410c;\n  --accent-hover: #9a3412;\n  --chart-1: #1e40af;\n  --chart-2: #0d9488;\n  --chart-3: #7c3aed;\n  --chart-4: #be185d;\n  --chart-5: #334155;\n  width: 100%;\n  max-width: 1200px;\n  margin: 0 auto;\n  color: var(--ink);\n  background: var(--surface);\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  box-shadow: 0 1px 2px rgba(15,23,42,.06);\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n  font-size: 15px;\n  line-height: 1.55;\n  overflow-wrap: anywhere;\n  container-type: inline-size;\n  container-name: ppty-root;\n}\n.ppty-calculator,\n.ppty-calculator *,\n.ppty-calculator *::before,\n.ppty-calculator *::after {\n  box-sizing: border-box;\n}\n.ppty-calculator \u003e * {\n  min-width: 0;\n}\n.ppty-calculator .ppty-header {\n  display: grid;\n  gap: 12px;\n  padding: 24px;\n  border-bottom: 1px solid var(--border);\n  background: var(--tint);\n}\n.ppty-calculator .ppty-header-copy,\n.ppty-calculator .ppty-header-copy \u003e *,\n.ppty-calculator .ppty-summary-pills,\n.ppty-calculator .ppty-summary-pills \u003e *,\n.ppty-calculator .ppty-toolbar,\n.ppty-calculator .ppty-toolbar \u003e *,\n.ppty-calculator .ppty-workspace,\n.ppty-calculator .ppty-workspace \u003e *,\n.ppty-calculator .ppty-input-grid,\n.ppty-calculator .ppty-input-grid \u003e *,\n.ppty-calculator .ppty-results-grid,\n.ppty-calculator .ppty-results-grid \u003e *,\n.ppty-calculator .ppty-chart-cluster,\n.ppty-calculator .ppty-chart-cluster \u003e *,\n.ppty-calculator .ppty-legend,\n.ppty-calculator .ppty-legend \u003e *,\n.ppty-calculator .ppty-education-grid,\n.ppty-calculator .ppty-education-grid \u003e *,\n.ppty-calculator .ppty-main \u003e *,\n.ppty-calculator .ppty-panel \u003e *,\n.ppty-calculator .ppty-chart-card \u003e *,\n.ppty-calculator .ppty-table-card \u003e * {\n  min-width: 0;\n}\n.ppty-calculator .ppty-header h2 {\n  margin: 0;\n  font-size: 24px;\n  line-height: 1.25;\n  font-weight: 700;\n  letter-spacing: -.02em;\n}\n.ppty-calculator .ppty-header p {\n  margin: 4px 0 0;\n  max-width: 760px;\n  color: var(--muted);\n}\n.ppty-calculator .ppty-summary-pills {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n}\n.ppty-calculator .ppty-pill {\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  max-width: 100%;\n  padding: 6px 10px;\n  border: 1px solid var(--border);\n  border-radius: 999px;\n  background: var(--surface);\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 600;\n  line-height: 1.3;\n}\n.ppty-calculator .ppty-pill strong {\n  color: var(--ink);\n  font-variant-numeric: tabular-nums;\n}\n.ppty-calculator .ppty-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: 8px;\n  padding: 16px 24px;\n  border-bottom: 1px solid var(--border);\n}\n.ppty-calculator .ppty-button {\n  min-height: 44px;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  padding: 10px 16px;\n  background: var(--surface);\n  color: var(--ink);\n  font: inherit;\n  font-weight: 650;\n  line-height: 1.2;\n  cursor: pointer;\n  transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .15s ease;\n}\n.ppty-calculator .ppty-button:hover {\n  border-color: #94a3b8;\n  box-shadow: 0 2px 5px rgba(15,23,42,.10);\n}\n.ppty-calculator .ppty-button:active {\n  transform: translateY(1px);\n}\n.ppty-calculator .ppty-button:focus-visible,\n.ppty-calculator input:focus-visible,\n.ppty-calculator select:focus-visible,\n.ppty-calculator summary:focus-visible,\n.ppty-calculator a:focus-visible {\n  outline: 3px solid rgba(29,78,216,.35);\n  outline-offset: 2px;\n}\n.ppty-calculator .ppty-download {\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  padding: 12px 18px;\n  border-color: var(--accent);\n  background: var(--accent);\n  color: #ffffff;\n  white-space: nowrap;\n}\n.ppty-calculator .ppty-download:hover,\n.ppty-calculator .ppty-download:active {\n  border-color: var(--accent-hover);\n  background: var(--accent-hover);\n  color: #ffffff;\n}\n.ppty-calculator .ppty-download svg {\n  width: 18px;\n  height: 18px;\n  flex: 0 0 auto;\n  fill: none;\n  stroke: currentColor;\n  stroke-width: 2;\n  stroke-linecap: round;\n  stroke-linejoin: round;\n}\n.ppty-calculator .ppty-main {\n  display: grid;\n  gap: 24px;\n  padding: 24px;\n}\n.ppty-calculator .ppty-workspace {\n  display: grid;\n  gap: 24px;\n  align-items: start;\n}\n.ppty-calculator .ppty-panel,\n.ppty-calculator .ppty-chart-card,\n.ppty-calculator .ppty-table-card,\n.ppty-calculator .ppty-education {\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  background: var(--surface);\n  box-shadow: 0 1px 2px rgba(15,23,42,.04);\n}\n.ppty-calculator .ppty-panel {\n  padding: 20px;\n}\n.ppty-calculator .ppty-panel-title,\n.ppty-calculator .ppty-card-title,\n.ppty-calculator .ppty-education h2 {\n  margin: 0;\n  font-size: 18px;\n  line-height: 1.35;\n  font-weight: 650;\n  letter-spacing: -.01em;\n}\n.ppty-calculator .ppty-panel-intro,\n.ppty-calculator .ppty-card-intro {\n  margin: 6px 0 0;\n  color: var(--muted);\n  font-size: 14px;\n}\n.ppty-calculator .ppty-input-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));\n  gap: 16px;\n  margin-top: 20px;\n}\n.ppty-calculator .ppty-field {\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n  min-width: 0;\n}\n.ppty-calculator .ppty-field label {\n  color: var(--ink);\n  font-size: 14px;\n  font-weight: 600;\n}\n.ppty-calculator .ppty-field input,\n.ppty-calculator .ppty-field select {\n  width: 100%;\n  min-width: 0;\n  min-height: 44px;\n  border: 1px solid #cbd5e1;\n  border-radius: 6px;\n  padding: 10px 12px;\n  background: var(--surface);\n  color: var(--ink);\n  font: inherit;\n  font-size: 15px;\n  font-variant-numeric: tabular-nums;\n}\n.ppty-calculator .ppty-field input[readonly] {\n  border-color: #bfdbfe;\n  background: #eff6ff;\n  color: #1e3a8a;\n  font-weight: 700;\n  cursor: default;\n}\n.ppty-calculator .ppty-helper,\n.ppty-calculator .ppty-error {\n  min-height: 40px;\n  margin: 0;\n  font-size: 13px;\n  font-weight: 500;\n  line-height: 1.45;\n}\n.ppty-calculator .ppty-helper {\n  color: var(--muted);\n}\n.ppty-calculator .ppty-error {\n  display: none;\n  color: #b91c1c;\n}\n.ppty-calculator .ppty-field.ppty-has-error input,\n.ppty-calculator .ppty-field.ppty-has-error select {\n  border-color: #b91c1c;\n}\n.ppty-calculator .ppty-field.ppty-has-error .ppty-helper {\n  display: none;\n}\n.ppty-calculator .ppty-field.ppty-has-error .ppty-error {\n  display: block;\n}\n.ppty-calculator .ppty-formula-strip {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: 8px 12px;\n  margin-top: 16px;\n  padding: 12px;\n  border: 1px solid #bfdbfe;\n  border-radius: 6px;\n  background: #eff6ff;\n  color: #1e3a8a;\n  font-size: 13px;\n  font-weight: 600;\n}\n.ppty-calculator .ppty-formula-strip code {\n  padding: 2px 6px;\n  border-radius: 4px;\n  background: rgba(255,255,255,.75);\n  color: #172554;\n  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n  font-size: 13px;\n}\n.ppty-calculator .ppty-results-panel {\n  display: grid;\n  gap: 16px;\n}\n.ppty-calculator .ppty-primary-result {\n  padding: 20px;\n  border: 1px solid #bfdbfe;\n  border-radius: 8px;\n  background: #eff6ff;\n}\n.ppty-calculator .ppty-result-label {\n  margin: 0;\n  color: #1e3a8a;\n  font-size: 13px;\n  font-weight: 650;\n  text-transform: uppercase;\n  letter-spacing: .05em;\n}\n.ppty-calculator .ppty-result-value {\n  margin: 6px 0 0;\n  color: #172554;\n  font-size: 30px;\n  line-height: 1.15;\n  font-weight: 700;\n  font-variant-numeric: tabular-nums;\n  overflow-wrap: anywhere;\n}\n.ppty-calculator .ppty-result-note {\n  margin: 8px 0 0;\n  color: #334155;\n  font-size: 13px;\n}\n.ppty-calculator .ppty-results-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr));\n  gap: 12px;\n}\n.ppty-calculator .ppty-metric {\n  padding: 14px;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  background: var(--tint);\n}\n.ppty-calculator .ppty-metric span {\n  display: block;\n  color: var(--muted);\n  font-size: 13px;\n  font-weight: 600;\n}\n.ppty-calculator .ppty-metric strong {\n  display: block;\n  margin-top: 4px;\n  color: var(--ink);\n  font-size: 20px;\n  line-height: 1.25;\n  font-weight: 700;\n  font-variant-numeric: tabular-nums;\n  overflow-wrap: anywhere;\n}\n.ppty-calculator .ppty-status {\n  margin: 0;\n  padding: 12px;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  background: var(--tint);\n  color: var(--muted);\n  font-size: 13px;\n}\n.ppty-calculator .ppty-status.ppty-status-error {\n  border-color: #fecaca;\n  background: #fef2f2;\n  color: #991b1b;\n}\n.ppty-calculator .ppty-chart-card,\n.ppty-calculator .ppty-table-card {\n  padding: 20px;\n}\n.ppty-calculator .ppty-chart-cluster {\n  display: grid;\n  gap: 20px;\n  align-items: center;\n  justify-content: center;\n  margin-top: 20px;\n}\n.ppty-calculator .ppty-plot-wrap {\n  width: 100%;\n  min-width: 0;\n  max-width: 100%;\n  overflow: clip;\n}\n.ppty-calculator .ppty-chart-svg {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  min-width: 0;\n  height: auto;\n  min-height: 260px;\n  overflow: visible;\n}\n.ppty-calculator .ppty-chart-svg text {\n  fill: var(--muted);\n  font-family: inherit;\n  font-size: 13px;\n}\n.ppty-calculator .ppty-chart-svg .ppty-axis-line {\n  stroke: #94a3b8;\n  stroke-width: 1;\n}\n.ppty-calculator .ppty-chart-svg .ppty-grid-line {\n  stroke: #e2e8f0;\n  stroke-width: 1;\n}\n.ppty-calculator .ppty-chart-svg .ppty-series-line {\n  fill: none;\n  stroke-width: 3;\n  stroke-linecap: round;\n  stroke-linejoin: round;\n}\n.ppty-calculator .ppty-chart-svg .ppty-area-fill {\n  opacity: .10;\n}\n.ppty-calculator .ppty-chart-svg .ppty-series-dot {\n  stroke: #ffffff;\n  stroke-width: 2;\n}\n.ppty-calculator .ppty-legend {\n  display: grid;\n  align-content: center;\n  gap: 10px;\n  max-width: 320px;\n  justify-self: center;\n}\n.ppty-calculator .ppty-legend-row {\n  display: grid;\n  grid-template-columns: 12px minmax(0, auto) auto;\n  align-items: center;\n  justify-content: start;\n  gap: 8px 12px;\n  color: var(--ink);\n  font-size: 13px;\n  font-weight: 600;\n}\n.ppty-calculator .ppty-swatch {\n  width: 12px;\n  height: 12px;\n  border-radius: 3px;\n}\n.ppty-calculator .ppty-legend-value {\n  color: var(--muted);\n  font-variant-numeric: tabular-nums;\n  white-space: nowrap;\n}\n.ppty-calculator .ppty-chart-caption,\n.ppty-calculator .ppty-table-note {\n  margin-top: 16px;\n  padding: 10px 12px;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  background: var(--tint);\n  color: var(--muted);\n  font-size: 13px;\n  line-height: 1.5;\n}\n.ppty-calculator .ppty-chart-empty {\n  display: none;\n  margin-top: 16px;\n  padding: 16px;\n  border: 1px dashed #cbd5e1;\n  border-radius: 6px;\n  background: var(--tint);\n  color: var(--muted);\n  text-align: center;\n  font-size: 13px;\n}\n.ppty-calculator .ppty-safe-stack .ppty-chart-cluster {\n  grid-template-columns: minmax(0, 1fr) !important;\n  gap: 24px !important;\n}\n.ppty-calculator .ppty-safe-stack .ppty-legend {\n  margin-top: 0;\n  justify-self: center;\n}\n.ppty-calculator .ppty-safe-stack .ppty-chart-caption {\n  margin-top: 20px;\n}\n.ppty-calculator .ppty-table-overflow {\n  width: 100%;\n  min-width: 0;\n  max-width: 100%;\n  margin-top: 20px;\n  overflow-x: auto;\n  border: 1px solid var(--border);\n  border-radius: 6px;\n  background: var(--surface);\n}\n.ppty-calculator table {\n  width: 100%;\n  min-width: 660px;\n  border-collapse: collapse;\n  font-size: 14px;\n  font-variant-numeric: tabular-nums;\n}\n.ppty-calculator th,\n.ppty-calculator td {\n  padding: 11px 12px;\n  border-bottom: 1px solid var(--border);\n  text-align: right;\n  vertical-align: middle;\n  white-space: nowrap;\n}\n.ppty-calculator th:first-child,\n.ppty-calculator td:first-child {\n  text-align: left;\n}\n.ppty-calculator th {\n  background: #172554;\n  color: #ffffff;\n  font-size: 13px;\n  font-weight: 700;\n}\n.ppty-calculator tbody tr:last-child td {\n  border-bottom: 0;\n}\n.ppty-calculator tbody tr:hover td {\n  background: #f8fafc;\n}\n.ppty-calculator .ppty-current-row td {\n  background: #eff6ff;\n  color: #1e3a8a;\n  font-weight: 700;\n}\n.ppty-calculator .ppty-safe-table-stack .ppty-table-overflow {\n  height: auto !important;\n  max-height: none !important;\n}\n.ppty-calculator .ppty-safe-table-stack .ppty-table-note {\n  margin-top: 20px;\n}\n.ppty-calculator .ppty-education {\n  padding: 24px;\n}\n.ppty-calculator .ppty-education-grid {\n  display: grid;\n  gap: 24px;\n  margin-top: 20px;\n}\n.ppty-calculator .ppty-education section {\n  min-width: 0;\n}\n.ppty-calculator .ppty-education h3 {\n  margin: 0 0 8px;\n  color: var(--ink);\n  font-size: 16px;\n  line-height: 1.4;\n  font-weight: 650;\n}\n.ppty-calculator .ppty-education p {\n  margin: 0 0 12px;\n  color: #334155;\n}\n.ppty-calculator .ppty-education p:last-child {\n  margin-bottom: 0;\n}\n.ppty-calculator .ppty-education ul {\n  margin: 0;\n  padding-left: 20px;\n  color: #334155;\n}\n.ppty-calculator .ppty-education li + li {\n  margin-top: 8px;\n}\n.ppty-calculator .ppty-education a {\n  color: var(--primary);\n  font-weight: 600;\n  text-underline-offset: 2px;\n}\n.ppty-calculator .ppty-education a:hover {\n  color: #1e40af;\n}\n.ppty-calculator .ppty-sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border: 0;\n}\n@container ppty-root (min-width: 640px) {\n  .ppty-calculator .ppty-chart-cluster {\n    grid-template-columns: minmax(0, 760px) minmax(180px, auto);\n    gap: 24px;\n  }\n  .ppty-calculator .ppty-education-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n}\n@container ppty-root (min-width: 900px) {\n  .ppty-calculator .ppty-header {\n    grid-template-columns: minmax(0, 1fr) auto;\n    align-items: center;\n  }\n  .ppty-calculator .ppty-summary-pills {\n    justify-content: flex-end;\n  }\n  .ppty-calculator .ppty-workspace {\n    grid-template-columns: minmax(0, 1.08fr) minmax(320px, .92fr);\n  }\n}\n@container ppty-root (max-width: 639px) {\n  .ppty-calculator .ppty-header,\n  .ppty-calculator .ppty-toolbar,\n  .ppty-calculator .ppty-main,\n  .ppty-calculator .ppty-education {\n    padding-left: 16px;\n    padding-right: 16px;\n  }\n  .ppty-calculator .ppty-toolbar {\n    align-items: stretch;\n  }\n  .ppty-calculator .ppty-button {\n    justify-content: center;\n  }\n  .ppty-calculator .ppty-download {\n    flex: 1 1 180px;\n  }\n  .ppty-calculator .ppty-chart-cluster {\n    grid-template-columns: minmax(0, 1fr);\n    gap: 16px;\n  }\n  .ppty-calculator .ppty-chart-svg {\n    min-height: 250px;\n  }\n  .ppty-calculator .ppty-legend {\n    width: 100%;\n    max-width: 100%;\n  }\n  .ppty-calculator .ppty-legend-row {\n    grid-template-columns: 12px minmax(0, auto) auto;\n  }\n  .ppty-calculator .ppty-chart-caption,\n  .ppty-calculator .ppty-table-note {\n    margin-top: 12px;\n  }\n}\n@media (max-width: 899px) {\n  .ppty-calculator .ppty-workspace {\n    grid-template-columns: minmax(0, 1fr);\n  }\n}\n@media (prefers-reduced-motion: reduce) {\n  .ppty-calculator .ppty-button {\n    transition: none;\n  }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"ppty-calculator\" data-calculator-root\u003e\n  \u003cheader class=\"ppty-header\"\u003e\n    \u003cdiv class=\"ppty-header-copy\"\u003e\n      \u003ch2\u003ePerpetuity Calculator\u003c\/h2\u003e\n      \u003cp\u003eValue a level or growing stream of payments that continues indefinitely, or solve backward for the payment, discount rate, or growth rate.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ppty-summary-pills\" aria-label=\"Live calculator summary\"\u003e\n      \u003cspan class=\"ppty-pill\"\u003eResult \u003cstrong class=\"ppty-pill-result\"\u003e$166.67\u003c\/strong\u003e\u003c\/span\u003e\n      \u003cspan class=\"ppty-pill\"\u003eRate spread \u003cstrong class=\"ppty-pill-spread\"\u003e6.00%\u003c\/strong\u003e\u003c\/span\u003e\n      \u003cspan class=\"ppty-pill\"\u003eStatus \u003cstrong class=\"ppty-pill-status\"\u003eReady\u003c\/strong\u003e\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/header\u003e\n\n  \u003cdiv class=\"ppty-toolbar\" role=\"toolbar\" aria-label=\"Calculator actions\"\u003e\n    \u003cbutton class=\"ppty-button ppty-download\" type=\"button\"\u003e\n      \u003csvg viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath d=\"M12 3v12\"\u003e\u003c\/path\u003e\u003cpath d=\"m7 10 5 5 5-5\"\u003e\u003c\/path\u003e\u003cpath d=\"M5 21h14\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003cspan\u003eDownload Excel\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cbutton class=\"ppty-button ppty-reset\" type=\"button\"\u003eReset\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cmain class=\"ppty-main\"\u003e\n    \u003cdiv class=\"ppty-workspace\"\u003e\n      \u003csection class=\"ppty-panel ppty-inputs-panel\" aria-labelledby=\"ppty-inputs-title\"\u003e\n        \u003ch3 class=\"ppty-panel-title\" id=\"ppty-inputs-title\"\u003eAssumptions\u003c\/h3\u003e\n        \u003cp class=\"ppty-panel-intro\"\u003eUse rates for the same period as the payment. The standard formula assumes the first payment arrives one period from today.\u003c\/p\u003e\n\n        \u003cdiv class=\"ppty-input-grid\"\u003e\n          \u003cdiv class=\"ppty-field\"\u003e\n            \u003clabel for=\"ppty-solve-for\"\u003eSolve for\u003c\/label\u003e\n            \u003cselect id=\"ppty-solve-for\" class=\"ppty-solve-for\"\u003e\n              \u003coption value=\"pv\"\u003ePresent value\u003c\/option\u003e\n              \u003coption value=\"payment\"\u003ePayment\u003c\/option\u003e\n              \u003coption value=\"discount\"\u003eDiscount rate\u003c\/option\u003e\n              \u003coption value=\"growth\"\u003eGrowth rate\u003c\/option\u003e\n            \u003c\/select\u003e\n            \u003cp class=\"ppty-helper\"\u003eChoose which variable the calculator should derive.\u003c\/p\u003e\n            \u003cp class=\"ppty-error\" aria-live=\"polite\"\u003e\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"ppty-field\" data-field=\"payment\"\u003e\n            \u003clabel for=\"ppty-payment\"\u003ePayment per period\u003c\/label\u003e\n            \u003cinput id=\"ppty-payment\" class=\"ppty-input ppty-currency-input\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" value=\"$10.00\"\u003e\n            \u003cp class=\"ppty-helper\"\u003eNext payment or dividend received at the end of the period.\u003c\/p\u003e\n            \u003cp class=\"ppty-error\" aria-live=\"polite\"\u003e\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"ppty-field\" data-field=\"discount\"\u003e\n            \u003clabel for=\"ppty-discount\"\u003eDiscount rate\u003c\/label\u003e\n            \u003cinput id=\"ppty-discount\" class=\"ppty-input ppty-percent-input\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" value=\"8.00%\"\u003e\n            \u003cp class=\"ppty-helper\"\u003eRequired return per period; it must exceed growth for a finite value.\u003c\/p\u003e\n            \u003cp class=\"ppty-error\" aria-live=\"polite\"\u003e\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"ppty-field\" data-field=\"growth\"\u003e\n            \u003clabel for=\"ppty-growth\"\u003eGrowth rate\u003c\/label\u003e\n            \u003cinput id=\"ppty-growth\" class=\"ppty-input ppty-percent-input\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" value=\"2.00%\"\u003e\n            \u003cp class=\"ppty-helper\"\u003eConstant change in payments each period; zero creates a level perpetuity.\u003c\/p\u003e\n            \u003cp class=\"ppty-error\" aria-live=\"polite\"\u003e\u003c\/p\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"ppty-field\" data-field=\"pv\"\u003e\n            \u003clabel for=\"ppty-pv\"\u003ePresent value\u003c\/label\u003e\n            \u003cinput id=\"ppty-pv\" class=\"ppty-input ppty-currency-input\" type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" value=\"$166.67\" readonly aria-readonly=\"true\"\u003e\n            \u003cp class=\"ppty-helper\"\u003eCurrent lump-sum value of all modeled future payments.\u003c\/p\u003e\n            \u003cp class=\"ppty-error\" aria-live=\"polite\"\u003e\u003c\/p\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"ppty-formula-strip\" aria-label=\"Active formula\"\u003e\n          \u003cspan\u003eActive formula\u003c\/span\u003e\n          \u003ccode class=\"ppty-formula\"\u003ePV = Payment ÷ (Discount rate − Growth rate)\u003c\/code\u003e\n        \u003c\/div\u003e\n      \u003c\/section\u003e\n\n      \u003csection class=\"ppty-panel ppty-results-panel\" aria-labelledby=\"ppty-results-title\"\u003e\n        \u003ch3 class=\"ppty-panel-title\" id=\"ppty-results-title\"\u003eLive results\u003c\/h3\u003e\n        \u003cdiv class=\"ppty-primary-result\" aria-live=\"polite\" aria-atomic=\"true\"\u003e\n          \u003cp class=\"ppty-result-label\"\u003ePresent value\u003c\/p\u003e\n          \u003cp class=\"ppty-result-value\"\u003e$166.67\u003c\/p\u003e\n          \u003cp class=\"ppty-result-note\"\u003eA $10.00 payment growing at 2.00% and discounted at 8.00% is worth $166.67 today.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"ppty-results-grid\"\u003e\n          \u003cdiv class=\"ppty-metric\"\u003e\n\u003cspan\u003eRate spread\u003c\/span\u003e\u003cstrong class=\"ppty-metric-spread\"\u003e6.00%\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ppty-metric\"\u003e\n\u003cspan\u003ePayment yield\u003c\/span\u003e\u003cstrong class=\"ppty-metric-yield\"\u003e6.00%\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ppty-metric\"\u003e\n\u003cspan\u003eLevel-perpetuity value\u003c\/span\u003e\u003cstrong class=\"ppty-metric-level\"\u003e$125.00\u003c\/strong\u003e\n\u003c\/div\u003e\n          \u003cdiv class=\"ppty-metric\"\u003e\n\u003cspan\u003eGrowth uplift\u003c\/span\u003e\u003cstrong class=\"ppty-metric-uplift\"\u003e$41.67\u003c\/strong\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cp class=\"ppty-status\"\u003eThe model converges because the discount rate is greater than the growth rate.\u003c\/p\u003e\n      \u003c\/section\u003e\n    \u003c\/div\u003e\n\n    \u003csection class=\"ppty-chart-card\" aria-labelledby=\"ppty-chart-title\"\u003e\n      \u003ch3 class=\"ppty-card-title\" id=\"ppty-chart-title\"\u003ePresent value sensitivity\u003c\/h3\u003e\n      \u003cp class=\"ppty-card-intro\"\u003eSee how the valuation changes as the discount rate moves while the payment and growth assumptions remain fixed.\u003c\/p\u003e\n      \u003cdiv class=\"ppty-chart-empty\"\u003eEnter a positive payment and a valid discount-rate spread to see the sensitivity chart.\u003c\/div\u003e\n      \u003cdiv class=\"ppty-chart-cluster\"\u003e\n        \u003cdiv class=\"ppty-plot-wrap\"\u003e\n          \u003csvg class=\"ppty-chart-svg\" role=\"img\" aria-labelledby=\"ppty-chart-title ppty-chart-desc\"\u003e\u003c\/svg\u003e\n          \u003cp class=\"ppty-sr-only\" id=\"ppty-chart-desc\"\u003e\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"ppty-legend\" aria-label=\"Chart legend\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"ppty-chart-caption\"\u003eAt the current 8.00% discount rate, growth raises value from $125.00 to $166.67. The sensitivity increases as the rate spread narrows.\u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003csection class=\"ppty-table-card\" aria-labelledby=\"ppty-table-title\"\u003e\n      \u003ch3 class=\"ppty-card-title\" id=\"ppty-table-title\"\u003eSensitivity table\u003c\/h3\u003e\n      \u003cp class=\"ppty-card-intro\"\u003eEach row uses the same payment and growth rate, changing only the discount rate.\u003c\/p\u003e\n      \u003cdiv class=\"ppty-table-overflow\"\u003e\n        \u003ctable\u003e\n          \u003cthead\u003e\n            \u003ctr\u003e\n              \u003cth scope=\"col\"\u003eScenario\u003c\/th\u003e\n              \u003cth scope=\"col\"\u003eDiscount rate\u003c\/th\u003e\n              \u003cth scope=\"col\"\u003eRate spread\u003c\/th\u003e\n              \u003cth scope=\"col\"\u003eLevel value\u003c\/th\u003e\n              \u003cth scope=\"col\"\u003eGrowing value\u003c\/th\u003e\n            \u003c\/tr\u003e\n          \u003c\/thead\u003e\n          \u003ctbody class=\"ppty-table-body\"\u003e\u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"ppty-table-note\"\u003eThis is a mechanical sensitivity, not a forecast. When the discount rate approaches the growth rate, the denominator becomes very small and the calculated value can rise sharply.\u003c\/div\u003e\n    \u003c\/section\u003e\n\n    \u003carticle class=\"ppty-education\" aria-labelledby=\"ppty-education-title\"\u003e\n      \u003ch2 id=\"ppty-education-title\"\u003eHow to use and interpret a perpetuity valuation\u003c\/h2\u003e\n      \u003cdiv class=\"ppty-education-grid\"\u003e\n        \u003csection\u003e\n          \u003ch3\u003eWhat this calculator estimates\u003c\/h3\u003e\n          \u003cp\u003eA perpetuity is a stream of payments that is modeled as continuing without a final date. The calculator converts that infinite stream into one present-value estimate by discounting distant payments more heavily than near-term payments. A level perpetuity keeps the payment constant. A growing perpetuity changes the payment by the same percentage each period.\u003c\/p\u003e\n          \u003cp\u003eThe default example uses a $10.00 next-period payment, an 8.00% discount rate, and 2.00% perpetual growth. The resulting $166.67 value follows the growing-perpetuity formula. Setting growth to zero produces the level-perpetuity value of $125.00.\u003c\/p\u003e\n        \u003c\/section\u003e\n\n        \u003csection\u003e\n          \u003ch3\u003eField-by-field guidance\u003c\/h3\u003e\n          \u003cul\u003e\n            \u003cli\u003e\n\u003cstrong\u003eSolve for\u003c\/strong\u003e selects the unknown. Present value is the usual choice, but the reverse modes can infer the payment, discount rate, or growth rate when the other three quantities are known.\u003c\/li\u003e\n            \u003cli\u003e\n\u003cstrong\u003ePayment per period\u003c\/strong\u003e is the cash flow expected one period from now. Use annual dollars with annual rates, monthly dollars with monthly rates, and so on. A higher payment increases value proportionally.\u003c\/li\u003e\n            \u003cli\u003e\n\u003cstrong\u003eDiscount rate\u003c\/strong\u003e represents the required return or opportunity cost for the same period. A higher rate reduces present value because future cash flows are discounted more aggressively.\u003c\/li\u003e\n            \u003cli\u003e\n\u003cstrong\u003eGrowth rate\u003c\/strong\u003e is the constant percentage change in future payments. Higher growth increases value, but the standard model requires growth to remain below the discount rate.\u003c\/li\u003e\n            \u003cli\u003e\n\u003cstrong\u003ePresent value\u003c\/strong\u003e is the current lump-sum equivalent. In reverse-solving modes, enter the observed price or target value here.\u003c\/li\u003e\n          \u003c\/ul\u003e\n        \u003c\/section\u003e\n\n        \u003csection\u003e\n          \u003ch3\u003eHow the formulas work\u003c\/h3\u003e\n          \u003cp\u003eFor a level perpetuity, present value equals the next payment divided by the discount rate: \u003cstrong\u003ePV = Payment ÷ r\u003c\/strong\u003e. For a growing perpetuity, the growth rate is subtracted from the discount rate: \u003cstrong\u003ePV = Payment ÷ (r − g)\u003c\/strong\u003e. Rates are converted from percentages into decimals before calculation.\u003c\/p\u003e\n          \u003cp\u003eThe reverse modes rearrange the same relationship. Payment equals present value multiplied by the rate spread. Discount rate equals payment divided by present value, plus growth. Growth rate equals discount rate minus payment divided by present value. These rearrangements are useful for checking an implied return or implied perpetual growth assumption.\u003c\/p\u003e\n        \u003c\/section\u003e\n\n        \u003csection\u003e\n          \u003ch3\u003eUnderstanding the results\u003c\/h3\u003e\n          \u003cp\u003eThe primary result is the variable selected in “Solve for.” The \u003cstrong\u003erate spread\u003c\/strong\u003e is discount rate minus growth rate, the denominator that controls valuation sensitivity. The \u003cstrong\u003epayment yield\u003c\/strong\u003e is payment divided by present value; in a valid growing perpetuity it equals the rate spread. The \u003cstrong\u003elevel-perpetuity value\u003c\/strong\u003e shows the value with growth set to zero. The \u003cstrong\u003egrowth uplift\u003c\/strong\u003e is the difference between the growing and level values.\u003c\/p\u003e\n          \u003cp\u003eA zero payment gives a zero value when the rates are otherwise valid. A zero or negative discount rate cannot support the standard level-perpetuity formula. If growth equals or exceeds the discount rate, the infinite series does not converge to a finite value, so the calculator displays a validation message instead of an extreme or misleading number.\u003c\/p\u003e\n        \u003c\/section\u003e\n\n        \u003csection\u003e\n          \u003ch3\u003eReading the chart and table\u003c\/h3\u003e\n          \u003cp\u003eThe sensitivity chart varies only the discount rate. The blue series shows the value with the entered growth rate; the teal series shows the same payment with zero growth. The table exposes the exact values behind every plotted point. The row labeled “Current” corresponds to the assumptions entered above.\u003c\/p\u003e\n          \u003cp\u003eA steep curve signals that small changes in the discount rate materially affect value. This usually occurs when the discount rate and growth rate are close together. Use a wider set of plausible assumptions rather than relying on one precise estimate.\u003c\/p\u003e\n        \u003c\/section\u003e\n\n        \u003csection\u003e\n          \u003ch3\u003ePractical inputs and common mistakes\u003c\/h3\u003e\n          \u003cp\u003eDiscount rates should reflect timing, risk, and the type of cash flow. Market reference rates can provide context, but they are not automatically appropriate for a specific security or project. The \u003ca href=\"https:\/\/fred.stlouisfed.org\/series\/DGS10\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eFederal Reserve’s 10-year Treasury series\u003c\/a\u003e is one public benchmark, while the \u003ca href=\"https:\/\/www.bls.gov\/cpi\/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eU.S. Bureau of Labor Statistics CPI resources\u003c\/a\u003e provide inflation context.\u003c\/p\u003e\n          \u003cp\u003eDo not mix a current payment with a formula that expects the next payment. Do not combine monthly cash flow with annual rates. Avoid assuming a growth rate that can remain above long-run economic growth indefinitely. For a deeper treatment of dividend valuation conventions, see the \u003ca href=\"https:\/\/www.cfainstitute.org\/insights\/professional-learning\/refresher-readings\/2026\/discounted-dividend-valuation\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eCFA Institute’s discounted dividend valuation reading\u003c\/a\u003e. The \u003ca href=\"https:\/\/www.investor.gov\/financial-tools-calculators\/calculators\/compound-interest-calculator\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eSEC Investor.gov compound interest calculator\u003c\/a\u003e is also useful for reviewing how compounding changes future cash flows.\u003c\/p\u003e\n        \u003c\/section\u003e\n\n        \u003csection\u003e\n          \u003ch3\u003eBenefits and limitations\u003c\/h3\u003e\n          \u003cp\u003eThe perpetuity model is transparent, fast, and useful for preferred shares, stabilized income streams, endowment-style spending, and terminal-value analysis. It makes the relationship between payment, required return, and growth explicit. It is also easy to audit because every result comes from a compact formula.\u003c\/p\u003e\n          \u003cp\u003eIts simplicity is the main limitation. Real cash flows can be interrupted, grow at different rates, face taxes or reinvestment needs, and carry changing risk. Many assets should be modeled with an explicit forecast period followed by a stable terminal stage. Treat this calculator as an analytical framework, not personalized investment, tax, or legal advice.\u003c\/p\u003e\n        \u003c\/section\u003e\n\n        \u003csection\u003e\n          \u003ch3\u003eUsing the Excel export\u003c\/h3\u003e\n          \u003cp\u003eDownload Excel creates a current-state workbook with Summary, Inputs, Breakdown, Sensitivity, and Notes sheets. It stores rates as true percentage values and money as numeric currency cells, so the workbook remains useful for review and documentation. Change an assumption before downloading and the exported workbook will reflect the updated model, including the reverse-solved variable and every sensitivity row.\u003c\/p\u003e\n        \u003c\/section\u003e\n      \u003c\/div\u003e\n    \u003c\/article\u003e\n  \u003c\/main\u003e\n\u003c\/div\u003e","brand":"FinancialModelsLab","offers":[{"title":"Default Title","offer_id":49909487141107,"sku":"perpetuity","price":0.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0522\/6191\/2762\/files\/perpetuity.webp?v=1783935515","url":"https:\/\/financialmodelslab.com\/products\/perpetuity","provider":"Financial Models Lab","version":"1.0","type":"link"}