HKUDS/Vibe-Trading · error · ValuationError
comps.enterprise_value: market_cap must be a finite number,
Error message
comps.enterprise_value: market_cap must be a finite number, got {market_cap!r} What it means
enterprise_value validates that market_cap is finite before adding the bridge delta. A NaN or infinite market cap (the anchor of the whole EV computation) would make every downstream multiple meaningless, so it is rejected.
Source
Thrown at agent/src/quantlib/valuation/comps.py:498
MissingInputError: If `market_cap`, `total_debt` or
`cash_and_equivalents` is absent.
ValuationError: If `market_cap` or any supplied bridge line is not a
finite number.
"""
require_inputs(
{
"market_cap": market_cap,
"total_debt": total_debt,
"cash_and_equivalents": cash_and_equivalents,
},
("market_cap", "total_debt", "cash_and_equivalents"),
"comps.enterprise_value",
)
delta, omitted = _bridge_delta(
total_debt, cash_and_equivalents, minority_interest, preferred_stock, investments_in_associates
)
if not math.isfinite(market_cap):
raise ValuationError(
f"comps.enterprise_value: market_cap must be a finite number, got {market_cap!r}"
)
ev = float(market_cap) + delta
return EVBridgeResult(
direction="equity_to_ev",
equity_value=float(market_cap),
enterprise_value=ev,
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 equity_value_from_enterprise_value(
*,View on GitHub (pinned to 80ffdda44c)
Solutions
- Validate market cap at its source (price * shares) with a finite check.
- Backfill or drop the peer whose market cap is unavailable.
- Guard before calling: if not math.isfinite(market_cap): skip/exclude the peer.
Example fix
# before
ev = enterprise_value(price * shares, ...) # shares = nan
# after
market_cap = price * shares
if not math.isfinite(market_cap):
raise ValueError(f'bad market cap for {ticker}')
ev = enterprise_value(market_cap, ...) Defensive patterns
Strategy: validation
Validate before calling
if market_cap is None or not math.isfinite(market_cap):
raise ValueError(f'bad market cap: {market_cap!r}') Type guard
def is_finite_number(v):
return isinstance(v, (int, float)) and math.isfinite(v) Try / catch
try:
ev = enterprise_value(market_cap, ...)
except ValuationError:
skip_peer(peer) # excluded from the comp set Prevention
- Check price*shares for finiteness at computation time
- Exclude peers with missing market data before valuation
When it happens
Trigger: Calling enterprise_value(market_cap=math.nan) or with inf; commonly a market cap computed as price * shares where shares is NaN, or a ' MISSING' string converted badly.
Common situations: Price feed gaps producing NaN; share counts of 0 combined with inf prices; API responses with null market cap coerced to NaN.
Related errors
- {model}: {name} must be a finite number, got {val!r}
- comps: total_debt must be a finite number, got {total_debt!r
- valuation on {when} must be finite, got {raw_value!r}; a mis
- comps: cash_and_equivalents must be a finite number, got {ca
- 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/aa005cdad2ec9774.
Report an issue: GitHub.