{
  "url": "https://www.moonstonehq.com/articles/how-long-to-hold-a-pokemon-card",
  "slug": "how-long-to-hold-a-pokemon-card",
  "title": "How Long Do You Have to Hold a Pokemon Card?",
  "summary": "On 175,130 hold windows across 2,766 continuously quoted cards, the median hold first clears a 13% round-trip cost somewhere between 150 and 155 days. Before that it loses money.",
  "section": "Quant research",
  "published": "2026-09-22",
  "readMinutes": 9,
  "publisher": "moonstone",
  "findings": [
    {
      "value": "14.94%",
      "measures": "gross move needed to break even",
      "basis": "at a 13% round-trip cost"
    },
    {
      "value": "150 to 155",
      "measures": "days before the median hold clears",
      "basis": "175,130 windows at 150 days"
    },
    {
      "value": "12.15%",
      "measures": "of 30-day holds came out ahead",
      "basis": "of 254,082 windows"
    },
    {
      "value": "75.22%",
      "measures": "of 365-day holds came out ahead",
      "basis": "survivors in a bull run, not a random card"
    }
  ],
  "tables": [
    {
      "title": "Gross ask-to-ask return by holding period, every card-and-start-week window, 2,766 cards",
      "columns": [
        "Hold",
        "Windows",
        "Median",
        "Mean",
        "Share up",
        "Share unchanged",
        "25th percentile",
        "75th percentile"
      ],
      "rows": [
        {
          "Hold": "30 days",
          "Windows": "254,082",
          "Median": "+1.99%",
          "Mean": "+4.39%",
          "Share up": "60.17%",
          "Share unchanged": "8.56%",
          "25th percentile": "-1.62%",
          "75th percentile": "+7.98%"
        },
        {
          "Hold": "90 days",
          "Windows": "200,688",
          "Median": "+7.75%",
          "Mean": "+13.56%",
          "Share up": "69.53%",
          "Share unchanged": "3.82%",
          "25th percentile": "-1.03%",
          "75th percentile": "+20.90%"
        },
        {
          "Hold": "180 days",
          "Windows": "163,466",
          "Median": "+17.75%",
          "Mean": "+29.44%",
          "Share up": "77.78%",
          "Share unchanged": "2.14%",
          "25th percentile": "+2.40%",
          "75th percentile": "+40.00%"
        },
        {
          "Hold": "365 days",
          "Windows": "91,986",
          "Median": "+41.29%",
          "Mean": "+66.00%",
          "Share up": "87.81%",
          "Share unchanged": "1.02%",
          "25th percentile": "+15.15%",
          "75th percentile": "+83.33%"
        }
      ]
    },
    {
      "title": "Net of the round trip: share of holds that come out ahead",
      "columns": [
        "Hold",
        "Windows",
        "Clears fees only",
        "Clears fees plus a 10% realisation gap",
        "Median net, fees only"
      ],
      "rows": [
        {
          "Hold": "30 days",
          "Windows": "254,082",
          "Clears fees only": "12.15%",
          "Clears fees plus a 10% realisation gap": "4.10%",
          "Median net, fees only": "-11.27%"
        },
        {
          "Hold": "90 days",
          "Windows": "200,688",
          "Clears fees only": "34.35%",
          "Clears fees plus a 10% realisation gap": "17.57%",
          "Median net, fees only": "-6.26%"
        },
        {
          "Hold": "180 days",
          "Windows": "163,466",
          "Clears fees only": "54.54%",
          "Clears fees plus a 10% realisation gap": "36.62%",
          "Median net, fees only": "+2.44%"
        },
        {
          "Hold": "365 days",
          "Windows": "91,986",
          "Clears fees only": "75.22%",
          "Clears fees plus a 10% realisation gap": "62.56%",
          "Median net, fees only": "+22.93%"
        }
      ]
    },
    {
      "title": "The median hold, walked by horizon, fees-only cost model",
      "columns": [
        "Hold",
        "Windows",
        "Median gross",
        "Median net of 13%",
        "Clears?"
      ],
      "rows": [
        {
          "Hold": "30 days",
          "Windows": "254,082",
          "Median gross": "+1.99%",
          "Median net of 13%": "-11.27%",
          "Clears?": "no"
        },
        {
          "Hold": "60 days",
          "Windows": "212,931",
          "Median gross": "+4.84%",
          "Median net of 13%": "-8.79%",
          "Clears?": "no"
        },
        {
          "Hold": "90 days",
          "Windows": "200,688",
          "Median gross": "+7.75%",
          "Median net of 13%": "-6.26%",
          "Clears?": "no"
        },
        {
          "Hold": "120 days",
          "Windows": "188,464",
          "Median gross": "+11.58%",
          "Median net of 13%": "-2.92%",
          "Clears?": "no"
        },
        {
          "Hold": "150 days",
          "Windows": "175,130",
          "Median gross": "+14.65%",
          "Median net of 13%": "-0.25%",
          "Clears?": "no"
        },
        {
          "Hold": "155 days",
          "Windows": "174,670",
          "Median gross": "+15.42%",
          "Median net of 13%": "+0.42%",
          "Clears?": "yes"
        },
        {
          "Hold": "180 days",
          "Windows": "163,466",
          "Median gross": "+17.75%",
          "Median net of 13%": "+2.44%",
          "Clears?": "yes"
        },
        {
          "Hold": "240 days",
          "Windows": "139,358",
          "Median gross": "+24.57%",
          "Median net of 13%": "+8.38%",
          "Clears?": "yes"
        },
        {
          "Hold": "300 days",
          "Windows": "118,007",
          "Median gross": "+30.37%",
          "Median net of 13%": "+13.42%",
          "Clears?": "yes"
        },
        {
          "Hold": "365 days",
          "Windows": "91,986",
          "Median gross": "+41.29%",
          "Median net of 13%": "+22.93%",
          "Clears?": "yes"
        },
        {
          "Hold": "420 days",
          "Windows": "70,157",
          "Median gross": "+52.73%",
          "Median net of 13%": "+32.87%",
          "Clears?": "yes"
        }
      ]
    },
    {
      "title": "365-day holds by entry price, 2,766 cards",
      "columns": [
        "Entry price",
        "Windows",
        "Median gross",
        "Share clearing fees only"
      ],
      "rows": [
        {
          "Entry price": "under $1",
          "Windows": "31,258",
          "Median gross": "+37.50%",
          "Share clearing fees only": "74.14%"
        },
        {
          "Entry price": "$1 to $5",
          "Windows": "26,886",
          "Median gross": "+44.34%",
          "Share clearing fees only": "76.71%"
        },
        {
          "Entry price": "$5 to $25",
          "Windows": "22,218",
          "Median gross": "+45.36%",
          "Share clearing fees only": "75.61%"
        },
        {
          "Entry price": "$25 to $100",
          "Windows": "8,706",
          "Median gross": "+40.65%",
          "Share clearing fees only": "75.27%"
        },
        {
          "Entry price": "$100 and up",
          "Windows": "2,918",
          "Median gross": "+35.43%",
          "Share clearing fees only": "69.81%"
        }
      ]
    }
  ],
  "charts": [],
  "sections": [
    "The number that decides everything else",
    "Where the median hold starts paying for itself",
    "What you pay barely changes how long you wait"
  ],
  "method": [
    "As of 2026-09-22. Population: the per-card weekly `ppthist:<tcgId>` series in `api_cache` joined to `cards` on `tcg_id`, restricted to cards whose series reaches 2025-01-27 with at least 40 recorded points, giving 2,766 cards and a median recorded span of 603 days, the modal last recorded date being 2026-09-22. For each card and each recorded week, a hold window opens at that week's price and closes at the price recorded on or before the date exactly H days later, accepted only when that closing point falls within 10 days of the target; windows whose closing date exceeds the card's last recorded week are not opened. That produces 254,082 windows at 30 days, 200,688 at 90, 175,130 at 150, 163,466 at 180 and 91,986 at 365. Every panel is keyed on the TCGplayer product id and carries exactly one row per product. 51,719 catalogue rows carry a TCGplayer product id, and they resolve to 50,507 distinct ids: 1,212 ids are claimed by two rows each, 2,424 rows in all. Those pairs are not a Japanese print against its English twin, which is what we assumed before counting them. Every one of the 1,212 is a same-language pair, 972 Japanese and 240 English, and they are overwhelmingly one product indexed under two catalogue spellings of the same set, as the XY trainer kits are. Each id collapses to a single row, preferring an English row and then the lexically first catalogue id, so no product enters a cross-section, a factor sort or a census twice. The tie-break is stated rather than assumed away, because it decides which of the two spellings a shared product is filed under. Windows overlap by construction and are not independent observations; no significance test is run and none should be inferred. Both legs are TCGplayer market prices, which are ASKS, so every gross figure is an ask-to-ask change and no graded sold median enters any return. The cost model is applied as a single deduction on the sale side: net equals one plus the gross return, multiplied by 0.87 for fees and shipping, and by a further 0.90 in the second setting for the realisation gap, minus one. The 13% figure is the ordinary eBay final value fee plus shipping; the 10% realisation gap is our chosen severity rather than a measured clearing discount, and it is reported as a separate column rather than blended into a single headline. Breakeven gross is the reciprocal of the surviving fraction minus one: 14.94% at fees only and 27.71% with the gap. Grading costs, sales tax, insurance and storage are not modelled. The median convention is the upper-middle element on even samples. The broad-tape contrast uses `price_history` days 20695 and 20718 across the 43,800 products priced on both."
  ],
  "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."
}