HKUDS/Vibe-Trading · error · ValuationError
comps.equity_value_from_enterprise_value: enterprise_value m
Error message
comps.equity_value_from_enterprise_value: enterprise_value must be a finite number, got {enterprise_value!r} What it means
equity_value_from_enterprise_value (EV -> equity direction) validates that the supplied enterprise_value is finite before subtracting the bridge delta, mirroring the market_cap check in the other direction.
Source
Thrown at agent/src/quantlib/valuation/comps.py:568
MissingInputError: If `enterprise_value`, `total_debt` or
`cash_and_equivalents` is absent.
ValuationError: If `enterprise_value` or any supplied bridge line is
not a finite number.
"""
require_inputs(
{
"enterprise_value": enterprise_value,
"total_debt": total_debt,
"cash_and_equivalents": cash_and_equivalents,
},
("enterprise_value", "total_debt", "cash_and_equivalents"),
"comps.equity_value_from_enterprise_value",
)
delta, omitted = _bridge_delta(
total_debt, cash_and_equivalents, minority_interest, preferred_stock, investments_in_associates
)
if not math.isfinite(enterprise_value):
raise ValuationError(
f"comps.equity_value_from_enterprise_value: enterprise_value must be a "
f"finite number, got {enterprise_value!r}"
)
equity = float(enterprise_value) - delta
return EVBridgeResult(
direction="ev_to_equity",
equity_value=equity,
enterprise_value=float(enterprise_value),
total_debt=float(total_debt),
cash_and_equivalents=float(cash_and_equivalents),
minority_interest=minority_interest,
preferred_stock=preferred_stock,
investments_in_associates=investments_in_associates,
omitted_components=omitted,
)
def _require_name(name: str, model: str) -> str:View on GitHub (pinned to 80ffdda44c)
Solutions
- Check the EV value for finiteness before the call; if NaN, skip or handle the excluded peer.
- Trace upstream multiple/valuation code to see why EV is not finite.
- Wrap chained model calls with a finite-value assertion between steps.
Example fix
# before
equity = equity_value_from_enterprise_value(peer_ev, ...) # peer_ev is nan
# after
if peer_ev is None or not math.isfinite(peer_ev):
continue # peer excluded from downstream use
Defensive patterns
Strategy: validation
Validate before calling
if enterprise_value is None or not math.isfinite(enterprise_value):
continue # excluded peer Try / catch
except ValuationError as e:
if 'enterprise_value must be a' in str(e):
continue Prevention
- Assert finiteness between chained model steps
- Handle upstream exclusions before passing values through
When it happens
Trigger: Calling equity_value_from_enterprise_value(enterprise_value=math.nan/inf), e.g. an EV read from a multiples model output that is NaN because a peer was excluded.
Common situations: Chaining models where an upstream step returned NaN (excluded peer) and the value is passed through without checking; spreadsheets importing blanks as NaN.
Related errors
- comps: total_debt must be a finite number, got {total_debt!r
- comps: cash_and_equivalents must be a finite number, got {ca
- valuation on {when} must be finite, got {raw_value!r}; a mis
- {model}: {name} must be a finite number, got {val!r}
- comps: {name} must be a finite number, got {value!r}
AI-assisted analysis of HKUDS/Vibe-Trading@80ffdda44c (2026-08-28).
Data as JSON: /api/errors/d73e8e5726b6ee66.
Report an issue: GitHub.