From ccfbce79a66b2d8aa136fddbed7c61c7436f2733 Mon Sep 17 00:00:00 2001 From: Tyler Date: Thu, 2 Apr 2026 18:54:01 -0700 Subject: Improve DCF model accuracy --- services/valuation_service.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'services/valuation_service.py') diff --git a/services/valuation_service.py b/services/valuation_service.py index 357c679..1230aa5 100644 --- a/services/valuation_service.py +++ b/services/valuation_service.py @@ -50,6 +50,7 @@ def run_dcf( terminal_growth: float = 0.03, projection_years: int = 5, growth_rate_override: float | None = None, + base_fcf_override: float | None = None, total_debt: float = 0.0, cash_and_equivalents: float = 0.0, preferred_equity: float = 0.0, @@ -78,7 +79,7 @@ def run_dcf( historical_growth = compute_historical_growth_rate(fcf_series) growth_rate = historical_growth if historical_growth is not None else 0.05 - base_fcf = float(historical[-1]) + base_fcf = float(base_fcf_override) if base_fcf_override is not None else float(historical[-1]) if base_fcf <= 0: return { "error": ( @@ -136,6 +137,8 @@ def run_ev_ebitda( ebitda: float, total_debt: float, total_cash: float, + preferred_equity: float, + minority_interest: float, shares_outstanding: float, target_multiple: float, ) -> dict: @@ -149,11 +152,13 @@ def run_ev_ebitda( implied_ev = ebitda * target_multiple net_debt = (total_debt or 0.0) - (total_cash or 0.0) - equity_value = implied_ev - net_debt + other_claims = (preferred_equity or 0.0) + (minority_interest or 0.0) + equity_value = implied_ev - net_debt - other_claims return { "implied_ev": implied_ev, "net_debt": net_debt, + "other_claims": other_claims, "equity_value": equity_value, "implied_price_per_share": equity_value / shares_outstanding, "target_multiple_used": target_multiple, @@ -164,6 +169,8 @@ def run_ev_revenue( revenue: float, total_debt: float, total_cash: float, + preferred_equity: float, + minority_interest: float, shares_outstanding: float, target_multiple: float, ) -> dict: @@ -177,11 +184,13 @@ def run_ev_revenue( implied_ev = revenue * target_multiple net_debt = (total_debt or 0.0) - (total_cash or 0.0) - equity_value = implied_ev - net_debt + other_claims = (preferred_equity or 0.0) + (minority_interest or 0.0) + equity_value = implied_ev - net_debt - other_claims return { "implied_ev": implied_ev, "net_debt": net_debt, + "other_claims": other_claims, "equity_value": equity_value, "implied_price_per_share": equity_value / shares_outstanding, "target_multiple_used": target_multiple, -- cgit v1.3-2-g0d8e