LabHub
开始
学习 学习路径 课程

开发者创业 — 先验证再动手

用边际贡献决定定价测试与渠道预算

在 LabHub 中继续学习

한국어 원문으로 표시합니다.

목표

가격 실험을 공헌이익으로 판정하고, 구독 기록에서 이탈률·LTV·채널별 CAC·회수 기간·LTV/CAC 를 계산해 가격과 채널 예산을 미리 정한 규칙으로 결정한다.

왜 중요한가

전환율이나 매출로 가격을 정하고 CAC 만 보고 채널을 고르면, 비용과 이탈이 붙는 순간 성장할수록 현금이 빠지는 구조가 된다. 단위 경제는 고객 한 명이 남기는 돈과 그 고객을 데려오는 데 쓴 돈을 같은 기준으로 놓는 계산이다.

재료

정의

단계

  1. /root/founder/pricing/arms.json 에 가격 칸(A·B·C)마다 conversion·refund_rate·revenue_per_visitor(구매 × 가격 ÷ 방문자)와 best_by_conversion 을 쓴다.
  2. /root/founder/pricing/unit.pycontribution(price, costs) 를 만든다 — costs 는 costs.json 을 읽은 딕셔너리, 돌려주는 값은 월 공헌이익(실수).
  3. /root/founder/pricing/pervisitor.json 에 칸마다 contribution_per_visitorbest_by_contribution·best_by_revenue 를 쓴다.
  4. unit.pychurn(fix, month, channel=None) 를 더하고, /root/founder/pricing/churn.jsonmonthly(2026-01~06 각 달)와 average 를 쓴다.
  5. /root/founder/pricing/ltv.jsoncontribution(14,900원의 월 공헌이익), avg_churn, ltv, 그리고 흔한 실수로 낸 ltv_on_revenue(= 14900 ÷ 평균 이탈률)를 쓴다.
  6. /root/founder/pricing/cac.jsonby_channel(다섯 채널), blended(전체 광고비 ÷ 전체 신규), paid_only(광고비 > 0 인 채널의 광고비 ÷ 그 채널들의 신규)를 쓴다.
  7. /root/founder/pricing/channels.json 에 채널마다 churn(그 채널 고객만의 평균 이탈률)·ltv·payback_months·ltv_cac(광고비가 0 이면 null)를 쓴다.
  8. /root/founder/pricing/decision.jsonprice_arm(방문자당 공헌이익이 가장 큰 칸), scale(광고비 > 0 이고 LTV/CAC ≥ 3, 회수 기간 ≤ 12 인 채널, 정렬), cheapest_cac_paid(광고비 > 0 인 채널 가운데 CAC 가 가장 싼 채널), cheapest_is_scalable(그 채널이 scale 에 드는가)를 쓴다.

참고

전환율로만 보면

/root/founder/pricing/arms.json 에 A·B·C 의 conversion·refund_rate·revenue_per_visitor 와 best_by_conversion 을 쓴다.

conversion = 구매 ÷ 방문자, refund_rate = 환불 ÷ 구매, revenue_per_visitor = 구매 × 가격 ÷ 방문자.

고객 한 명의 월 공헌이익

/root/founder/pricing/unit.py 에 contribution(price, costs) 를 만든다.

부가세 포함 가격에서 공급가액(× 100/110)을 구하고, 수수료는 포함가에 비율을 곱해 고정액을 더합니다. 그다음 서버·상담 비용을 뺍니다.

방문자당 첫 달 공헌이익으로 다시 판정

/root/founder/pricing/pervisitor.json 에 칸마다 contribution_per_visitor 와 best_by_contribution·best_by_revenue 를 쓴다.

(구매 − 환불) × contribution(그 가격) ÷ 방문자. 매출 기준 승자와 공헌이익 기준 승자가 같은지도 보세요.

월 이탈률 — 분모는 지난달 결제자

unit.py 에 churn(fix, month, channel=None) 를 더하고 /root/founder/pricing/churn.json 에 monthly(2026-01~06)·average 를 쓴다.

'M 에 결제했다' 는 start ≤ M ≤ end(비면 2026-06). 분모는 M−1 에 결제한 고객, 분자는 그 가운데 M 에 결제하지 않은 고객입니다. 1월의 전달은 전년 12월입니다.

LTV — 분자는 매출이 아니라 공헌이익

/root/founder/pricing/ltv.json 에 contribution·avg_churn·ltv 와 비교용 ltv_on_revenue 를 쓴다.

LTV = 월 공헌이익(14,900원) ÷ 평균 이탈률. 비교용 값은 분자에 14,900 을 그대로 넣습니다. 이 모델이 이탈률 일정·할인 없음을 가정한다는 점을 기억하세요.

채널 CAC 와 혼합 CAC

/root/founder/pricing/cac.json 에 by_channel(다섯 채널)·blended·paid_only 를 쓴다.

광고비는 2026-01~06 합, 신규 고객은 같은 기간 start_month 인 고객입니다. 혼합 CAC 의 분모에는 광고비가 0 인 자연 유입 고객도 들어갑니다.

채널별 이탈·LTV·회수 기간

/root/founder/pricing/channels.json 에 채널마다 churn·ltv·payback_months·ltv_cac 를 쓴다(광고비 0 이면 ltv_cac 는 null).

채널 LTV 에는 그 채널 고객만으로 계산한 평균 이탈률을 씁니다. 회수 기간 = CAC ÷ 월 공헌이익.

미리 정한 규칙으로 결정한다

/root/founder/pricing/decision.json 에 price_arm·scale·cheapest_cac_paid·cheapest_is_scalable 을 쓴다.

규칙은 계산 전에 정한 것 그대로 — 광고비 > 0, LTV/CAC ≥ 3, 회수 기간 ≤ 12개월. CAC 가 가장 싼 유료 채널이 규칙을 통과하는지 따로 확인하세요.