Market Data Oracle · v0.3.0

Market data you can trust

Market Oracle delivers clean, verified market data to trading systems and AI agents: closed bars, indicators, order-book microstructure, macro context, and market regime. One request. You make the decisions — we supply facts only.

Documentation →
1request instead of 8–10
10indicators per 1m bar
3exchanges: Binance·Bybit·OKX
≥70data_quality gate
BTCUSDT READY live
close (1m, closed)$65 040.00
rsi14 / adx1454.2 / 22.1
depth imbalance0.55 · bid pressure
volatility regimelow_vol_range
lag_sec12s · ok
data quality
score92
GET /v1/context/BTCUSDT — bar · depth · derivatives · macro · regime in one response
Principles

Not an advisor. A facts provider.

Oracle does not open trades or manage positions. Its job is to give your algorithms correct data you can build decisions on.

🎯

Signal only on a closed bar

Trading decisions are formed exclusively on a closed 1m bar (closed: true). No look-ahead — data is always point-in-time correct.

🧮

Verified correctness

EMA, RSI, ATR, VWAP, OBV, MFI, CVD, and ADX are covered by independent batch-reference tests. Closed bars and indicators are stored atomically; state recovers after failures.

🤖

Built for agents

One call to GET /v1/context/{symbol} returns everything for a decision: bar, order book, derivatives, macro, and market regime. Machine-readable formats, explicit limits, predictable errors.

Features

Everything for a trading decision — in one API

Context in one request

The main endpoint for bots and AI agents. Bar with indicators, ticker, live order book, derivatives (funding/OI/liquidations), macro snapshot, venue consensus, market regime, and data_quality — instead of 8–10 separate calls.

GET /v1/context/{symbol}

The only signal source is a closed 1m bar (closed: true). Everything else is context for sizing, filters, and pausing before macro events. Gate: ready, indicators_ready, data_quality.score ≥ 70.

📊

Indicators on every bar

Incremental computation without replaying history. Values are decimal strings; fields may be null during warmup.

EMA20/50/200RSI14ATR14VWAPADX14OBVMFI14CVD
🧱

Microstructure

Closed minute aggregation of top-20: spread, imbalance, walls, pressure.

/v1/microstructure/{symbol}
🌍

Macro context

Fear&Greed, dominance, stablecoins, DXY, 10Y yield.

/v1/macro
🔥

Derivatives

Funding, open interest, liquidation cascades.

/v1/derivatives/{symbol}
🧭

Market regime

Correlation with BTC, realized vol, market breadth.

/v1/market-regime
🔗

Venue consensus

Median-mid across Binance, Bybit, and OKX with divergence control — protection against a bad tick before entry.

/v1/quotes/{symbol}
📡

WebSocket

bar_close + opt-in microstructure_close; REST to recover gaps.

WS /v1/stream
🗓

Macro calendar

Upcoming events (FOMC, CPI) with impact level.

/v1/calendar
📚

History for all timeframes

1m — 21 days with indicators, 1h — ~9 mo, 4h — 2 years, 1d — 3 years, 1w — 5 years.

/v1/history/{symbol}?interval=…
How it works

Six steps from connect to signal

A typical flow for an AI agent or trading bot.

GET /health

Check the server

Confirm status=ok, Redis is up, and the WebSocket provider is connected.

GET /v1/me

Check your plan

Daily limits, RPM, WS count, and key expiry — so you can pick a request cadence.

GET /v1/symbols

Pick pairs

Take only ready=true, ideally history=full_day — history is warmed up.

WS /v1/stream

Subscribe

Receive bar_close in real time. Order book optionally via microstructure:true.

GET /v1/context

Decision snapshot

Every 60–90 s per active pair — depth, macro, regime, and data quality in one response.

signal

Form a signal

Exactly once per closed bar, with deduplication by symbol:ts.

Pricing

Transparent limits. No sign-ups or dashboards.

Get an API key — and go. Everything is managed from one page.

Free
Explore the API and demo strategies
$0 / 30 days
  • 6 000 requests per day
  • 30 requests per minute
  • Min. pause between requests 2 s
  • 1 WebSocket connection
  • Key defaults to +30 days
Basic
Live bots, multiple pairs
$4.99 / mo
  • 25 000 requests per day
  • 120 requests per minute
  • Min. pause between requests 500 ms
  • 2 WebSocket connections
  • WS bar_close does not spend daily quota
Pro
Production and many pairs
$9.99 / mo
  • 100 000 requests per day
  • 180 requests per minute
  • Min. pause between requests 350 ms
  • 3 WebSocket connections
  • Highest client tier

Pause = steady pace under the RPM limit (60 000 ms ÷ RPM). Already have a key?

Documentation

Full integration specification

The manual is written so an AI agent or developer can connect Oracle without extra questions.

📖
REST API referenceAll endpoints with request/response examples and field explanations.
📡
WebSocket protocolSubscribe, bar_close and microstructure_close events, reconnect with backoff.
🧮
Bar and indicator formatsDecimal strings for precision, semantics of each indicator.
⚠️
Limits and errorsPlans, daily limits, RPM, handling 429 and key_expired.
Open documentation →
oracle-client.ts
// Minimal Market Oracle client
const res = await fetch(
  `${BASE}/v1/context/BTCUSDT`,
  { headers: { Authorization: `Bearer ${KEY}` } }
);
const ctx = await res.json();

// Signal — only on a closed bar
if (ctx.bar.closed && ctx.data_quality.score >= 70) {
  decide(ctx.bar, ctx.depth, ctx.market_regime);
}
Ecosystem

Oracle is part of a larger system

Data and strategies live apart: Oracle supplies facts; the Lab turns them into decisions.

📡

Market Oracle

Clean market data: bars, indicators, order book, macro, and market regime.

● You are here
⚗️

Trading Lab

Strategies, backtests, and a decision center on top of Oracle data.

Coming soon