카드픽
METHODOLOGY · Trust Gate v1

데이터 방법론

카드픽의 가격은 단순 "최근 listing" 가격이 아닙니다. distinct 표본 수 + clean median + MAD outlier 제거 + price-band ratio gate로 4단계 신뢰도 등급을 산출해 표시합니다. 이 알고리즘으로 ₩152 같은 단일 listing outlier가 화면에 노출되는 사고를 자동 차단합니다.

1. 표본 정의 (distinct count)

같은 listing이 매일 적재되더라도 "다양성"은 늘지 않습니다. 카드픽은 단순 row count 대신 distinct (variant + date + source) 조합으로 표본을 정의합니다.

distinct_7d  = count(distinct (variant, date, source))
                 WHERE fetched_at > now() - interval '7 days'
distinct_30d = count(distinct (variant, date, source))
                 WHERE fetched_at > now() - interval '30 days'

예: 같은 variant·같은 source·같은 날 적재된 같은 가격은 1건으로 dedupe. 다양한 날·다양한 source에서 가격이 모이면 표본 수 증가.

2. Clean Median + MAD Outlier 제거

평균(mean)은 outlier에 오염됩니다. ₩152 같은 단발 outlier가 평균에 들어가면 다음 계산에서 또 오염을 만듭니다 (재귀 오염). 카드픽은 평균 대신 median + MAD (Median Absolute Deviation)를 사용합니다.

median = percentile_cont(0.5) over price_30d
MAD    = median(|p - median|) for p in price_30d
clean  = price_30d 중 |p - median| < max(3 × MAD, median × 5%)
clean_median = median(clean)
clean_n      = count(clean)

MAD 게이트로 outlier 자동 제거 후 남은 데이터의 중앙값을 사용합니다. max(3×MAD, median×5%)는 MAD가 0인 경우 (모든 가격 동일)에도 5% 폭 허용.

3. Price-band별 Ratio Gate

저가 카드와 고가 카드는 자연 변동률 폭이 다릅니다. 카드픽은 가격대별 차등 ratio gate를 적용합니다.

가격대허용 범위이유
< ₩3,000절대차 |new - median| < ₩5,000저가 카드는 배송비/상태로 변동 폭 큼, 절대값 기준 필요
₩3,000 ~ ₩50,0000.3배 ~ 3.0배일반적 변동 허용
> ₩50,0000.5배 ~ 2.0배고가 카드일수록 변동 폭 좁힘 (신뢰성 우선)
function cardpick_ratio_gate(p_new, p_median):
  if p_new is null or p_median is null: return false
  if p_median < 3000: return abs(p_new - p_median) < 5000
  if p_median < 50000: return 0.3 <= p_new/p_median <= 3.0
  else: return 0.5 <= p_new/p_median <= 2.0

4. 4단계 신뢰도 등급 산출

등급조건표시 가격화면 라벨
HIGH distinct_7d ≥ 5 AND ratio gate 통과 latest_krw (최신 가격) "현재 참고가 ₩X"
MEDIUM distinct_30d ≥ 10 clean_30d_median "최근 1개월 중앙값 ₩X"
LOW distinct_30d ≥ 5 clean_30d_median "30일 중앙값 ₩X ⚠ 표본 부족"
NONE distinct_30d < 5 null (가격 숨김) "참고가 산출 불가"

5. 신뢰도 분포 (매일 변동)

신뢰도 등급 분포는 매일 prices 데이터가 누적되면서 계속 바뀝니다. 첫 배포 시점(2026-05-20)에는 HIGH 약 10%, NONE 약 89%였으나, distinct count가 자연 증가하며 HIGH 비율이 꾸준히 회복하고 NONE이 줄고 있습니다.

분포는 고정 수치가 아니므로 여기에 특정 퍼센트를 박아두지 않습니다. 등급별 카드 수는 /facts/site JSON의 catalog.trust_distribution 필드에서 매일 갱신된 값을 확인할 수 있습니다.

6. 인용 가능한 사실들 (AI 답변용)

7. 이미지·상표 안내

8. 절대 사용하지 않는 패턴

8. 알고리즘 보강 이력

Trust Gate v1은 코드 리뷰와 실사용 사고 분석을 거쳐 다음 항목을 보강했습니다. 외부 AI 모델의 보증이 아니라 실제 반영된 변경 기록입니다.

9. 자주 묻는 질문

NONE 등급이 왜 이렇게 많나요?

카드픽은 2026년 5월 운영 시작했고, distinct (variant + date + source) 표본을 매일 누적 중입니다. 신규 도메인이라 누적 기간이 짧아 많은 카드가 distinct_30d < 5 상태입니다. 첫 배포 시점에는 NONE이 약 89%였지만 이후 매일 꾸준히 감소하고 있습니다. 매일 cron으로 prices를 적재해 distinct count가 늘면서 NONE 비율이 계속 낮아지는 중입니다.

왜 평균(avg) 안 쓰나요?

평균은 outlier에 오염됩니다. ₩152 같은 단발 outlier가 평균에 들어가면 다음 계산의 prev_avg가 또 오염되어 재귀적으로 잘못된 가격을 정상으로 인식하게 됩니다. 카드픽은 median + MAD로 outlier 자체를 제거합니다.

price_low / price_high는 신뢰 가능?

카드 상세 페이지의 "최저 (raw USD)" / "최고 (raw USD)"는 TCGplayer 단일 listing 원천값입니다. outlier 가능성이 있어 별도 라벨 처리합니다. 신뢰도 검증된 가격은 표시 가격(latest_krw 또는 clean_30d_median)을 참고하세요.


질문 · 알고리즘 정정 제안: [email protected] · 알고리즘 마지막 검토 2026-05-21