{
  "url": "https://www.moonstonehq.com/articles/sealed-vs-singles-pokemon-prices",
  "slug": "sealed-vs-singles-pokemon-prices",
  "title": "Sealed vs Singles: Which Price Moves More?",
  "summary": "Over 23 recorded days, 1,800 sealed products and 37,273 singles both repriced on a median 13.6% of day-to-day steps. Under that tie the two tapes have opposite shapes.",
  "section": "Market Structure",
  "published": "2026-09-22",
  "readMinutes": 9,
  "publisher": "moonstone",
  "findings": [
    {
      "value": "13.6%",
      "measures": "median share of day-to-day steps that moved, on both tapes",
      "basis": "1,800 sealed products and 37,273 singles, 2026-08-30 to 2026-09-21"
    },
    {
      "value": "22.9% vs 11.6%",
      "measures": "share that never moved once, singles against sealed",
      "basis": "a single is twice as likely to be frozen for three weeks"
    },
    {
      "value": "34 vs 0",
      "measures": "products that moved at every reading they have, sealed against singles",
      "basis": "7 of the 34 have all 23 readings; no single in the panel moved at every reading"
    }
  ],
  "tables": [
    {
      "title": "The two tapes over the same 23 days",
      "columns": [
        "Measure",
        "Sealed products",
        "Singles"
      ],
      "rows": [
        {
          "Measure": "Panel size (a reading on 20 or more of 23 days)",
          "Sealed products": "1,800",
          "Singles": "37,273"
        },
        {
          "Measure": "Median distinct prices in the window",
          "Sealed products": "4",
          "Singles": "3"
        },
        {
          "Measure": "Median share of day-to-day steps that moved",
          "Sealed products": "13.6%",
          "Singles": "13.6%"
        },
        {
          "Measure": "Never moved once",
          "Sealed products": "11.6%",
          "Singles": "22.9%"
        },
        {
          "Measure": "Moved at every reading they have",
          "Sealed products": "34",
          "Singles": "0"
        },
        {
          "Measure": "Median 23-day change",
          "Sealed products": "+0.94%",
          "Singles": "0.00%"
        },
        {
          "Measure": "Up / unchanged / down, first reading against last",
          "Sealed products": "1,120 / 221 / 459",
          "Singles": "15,074 / 11,177 / 11,022"
        }
      ]
    },
    {
      "title": "Sealed repricing by product format, all 16 non-lot formats in the panel, 23 recorded days",
      "columns": [
        "Format",
        "Products",
        "Median distinct prices",
        "Share of steps that moved",
        "Never moved",
        "Median 23-day change"
      ],
      "rows": [
        {
          "Format": "Booster Bundle",
          "Products": "40",
          "Median distinct prices": "15",
          "Share of steps that moved": "76.2%",
          "Never moved": "0.0%",
          "Median 23-day change": "+1.1%"
        },
        {
          "Format": "Booster Box",
          "Products": "44",
          "Median distinct prices": "10",
          "Share of steps that moved": "42.9%",
          "Never moved": "2.3%",
          "Median 23-day change": "+0.5%"
        },
        {
          "Format": "Elite Trainer Box",
          "Products": "68",
          "Median distinct prices": "9",
          "Share of steps that moved": "38.1%",
          "Never moved": "5.9%",
          "Median 23-day change": "0.0%"
        },
        {
          "Format": "ETB (Pokemon Center)",
          "Products": "41",
          "Median distinct prices": "8",
          "Share of steps that moved": "33.3%",
          "Never moved": "2.4%",
          "Median 23-day change": "-1.3%"
        },
        {
          "Format": "Booster Pack",
          "Products": "165",
          "Median distinct prices": "5",
          "Share of steps that moved": "19.0%",
          "Never moved": "7.9%",
          "Median 23-day change": "+1.6%"
        },
        {
          "Format": "Collection",
          "Products": "164",
          "Median distinct prices": "4",
          "Share of steps that moved": "14.3%",
          "Never moved": "11.0%",
          "Median 23-day change": "+1.1%"
        },
        {
          "Format": "Mini Tin",
          "Products": "121",
          "Median distinct prices": "4",
          "Share of steps that moved": "14.3%",
          "Never moved": "5.8%",
          "Median 23-day change": "+1.3%"
        },
        {
          "Format": "Premium Collection",
          "Products": "78",
          "Median distinct prices": "4",
          "Share of steps that moved": "14.3%",
          "Never moved": "5.1%",
          "Median 23-day change": "+1.0%"
        },
        {
          "Format": "Build & Battle",
          "Products": "38",
          "Median distinct prices": "4",
          "Share of steps that moved": "14.3%",
          "Never moved": "5.3%",
          "Median 23-day change": "+1.2%"
        },
        {
          "Format": "Tin",
          "Products": "162",
          "Median distinct prices": "3",
          "Share of steps that moved": "13.6%",
          "Never moved": "13.0%",
          "Median 23-day change": "+1.3%"
        },
        {
          "Format": "Blister",
          "Products": "213",
          "Median distinct prices": "3",
          "Share of steps that moved": "9.5%",
          "Never moved": "16.0%",
          "Median 23-day change": "+1.1%"
        },
        {
          "Format": "Deck",
          "Products": "124",
          "Median distinct prices": "3",
          "Share of steps that moved": "9.5%",
          "Never moved": "16.9%",
          "Median 23-day change": "+0.9%"
        },
        {
          "Format": "Product (unclassified)",
          "Products": "159",
          "Median distinct prices": "3",
          "Share of steps that moved": "9.5%",
          "Never moved": "18.9%",
          "Median 23-day change": "+0.9%"
        },
        {
          "Format": "Hanger Box",
          "Products": "3",
          "Median distinct prices": "2",
          "Share of steps that moved": "4.5%",
          "Never moved": "33.3%",
          "Median 23-day change": "0.0%"
        },
        {
          "Format": "Half Box",
          "Products": "7",
          "Median distinct prices": "1",
          "Share of steps that moved": "0.0%",
          "Never moved": "57.1%",
          "Median 23-day change": "0.0%"
        },
        {
          "Format": "Accessory",
          "Products": "1",
          "Median distinct prices": "1",
          "Share of steps that moved": "0.0%",
          "Never moved": "100.0%",
          "Median 23-day change": "0.0%"
        }
      ]
    },
    {
      "title": "Sealed repricing by ask, 23 recorded days",
      "columns": [
        "Sealed ask",
        "Products",
        "Median distinct prices",
        "Share of steps that moved",
        "Never moved"
      ],
      "rows": [
        {
          "Sealed ask": "Under $25",
          "Products": "284",
          "Median distinct prices": "5",
          "Share of steps that moved": "19.0%",
          "Never moved": "6.3%"
        },
        {
          "Sealed ask": "$25 to $99",
          "Products": "621",
          "Median distinct prices": "4",
          "Share of steps that moved": "14.3%",
          "Never moved": "9.2%"
        },
        {
          "Sealed ask": "$100 to $499",
          "Products": "417",
          "Median distinct prices": "4",
          "Share of steps that moved": "14.3%",
          "Never moved": "15.1%"
        },
        {
          "Sealed ask": "$500 to $1,999",
          "Products": "92",
          "Median distinct prices": "3",
          "Share of steps that moved": "9.1%",
          "Never moved": "21.7%"
        },
        {
          "Sealed ask": "$2,000 and above",
          "Products": "14",
          "Median distinct prices": "2",
          "Share of steps that moved": "4.5%",
          "Never moved": "28.6%"
        }
      ]
    },
    {
      "title": "Whole-set one-day repricings inside the window, dated to the day the new price first appears",
      "columns": [
        "Set",
        "Date the new price appears",
        "Cards in panel",
        "Cards moving over 20% that day"
      ],
      "rows": [
        {
          "Set": "[Fossil](/set/fossil)",
          "Date the new price appears": "2026-09-07",
          "Cards in panel": "62",
          "Cards moving over 20% that day": "62"
        },
        {
          "Set": "[Jungle](/set/jungle)",
          "Date the new price appears": "2026-09-07",
          "Cards in panel": "64",
          "Cards moving over 20% that day": "64"
        },
        {
          "Set": "[Neo Discovery](/set/neo%20discovery)",
          "Date the new price appears": "2026-09-07",
          "Cards in panel": "75",
          "Cards moving over 20% that day": "75"
        },
        {
          "Set": "[Team Rocket](/set/team%20rocket)",
          "Date the new price appears": "2026-09-07",
          "Cards in panel": "83",
          "Cards moving over 20% that day": "80"
        },
        {
          "Set": "[Neo Genesis](/set/neo%20genesis)",
          "Date the new price appears": "2026-09-07",
          "Cards in panel": "111",
          "Cards moving over 20% that day": "103"
        },
        {
          "Set": "[Neo Destiny](/set/neo%20destiny)",
          "Date the new price appears": "2026-09-07",
          "Cards in panel": "113",
          "Cards moving over 20% that day": "101"
        },
        {
          "Set": "[Neo Revelation](/set/neo%20revelation)",
          "Date the new price appears": "2026-09-07",
          "Cards in panel": "66",
          "Cards moving over 20% that day": "62"
        },
        {
          "Set": "[Gym Heroes](/set/gym%20heroes)",
          "Date the new price appears": "2026-09-07",
          "Cards in panel": "132",
          "Cards moving over 20% that day": "128"
        },
        {
          "Set": "[Gym Challenge](/set/gym%20challenge)",
          "Date the new price appears": "2026-09-07",
          "Cards in panel": "139",
          "Cards moving over 20% that day": "126"
        },
        {
          "Set": "[Base Set (Shadowless)](/set/base%20set%20%28shadowless%29)",
          "Date the new price appears": "2026-09-14",
          "Cards in panel": "102",
          "Cards moving over 20% that day": "98"
        },
        {
          "Set": "[30th Celebration](/set/30th%20celebration)",
          "Date the new price appears": "2026-09-19",
          "Cards in panel": "142",
          "Cards moving over 20% that day": "141"
        }
      ]
    }
  ],
  "charts": [],
  "sections": [
    "Two tapes, one window",
    "The format is the variable",
    "The dearer the box, the deader the quote",
    "What we had to throw out",
    "What this study cannot show",
    "What would overturn this"
  ],
  "method": [
    "Window: 2026-08-30 to 2026-09-21, the 23 days on which both daily tapes have readings. The sealed tape is api_cache rows keyed sealedhist:<tcgPlayerId>, written by the sync-sealed cron; 2,085 series exist and 1,969 have a reading inside the window. The singles tape is the price_history table (tcg_id, day, price), whose 24 recorded days run 20695 to 20718 inclusive, that is 2026-08-30 to 2026-09-22. Both carry TCGplayer ASKS from different syncs; neither carries sold prices. Panel rule, identical on both sides: a series enters when it has a reading on at least 20 of the 23 days, giving 1,800 sealed products and 37,273 singles. A step is counted as moved when two consecutive readings differ at all. The 23-day change compares the first and last readings inside the window. Format classification is classifyProduct() from src/server/set-products.ts, and lot SKUs are excluded from BOTH the per-format table and the price-band table, taking 1,800 products to 1,428 in each; price bands use the last reading. The reprice DETECTOR written for this study, which is not the production basketChangeOverDays guard in packages/core, joins price_history to itself on consecutive days and flags any (set, day) pair where the set has at least 20 cards present on both days and at least 80% of them moved by more than 20%. It fires eleven times; the eleven sets are excluded from any set-level comparison and listed in full above, dated to the day the new price first appears rather than to the from-day of the join. We re-ran the detector at 70% moving over 15% and at 60% moving over 25% and it returns the same eleven; at 60% moving over 10% it returns fifteen events over twelve sets, the four additions all being 30th Celebration ingestion days. Medians take the upper-middle value on even samples. DEDUPLICATION: both panels are keyed on the product join key itself. price_history's primary key is (tcg_id, day), so a per-tcg_id panel cannot count a product twice; on 2026-09-22 its 52,309 rows carry 52,309 distinct tcg_ids. sealed_products' 2,358 rows carry 2,358 distinct ids. The 1,212 TCGplayer product ids that two catalog card rows both claim therefore do not inflate anything here, since no count in this study runs over catalog rows. Scripts: apps/web/scripts/sealed-d4-final.mts, with the earlier pass in sealed-d-tape.mts and the dedupe check in sealed-b5-dedupe.mts. All figures and queries are in apps/web/.scratch-sealed/figures.json."
  ],
  "terms": "Figures are moonstone's own recorded measurements, dated as published. Quote them with the population stated beside them. The article at `url` is the human form of this file."
}