収益構築(ドライバーベース予測)
使用するタイミング
収益を単一の成長率ではなく、実際の事業ドライバーからボトムアップで構築する必要がある場合に使用します。マーケティング支出やファネルからの顧客数、チャーン、ARPU、または製品ラインごとの数量×価格などが該当します。事業計画、ARR 予測、およびドライバーからトップラインへの説明可能な橋渡しが必要な資金調達モデルに適しています。このスキルは、Claude アプリ内で openpyxl を使用してダウンロード可能な .xlsx を構築します。Excel アドインや Microsoft 365 接続は使用しません。
構築するもの
6つのタブを持つワークブック:
- カバー:タイトル、色凡例、シナリオセレクタ、主要収益と成長率。
- ドライバー:すべての青い入力項目(開始顧客数、マーケティング支出、CAC またはファネル率、ARPU、チャーン、価格、シナリオ乗数)。
- 収益構築:期間ごとの顧客数またはユニット数のスケジュールと収益。
- サマリー:年間収益、成長率、期末顧客数、適用中のシナリオ。
- 感度分析:新規獲得数×チャーンのデータテーブルにより期末 ARR または収益を表示。
- チェック:繰越計算の整合性と妥当性フラグ。
構築ワークフロー
- ワークブックを作成し、上記の順序で6つのタブを配置します。
- ドライバータブで、すべての入力を青字で単位付きでレイアウトし、シナリオセル(1=Base, 2=Bull, 3=Bear)を追加して
scnという名前を付けます。 - 期間ヘッダー行(月または四半期)を1回設定し、すべての場所で参照します。
- 収益構築タブで顧客数またはユニット数の繰越計算を構築します:期首、新規獲得数、チャーン、期末。
- 各期間の収益をスケジュールから計算します(顧客数×ARPU、または数量×価格)。
- サマリータブを構築し、期間を年単位に集計します。
- 感度分析タブをネイティブの2変数データテーブルとして構築します。
- チェックタブを構築し、繰越計算の整合性と成長率の妥当性テストを行います。
- ワークブックをヘッドレスで再計算(LibreOffice)し、すべての数式が計算されるようにします。
- 数式エラー(#REF!, #DIV/0!, #VALUE!, #NAME?)がゼロであることを確認し、修正してループで再計算を繰り返し、その後提供します。
タブごとの仕様
カバー
- タイトルセル、モデルの目的行、作成日。
- 色凡例ブロック:青い見本に「入力」、黒に「数式」、緑に「クロスタブリンク」とラベル。
- シナリオ表示:
=CHOOSE(scn,"Base","Bull","Bear")でドライバータブのアクティブシナリオを取得。 - 主要出力を緑のクロスタブリンクとして表示:最新年の収益
=Summary!<最新収益セル>、期末顧客数、最終年の前年比成長率。 - ワークブックが Excel でライブ再計算されること、および構築時にエラーがないことを確認済みであることを記載した1行の読み物。
ドライバー
- B2 シナリオセレクタ(青、1/2/3)、名前
scn。 - 開始顧客数 B5;期間あたりの ARPU B6;月次チャーン率 B7。
- 獲得:期間あたりのマーケティング支出 B8;CAC B9;支出からの新規獲得数
=B8/B9(構築タブで計算、ここでは計算しない)。 - オプションのファネル:リード数 B10、リードから顧客への転換率 B11。
- シナリオ乗数を3列ブロック(Base/Bull/Bear)で設定:獲得数乗数行 C14:E14、チャーン乗数行 C15:E15。アクティブ値:B14
=CHOOSE(scn,C14,D14,E14)、B15=CHOOSE(scn,C15,D15,E15)。 - オプションの製品ラインブロック:ラインごとの価格と数量(数量×価格の構築用)。
収益構築
- 3行目に期間ヘッダー 1..N(単一系列、以下のすべての行が参照)。
- 期首顧客数:期間1
=Drivers!B5;以降の期間=<前の期末セル>。 - 新規獲得数:
=Drivers!$B$8/Drivers!$B$9*Drivers!$B$14(支出÷CAC×アクティブ獲得数乗数)、またはファネル=Drivers!$B$10*Drivers!$B$11*Drivers!$B$14。行全体で一貫した1つの数式を使用します。 - チャーン:
=Begin*Drivers!$B$7*Drivers!$B$15(アクティブチャーン乗数)。 - 期末顧客数:
=Beginning+Adds-Churned。 - 収益:
=Ending*Drivers!$B$6(顧客数×ARPU)、または製品ラインの場合=SUMPRODUCT(price_range,volume_range)。 - ARR(サブスクリプションの場合):
=Revenue*12(期間が月の場合)、または適宜年換算。
サマリー
- 年間収益:
=SUM(<その年の12ヶ月分の収益セル>)。 - 前年比成長率:
=ThisYear/PriorYear-1。 - 各年の期末顧客数:その年の最終期間の期末をクロスタブリンクで参照。
- アクティブシナリオラベル:
=CHOOSE(scn,"Base","Bull","Bear")。
感度分析
- 左上隅のセルは期末 ARR または最終期間の収益
='Revenue Build'!<期末 ARR セル>を参照。 - 列入力:期間あたりの新規獲得数値。行入力:チャーン率の値。
- ネイティブの2変数データテーブル。行入力セル = ドライバーのチャーン、列入力セル = ドライバーの獲得数ドライバー。
チェック
- 各期間の繰越計算:
=IF(Ending=Beginning+Adds-Churned,"PASS","FAIL")を全期間で実行し、その後=AND(...)。 - 連続性:
=IF(Beginning_period_t=Ending_period_t-1,"PASS","FAIL")。 - 成長率の妥当性:いずれかの前年比成長率が青で設定された上限を超えたり下限を下回った場合にフラグ。
- 顧客数と収益が毎期非負であること。
数式と書式の規則
- 入力(ドライバーのみ)は青字。自タブ計算は黒字。クロスタブリンクは緑字。
- 数式にハードコードされた数値は使用せず、定数はドライバータブの青いセルとして配置。絶対参照(`$B$7$)を使用してドライバーセルを参照し、行を水平方向にコピーしてもきれいに埋まるようにします。
- 各行に1つの一貫した数式を使用し、編集なしで水平方向にコピーできるようにします。
- 顧客数は桁区切り付きの整数;ARPU と収益は通貨;チャーンと成長率はパーセント。
scnおよび期末 ARR セルに名前を付け、チェックと感度分析で読みやすくします。
チェック
- 毎期、期末 = 期首 + 新規獲得数 - チャーン(PASS/FAIL)。
- 各期間の期首が前の期末と一致すること。
- 前年比成長率が指定された妥当な範囲内であること。
- 顧客数と収益が決して負にならないこと;チャーンは0~1の間。
再計算と検証
書き込み後、ヘッドレスで LibreOffice を使って再計算し、openpyxl の数式テキストが計算値になるようにします。すべてのシートをスキャンして #REF!, #DIV/0!, #VALUE!, #NAME? を確認します。問題のある数式または欠落している名前付き範囲を修正し、ループで再度再計算します。チェックタブがすべて PASS を示し、エラー文字列が残っていない場合のみ提供します。
収集する入力
- 開始顧客数またはユニット数、および ARPU またはラインごとの価格。
- 獲得メカニズム:マーケティング支出と CAC、またはファネル(リード数と転換率)。
- 期間あたりのチャーン率と期間の長さ(月または四半期)。
- 獲得数とチャーンのシナリオ乗数(Base/Bull/Bear)。
- 予測期間の数(期間数)。
例
仮定:開始顧客数 1,000、ARPU 月額 50、月次チャーン 3%。マーケティング支出 月額 100,000、CAC 500、よって月額新規獲得数 200。初月のチャーン約30、期末約 1,170。36ヶ月間 Base シナリオでは、顧客数が増加し月次収益が成長。Bull は獲得数に1.2倍、チャーンに0.8倍の乗数を適用。感度分析では、獲得数を150~300、チャーンを2%~5%で変動させ、期末 ARR への影響を表示します。