Bid Shading이란?

Bid Shading은 1st Price Auction에서 자신의 진짜 가치(True Value)보다 낮게 입찰하여 이익을 극대화하는 전략입니다.

2017년 이후 디스플레이 광고 시장이 2nd Price에서 1st Price으로 전환되면서, 모든 주요 DSP가 bid shading 알고리즘을 도입했습니다. Google, The Trade Desk, MediaMath 등이 대표적입니다.

수식으로 보는 직관

True Value = pCTR × Conversion Value

Shaded Bid = True Value × (1 - Shading Factor)

Profit per Win = True Value - Paid Price
  - 1st Price: Paid = Shaded Bid (내 입찰가 그대로)
  - 2nd Price: Paid = 2등 입찰가 (경쟁자 가격)

E[Profit] = Win Rate × Profit per Win
  = P(내 입찰가 > 경쟁자) × (True Value - 내 입찰가)

Shading Factor를 올리면 → Profit per Win 증가 (더 싸게 이기므로), 하지만 Win Rate 감소 (더 적게 이기므로). 이 두 힘의 균형점이 최적 Shading Factor입니다.

데모 해석 가이드

Chart 1: 시장 분포 히스토그램

경쟁자들의 최고 입찰가 분포(로그노멀)를 히스토그램으로 보여줍니다. 초록색 영역이 내 shaded bid 이하인 경매 (= 내가 이기는 경매), 빨간색 영역이 내 bid를 초과하는 경매 (= 내가 지는 경매)입니다.

Chart 2: 전략 비교 바 차트

동일한 시장 조건에서 3가지 전략의 결과를 비교합니다.

Chart 3: Shading Sweep 곡선

Shading Factor를 0%~80%까지 변화시키며 E[Profit]/Auction을 그린 곡선입니다.

Censored Data (Right-Censoring) 문제

위 차트의 "Censored View" 토글을 켜면, 실제 DSP가 관측할 수 있는 데이터의 한계를 시각적으로 확인할 수 있습니다.

왜 오른쪽이 안 보이는가?

낙찰(Win) → 경쟁자 가격 관측 가능 (clearing price)
패찰(Lose) → "내 입찰가보다 높았다"는 것만 알 수 있음

∴ 내 입찰가 이상의 시장 분포 = 관측 불가 (Right-Censored)

Naive 추정의 위험성

Censored View에서 보이는 분홍 점선은 관측된 데이터(낙찰 경매)만으로 로그노멀 분포를 피팅한 "Naive 추정"입니다. 이 추정은 시장가의 mean과 median을 모두 과소추정합니다.

Shading Factor와 Censoring의 악순환

Shading을 많이 하면(낮게 입찰) → 이기는 경매가 줄어듦 → 관측 데이터가 더 편향됨 → 분포 추정이 더 부정확 → shading이 더 부정확해짐. 이것이 탐색-활용(Exploration-Exploitation) 딜레마가 bid shading에서도 발생하는 이유입니다. 가끔 의도적으로 높게 입찰하여 시장 데이터를 수집하는 "exploration bid"가 필요합니다.

실험해볼 시나리오

시나리오 1: 경쟁이 심한 시장

Market μ를 1.0 이상으로, σ를 0.3 이하로 설정해보세요. 경쟁자들이 높고 촘촘하게 입찰하여, shading 여지가 적어집니다. 최적 Shading Factor가 작아지는 것을 확인할 수 있습니다.

시나리오 2: 분산이 큰 시장

σ를 0.8 이상으로 설정하면 경쟁자 입찰가가 넓게 퍼집니다. 이런 시장에서는 공격적 shading(높은 SF)이 더 유리합니다. 운이 좋으면 경쟁자가 매우 낮게 입찰하여 "공짜에 가까운 낙찰"이 가능하기 때문입니다.

시나리오 3: True Value가 시장 평균보다 낮을 때

True Value를 $1.0, Market μ를 0.8 (시장 중앙값 ≈ $2.23)으로 설정하면, 내 가치가 시장 평균보다 낮아 어떤 shading을 해도 E[Profit]이 매우 낮습니다. 이런 경매는 입찰 자체를 하지 않는 것이 합리적입니다. 실제 DSP에서는 이 로직으로 bid request를 skip합니다.