Oracles
An oracle is the data source a strategy checks to decide whether its trigger condition is true, things like price or funding rate. Execution venue and oracle are two different systems here: a strategy can execute on Hyperliquid while its conditions are evaluated using Synchronicity’s own oracle and market-data system. If Synchronicity can’t get the data a strategy needs, the strategy simply doesn’t trigger.
Synchronicity is currently on Hyperliquid testnet, so today this all runs on test funds. The oracle system works the same way once mainnet launches with real funds.
Where to check what a strategy is watching
Every deployed strategy’s detail view in Strategy Builder shows exactly which data source and conditions it’s using, before you ever deploy it. Check that view if you’re unsure whether a strategy depends on a feed that might be thin or delayed for the market you’re trading.
Custom oracles you build for your own strategies aren’t visible to other users. See Data Visibility for who can see your strategy and oracle data.
Execution venue vs. data source
Execution venue is where the order goes. For Synchronicity strategies today, that’s Hyperliquid testnet until we launch on Hyperliquid mainnet.
Oracle or market-data source is what decides whether a strategy’s condition is true. This is Synchronicity’s strategy-oracle system.
These are deliberately kept separate. Hyperliquid has its own oracle and mark-price mechanics that govern margining and liquidation at the venue level. Synchronicity doesn’t control those and links out to Hyperliquid’s docs for how they work. See Leverage, Margin, and Liquidation for that side. Synchronicity’s strategy-oracle system is what your strategy actually watches when deciding whether to trigger.
There’s no way to point a strategy at a custom or external data endpoint. Every feed a strategy can read comes from Synchronicity’s own strategy-oracle system, listed in Data Feeds.
What Synchronicity’s strategy-oracle can evaluate
Depending on what’s supported for a given market, the oracle system can evaluate conditions built from:
- Mark price and index price, two different price benchmarks. See Data Feeds for how they differ.
- OHLCV (open, high, low, close, volume) and trade data.
- BBO (best bid/offer).
- Funding rate and volume.
- Moving averages, RSI (Relative Strength Index), ATR (Average True Range), VWAP (Volume-Weighted Average Price), and other formula-derived signals.
Supported feeds and operators can change over time. Check Data Feeds and Aggregators and Operators for what’s currently available, and the product UI itself when you’re building a strategy.
What happens when data is missing or stale
A condition only counts as true when Synchronicity can actually receive and process the data it needs. If a feed is missing, stale, delayed, or access-denied, the condition simply doesn’t evaluate as true until a reliable read comes back.
Other protections built into the oracle system:
- Duplicate market-data events are deduped before they reach your strategy’s logic, so a network hiccup can’t fire the same trigger twice.
- Some data streams are live-only and aren’t available for historical backtesting.
- Durable ingest and replay are designed to reduce missed data after a restart or failover, though not to eliminate the possibility entirely.
If a deploy shows “Oracle registration failed”, this is the same system responding: a data source your strategy uses could not be registered in time. See the oracle steps in Deploy a Strategy and the fix in Troubleshooting & FAQ.
Why this matters for your strategy
A strategy condition becoming true does not guarantee execution. Even with a correct oracle read, an order can still fail for reasons outside the oracle system: Hyperliquid downtime, an unsupported or disabled market, insufficient margin, a rate limit, or a plain order rejection at the exchange.
Mainnet also behaves differently than testnet: liquidity, latency, and exchange rules can differ from what you saw while testing.
FAQ
Does the oracle price come from Hyperliquid or from Synchronicity? From Synchronicity’s strategy-oracle system, for anything you build a condition on. Hyperliquid’s own oracle and mark price are a separate system, covered in Execution venue vs. data source above.
What happens if my strategy’s condition is true but the data feed is down? Synchronicity waits until it can receive and process the data the strategy needs before evaluating that condition again. If the outage lasts through the window you cared about, the trigger gets missed rather than fired on incomplete information.
Can I see what data a specific strategy relies on? Yes, on that strategy’s detail view in Strategy Builder.
Technical details
This section is a reference for technical readers who want to see where the numbers come from. It’s not something you need to act on yourself, Synchronicity handles it for you.
Hyperliquid’s metaAndAssetCtxs info request returns the venue’s own mark and oracle price directly, if you want to query it outside Synchronicity:
{
"type": "metaAndAssetCtxs",
"dex": ""
}dex selects which perpetuals venue to query. Leave it as an empty string for Hyperliquid’s main perp market. The response includes an assetCtxs array with markPx (mark price) and oraclePx (oracle price) per asset, computed by Hyperliquid’s validators (the network’s consensus nodes) as a weighted median of external exchange prices and Hyperliquid’s own order book.
A strategy watching mark price ultimately references that same number. Synchronicity routes it through its own ingest, dedup, and gating logic before a strategy ever sees it.