Detect basket arbitrage in a Polymarket neg-risk (mutually-exclusive, multi-outcome) ev…
Detect basket arbitrage in a Polymarket neg-risk (mutually-exclusive, multi-outcome) event - since a full YES basket across all outcomes always settles to exactly $1, a basket price away from $1 is a near risk-free edge. Also computes buy/sell_basket_capacity…
by alphapipeline-eu.onrender.com · discovered, not yet claimed by its owner · updated 2026-10-01
Mirrored from Coinbase's public x402 Bazaar. The description is the provider's own text and has not been reviewed here; the payment requirements are copied as published.
What it does
Detect basket arbitrage in a Polymarket neg-risk (mutually-exclusive, multi-outcome) event - since a full YES basket across all outcomes always settles to exactly $1, a basket price away from $1 is a near risk-free edge. Also computes buy/sell_basket_capacity_shares, the actual liquidity-bottleneck size executable right now, so this is not just a top-of-book mirage. Polymarket only (Kalshi's Data ToS forbids this use of their data). Paid in USDC on Base.
Tags: prediction-market · polymarket · arbitrage · bazaar
Call contract
- Method
- GET
- Input
- query parameters
- Output
- json
- Last paid call
- 2026-10-01
{
"event_slug": "presidential-election-winner-2028"
}{
"arbitrage_viable": true,
"assumed_round_trip_cost_pct": 1.5,
"basket_ask_sum": 0.94,
"basket_bid_sum": 0.88,
"buy_basket_capacity_notional_usd": 39.48,
"buy_basket_capacity_shares": 42,
"buy_basket_capacity_vwap_notional_usd": 39.71,
"buy_basket_gross_edge_usd": 0.06,
"buy_basket_net_edge_usd": 0.045,
"data_source": "polymarket-gamma+clob",
"event_slug": "presidential-election-winner-2028",
"generated_at": {
"kst": "2026-09-08 21:00:00 KST",
"utc": "2026-09-08T12:00:00Z"
},
"notice": "*_capacity_shares is how many full baskets (1 share of every outcome) you could execute right now within max_slippage_pct of each leg's best price - arbitrage_viable=false with a positive edge usually means the edge is real but too thin to size meaningfully. *_capacity_notional_usd prices that capacity at each leg's top-of-book price, which is optimistic for any size beyond the first price level - *_capacity_vwap_notional_usd instead prices it by walking the same depth used to compute capacity_shares, so it reflects the actual average cost of filling that size (null if depth data was insufficient). oldest_book_snapshot_time is the staleness bottleneck across all legs. Cross-check the specific leg you intend to trade with prediction.exit_capacity_audit before sizing a real position.",
"num_outcomes": 5,
"oldest_book_snapshot_time": {
"kst": "2026-09-08 20:59:58 KST",
"utc": "2026-09-08T11:59:58Z"
},
"opportunity": "buy_basket",
"sell_basket_capacity_notional_usd": 0,
"sell_basket_capacity_shares": 0,
"sell_basket_capacity_vwap_notional_usd": null,
"sell_basket_gross_edge_usd": -0.12,
"sell_basket_net_edge_usd": -0.135
}Use with an agent
- Discover. Agents find this listing with
GET https://bazaar.saylorinnovations.com/discovery/search?query=…, the MCP toolsearch_resources, or/discovery/resources. - Inspect. Fetch
/resources/30149.jsonfor the price and payment options. - Pay. Call
GET https://alphapipeline-eu.onrender.com/v1/prediction/neg-risk-arbitrage. The provider answers402with its payment requirements. An x402 client signs one of the options below and retries withPAYMENT-SIGNATURE. - Execute. The provider returns
200with the data. Agent Bazaar is not in the request path and never sees your payment.
For humans
You don't need an account or an API key; you need a wallet holding a small amount of USDC on Base, and an x402-capable client (see the examples below). Call the endpoint unpaid first to see exactly what it asks for.
Pricing & payment
- Price
- $0.03 / request
- Protocol
- x402 v2
- Auth
- No account or API key. Pay per request.
- Networks
- Base
- Demand
- 1 calls · 1 unique payers in 30d (public x402 Bazaar data)
x402 payment requirements
| Scheme | Network | Asset | Amount | Pay to | Timeout |
|---|---|---|---|---|---|
| exact | Base eip155:8453 | USDC | $0.03 | 0x2bcfA4F7E1fA5E96934846A7dEa623398Ed7f752 | 300s |
accepts[] (raw JSON)
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x2bcfA4F7E1fA5E96934846A7dEa623398Ed7f752",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "30000",
"amountUsd": 0.03,
"maxTimeoutSeconds": 300
}
]Schemas
Output schema (JSON Schema)
{
"properties": {
"example": {
"properties": {
"arbitrage_viable": {
"title": "Arbitrage Viable",
"type": "boolean"
},
"assumed_round_trip_cost_pct": {
"title": "Assumed Round Trip Cost Pct",
"type": "number"
},
"basket_ask_sum": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Basket Ask Sum"
},
"basket_bid_sum": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Basket Bid Sum"
},
"buy_basket_capacity_notional_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Buy Basket Capacity Notional Usd"
},
"buy_basket_capacity_shares": {
"title": "Buy Basket Capacity Shares",
"type": "number"
},
"buy_basket_capacity_vwap_notional_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Same capacity as buy_basket_capacity_shares, but priced by walking the actual order-book depth (volume-weighted) instead of using each leg's top-of-book price - a more realistic fill cost than buy_basket_capacity_notional_usd. Null if depth data was insufficient.",
"title": "Buy Basket Capacity Vwap Notional Usd"
},
"buy_basket_gross_edge_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Buy Basket Gross Edge Usd"
},
"buy_basket_net_edge_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Buy Basket Net Edge Usd"
},
"data_source": {
"title": "Data Source",
"type": "string"
},
"event_slug": {
"title": "Event Slug",
"type": "string"
},
"generated_at": {
"properties": {
"kst": {
"title": "Kst",
"type": "string"
},
"utc": {
"title": "Utc",
"type": "string"
}
},
"required": [
"utc",
"kst"
],
"title": "TimestampPair",
"type": "object"
},
"notice": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Notice"
},
"num_outcomes": {
"title": "Num Outcomes",
"type": "integer"
},
"oldest_book_snapshot_time": {
"anyOf": [
{
"properties": {
"kst": {
"title": "Kst",
"type": "string"
},
"utc": {
"title": "Utc",
"type": "string"
}
},
"required": [
"utc",
"kst"
],
"title": "TimestampPair",
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "The oldest of each leg's own order-book snapshot timestamp - the staleness bottleneck across all legs, since the whole basket calculation is only as fresh as its stalest leg. Null if no leg reported a timestamp."
},
"opportunity": {
"title": "Opportunity",
"type": "string"
},
"sell_basket_capacity_notional_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Sell Basket Capacity Notional Usd"
},
"sell_basket_capacity_shares": {
"title": "Sell Basket Capacity Shares",
"type": "number"
},
"sell_basket_capacity_vwap_notional_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "VWAP-priced equivalent of sell_basket_capacity_notional_usd - see buy_basket_capacity_vwap_notional_usd.",
"title": "Sell Basket Capacity Vwap Notional Usd"
},
"sell_basket_gross_edge_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Sell Basket Gross Edge Usd"
},
"sell_basket_net_edge_usd": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Sell Basket Net Edge Usd"
}
},
"required": [
"generated_at",
"event_slug",
"num_outcomes",
"assumed_round_trip_cost_pct",
"buy_basket_capacity_shares",
"sell_basket_capacity_shares",
"opportunity",
"arbitrage_viable",
"data_source"
],
"title": "PredictionNegRiskArbitrageResponse",
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}Example shape — generated from the schema, not a captured live response
{
"example": {
"arbitrage_viable": true,
"assumed_round_trip_cost_pct": 0,
"basket_ask_sum": null,
"basket_bid_sum": null,
"buy_basket_capacity_notional_usd": null,
"buy_basket_capacity_shares": 0,
"buy_basket_capacity_vwap_notional_usd": null,
"buy_basket_gross_edge_usd": null,
"buy_basket_net_edge_usd": null,
"data_source": "string",
"event_slug": "string",
"generated_at": {
"kst": "string",
"utc": "string"
},
"notice": null,
"num_outcomes": 0,
"oldest_book_snapshot_time": null,
"opportunity": "string",
"sell_basket_capacity_notional_usd": null,
"sell_basket_capacity_shares": 0,
"sell_basket_capacity_vwap_notional_usd": null,
"sell_basket_gross_edge_usd": null,
"sell_basket_net_edge_usd": null
},
"type": "string"
}Examples
curl -X GET 'https://alphapipeline-eu.onrender.com/v1/prediction/neg-risk-arbitrage'
# -> 402 Payment Required; read PAYMENT-REQUIRED
# retry the identical request with PAYMENT-SIGNATUREconst res = await fetch("https://alphapipeline-eu.onrender.com/v1/prediction/neg-risk-arbitrage", {
"method": "GET"
});
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}import httpx
res = httpx.request("GET", "https://alphapipeline-eu.onrender.com/v1/prediction/neg-risk-arbitrage")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerDetails
- Provider
- alphapipeline-eu.onrender.com
- Endpoint
- https://alphapipeline-eu.onrender.com/v1/prediction/neg-risk-arbitrage
- Machine-readable
/resources/30149.json