# tickstream — full reference (for LLMs) > Licensed CME futures, full OPRA options and computed dealer gamma over a plain API. > This single file is the complete reference. Every number in it is generated from the same > modules the product itself reads, so it cannot disagree with what a customer is charged or > with what the gateway actually serves. - REST base: `https://api.tick-stream.xyz/v1` — header `Authorization: Bearer YOUR_API_KEY` - WebSocket: `wss://stream.tick-stream.xyz/v1/stream?key=YOUR_API_KEY&symbols=ES,NQ` - MCP server: `npx -y tickstream-mcp` - Get a key: https://tick-stream.xyz/signup — free tier, no card, no sales call - Status and gap history: https://status.tick-stream.xyz/ - Public metrics, no key required: `GET /v1/public/metrics` ## What this is not - Not a broker. tickstream never places an order by itself. The Execution API places orders only when you or a system you armed calls it. - Not a charting platform. Data in, your interface. - Not an equity tick feed. Futures and options only. - Not redistributable on a non-professional package. If your users see the data, that is a separate licence: https://tick-stream.xyz/for/fintech-startups ## Packages One package per category, or the Desk bundle. Annual is twelve months less 25%. ### Futures Licensed CME futures — ticks, the order book, and order-by-order depth. | id | name | monthly | annual | what it is | |---|---|---|---|---| | `futures_free` | Free | free | — | Delayed, but the same feed. | | `futures_p2` | Realtime | $29 | $261 | Live ticks, no delay. | | `futures_p3` | Realtime + L2 | $79 | $711 | The full order book. | | `futures_p4` | L3 / Market-by-order | $199 | $1791 | Every individual order, with its queue position. | - **Free** (`futures_free`): delayed 15 minutes · book: none · history: 7 days · symbols: 10 · connections: 1 - **Realtime** (`futures_p2`): book: none · history: 1 year · symbols: 25 · connections: 2 - **Realtime + L2** (`futures_p3`): book: l2 · history: 5 years · symbols: unlimited · connections: 3 - **L3 / Market-by-order** (`futures_p4`): book: l3 · history: 7 years · symbols: unlimited · connections: 10 ### Options 100 % OPRA coverage — every trade, every NBBO quote, twelve years deep. | id | name | monthly | annual | what it is | |---|---|---|---|---| | `options_p1` | Options Core | $29 | $261 | The surface — chains, greeks and twelve years of closes. | | `options_p2` | Options Flow | $69 | $621 | The tape — every OPRA trade and every NBBO quote, tick level. | | `options_p3` | Options Pro | $119 | $1071 | The joins — trades paired with quotes and greeks, whole roots, no cap. | - **Options Core** (`options_p1`): history: 4 years · option request types: first 3 of 12 - **Options Flow** (`options_p2`): history: 8 years · option request types: first 7 of 12 - **Options Pro** (`options_p3`): history: 12 years · option request types: first 12 of 12 ### GEX Computed dealer gamma as clean data. The free levels page stays free. | id | name | monthly | annual | what it is | |---|---|---|---|---| | `gex_flat` | GEX Levels | $29 | $261 | Walls, flip and net regime. | | `gex_mid` | GEX + Greeks | $39 | $351 | Plus DEX, vanna and charm. | | `gex_full` | GEX Full | $69 | $621 | Single names and the whole surface. | ### Algos Live-tested NQ strategies with public, unedited paper track records. | id | name | monthly | annual | what it is | |---|---|---|---|---| | `algo_single` | One sleeve | $99 | $891 | Signals from a single strategy. | | `algo_all` | Every sleeve | $299 | $2691 | All thirteen, plus execution. | - **One sleeve** (`algo_single`): active sleeves: 1 - **Every sleeve** (`algo_all`): active sleeves: all · includes the Execution API ### Utilities The pieces that sit beside a data plan. | id | name | monthly | annual | what it is | |---|---|---|---|---| | `execution` | Account & Execution API | $19 | $171 | Place futures orders through an API. | ### Bundle - `desk` **Desk** — $499/mo, $4491/yr. Includes: futures_p4, options_p3, gex_full, execution, algo_all. Bought separately those cost $705, so the bundle saves $206 (29%). ### Professional and redistribution Exchange fees are passed through at cost with one platform fee on top — the only line that is ours. Quoted, never self-service: https://tick-stream.xyz/professional - tickstream platform: $150/mo - CME licence, per professional user: $199/mo each - CME licence, per exchange (CME, CBOT, NYMEX, COMEX): $199/mo each - OPRA options, professional display use: $1600/mo - Redistribution: from $2500/mo plus $199 per reported end user ## Options API — the 12 request types All under `GET /v1/options/`. A type above your package returns `403` with `request_type_not_in_plan` and names the package that would unlock it. It never returns a reduced result set. | # | id | endpoint | what it returns | unlocked by | |---|---|---|---|---| | 1 | `chain` | `/v1/options/chain` | Live chain — bid/ask/last, open interest and volume per strike. | Options Core | | 2 | `greeks` | `/v1/options/greeks` | Live greeks and implied vol per strike, for one expiration. | Options Core | | 3 | `eod` | `/v1/options/eod` | Daily close per contract, twelve years back. | Options Core | | 4 | `ohlc` | `/v1/options/ohlc` | OHLC bars per contract, down to tick interval. | Options Flow | | 5 | `oi` | `/v1/options/oi` | Open interest per contract per day — the opening-vs-closing input. | Options Flow | | 6 | `quote` | `/v1/options/quote` | Every NBBO quote reported by OPRA, with size and exchange. | Options Flow | | 7 | `trade` | `/v1/options/trade` | Every option trade reported by OPRA, with size and condition. | Options Flow | | 8 | `trade_quote` | `/v1/options/trade_quote` | Each trade paired with the NBBO standing at that millisecond — the flow primitive. | Options Pro | | 9 | `greeks_history` | `/v1/options/greeks_history` | Historical greeks and IV as a time series. | Options Pro | | 10 | `trade_greeks` | `/v1/options/trade_greeks` | Every trade with the greeks as they stood at trade time. | Options Pro | | 11 | `at_time` | `/v1/options/at_time` | The exact trade or quote in force at a given timestamp. | Options Pro | | 12 | `root` | `/v1/options/root` | Whole-root bulk snapshot — every expiration in a single call. | Options Pro | ### Parameters | parameter | example | notes | |---|---|---| | `symbol` | `SPY` | the root; `underlying` and `root` are aliases | | `exp` | `2026-08-21` | expiration; `expiration` accepted, dashes optional. `*` on the history types = every expiration (bulk) | | `max_dte` | `30` | with `exp=*`: only contracts within N calendar days of expiry | | `strike_range` | `550,650` | with `exp=*`: clip the strike ladder | | `strike` | `600` | in dollars — converted to the vendor's thousandths internally | | `right` | `C` or `P` | call or put | | `date` | `2026-07-31` | one session; expands to start_date+end_date | | `start_date`, `end_date` | `2026-07-01` | a range instead | | `interval` | `60000` | bar interval in ms for ohlc/quote/greeks/implied_volatility; defaults to 60000 | ### Bulk history Every history type takes `expiration=*`: the whole chain of the root in one request per date window (a month of QQQ end-of-day = 60k contracts in ~20 s). Combine with `max_dte` / `strike_range` to clip it. Backfilling seven years is a few hundred month-sized requests. `eod` and `oi` windows always end **yesterday**: the running session's report does not exist yet (EOD generates 17:15 ET, OI next morning); a window touching today is clamped and the response carries `x-end-clamped: running-day`. Today's chain comes from `chain`/`root`/WebSocket. ### Response envelope ```json { "header": { "format": ["ms_of_day","price","size","bid","ask"], "next_page": "null" }, "response": [ { "contract": { "root": "SPY", "expiration": 20260821, "strike": 600000, "right": "C" }, "ticks": [[51293846, 4.35, 250, 4.30, 4.35]] } ] } ``` **Read columns by NAME from `header.format`.** Column order is the vendor's and is not part of our contract; code that indexes by position will break on a day you are not watching. Conventions: - `ms_of_day` + `date` are milliseconds since midnight and `YYYYMMDD`, both **US/Eastern**. Passed through rather than converted to UTC, because converting loses the session boundary. - `strike` in the contract block is thousandths of a dollar: `600000` is $600.00. Queries take dollars. - `iv_error`: `0.0` means the solver converged, `100.0` is the failed-solve sentinel. Drop those rows. - Paging is handled server-side; `next_page` is followed internally and results concatenated. - A contract that did not trade returns an empty `ticks` array, not an error. - Options history reaches back to **2012-06-01**. Requests older than your package's window are clamped to it, not rejected. ## Streaming ```json { "op": "subscribe", "channel": "ticks", "symbols": ["ES", "NQ"] } ``` | channel | what it carries | needs | |---|---|---| | `ticks` | every trade print, with the real aggressor side from the exchange | any package (free tier delayed 15 min) | | `book` | aggregated Level 2 — every resting bid and offer per level | a package with `book: l2` or better | | `l3` | market-by-order — one event per order with `order_id`, `action`, `priority`, `seq`, `ns` | the L3 package | | `options` | live chains with greeks by underlying | any options package | ## REST | endpoint | what it returns | |---|---| | `GET /v1/symbols` | the enabled market list | | `GET /v1/quote?symbol=` | last price and size | | `GET /v1/ticks?symbol=&start=&end=` | recent trade prints | | `GET /v1/l3?symbol=&start=&end=` | order-level replay, max one hour per request | | `GET /v1/options/` | the 12 types above | | `GET /v1/gex?underlying=&weight=oi|vol&dte=all|0|1` | per-strike dealer gamma, walls, zero-gamma flip | | `GET /v1/cot?symbol=` | weekly CFTC positioning | | `GET /v1/history/ticks|book|options` | the archive; window clamped to your package | | `GET /v1/algos` (+ `/{id}/track`, `/signal`, `/events`) | strategy catalog and track records | | `GET /v1/exec/positions|fills|orders` | your own broker account, read-only | | `GET /v1/public/metrics` | feed age, warm symbols, live streams — no key needed | ## Markets 67 enabled across CME, CBOT, NYMEX, COMEX, EUREX. Any other instrument on request: https://tick-stream.xyz/request-market - **Equity Index** (13): ES, NQ, YM, RTY, EMD, MES, MNQ, MYM, M2K, FDAX, FDXM, FESX, FSMI - **Rates** (14): ZN, ZB, ZF, ZT, UB, TN, ZQ, SR3, GE, FGBL, FGBM, FGBS, FBTP, FOAT - **Energy** (8): CL, MCL, NG, MNG, RB, HO, BZ, QM - **Metals** (8): GC, MGC, SI, SIL, HG, MHG, PL, PA - **FX** (7): 6E, 6B, 6J, 6A, 6C, 6S, 6N - **Crypto** (4): BTC, MBT, ETH, MET - **Indices & ETFs** (13): SPX, NDX, RUT, VIX, SPY, QQQ, IWM, DIA, GLD, SLV, USO, UNG, TLT ## Dealer gamma (GEX) Computed from our own live option chains. Levels are **non-naive**: each strike is evaluated with its own Black-Scholes greek AT that strike — the hedging force if price traded there — not with today's spot-decayed greek. Honest limit, from our own 31-day intraday study: no GEX level beat its mirror placebo (walls held 87.6% of the time versus 90.7% for random levels), so it is not a directional signal. What did reproduce is the regime — negative net gamma runs about 40% more volatile. Use it for sizing, not for targets. The free levels chart stays free and needs no account: https://tick-stream.xyz/free-gex-levels-realtime ## Algos Thirteen NQ strategies. Signals over API, WebSocket or Telegram. **tickstream never places an order**; every execution is triggered by you or a system you armed. Track records are **paper**, one contract, with each sleeve's own commission and slippage charged on every fill, and they start 2026-06-01. Where a sleeve went live later, the earlier stretch is a disclosed backfill recomputed from our archived tick path and marked in the curve. One sleeve (Wickline) was deliberately built without an edge as a control group and beat the strategy it was testing against; it is still running and still published. Our own recommendation: do not put serious money behind two months of paper. - `cot-pulse` **Bellwether** (NQ) — Institutional positioning, distilled to one daily bias. - `nq-trend` **Slipstream** (NQ) — Long-only trend on NQ, vol-targeted. - `gamma-reversal` **Riptide** (NQ) — Fade overshoots when dealers are short gamma. - `gamma-reversal-day` **Riptide Day** (NQ) — Riptide, flat overnight — for prop desks. - `post-opex` **Aftershock** (NQ) — Long the week after options expiry. - `post-opex-day` **Aftershock Day** (NQ) — Aftershock, flat overnight — for prop desks. - `nq-breakout` **Ignition** (NQ) — Intraday consolidation breakouts, structure-stopped. - `backdraft` **Backdraft** (NQ) — First-15-minute momentum, traded only when dealers are short gamma. - `slingshot` **Slingshot** (NQ) — Buy the pullback, ride the continuation — intraday. - `iv-breakout` **Surge** (NQ) — Breakout on days QQQ implied vol predicts a surge. - `orb30` **Daybreak** (NQ) — The 30-minute opening range, traded long — and flat by five. - `wickline` **Wickline** (NQ) — The placebo that beat the strategy — pullbacks to ordinary candle lows. - `nq-reversion` **Undertow** (NQ) — Buy-the-dip mean reversion on NQ. Records: https://tick-stream.xyz/algos ## Errors | status | code | meaning | |---|---|---| | 401 | `unauthorized` | missing or unknown key | | 402 | `payment_required` | subscription lapsed | | 403 | `plan_required` | your packages do not include this feed or symbol | | 403 | `request_type_not_in_plan` | options request type above your package; the message names the one that unlocks it | | 429 | `rate_limited` | slow down; retry after the header says when | ## Guarantee Provable gap or a wrong print in your stream and that month is free — automatically, without a support ticket. Gap history is public on the status page. ## Documentation **Getting started** - [Introduction](https://tick-stream.xyz/docs) - [Quickstart](https://tick-stream.xyz/docs/quickstart) - [Authentication](https://tick-stream.xyz/docs/authentication) **Streaming** - [WebSocket stream](https://tick-stream.xyz/docs/streaming) - [Symbols & markets](https://tick-stream.xyz/docs/symbols) - [Level 2 depth](https://tick-stream.xyz/docs/level2) - [L3 / market-by-order](https://tick-stream.xyz/docs/level3) **Options** - [Options data](https://tick-stream.xyz/docs/options) **API** - [REST API](https://tick-stream.xyz/docs/rest) - [Historical data](https://tick-stream.xyz/docs/historical) - [Limits & errors](https://tick-stream.xyz/docs/limits) **Execution** - [Account & Execution API](https://tick-stream.xyz/docs/execution) **GEX** - [GEX API](https://tick-stream.xyz/docs/gex) **SDKs & AI** - [SDKs & libraries](https://tick-stream.xyz/docs/sdks) - [LLM & MCP](https://tick-stream.xyz/docs/llm) ## SDKs - Python: `pip install tickstream` - Node / TypeScript: `npm i @tickstream/client` - Rust: `cargo add tickstream` - Go: `go get github.com/Alx90s/tickstream-go` - MCP: `npx -y tickstream-mcp` ## Research Backtests on our own tick archive, published whether or not they worked — several of these are strategies we killed: - [The '10 a.m. Key Open' Strategy: We Tested Every Claim in the Video on 7 Years of Tick Data](https://tick-stream.xyz/blog/key-opens-fibonacci-strategy-backtest-nq) - [We Tested Serge Hoffmann's Order-Book Scalping on 7 Years of NQ Ticks — It Loses, and the Order Flow Makes It Worse](https://tick-stream.xyz/blog/serge-hoffmann-orderbook-scalping-backtest-nq) - ["The Setup I Use Live Every Day": We Backtested the Decelerating Support Bounce on 7 Years of NQ](https://tick-stream.xyz/blog/decelerating-support-bounce-strategy-backtest-nq) - [We Combined GEX, Volume Profile, Order Flow & ORB. The Backtest Made $500k. It Was Fake.](https://tick-stream.xyz/blog/gex-volume-profile-order-flow-confluence-backtest-nq) - [A Free GEX Tool Compared to GEXBOT: Honest Side-by-Side (2026)](https://tick-stream.xyz/blog/free-gex-tool-vs-gexbot-comparison) - [CME Data Feed Providers Compared (2026): Direct, Vendor APIs, Retail Platforms](https://tick-stream.xyz/blog/cme-data-feed-providers-compared) - [Low-Latency CME Market Data: What's Physically Realistic (And What's Marketing)](https://tick-stream.xyz/blog/low-latency-cme-market-data-what-is-realistic) - [We Got the Time Zone Wrong: Correcting Our Audit of the Viral 'Institutional Protocol' ORB Validation](https://tick-stream.xyz/blog/fabio-ivb-orb-strategy-institutional-protocol-audit) - [A Reader Sent Us Their Camarilla Reversal Strategy. We Backtested It — Exactly As Written.](https://tick-stream.xyz/blog/camarilla-pivot-reversal-strategy-backtest-mnq) - [We Backtested Every Setup From Two Best-Selling Volume Profile & Order Flow Books on 7 Years of NQ](https://tick-stream.xyz/blog/volume-profile-order-flow-book-setups-backtest-nq) - [CME Crypto Futures Data Is Live: Real-Time BTC & ETH Tick Streams (BTC, MBT, ETH, MET)](https://tick-stream.xyz/blog/cme-crypto-futures-data-btc-eth-realtime) - ["Draw on Liquidity" Tested: Are Equal Highs and Unmitigated FVGs Really Magnets? 7 Years, Base-Rate Controlled](https://tick-stream.xyz/blog/draw-on-liquidity-tested-nq-backtest) - ["The Daily Sweep" — 14 Years to Master, 60 Seconds to Explain, One Backtest to Kill](https://tick-stream.xyz/blog/daily-sweep-strategy-backtest-nq) - [Do Our Strategies Work in Asia and London? We Audited Our Own Book — and Killed Two of Our Own Algos](https://tick-stream.xyz/blog/do-trading-strategies-work-asia-london-session-audit) - ["Sunday Open Is a Free Money Glitch" — We Tested the Viral Claim on 291 Sundays. The Glitch Is Real. His Rules Destroy It.](https://tick-stream.xyz/blog/sunday-open-free-money-glitch-backtest-nq) - [L1 vs L2 vs L3 Market Data: What Retail Algo Traders Actually Need (and Why L3 Is Wasted on You)](https://tick-stream.xyz/blog/l1-vs-l2-vs-l3-market-data-retail-algo-traders) - [Is Market Entropy 'More Important Than the VIX'? We Tested Shannon Entropy on 98 Years of the S&P 500](https://tick-stream.xyz/blog/market-entropy-indicator-vs-vix-backtest) - [Black-Scholes, Tested Against 7.5 Years of Real Option Chains: What the Famous Formula Gets Wrong — and Right](https://tick-stream.xyz/blog/black-scholes-model-tested-real-option-chains) - [Does CPI Above 4% Crash the Stock Market? We Tested the Claim on 98 Years — Right as It Fires Again](https://tick-stream.xyz/blog/cpi-above-4-percent-stock-market-crash-claim-backtest) - [Do Price Gaps Get Filled? We Tested 1,748 NQ Opening Gaps — the Fill Rate Is a Distance Illusion](https://tick-stream.xyz/blog/do-price-gaps-get-filled-gap-trading-backtest-nq) - [Wickless Candle Strategy: We Backtested the '88% Win Rate' Claim on 7 Years of NQ](https://tick-stream.xyz/blog/wickless-candle-strategy-88-percent-win-rate-backtest) - [ORB30 Strategy Backtest: 30-Minute Opening Range Breakout on NQ, 7 Years, Placebo-Controlled](https://tick-stream.xyz/blog/orb30-strategy-backtest-30-minute-opening-range-nq) - ["A 2% Drop Always Bounces" — We Tested Buy-the-Dip on 7 Years of NQ](https://tick-stream.xyz/blog/buy-the-dip-2-percent-drop-nq-backtest) - [Does Post-Earnings-Announcement Drift Still Work? We Tested 50,000 Earnings Events](https://tick-stream.xyz/blog/does-post-earnings-drift-work-backtest-sp500) - [The EMA 9/20 Pullback Strategy: 62% Win Rate Claimed, 31% Measured](https://tick-stream.xyz/blog/ema-9-20-pullback-strategy-backtest-nq) - [Footprint Order-Flow Exhaustion: We Tested 187,018 Events — the Retest Claim Is Backwards](https://tick-stream.xyz/blog/footprint-order-flow-exhaustion-backtest-nq) - [Hidden Markov Model Trading: Regime Detection Only Works When It Sees the Future](https://tick-stream.xyz/blog/hidden-markov-model-trading-regime-detection-backtest) - [How to Code a Trading Algorithm: The Roadmap That Survives an Honest Backtest](https://tick-stream.xyz/blog/how-to-code-a-trading-algorithm) - [Higher-Timeframe Bias, Lower-Timeframe Entry: Does the Entry Actually Add Anything?](https://tick-stream.xyz/blog/htf-bias-ltf-entry-multi-timeframe-backtest-nq) - [A 78% Win-Rate First-Hour Strategy Went Viral. We Ran It on 7 Years of NQ.](https://tick-stream.xyz/blog/ib60-first-hour-pullback-strategy-backtest-nq) - [A Viral Order-Flow Strategy Promised 50–100 Point Reactions. Random Levels Deliver the Same.](https://tick-stream.xyz/blog/order-flow-strategy-hvn-levels-50-point-reaction-backtest) - [The One Dip-Buying Rule That Was Positive Every Single Year: RSI-2 on NQ](https://tick-stream.xyz/blog/rsi2-dip-buying-nq-mean-reversion-that-works) - [The Leveraged-ETF Rotation Backtest That Turns $100k Into Billions — And Why You Can't Trade It](https://tick-stream.xyz/blog/leveraged-etf-rotation-backtest-100k-to-billions) - [Do Gamma Walls Actually Work? Call Wall & Put Wall Tested on 7 Years of QQQ](https://tick-stream.xyz/blog/do-gamma-walls-work-call-put-wall-backtest-qqq) - [Do Order-Flow Indicators Actually Work? We Backtested CVD, Delta & Footprint on 7 Years of NQ](https://tick-stream.xyz/blog/do-order-flow-indicators-work-cvd-delta-nq) - [Is Volume Really the Most Underrated Indicator? We Tested Volume Breakouts on 7 Years of NQ](https://tick-stream.xyz/blog/is-volume-the-most-underrated-indicator-backtest-nq) - [Can You Tell If Today Is a Trend Day or a Reversion Day? We Tested It on 7 Years of NQ](https://tick-stream.xyz/blog/can-you-predict-trend-vs-reversion-day-nq) - [Does Price 'Fill' the Prior-Day Value Area? We Tested the 80% Rule on 7 Years of NQ](https://tick-stream.xyz/blog/does-price-fill-value-area-80-rule-nq) - [Does the NY Opening-Range Breakout Actually Work? We Tested Every Version on 7 Years of NQ](https://tick-stream.xyz/blog/does-opening-range-breakout-work-backtest-nq) - [Does the 'Previous-Day Value Area' Strategy Work? We Tested Every Version on 7 Years of NQ](https://tick-stream.xyz/blog/previous-day-value-area-strategy-backtest) - [Does ICT Actually Work? We Backtested the 5 Core Setups on 7 Years of NQ](https://tick-stream.xyz/blog/does-ict-work-backtest-order-blocks-fvg-ote) - [Why PBD Is Failing: We Backtested the Market-Profile Model on 7 Years of NQ](https://tick-stream.xyz/blog/why-pbd-trading-model-fails-backtest) - [CME Market Data Pricing 2026: The Real Price List, From Exchange Fees to $19/mo APIs](https://tick-stream.xyz/blog/cme-market-data-pricing-affordable-feeds) - [Connecting AI Agents to Live Market Data with MCP (Claude, Cursor)](https://tick-stream.xyz/blog/connect-ai-agents-live-market-data-mcp) - [Futures Options Data via API: Greeks, Implied Volatility and Gamma Exposure](https://tick-stream.xyz/blog/futures-options-data-greeks-gamma-exposure) - [Historical Tick Data for Backtesting: The Complete Guide](https://tick-stream.xyz/blog/historical-tick-data-backtesting-guide) - [Level 2 Market Data Explained: Reading Order Book Depth in Futures](https://tick-stream.xyz/blog/level-2-market-data-order-book-depth) - [Real-Time Futures Market Data API: How to Stream CME Ticks in 2026](https://tick-stream.xyz/blog/realtime-futures-market-data-api) --- Generated 2026-08-07 from pricing.config.mjs, symbols.mjs, algos.mjs and docsNav.mjs. Contact: support@tick-stream.xyz