TT Lab
はじめる
学ぶ 学習パス コース

開発者の起業 — 作る前に検証する

価格テストとチャネル予算を貢献利益で決める

TT Labで続きを見る

目標

価格実験を貢献利益で判定し、購読記録から、解約率・LTV・チャネル別CAC・回収期間・LTV/CACを計算して、価格とチャネル予算を、あらかじめ決めたルールで決めます。

なぜ重要なのか

コンバージョン率や売上で価格を決め、CACだけを見てチャネルを選ぶと、費用と解約がかかった途端に、成長するほど現金が出ていく構造になります。ユニットエコノミクスは、顧客1人が残すお金と、その顧客を連れてくるのに使ったお金を、同じ基準で並べる計算です。

用意するもの

定義

ステップ

  1. /root/founder/pricing/arms.jsonに、価格パターン(A・B・C)ごとに、conversion・refund_rate・revenue_per_visitor(購入 × 価格 ÷ 訪問者)と、best_by_conversionを書く。
  2. /root/founder/pricing/unit.pyに、contribution(price, costs)を作る: costsはcosts.jsonを読んだ辞書で、返す値は月の貢献利益(実数)。
  3. /root/founder/pricing/pervisitor.jsonに、パターンごとにcontribution_per_visitorと、best_by_contribution・best_by_revenueを書く。
  4. unit.pyにchurn(fix, month, channel=None)を加え、/root/founder/pricing/churn.jsonに、monthly(2026-01–06の各月)とaverageを書く。
  5. /root/founder/pricing/ltv.jsonに、contribution(14,900ウォンの月の貢献利益)、avg_churn、ltv、そして、よくある間違いで出したltv_on_revenue(= 14900 ÷ 平均解約率)を書く。
  6. /root/founder/pricing/cac.jsonに、by_channel(5つのチャネル)、blended(全体の広告費 ÷ 全体の新規)、paid_only(広告費 > 0のチャネルの広告費 ÷ それらのチャネルの新規)を書く。
  7. /root/founder/pricing/channels.jsonに、チャネルごとに、churn(そのチャネルの顧客だけの平均解約率)・ltv・payback_months・ltv_cac(広告費が0ならnull)を書く。
  8. /root/founder/pricing/decision.jsonに、price_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 = 購入 × 価格 ÷ 訪問者です。

顧客1人の月の貢献利益

/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(5つのチャネル)・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が最も安い有料チャネルが、ルールを通過するかどうかを、別に確認してください。