Website profiles · Technology insights · Alternatives

resolvedmarkets.com

Polymarket historical orderbook data API: 4.2B+ orderbook snapshots across 184 recurring and event series since March 2026. REST, WebSocket, MCP and a backtester. Free tier available.

Paid content
Visit website
Profile views 4 Outbound visits 1 Normal
Resolved Markets Full homepage screenshot

At a glance

Category
Development
Language
English
Paid-content signal
Paid contentObserved
Registered
2026
Hosting
CloudflareInferred
HTTPS certificate trusted
PassedObserved
Last updated

Website review

This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.

What is Resolved Markets?

Resolved Markets is a data and tooling service for Polymarket, the prediction-market platform. Its focus is historical order-book data plus a backtester: the site describes 4.2B+ order-book snapshots across 184 recurring and event series, with access via REST, WebSocket, MCP, and a backtesting tool. It also advertises a free tier and a no-account API key step.

In practical terms, it is aimed at people who want to test prediction-market strategies rather than just browse live odds. The site highlights:

  • Backtesting: describe a strategy in plain English, and the agent returns code, an equity curve, and trades.
  • Historical order-book snapshots: full bid/ask depth, mid prices, spreads, and crypto spot price.
  • Market coverage: crypto prediction markets, politics and elections, sports and live events, economic indicators, plus weather and city-level markets.
  • Developer access: REST APIs, historical exports, structured schemas, WebSocket streams, and replay snapshots.
  • Event-reaction research: replay how markets moved around viral moments, breaking news, and sentiment shifts.

A useful next step is to treat it as two products in one: a data API for building monitoring or analytics systems, and a backtester for checking whether a strategy would have survived real order-book conditions. If you already have a rule you trade manually, start by replaying it on a narrow category — say, one recurring crypto series — before expanding to politics or sports, where liquidity and event timing behave differently. The trade-off is that richer historical depth and agent-generated backtests are most valuable to quantitative users; casual users who only want current odds may find the live Polymarket interface sufficient.

How do I backtest a Polymarket strategy using Resolved Markets?

You backtest on Resolved Markets by describing a strategy and letting its agent generate code, an equity curve and a trade list, then iterating against historical orderbook snapshots. The page presents this as a three-step path: generate a free API key (no account or credit card required), explore the documented endpoints with live examples, then connect the API to your own research pipeline, bot or analytics tool.

Resolved Markets

What you're backtesting against

The historical layer is the important part: tick-level orderbook snapshots with full bid/ask depth, mid prices, spreads, and a crypto spot price reference, spanning prediction, crypto, politics, sports, live events and economic indicators. Because depth and spreads are preserved, you can test strategies that depend on execution — quoting, taking liquidity, or exiting a thin market — rather than only price-based signals.

A concrete workflow

  1. Write the strategy in plain English. Example: "Buy YES when the mid drops 8% within an hour with no news, hold until it recovers halfway, cap position at $500."
  2. Read the generated code before trusting the curve. Check the entry timing, fill assumption and fee/slippage handling. Most backtest errors live here, not in the data.
  3. Inspect the trades, not just the equity curve. Look for clustered winners from one event, or a handful of trades carrying the whole result.
  4. Re-run on a different period or category. A strategy that only works in election weeks is an event strategy, not a general one.
  5. Move to paper or small live size using the live feed and WebSocket streams before committing capital.

Time-based replay

Time-based queries let you reconstruct how probabilities moved at specific timestamps, which is useful for event-driven work: replaying reactions to breaking news, viral posts or sentiment shifts minute by minute. Treat this as a research tool for understanding market behaviour, not as evidence that the same reaction will repeat.

Practical trade-offs

Approach Good for Watch out for
Plain-English agent backtest Fast first pass, learning the market's behaviour Assumptions hidden in generated code
REST historical exports Custom analysis in your own stack You own the data cleaning and fill logic
WebSocket live streams Forward-testing and monitoring systems Not a substitute for historical validation

The free tier and instant key make the first pass cheap; the real cost is the time you spend checking that fills and timing assumptions match how you'd actually trade.

What historical orderbook data does Resolved Markets provide for prediction markets?

Resolved Markets provides historical orderbook snapshots for prediction markets, positioned as a data source for backtesting and research rather than just live price viewing. According to the site, it covers 4.2B+ orderbook snapshots across 184 recurring and event series since March 2026, spanning categories such as crypto prediction markets, politics and elections, sports and live events, and economic indicators.

H3 What each snapshot contains Per the page, every snapshot includes full bid/ask depth, mid prices, spreads, and a crypto spot price reference. That combination matters if your strategy depends on liquidity conditions rather than just the last traded probability. For example, a trader testing a "buy the dip on a viral news spike" rule needs to know whether the apparent price move was tradeable at the quoted depth, or whether the spread would have eaten the edge.

H3 How you access it The site lists several access layers:

  • REST APIs for historical exports and time-based queries
  • WebSocket streams for live data
  • Replay snapshots for reconstructing event-driven probability movement
  • Structured, normalized schemas
  • An MCP interface and a backtester that accepts a plain-English strategy description and returns code, an equity curve, and trades

H3 Practical fit This is aimed at quantitative researchers, bot builders, and analysts who want to replay market reactions to news, tweets, or sentiment shifts minute by minute. The trade-off is typical of tick-level orderbook data: it is rich enough for realistic fill assumptions, but you need to handle volume, timestamp alignment, and normalization yourself. If you only need end-of-day probabilities, a simpler price history may be enough.

A useful next step is to pick one market category you already understand, pull a narrow time window around a known event, and check whether the recorded depth supports the position sizes your strategy assumes. That single test tells you more than browsing feature lists.

How much does Resolved Markets cost, and what does the free tier include?

Resolved Markets publishes its own pricing page at Resolved Markets, so that page is the authoritative place to check current plan costs — the site information here does not state specific dollar figures for paid tiers.

What the product information does confirm about free access:

  • A free tier exists, and the site describes generating an API key with no account creation and no credit card required.
  • New users are described as receiving 10,000 credits, and the site mentions an additional 10,000 credits for signing up to Polymarket through its referral link, once per account.
  • The free entry point is framed around backtesting Polymarket strategies against historical order book data, plus access to REST, WebSocket and MCP interfaces and a backtester.

What to check before committing

Because credits are the apparent unit of consumption rather than a flat subscription, the practical question is not "what does it cost" but "how far do 10,000 credits go." Two things determine that:

  1. Snapshot depth. Tick-level order book snapshots are the heavy item. A strategy tested across many markets and long date ranges will burn credits far faster than a single-market replay.
  2. Live versus historical. Streaming live order book data continuously is a different usage pattern from one-off historical exports, and providers usually price these differently.

A concrete way to decide

If you are testing a single idea — say, whether a BTC prediction market strategy survives the hours around a viral news spike — start on the free credits, run one narrow backtest, and note the credit cost. Multiply that by the number of market series and date ranges you actually need. If the total fits inside the free allowance, you may never need a paid plan; if it does not, the paid tier's value depends on whether your ongoing monitoring or research justifies continuous data access.

Next step: open the pricing page at Resolved Markets and compare tiers against your expected snapshot volume, then confirm the credit-to-request ratio in the API reference before scaling up.

How can I connect to the Resolved Markets API using REST, WebSocket, or MCP?

Resolved Markets exposes three connection paths, and the right one depends on whether you need history, live streaming, or agent-driven backtesting.

REST API — best for historical pulls and scheduled jobs. The docs show 11 endpoints with live examples you can test in the browser. Authentication is a header key: fetch('/v1/markets/live', { headers: { 'X-API-Key': key } }). Use REST for orderbook snapshots, historical exports, time-based queries at specific timestamps, and anything you want to cache or store locally.

WebSocket streams — best for monitoring systems that need live updates rather than polling. The site lists WebSocket Streams alongside REST APIs, historical exports and replay snapshots. If your use case is tracking spreads, mid prices or liquidity shifts as they happen, stream instead of hammering REST endpoints.

MCP — the site lists MCP alongside REST and WebSocket. This is the path for agent or LLM-driven workflows: the page describes describing a strategy in plain English and having an agent backtest it, returning the code, equity curve and trades. If you want a tool-calling assistant to query markets or run a backtest without writing the plumbing yourself, MCP is the intended route.

Getting started

  1. Generate a free API key — the page says no account creation and no credit card are required, just click and go.
  2. Browse the API reference and test requests directly from the documentation.
  3. Integrate into your research pipeline, trading bot or analytics platform.

Choosing between them

Need Path
Historical snapshots, exports, timestamp queries REST
Live orderbook updates, spread/liquidity monitoring WebSocket
Agent-run backtests, natural-language strategy testing MCP

Practical next step: start with REST to confirm your key works and inspect the snapshot schema (bid/ask depth, mid prices, spreads, crypto spot price). Once you know the shape of the data, move to WebSocket for anything latency-sensitive, and reach for MCP only if you actually want an agent in the loop rather than your own code.

Decision criterion: if your strategy depends on reaction speed, streaming matters; if it depends on studying past market behaviour — viral moments, news reactions, conviction shifts — historical REST pulls and replay snapshots will carry you further. For coverage context, the page claims 4.2B+ orderbook snapshots across 184 series since March 2026, spanning crypto, politics, sports, weather and economic indicators.

For Polymarket account mechanics referenced in the signup bonus, see Polymarket.

Can I use Resolved Markets to replay market reactions to viral events like Elon tweets or breaking news?

Yes — replaying reactions to viral moments is one of the uses Resolved Markets explicitly supports. Its page describes navigating market conditions across specific timestamps and reconstructing event-driven probability movement, and it advertises replaying real market reactions to viral moments, Elon tweets, breaking news, meme cycles and crowd sentiment shifts minute by minute using historical order book data. The site says it holds tick-level order book snapshots including full bid/ask depth, mid prices and spreads, which is what makes a genuine replay possible rather than just a price line.

What "replay" actually gives you

  • Timestamp-based queries: pick a moment and look at the book as it stood, then step forward through the reaction.
  • Depth, not just last price: you can see whether a move came with real liquidity behind it or thinned out as people pulled orders.
  • Spread and mid movement: useful for judging how conviction and uncertainty shifted during the event window.
  • Crypto spot price alongside snapshots: relevant if you are studying crypto-linked prediction markets.

How to set up a useful test

  1. Pick a small set of clearly dated events — a specific tweet, an earnings release, a scheduled news conference.
  2. Define your window before and after: for example, 30 minutes prior through 60 minutes after.
  3. Record the mid, spread and top-of-book depth at fixed intervals, so your comparison is consistent across events.
  4. Compare event types against each other rather than only against a quiet baseline; the interesting question is usually whether news-driven moves behave differently from sports or weather markets.
  5. Check whether the move is tradable after costs — a fast reaction with a wide spread may look dramatic but be hard to capture.

Trade-offs and limits

Replay shows what the book looked like, not what you personally could have gotten filled at, since your own orders would have changed the market. Very short-lived spikes are also the hardest thing to study: snapshot granularity and your own decision latency both matter. If your strategy depends on reacting within seconds, treat replay results as an upper bound and test with conservative assumptions.

Practical next step

Start with one event you remember clearly, replay it, and write down what you would have needed to know in advance to act on it. If that answer is "nothing realistic," the event study is interesting but not a strategy. Resolved Markets is at Resolved Markets; its API reference and a free tier are described on the site, and pricing details are best checked directly on its pricing page. For broader context on prediction market data and tooling, Polymarket is the underlying venue.

Related questions

More questions →
How to Backtest a Polymarket Strategy with Historical Orderbook Data

To backtest a Polymarket strategy, you need tick-level historical orderbook snapshots — not just price charts — so you can simulate fills against real bid/ask depth at specific timestamps. Resolved Markets provides this: 4.2B+ orderbook snapshots across 184 recurring and event series since March 2026, accessible via REST, WebSocket, MCP, and a built-in backtester, with a free tier and a free API key (no credit card). This guide covers the full workflow: sourcing data, replaying market conditions, defining rules, simulating fills, and evaluating results.

What Historical Polymarket Data You Actually Need

Prediction market backtests fail when they use mid prices alone. A YES contract trading at $0.60 mid might have $50 of depth at $0.59 and $0.61 — your $500 order would move the market. You need:

Data type Why it matters What to look for
Tick-level orderbook snapshots Simulates realistic fills Full bid/ask depth, not just top-of-book
Mid prices Baseline probability tracking Per snapshot
Spreads Transaction cost modeling Bid-ask spread at each tick
Crypto spot price Context for crypto prediction markets Included per snapshot in Resolved Markets
Timestamps Event replay and look-ahead prevention Sub-minute granularity

Resolved Markets captures every snapshot with full bid/ask depth, mid prices, spreads, and crypto spot price. Coverage spans crypto prediction markets, politics and elections, sports and live events, economic indicators, and weather — 100+ markets tracked across 7 categories and 30+ cities.

Step 1: Get Data Access

  1. Generate a free API key — Resolved Markets issues one instantly with no account creation and no credit card required.
  2. Explore the API — 11 endpoints with live examples you can test directly from the documentation.
  3. Pull historical data — Use REST APIs for historical exports and structured schemas, or WebSocket streams for live data. Replay snapshots let you reconstruct specific timestamps.

Example request pattern from the docs:

fetch('/v1/markets/live', {
  headers: { 'X-API-Key': key }
})

For backtesting you'll want the historical export endpoints rather than the live feed. If you sign up on Polymarket through the Resolved Markets referral link, you get 10,000 free API credits added to your account (once per account).

Step 2: Reconstruct Market Conditions at Specific Timestamps

This is where orderbook data separates real backtests from curve-fitting. Time-based queries let you navigate market conditions across specific timestamps and reconstruct event-driven probability movement.

The practical approach:

  • Pick your event window. If you're testing a strategy around breaking news or viral moments, pull snapshots minute-by-minute through the reaction period. Resolved Markets explicitly supports replaying market reactions to viral moments, tweets, breaking news, meme cycles, and crowd sentiment shifts.
  • Load the full book at each tick. Not just the mid — the entire bid/ask ladder.
  • Track liquidity changes. How did depth thin out as the event approached resolution? Did spreads widen?

A concrete example: you want to test whether buying YES on a crypto market 30 minutes before a scheduled announcement is profitable. You need every snapshot in that 30-minute window, plus the resolution outcome, to know whether the position would have settled in your favor.

Step 3: Define Entry/Exit Rules and Simulate Fills Against Depth

Write your rules as explicit conditions on orderbook state, not just price:

  • Entry: "Buy YES when mid price crosses $0.55 AND top-of-book ask depth exceeds 200 shares AND spread < $0.02."
  • Exit: "Sell when mid reaches $0.70 OR 2 hours before resolution, whichever comes first."
  • Position sizing: Cap order size at a fraction of visible depth (e.g., 10% of ask-side liquidity) to avoid unrealistic fills.

Simulating fills correctly: Walk the ask ladder. If you're buying 500 shares and the book shows 200 at $0.56, 200 at $0.57, and 300 at $0.58, your average fill is not $0.56 — it's a weighted average across those levels. Backtests that assume top-of-book fills systematically overstate returns.

Resolved Markets' backtester accepts a strategy described in plain English, then returns the code, equity curve, and trades — useful for quickly testing an idea before building a full simulation.

Step 4: Evaluate Results with Prediction-Market-Specific Metrics

Standard equity curves and trade logs are necessary but not sufficient. Prediction markets have dynamics that equity backtests miss:

  • Resolution risk: A position can go to $0 or $1 at settlement. Your equity curve must model binary outcomes, not continuous price paths.
  • Time decay near resolution: Prices converge to 0 or 1 as the event resolves. Strategies that hold to resolution face different risk than those that exit early.
  • Liquidity evaporation: Depth often thins dramatically in the final hours. A strategy that looks profitable on mid-price signals may be unfillable at scale.
  • Spread costs: On a $0.60 contract, a $0.02 spread is 3.3% of notional per round trip. Model this explicitly.

Track: total return, Sharpe ratio (annualized appropriately for event-driven timing), maximum drawdown, win rate, average fill slippage vs. mid, and number of trades where your order size exceeded available depth.

Step 5: Validate and Watch for Common Pitfalls

Out-of-sample testing: Split your data by time period, not randomly. Train on events from one quarter, test on the next. Prediction market regimes shift with news cycles.

Look-ahead bias: The most common failure. If your strategy uses "the resolution outcome" as an input before the market resolved, you've leaked future information. Every signal must use only data available at that timestamp.

Survivorship bias: If you only test markets that resolved (and exclude ones that were cancelled or delisted), your results are skewed. Resolved Markets' coverage of 184 recurring and event series helps here — you can test across the full universe, not just winners.

Overfitting to specific events: A strategy tuned to one viral moment won't generalize. Test across multiple event types (crypto, sports, politics) and time periods.

Validate against live data: Run your strategy in paper-trading mode against the live feed before committing capital. Compare simulated fills to what the live orderbook would have given you.

Quick Reference: The Full Workflow

  1. Get a free API key from Resolved Markets (instant, no credit card).
  2. Pull tick-level orderbook snapshots for your target markets and time windows via REST historical exports.
  3. Reconstruct the full bid/ask ladder at each timestamp.
  4. Define entry/exit rules as conditions on orderbook state.
  5. Simulate fills by walking the depth ladder, not assuming mid-price fills.
  6. Evaluate with equity curves, trade logs, and prediction-market-specific metrics (resolution risk, spread costs, liquidity evaporation).
  7. Validate out-of-sample and check for look-ahead and survivorship bias.
  8. Paper-trade against live data before going live.

The free tier and 10,000 referral credits make steps 1–3 accessible without upfront cost. The backtester's plain-English strategy input lets you iterate quickly on steps 4–6 before writing production code.

How to Backtest Your Polymarket Strategy with Historical Orderbook Data

To backtest a Polymarket strategy, you need historical orderbook snapshots — not just final prices — so you can replay the bid/ask depth your strategy would have traded against. Resolved Markets provides tick-level snapshots (full bid/ask depth, mid prices, spreads, and crypto spot price) across prediction, crypto, sports, and weather markets, with REST APIs, historical exports, WebSocket streams, and a backtester that takes a plain-English strategy description and returns code, an equity curve, and trades. A free tier and a free API key (no account creation or credit card required) are available; check the pricing page for current limits.

What you actually need before starting

A backtest is only as good as its inputs. For prediction markets, three data properties matter more than raw price history:

| Requirement | Why it matters | |---|---|---| | Tick-level orderbook snapshots | A strategy that posts or takes liquidity depends on depth and spread, not just the last trade price | | Timestamped snapshots | You must reconstruct the market exactly as it looked when your signal fired | | Category coverage | Crypto, politics, sports, and weather markets behave differently; test on the categories you trade |

Resolved Markets reports 4.2B+ orderbook snapshots across 184 recurring and event series since March 2026, covering 100+ markets and 7 categories. If your strategy depends on a market outside that coverage, the backtest can't validate it.

Step 1: Get data access

  1. Generate a free API key — the site states this requires no account creation and no credit card.
  2. Browse the API reference (11 endpoints with live examples) and test requests directly from the documentation.
  3. Confirm your target markets exist in the historical dataset before writing strategy code.

A minimal live-data call looks like this, which you can adapt to historical endpoints:

fetch('/v1/markets/live', {
  headers: { 'X-API-Key': key }
})

Expected result: you receive structured market data you can query by timestamp. If a market returns no history, stop here — no amount of strategy logic will fix missing data.

Step 2: Reconstruct market conditions at specific timestamps

This is the core of prediction-market backtesting and where most naive backtests fail. Use time-based queries to pull the snapshot state at each moment your strategy would have acted.

For each decision point, extract:

  • Best bid and best ask
  • Full depth on both sides
  • Mid price and spread
  • Crypto spot price, if your market is crypto-linked

Then ask: could my order actually have filled at this price, given this depth? A signal that looks profitable on mid prices can vanish once you account for spread and available size.

Step 3: Define strategy logic against real fields

Map your idea to the fields the data actually exposes. For example, a strategy like "buy when the spread narrows and mid price crosses 0.60 with at least X size on the bid" is testable; "buy when sentiment turns bullish" is not, unless you define sentiment as a measurable series.

If you use the built-in backtester, you can describe the strategy in plain English and it returns the code, equity curve, and trades — useful for quickly checking whether an idea is even coherent before building it out.

Step 4: Run the backtest and inspect outputs

Look at three things, in this order:

  1. Trades — Did each fill happen at a price and size the orderbook could support? Reject any trade that assumed liquidity that wasn't there.
  2. Equity curve — Check drawdown shape, not just final return. A curve that depends on one lucky event is not a strategy.
  3. Code — If using the agent-generated backtest, read the code to confirm it implements what you intended, not a plausible-looking approximation.

Step 5: Validate against real market behavior

Prediction markets react to discrete events — viral moments, breaking news, tweets, meme cycles. Resolved Markets explicitly supports replaying these reactions minute by minute. Use this to stress-test:

  • Does your strategy survive the volatility spike around a news event?
  • Does it degrade when spreads widen during low-liquidity periods?
  • Does performance differ across categories (crypto vs. sports vs. politics)?

Common pitfalls

  • Backtesting on mid price only. Ignores spread and depth; overstates fills.
  • Ignoring the event-driven nature of prediction markets. Probability jumps are often discontinuous, so stop-loss and limit logic behave differently than in continuous markets.
  • Testing outside your data coverage. If the market or time period isn't in the dataset, results are fabricated.
  • Treating a generated backtest as ground truth. Always read the code and verify the fill assumptions.
  • Assuming free means unlimited. A free tier and free API key exist, but credit limits and pricing terms are on the pricing page — verify before scaling.

When this approach fits

Use historical orderbook backtesting when your strategy depends on execution quality — posting liquidity, capturing spread, or sizing into depth. If your strategy only acts on final outcomes and never touches the book, simpler price history may suffice, and the full snapshot pipeline is more than you need.

What Is OpenAPI-Generated API Documentation and How Does It Work?

OpenAPI-generated API documentation is reference documentation that is produced automatically from an OpenAPI description file rather than written by hand. You write (or generate) a machine-readable specification of your API — endpoints, parameters, request bodies, responses, schemas, and auth — and a documentation tool reads that file and renders a browsable, often interactive reference site. The spec becomes the single source of truth; the docs become a build artifact.

This differs from manually written docs in one fundamental way: with hand-written docs, the prose is the source of truth and the API is described separately. With spec-driven docs, the API description is the source, and every page, table, and code sample is derived from it.

How the workflow actually runs

A typical spec-driven documentation pipeline has five stages:

  1. Author or generate the spec. You either write an OpenAPI document by hand (YAML or JSON), or generate it from code annotations, framework metadata, or a design-first editor. Design-first means the spec is written before implementation; code-first means it is extracted from existing code.
  2. Validate and lint. The spec is checked against the OpenAPI schema and against style rules — consistent naming, required descriptions, no undocumented 4xx responses, no orphaned schemas.
  3. Bundle and transform. Multi-file specs are combined, $ref pointers are resolved, and the document is optionally split into per-tag or per-version outputs.
  4. Render. A documentation tool converts the spec into HTML: an endpoint list, a sidebar of operations, parameter tables, response schemas, and a "try it" console.
  5. Publish and version. The rendered site is deployed, and each API version gets its own snapshot so consumers can read docs matching the version they call.

Steps 2 through 5 are usually automated in CI. If the spec fails validation, the docs build fails — which is the point.

Spec-driven vs. hand-written documentation

Dimension OpenAPI-generated Hand-written
Source of truth The spec file The prose
Consistency with the API High, if the spec is accurate Drifts as the API changes
Effort per endpoint Low after setup Repeated for every endpoint
Narrative and tutorials Weak; needs separate pages Strong
Code samples Generated per language from schemas Written and maintained manually
Customization Bounded by the tool's templates Unlimited
Failure mode Accurate spec, poor docs, or stale spec Beautiful docs that describe an API that no longer exists

The practical conclusion most teams reach: generate the reference, write the guides. Reference material is repetitive and mechanical, which is exactly what generation is good at. Conceptual explanations, migration notes, and tutorials carry judgment that a spec cannot express.

What you get out of the box

Generated reference pages commonly include:

  • An operation list grouped by tag or path, with HTTP method and path.
  • Parameter tables showing name, location (path, query, header, cookie), type, required flag, and description.
  • Request and response schemas rendered as expandable trees, including nested objects and arrays.
  • Authentication details pulled from the securitySchemes section.
  • Interactive request consoles that let a reader send a real call from the browser.
  • Generated code samples in several languages, derived from the same schemas.
  • Multiple output formats, such as a static site, a single HTML file, or a mock server.

Because all of these come from one document, changing a field name in the spec updates the parameter table, the schema tree, and every code sample at once.

Where spec-driven documentation breaks down

Generation is not free. The trade-offs are real:

Spec quality becomes documentation quality. A field with no description produces a table row with an empty cell. A vague summary produces a vague heading. Tools can enforce presence of descriptions via linting, but they cannot enforce that the description is useful.

Customization has limits. If you need a page that does not map to an OpenAPI concept — a conceptual overview, a pricing explanation, a comparison of two endpoints — you write it outside the generator and link to it.

Not everything is expressible. Webhooks, streaming responses, long-polling behavior, and complex multi-step flows are awkward or impossible to describe fully in OpenAPI. Those need prose.

The spec can go stale. If the spec is maintained separately from the implementation, it drifts just like hand-written docs. The mitigation is to generate the spec from code, or to test the implementation against the spec in CI.

Interactive consoles need care. A "try it" button that hits a production API with real credentials is a security and rate-limit problem. Point it at a sandbox, or disable it.

Deciding whether to adopt it

Adopt spec-driven reference documentation if most of these are true:

  • Your API has more than a handful of endpoints, or changes frequently.
  • You ship client SDKs or code samples in more than one language.
  • Multiple teams consume the API and need a consistent, always-current reference.
  • You already have, or are willing to maintain, an OpenAPI description.

Stay with hand-written docs, or a hybrid, if:

  • Your API is small and stable, and the reference fits on one page.
  • Your documentation is mostly conceptual and contains little endpoint-level detail.
  • You cannot commit to keeping the spec in sync with the implementation.

A reasonable middle path: generate the reference from the spec, and hand-write the getting-started guide, authentication walkthrough, and error-handling page. Link the two directions so readers can move from concept to endpoint and back.

A minimal starting checklist

  1. Produce one valid OpenAPI document for a single API version.
  2. Add a linter with rules for descriptions, operation IDs, and error responses.
  3. Wire the docs build into CI so a failing spec fails the build.
  4. Render the reference and review it as a reader, not as the author.
  5. Write the two or three conceptual pages the generator cannot produce.
  6. Version the published docs alongside the API version.

The core idea is simple: describe the API once, in a format both machines and humans can read, and let the reference documentation fall out of that description. Everything else — tooling, hosting, interactivity — is a detail on top of that decision.

How to Backtest a Polymarket Strategy with Resolved Markets' Strategy Tester

Resolved Markets' strategy tester lets you describe a Polymarket strategy in plain English, then returns the generated code, an equity curve, and a trade list built on tick-level historical orderbook snapshots. You can start with a free API key (no account creation or credit card required per the site), and the backtester is listed as free with real historical order book data across prediction, crypto, sports, and weather markets. This walkthrough covers the setup, the backtest loop, and the data-alignment problems that most often break a first run.

What you need before you start

  • A Resolved Markets account and API key. The site states you can generate a free API key instantly with no account creation and no credit card.
  • A strategy you can state in one or two sentences. The tester works from a plain-English description, so vague inputs produce vague code.
  • A target market or series. Coverage includes crypto prediction markets, politics and elections, sports and live events, and economic indicators, with 100+ markets tracked across 7 categories.

Step 1: Get your API key

Generate a free API key from the dashboard. Per the site, there is no account creation and no credit card step — just click and go. Keep the key out of version control; you will pass it as an X-API-Key header on requests.

If you sign up for a new Polymarket account through the referral link, the site says it adds 10,000 free API credits to your Resolved Markets account, once per account.

Step 2: Confirm the data you are backtesting against

Before describing a strategy, check that the market and time window you care about are covered. The dataset is described as 4.2B+ orderbook snapshots across 184 recurring and event series since March 2026, with each snapshot containing full bid/ask depth, mid prices, spreads, and crypto spot price.

Two capabilities matter for strategy design:

Capability What it gives you Why it matters for a backtest
Tick-level orderbook snapshots Full bid/ask depth, mid, spread, crypto spot Lets you model fills against real depth instead of a single price
Time-based queries Market state at specific timestamps Lets you reconstruct probability movement around a known event
Replay snapshots Minute-by-minute replay of market reactions Lets you test strategies timed to viral moments or news

If your strategy depends on liquidity or spread behavior, you need the depth fields, not just the mid price. A strategy that looks profitable on mid prices can invert once you fill against the actual book.

Step 3: Describe the strategy in plain English

The tester takes a natural-language description and returns the code, equity curve, and trades. Write the description so it pins down four things:

  1. Market and window — which market or series, and the date range.
  2. Signal — what triggers an entry. Reference fields the data actually has, such as mid price, spread, or bid/ask depth.
  3. Sizing and fills — how much you trade and whether you assume you cross the spread or rest in the book.
  4. Exit — time-based, price-based, or event-based.

For example, instead of "buy when it looks cheap," write something like: "On the BTC hourly market, enter when the mid drops more than 3 cents below the 24-hour average mid and the spread is under 2 cents; size at 1% of bankroll; exit at the earlier of a 5-cent gain or 30 minutes." The agent then generates code you can inspect, an equity curve, and the trade list.

Step 4: Run the backtest and read the outputs

The tester returns three artifacts. Check each one:

  • Code — read it before trusting the result. Confirm the entry and exit conditions match what you described, and that fills use the orderbook depth rather than an idealized price.
  • Equity curve — look for the shape, not just the endpoint. A curve that is flat then jumps once usually means the strategy only traded in one window.
  • Trades — check timestamps and fill prices against the snapshots. If a fill price sits outside the bid/ask range recorded at that timestamp, the fill model is wrong.

Step 5: Replay the event window

If your strategy is event-driven, use time-based queries and replay snapshots to isolate the window. The site frames this as replaying real market reactions to viral moments, breaking news, and sentiment shifts, minute by minute. Run the same strategy with and without the event window to see whether the edge comes from the event or from the surrounding baseline.

Common failure points

Time misalignment. Snapshots and your signal timestamps must be on the same clock. If you compute a rolling average from one series and fill from another, you can accidentally use future data. Verify that every input to a decision is timestamped at or before the fill.

Missing data in the window. If a market has gaps, the backtest may silently skip periods or carry forward a stale price. Check snapshot density across your date range before trusting the curve.

Fills that ignore depth. A strategy that assumes it always fills at the mid will overstate returns on thin markets. Use the bid/ask depth fields to cap size at what the book actually held.

Overfitting to one viral moment. A single event window can dominate the equity curve. Test across multiple windows and categories before drawing conclusions.

FAQ

Is the backtester free? The site describes backtesting Polymarket strategies for free with real historical order book data, and lists a free tier. Check the pricing page for current limits.

Do I need a credit card? The site states API key generation requires no account creation and no credit card.

What markets are covered? Crypto prediction markets, politics and elections, sports and live events, and economic indicators, with 100+ markets across 7 categories and 30+ cities tracked.

Can I get the generated code? Yes — the tester shows the code alongside the equity curve and trades.

How far back does data go? The dataset is described as snapshots since March 2026. Confirm coverage for your specific market and window before running.

How to Backtest Polymarket Strategies with Historical Orderbook Data

You can backtest a Polymarket strategy by replaying historical orderbook snapshots — full bid/ask depth, mid prices, and spreads at the tick level — and simulating fills against that depth rather than against a single price. Resolved Markets provides this data through a REST API, WebSocket streams, and a backtester that accepts a strategy described in plain English and returns the code, equity curve, and trades. The approach below works for prediction, crypto, sports, weather, and economic markets, and a free tier is available (the site advertises 10,000 credits on signup, with an additional 10,000 credits for signing up on Polymarket through their referral link, once per account).

Step 1: Get data access

Generate a free API key from the Resolved Markets dashboard — the site states no account creation or credit card is required for the key itself. You then have two access patterns:

Access type Use it for
REST APIs Historical exports, time-based queries at specific timestamps
WebSocket streams Live orderbook data for forward-testing or monitoring
Replay snapshots Reconstructing event-driven probability movement minute by minute

The dataset covers 4.2B+ orderbook snapshots across 184 recurring and event series since March 2026, with 100+ markets tracked across 7 categories. Each snapshot includes full bid/ask depth, mid prices, spreads, and crypto spot price — the spot price matters if your strategy trades crypto prediction markets and you want to condition entries on the underlying.

A minimal authenticated request looks like this:

fetch('/v1/markets/live', {
  headers: { 'X-API-Key': key }
})

Step 2: Define the strategy in testable terms

A backtest is only as good as the rules you feed it. Before touching data, write down four things:

  1. Market selection — which series or categories, and how you filter (e.g., minimum liquidity, time to resolution, spread ceiling).
  2. Entry rule — the exact condition, expressed in fields the data actually has: mid price crossing a threshold, spread narrowing below X, spot price moving Y%, or a time-based query at a specific timestamp.
  3. Exit rule — resolution, a target price, a stop, or a time limit.
  4. Position sizing — how much you'd commit given the depth available at that moment.

If you use the plain-English backtester, this is where you describe the strategy; the agent converts it to code and runs it. If you're building your own pipeline, the same four items become your function signature.

Step 3: Run the backtest

The core loop is: fetch snapshots in time order → reconstruct the book at each timestamp → check your entry/exit conditions → simulate the fill against available depth → record the trade.

The fill simulation is the part most people get wrong. Don't assume you get filled at the mid price. Walk the book:

  • If you're buying, consume asks from the best price upward until your size is filled.
  • If you're selling, consume bids from the best price downward.
  • Record the volume-weighted average fill price, not the top-of-book price.
  • If your size exceeds the depth at your limit, either cap the fill or reject the trade — don't silently fill the whole order.

The expected output is a trade log (timestamp, side, size, fill price, fees if modeled) plus a mark-to-market equity curve built from the mid price between trades.

Step 4: Read the results honestly

Three outputs matter:

  • Equity curve — look at drawdown shape, not just the final number. A curve that only works because of one spike is a red flag.
  • Trade list — check whether your winners cluster in a few markets or a few time windows. Concentration means the edge may be an artifact.
  • Fill realism — compare your assumed fill prices against the spread at entry. If your average fill is at or better than the mid, your simulation is probably too generous.

Common pitfalls

Thin liquidity. Prediction markets can have wide spreads and shallow books, especially far from resolution. A strategy that looks profitable at mid price can lose money once you walk the book. Always simulate against depth.

Short data history. The dataset starts March 2026. Strategies that depend on a full market cycle — election seasonality, a crypto bull/bear swing — may not have enough history to validate. Check how many distinct regimes your sample covers before trusting a result.

Overfitting to viral moments. The platform explicitly supports replaying reactions to viral events, Elon tweets, breaking news, and meme cycles. That's useful for studying behavior, but it's also a trap: if you tune parameters until the strategy nails three specific news spikes, you've fit noise. Test on held-out time periods and markets you didn't tune on.

Ignoring the spot price link. In crypto prediction markets, the outcome probability often tracks the underlying spot price. If your backtest ignores spot, you may attribute to "market sentiment" what is actually a mechanical relationship — and that relationship may not hold in a different regime.

A practical starting sequence

  1. Generate an API key.
  2. Pull one market series you understand well and export the snapshots.
  3. Write a single, simple rule (e.g., buy when mid < 0.30 and spread < 0.02, exit at resolution).
  4. Run it with realistic book-walking fills.
  5. Compare the equity curve against a buy-and-hold baseline on the same markets.
  6. Only then add complexity — and re-test on a different time window each time.

If the simple version doesn't beat the baseline after realistic fills, more parameters won't fix it.

Website Overview

The available information shows a mix of normal operation and configuration gaps. Depending on how the website is used, these gaps may affect secure access or the consistency of its public presentation.

Domain and Registration

The domain was registered less than a year ago and has limited historical evidence to assess. Transfer-protection status is present, helping reduce the risk of unauthorized domain transfers. The domain uses the common .com extension, which is not an independent safety signal.

DNS and Email

Nameservers are provided by Cloudflare, indicating managed DNS hosting. MX records point to the Zoho Mail email service. No CNAME was found; the observed records resolve directly to addresses. SPF and DMARC are configured. DKIM status is unknown. TXT records include verification markers for Google. Such markers may also remain after a service stops being used.

TLS and Certificates

The public key uses EC with 256 bits. The server supplied a complete certificate chain. No organization name is present in the certificate; the available fields are consistent with domain validation. The certificate was issued by Let's Encrypt, commonly associated with automated certificate services. The certificate's total validity is about 89 days, consistent with a short renewal cycle.

HTTP and Browser Security

The response lacks these common security headers: CSP. No X-Powered-By header was found, reducing one common source of backend fingerprinting information. The cf-ray response header indicates a CDN or caching proxy in the delivery path. No obvious internal addresses or debug information were found in the headers. The Server header identifies cloudflare without an exact version.

Technology Stack Analysis

The public page identifies Next.js, Google Analytics, Cloudflare without precise versions, leaving fewer clues for version-specific scanning.

Search and Social Sharing

The meta description has 183 characters and may be shortened in search results. Twitter Card metadata is configured. JSON-LD includes Organization data, helping describe the organization as an entity. The title has 61 characters, within a common display range. The observed directives allow indexing and link following.

Hosting and Email

DNSCloudflare
HostingCloudflare
EmailZoho Mail
Approximate IP geolocation (inferred; a CDN or proxy may differ from the origin server) Location unknown Inferred 104.21.41.18

Registration details

RDAP / WHOIS

RegistrarSpaceship, Inc.
Registered2026-03-22
Expires2027-03-22
Domain statusclient transfer prohibited
Nameserversluciana.ns.cloudflare.com、trace.ns.cloudflare.com
DNSSECunsigned

DNS records

DNS

TypeNameValueTTLPriority
Aresolvedmarkets.com104.21.41.18300—
Aresolvedmarkets.com172.67.189.8300—
AAAAresolvedmarkets.com2606:4700:3034::ac43:bd08300—
AAAAresolvedmarkets.com2606:4700:3035::6815:2912300—
MXresolvedmarkets.commx.zoho.in30010
MXresolvedmarkets.commx2.zoho.in30020
MXresolvedmarkets.commx3.zoho.in30050
NSresolvedmarkets.comluciana.ns.cloudflare.com86400—
NSresolvedmarkets.comtrace.ns.cloudflare.com86400—
TXTresolvedmarkets.comgoogle-site-verification=e22qJ9sa6rZlMiWxeqKqLF-u7ifgsw_64c9fwOxmAvs300—
TXTresolvedmarkets.comv=MCPv1; k=ed25519; p=KszaB7j17Bu+0MCVmR3NaHEMNmp71pTqf2MNWqzajT0=300—
TXTresolvedmarkets.comv=spf1 include:zoho.in include:sendgrid.net include:amazonses.com ~all300—
TXTresolvedmarkets.comzoho-verification=zb32380081.zmverify.zoho.in300—
DMARC_dmarc.resolvedmarkets.comv=DMARC1; p=reject; rua=mailto:[email protected]; ruf=mailto:[email protected]; adkim=r; aspf=r; pct=100300—

TLS and certificates

TLS / SSL

AssessmentNormal configuration
Supported protocolsTLSv1.2、TLSv1.3
Negotiated protocolTLSv1.3
Certificate subjectresolvedmarkets.com
IssuerLet's Encrypt
Valid until2026-12-22T15:59 · Remaining when checked: 82 days
Verification detailsCertificate trust: Passed · Hostname match: Passed

HTTP response headers

HTTP

HeaderValue
content-typetext/html; charset=utf-8
cache-controls-maxage=31536000
servercloudflare
strict-transport-securitymax-age=63072000; includeSubDomains; preload
x-frame-optionsSAMEORIGIN
x-content-type-optionsnosniff
referrer-policystrict-origin-when-cross-origin
permissions-policycamera=(), microphone=(), geolocation=(), interest-cohort=()

Identified technologies

Next.jsGoogle AnalyticsCloudflare

Pages, Search and Sharing

Meta descriptionPolymarket historical orderbook data API: 4.2B+ orderbook snapshots across 184 recurring and event series since March 2026. REST, WebSocket, MCP and a backtester. Free tier available.
Canonical URLhttps://resolvedmarkets.com
LanguageEnglish (default)
Twitter Cardsummary_large_image
All bots 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
gptbot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
chatgpt-user 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
oai-searchbot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
claudebot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
claude-web 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
anthropic-ai 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
perplexitybot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
perplexity-user 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
google-extended 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
googleother 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
googlebot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
googlebot-image 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
geminibot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
ccbot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
cohere-ai 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
cohere-training-data-crawler 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
applebot-extended 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
bytespider 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
amazonbot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
meta-externalagent 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
meta-externalfetcher 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
facebookexternalhit 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
duckassistbot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
mistralai-user 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
youbot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
phindbot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
diffbot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
omgili 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
friendlycrawler 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
imagesiftbot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
timpibot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
grok 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
xai 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
searchgpt 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
iaskspider 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
kangaroo bot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
ai2bot 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys
scrapy 1 allowed · 2 disallowed
  • Allow/
  • Disallow/dashboard
  • Disallow/api-keys

User reviews (0)

  • No reviews yet.