Skip to main content

Divergences

Continuously cross-checks the canonical Stellar Index VWAP against external references. A persistent gap flips flags.divergence_warning on the canonical coin pages and writes a row to the divergence_observations hypertable for the historical trail.

Δ% history

Our VWAP vs the selected reference over the trailing window. Dashed lines mark the operator's alert threshold.

No (pair, reference) on the board yet — nothing to plot.

Divergence board

Latest comparison per (pair, reference) over the trailing 7 days — our VWAP vs each external reference, widest gap first. Click a row to plot its history above.

Loading…

Why we monitor divergence

We never include external references in the canonical VWAP — mixing them would import their methodology and double-count whichever upstream markets they read. But silence on divergence would let a quiet decode bug or a stuck Reflector update skew prices for hours before anyone noticed.

The divergence worker reconciles. For every (pair, reference) tuple, every refresh tick, it compares our VWAP to what the reference reports, persists the row, and (per ADR-0019) drives the multi-factor confidence score that gates the freeze decision.

CoinGecko

Active

HTTP price index

Aggregator-of-aggregators. Useful as a sanity reference because it's not on-chain and pulls from a different upstream set.

Chainlink HTTP

Configured

HTTP feed (off-chain Chainlink)

Independent price index via mainnet AggregatorV3 contracts on Ethereum. Queried over public RPC (eth.llamarpc.com). Drives the divergence worker's "are we wildly off" alerting threshold.

Wired feeds

Reflector (DEX/CEX/FX)

Active

On-chain SEP-40 oracle

Stellar-native oracle trio, compared as three references (reflector-dex/cex/fx) from our own ingested oracle_updates rows. Reflector divergence often signals an oracle update lag rather than a real price move — important to distinguish for downstream consumers like Blend.

Redstone

Active

On-chain adapter contract

Pull-style oracle on Stellar, compared from our ingested oracle_updates rows. Divergence here is rare but high-signal — Redstone batches many feeds in one transaction so divergence on one feed often precedes a wider reading update.

Band

Active

On-chain Soroban contract (no events)

Operation-args ingest (Band emits zero events). The divergence check reads the same relayed value the on-chain consumer would see, straight from our ingested rows.

Reading the board

The board above shows the latest comparison per (pair, reference) over the trailing 7 days, widest gap first. A row marked firingbreached its per-(reference, pair) threshold at its last observation — that's what contributes to flags.divergence_warning. Δ% is (our − reference) / reference × 100; negative means our VWAP sits below the reference.

The Δ% history chart at the top plots one (pair, reference) over time from the same divergence_observations hypertable — click any board row to drill into its trail, with the operator's alert threshold drawn as the dashed band. Methodology rationale lives in ADR-0019.