{
  "schemaVersion": "vultax-feature-mirror-v1",
  "slug": "prediction-market-arbitrage",
  "title": "Polymarket vs Kalshi: the Gap After Fees",
  "description": "The matched Fed contracts Vultax already compares, with the raw price difference and what survives each venue’s own published fee.",
  "mirrorSummary": "The matched Fed contracts Vultax already compares, with the raw price difference and what survives each venue’s own published fee.",
  "canonicalUrl": "https://vultax.com/features/prediction-market-arbitrage",
  "availability": {
    "status": "live",
    "message": "The matched-contract comparison on this page is published by Vultax and free to read. Inside the app, cross-venue deviance is a watch-only signal, not an execution tool."
  },
  "workspace": {
    "label": "Open the prediction desk",
    "url": "https://app.vultax.com/predictions"
  },
  "downloads": {
    "json": "https://vultax.com/features/prediction-market-arbitrage/data.json",
    "markdown": "https://vultax.com/features/prediction-market-arbitrage/page.md",
    "schema": "https://vultax.com/features/schema.json"
  },
  "tables": [
    {
      "id": "cross-venue-fee-adjusted",
      "title": "The Polymarket–Kalshi gap, before and after fees",
      "description": "The same matched contract on both venues, with the raw difference and what is left once each venue’s own fee is applied.",
      "coverage": "Only the reviewed Fed meeting and contract combinations shown. Prices are percentages of a $1 payout; a gap is not an executable return.",
      "columns": [
        {
          "key": "meeting",
          "label": "Meeting",
          "format": "text",
          "unit": null
        },
        {
          "key": "contract",
          "label": "Contract",
          "format": "text",
          "unit": null
        },
        {
          "key": "gap",
          "label": "PM − Kalshi",
          "format": "number",
          "unit": "percentage points"
        },
        {
          "key": "afterFees",
          "label": "After venue fees",
          "format": "number",
          "unit": "percentage points"
        },
        {
          "key": "pmVolume",
          "label": "Polymarket 24h volume",
          "format": "usd",
          "unit": "USD"
        },
        {
          "key": "kVolume",
          "label": "Kalshi 24h volume",
          "format": "usd",
          "unit": "USD"
        },
        {
          "key": "kOpenInterest",
          "label": "Kalshi open interest",
          "format": "usd",
          "unit": "USD"
        }
      ],
      "rows": [
        {
          "id": "pair-0",
          "values": {
            "meeting": "September",
            "contract": "25 bp increase",
            "gap": 2,
            "afterFees": 0,
            "pmVolume": 1755954,
            "kVolume": 2379898.55,
            "kOpenInterest": 33254726.96
          }
        },
        {
          "id": "pair-1",
          "values": {
            "meeting": "September",
            "contract": "No change",
            "gap": -1,
            "afterFees": 0,
            "pmVolume": 2289694,
            "kVolume": 2379898.55,
            "kOpenInterest": 33254726.96
          }
        },
        {
          "id": "pair-2",
          "values": {
            "meeting": "September",
            "contract": "25 bp decrease",
            "gap": -0.2,
            "afterFees": 0,
            "pmVolume": 1979364,
            "kVolume": 2379898.55,
            "kOpenInterest": 33254726.96
          }
        },
        {
          "id": "pair-3",
          "values": {
            "meeting": "October",
            "contract": "25 bp increase",
            "gap": -1,
            "afterFees": 0,
            "pmVolume": 30468,
            "kVolume": 16605.88,
            "kOpenInterest": 415239.30000000005
          }
        },
        {
          "id": "pair-4",
          "values": {
            "meeting": "October",
            "contract": "No change",
            "gap": 1,
            "afterFees": 0,
            "pmVolume": 7605,
            "kVolume": 16605.88,
            "kOpenInterest": 415239.30000000005
          }
        },
        {
          "id": "pair-5",
          "values": {
            "meeting": "October",
            "contract": "25 bp decrease",
            "gap": -0.2,
            "afterFees": 0,
            "pmVolume": 21986,
            "kVolume": 16605.88,
            "kOpenInterest": 415239.30000000005
          }
        },
        {
          "id": "pair-6",
          "values": {
            "meeting": "December",
            "contract": "25 bp increase",
            "gap": 0.5,
            "afterFees": 0,
            "pmVolume": 6852,
            "kVolume": 3794.58,
            "kOpenInterest": 104040.85
          }
        },
        {
          "id": "pair-7",
          "values": {
            "meeting": "December",
            "contract": "No change",
            "gap": -3.5,
            "afterFees": 1.5,
            "pmVolume": 5057,
            "kVolume": 3794.58,
            "kOpenInterest": 104040.85
          }
        },
        {
          "id": "pair-8",
          "values": {
            "meeting": "December",
            "contract": "25 bp decrease",
            "gap": 0.1,
            "afterFees": 0,
            "pmVolume": 3614,
            "kVolume": 3794.58,
            "kOpenInterest": 104040.85
          }
        }
      ],
      "notes": [
        "The after-fee column applies the source pack’s assumed fee of 2 percentage points across the pair. Real fees depend on your account, order type and the venue’s current schedule.",
        "Volume and open interest are reported per meeting by each venue, not per contract row.",
        "Depth, transfer time, settlement wording and account access are not in this calculation. A remaining gap is a reason to look, not an executable trade."
      ],
      "kind": "market-snapshot",
      "status": "fresh",
      "statusReason": "Within this table’s source-time freshness window; prices can change between observations.",
      "observedAt": "2026-09-14T05:50:05.000Z",
      "modifiedAt": null,
      "rowCount": 9,
      "sources": [
        {
          "label": "Vultax prediction pack · Polymarket Gamma and Kalshi",
          "url": "https://vultax.com/live/prediction.json"
        }
      ],
      "downloads": {
        "json": "https://vultax.com/features/prediction-market-arbitrage/data.json?dataset=cross-venue-fee-adjusted",
        "csv": "https://vultax.com/features/prediction-market-arbitrage/data.csv?dataset=cross-venue-fee-adjusted"
      }
    }
  ],
  "research": [
    {
      "title": "Why Most Crypto Arbitrage Spreads Are Not Executable",
      "url": "https://vultax.com/research/why-crypto-arbitrage-spreads-are-not-executable",
      "publishedAt": "2026-09-02",
      "description": "A visible price gap between two exchanges is a gross number. Fees, depth, transfer time and your own feed latency decide what is left of it."
    },
    {
      "title": "We Tested Polymarket Prices Against 6,776 Resolved Markets. Here's Where They Bend.",
      "url": "https://vultax.com/research/prediction-market-fair-value-calibration",
      "publishedAt": "2026-09-08",
      "description": "Original Vultax research: in an experimental test, a calibrated fair-value model beat raw Polymarket prices by ~9.6% on held-out Brier score. Where the favorite-longshot effect lives, what the model can honestly flag, and why it still isn't a trading edge."
    }
  ],
  "related": [
    {
      "slug": "kalshi-analytics",
      "title": "Kalshi Prices, Volume and Open Interest",
      "url": "https://vultax.com/features/kalshi-analytics"
    },
    {
      "slug": "prediction-desk",
      "title": "Polymarket vs Kalshi: Prediction Market Prices",
      "url": "https://vultax.com/features/prediction-desk"
    },
    {
      "slug": "arbitrage-scanner",
      "title": "Bitcoin Exchange Spreads and Arbitrage Costs",
      "url": "https://vultax.com/features/arbitrage-scanner"
    }
  ],
  "limitations": [
    "Public tables mirror existing Vultax source packs. They do not include account data, private watchlists or the complete app dataset.",
    "Source time, coverage and limitations apply to each table. Missing values are unavailable, not zero."
  ]
}
