「ユニット・エコノミクス」は1人の顧客を獲得したときに、獲得にかけたコストに対してどの程度のリターンが得られるかを割合で表した指標で、CLV(顧客生涯価値)をCAC(顧客獲得コスト)で割ることで求められます。
\[\begin{aligned} \LARGE \text{ユニット・エコノミクス} = \frac{\text{CLV}}{\text{CAC}} \end{aligned}\]一般的なSaaS企業において、ユニット・エコノミクスは3を超えることが望ましいとされています。つまり、顧客獲得にかかるコストの3倍以上の価値を、その顧客から得られることが健全な事業運営の目安となります。
この指標が3を下回る場合、マーケティングの効率の改善やリテンション率の向上、あるいは価格戦略の見直しなどの施策を検討する必要があるかもしれません。
一方で、過度に高い値は必ずしも良いとは限らず、市場機会を十分に活用できていない可能性も示唆します。したがって、競合状況や市場の成熟度を考慮しながら、適切な目標値を設定することが重要です。
今回は、2つのサンプルデータを使ってユニット・エコノミクスを計算していきます。
1つ目のデータはサブスクリプション型のビジネスの支払いデータです。データはこちらのページからダウンロードできます。
このデータは、一行が一人の顧客の月ごとの支払い履歴を表していて、列には以下の情報があります。
2つ目のデータは、このビジネスのコストに関するデータです。データはこちらのページからダウンロードできます。
このデータは、一行がとある月のコストに関する情報を表していて、列には以下の情報があります。
今回は前述した2つデータから、以下のようなテーブルを作成します。
このようなテーブルを作成できれば、ユニット・エコノミクスを計算するために必要な情報が揃うので、まずは上記のテーブルを作成します。
MRRは月ごとに「支払い金額」の合計値を集計し、顧客数は月ごとに一意(ユニーク)な顧客IDの数を集計することで計算が可能です。
一方で新規顧客の数は、支払いデータを集計をするだけは計算できません。ではどうすればいいかというと、元のデータに支払い回数の情報があれば、支払い回数が1回の顧客の一意な数を集計することで、新規顧客数を計算することが可能です。
そこで、支払いデータに支払回数の情報を計算するために、「支払い日」の列ヘッダーメニューから、「表計算」、「ランキング(隙間なし)」の「昇順」を選択します。
このような処理を行うのは、顧客ごとに支払い日が古い順にランクをつけることで、何回目の支払い回数かを計算できるからです。
このときランキングの方法に「隙間なし」を選択するのは、アップグレードなどによる支払いが同日にあったときに、別の支払いとして扱われないようにするためです。
今回は顧客ごとにランキングを計算したいので、表計算のダイアログが開いたら、グループに「顧客ID」を選択し、プレビューボタンをクリックします。
最後に値の列名を、「支払い回数」に変更し、実行します。
これで支払い回数の情報を支払いデータに追加できました。
続いてMRR(月間定期収益)を集計します。MRRはCLVを計算するときに利用するARPUの計算のために必要な指標で、CAC(Custmer Acquisiton Cost / 顧客獲得コスト)の計算とは無関係です。
MRRはそれぞれのユーザーが払った金額の月々の合計値になるため、月々の支払い金額を計算するだけで簡単に計算できます。
「支払い日」の列ヘッダーメニューから、「集計」を選択します。
集計のダイアログが表示されたら、グループに「支払い日」を選択し、日付の単位に「月」で切り捨てを選択します。
続いて値に、「支払い金額」を選択し、集計関数には合計値(SUM)を選択します。
最後に列名をMRRに変更して、プレビューボタンをクリックします。
これでMRRを集計するための設定ができました。
次に顧客数を集計します。顧客数はCLVを計算するときに利用するARPUの計算のために必要な指標で、CAC(Custmer Acquisiton Cost / 顧客獲得コスト)の計算とは無関係です。
集計のダイアログの値に「顧客ID」を選択し、集計関数に「一意な値の数(UNIQUE)」を選択します。
続いて、編集アイコンをクリックして新しい列名を「顧客数」に変更のうえ、実行ボタンをクリックします。
顧客数を集計する準備ができました。
最後に支払い回数をもとに、新規顧客の数を集計します。新規顧客数はCAC(Custmer Acquisiton Cost / 顧客獲得コスト)を計算するときに必須の指標で、CLVの計算とは無関係です。
、値に「顧客ID」を選択し、集計関数に「条件に合った一意な値の数(COUNT_UNIQUE_IF)」を選択します。
条件を設定するための「列の設定」ダイアログが表示されるので、列に「支払い回数」、演算子に「等しい」、値に「1」と入力します。
この設定により、「支払い回数」が1回の「顧客ID」の「一意な値の数」を集計できます。
続いて新しい列名に「新規顧客数」と入力し、適用します。
プレビューボタンをクリックして、「新規顧客数」を集計できていることを確認したら、実行ボタンをクリックします。
MRR、顧客数、新規顧客数を集計することができました。
続いてキャンセル率を計算するために、継続顧客数を計算します。
「顧客数」の列ヘッダーメニューから「計算を作成」、「標準」を選択します。
計算を作成のダイアログが開いたら、計算エディタに顧客数 - 新規顧客数
と入力します。
続いて、「新しく列を作成」にチェックが付いていることを確認したら、列名を「継続顧客」に設定のうえ、「この列の後に作る」を「(最後の列)」に設定して、実行します。
「継続顧客数」の列を新たに作成できました。
続いてキャンセル率を計算します。
「継続顧客数」の列ヘッダーメニューから「計算を作成」、「標準」を選択します。
「計算を作成」のダイアログが表示されたら、計算エディタに継続顧客数 / lag(顧客数)
テキストを入力します。
なお、lag関数は前の行の値を取得する関数になるため、継続顧客数 / lag(顧客数)
という計算式で、前月の顧客のうち今月もサービスを継続した顧客の割合を計算できるわけです。
ただし、サービスを継続した顧客の割合はリテンション率になるため、リテンション率の逆のキャンセル率を計算するために、計算エディタの内容を1 - (継続顧客数 / lag(顧客数))
に変更します。
次に「新しく列を作成」にチェックが付いていることを確認したら、列名を「キャンセル率」に設定のうえ、「この列の後に作る」を「(最後の列)」に設定して、実行します。
キャンセル率を計算できました。
続いてARPUとCLVを計算していきます。
MRRの列ヘッダーメニューから、「計算を作成」の「標準」を選択します。
計算を作成のダイアログが開いたら、計算エディタにMRR / 顧客数
と入力します。
最後に、「新しく列を作成」にチェックが付いていることを確認し、列名を「ARPU」に設定のうえ、「この列の後に作る」を最後の列に変更し、実行します。
ARPUを計算することができました。
続いてCLVを計算していきます。CLVを正確に計算するためには、生存曲線を利用して、CLV(顧客生涯価値)を計算することが望ましいですが、今回は簡易的な以下の計算式を使って、CLVで計算していきます。(生存曲線を利用したCLVの計算方法の詳細や、以下の数式でCLVがなぜ計算できるかにつきましては、こちらから詳細をご確認ください)
そのため、「キャンセル率」の列ヘッダーメニューから、「計算を作成」の「標準」を選択します。
計算を作成のダイアログが開いたら、計算エディタに(1 / キャンセル率) * ARPU
と入力します。
最後に、「新しく列を作成」にチェックが付いていることを確認し、列名を「CLV」に設定のうえ、「この列の後に作る」を最後の列に変更し、実行します。
CLVを計算できました。
続いて、先程集計したデータにコストの情報を結合します。
「支払い日」の列ヘッダーメニューから「結合(列を追加する/Join)」を選択します。
結合のダイアログが開いたら「結合先データフレーム」にもう一方のコストのデータを選択し、キー列には「日付」を選択し、実行します。
これでユニット・エコノミクスを計算するためのデータをつくることができました。
最後にユニット・エコノミクスを計算します。
まずはCAC(顧客獲得コスト)を計算するために「新規顧客の獲得コスト」の列ヘッダーメニューから、「計算を作成」の「標準」を選択します。
計算を作成ダイアログが開いたら、計算エディタに新規顧客の獲得コスト / 新規顧客数
と入力します。
続いて、新しく列を作成にチェックが付いていることを確認したら、列名を「CAC」に設定のうえ、「この列の後に作る」を「(最後の列)」に設定して、実行します。
CACを計算することができました。
これでユニット・エコノミクスの計算に必要な「CAC」と「CLV」を揃えられたので、「ユニット・エコノミクス」を計算します。
CLVの列ヘッダーメニューから、「計算を作成」の「標準」を選択します。
計算を作成のダイアログが開いたら、計算エディタにCLV / CAC
と入力します。
最後に、「新しく列を作成」にチェックが付いていることを確認し、列名を「ユニット・エコノミクス」に設定のうえ、「この列の後に作る」を最後の列に変更し、実行します。
これで、ユニット・エコノミクスを計算することができました。