- Intrinsic — what the asset should be worth, per its own mechanism
- Market — what you’d actually receive swapping it
Why both, not one
A monitor that reads only market misses the case where the market is the broken side. The mSOL/Pyth incident is the canonical example: Marinade’s on-chain redemption (intrinsic) stayed at 1.18 SOL while a thin Mango pool printed 0.85 SOL for four minutes. A market-only oracle would have said “mSOL just crashed.” The right answer was “the market lied for 4 minutes; intrinsic held.” A monitor that reads only intrinsic misses the USDC/SVB case: Circle’s redemption claim was always 0.87 for 36 hours. An intrinsic-only oracle would have said “USDC is fine.” The right answer was “intrinsic still claims $1, but the market won’t pay it until the backstop arrives.” Holding both numbers in the same signal — and publishing both — lets the consumer decide which side to act on for their use case.How each side is sourced
Intrinsic comes from the asset’s own mechanism. Each class has its own canonical source — Sanctum for LSTs, Pyth Redemption Rate for yield-bearing, on-chain decode for CDPs, Pyth FX for fiat-pegged. See intrinsic value for the full table. Market comes from Jupiter’s routed quote, converted to USD via Pyth. We always swap to USDC and reprice USDC → USD via Pyth, so the numeraire is consistent across every asset and a USDC depeg doesn’t contaminate other assets’ spreads. See market value.The two-numbers payload
Every Pegana API response includes both numbers explicitly:discount) for fast checks and the underlying numbers for
your own logic. For LSTs we also expose the SOL-denominated values — many integrators
care about the SOL spread, not the USD spread.
Sign convention
discount > 0→ market trades below intrinsic (most common stress case)discount < 0→ market trades above intrinsic (less common; often the LST case where MEV-driven yield outpaces the publishedsol_value)|discount| < threshold→PEGGED
+1.20% as “1.20% discount below intrinsic,”
not “market is 1.20% above intrinsic.” Our positive sign convention matches the
trading-floor convention where “discount” means “the market is offering this asset
at a discount to its book value.”
When intrinsic and market converge by construction
For aPEGGED fiat stable, intrinsic = 1, so the spread hovers
inside ±10 bps. That’s the calm regime — and it’s the regime where the two-numbers
framing looks redundant. (“Just publish market — what could intrinsic add?”)
The framing pays off precisely when they diverge. Holding both numbers in the same
schema means the divergence is structural, not an afterthought. Your downstream
consumer never has to wonder which number to act on — both are there.
Next
State machine
How the spread gets turned into a state, with hysteresis and dwell timers.