ふくふくHukuhuku Inc.
EP.06KPI 10分公開: 2026-05-10

ltv の計算式 5 通り:saas・EC・ゲーム・B2B・サブスク

「顧客生涯価値」と一言で言うが、業種で計算式は違う。MRR ベースの SaaS LTV、注文単価×頻度の EC、課金者比率ベースのゲームを整理する。

#ltv#saas#EC#ゲーム
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

(Lifetime Value、顧客生涯価値)は「1 人あたり、生涯でいくら稼げるか」を表す指標。マーケ予算(CAC)の決定基準として最重要ですが、業種によって計算式が全く違うため、他社事例をそのまま真似ると数字が破綻します。本記事では 5 業種の式と、それぞれの落とし穴を整理。

業種別 LTV 計算式

業種別 LTV 公式
業種計算式前提
(サブスク) ÷ Churn rate月次 churn 率が安定
EC平均注文単価 × 年間注文回数 × 継続年数リピート率が見えている
ゲームARPPU × 課金者比率 × 継続月数課金者と無料者を分けて計算
B2B 受託契約金額 × 平均継続年数更新率がカギ
広告サポートARPU × 寄与日数広告単価 × 滞在時間

1. SaaS: ARPU ÷ Churn rate

月額 5,000 円、月次 churn 5% → LTV = 5000 / 0.05 = 100,000 円。シンプルだが前提崩れに注意:churn 率が変動したら LTV も激変。3 ヶ月平均 churnで計算するのが定石。

2. EC: 単価 × 頻度 × 継続

平均注文単価 5,000 円、年間 6 回購入、3 年継続 → LTV = 5000 × 6 × 3 = 90,000 円「継続年数」をどう測るかが論点。新規 cohort のデータが 3 年揃ってないなら、Kaplan-Meier 法で生存期間を推定する。

3. ゲーム: ARPPU × 課金者比率 × 継続月数

ARPPU(課金ユーザー1人あたり月額)3,000 円、課金者比率 5%、平均継続 4 ヶ月 → LTV = 3000 × 0.05 × 4 = 600 円/「課金者と無料者を分けて計算」が必須。一括 ARPU で計算すると、ヘビーユーザーに引っ張られる。

4. B2B 受託: 契約金額 × 継続年数

月額 50 万円、平均 3 年継続 → LTV = 500,000 × 12 × 3 = 18,000,000 円更新率(renewal rate)が肝。年契約の renewal rate 90%なら継続年数は 1/(1-0.9) = 10 年で計算するが、現実は中途解約もあるので 3〜5 年で見るのが安全。

5. 広告サポート: ARPU × DAU 寄与日数

1 DAU あたり広告収益 10 円/日、平均 200 日アクティブ → LTV = 10 × 200 = 2,000 円広告 CPM の変動に弱い指標。CPM が半減すれば LTV も半減。3 ヶ月移動平均で平準化。

LTV / CAC 比率

ヘルシーな目安

LTV / CAC > 3 が黄金律。3 倍以上なら成長フェーズで投資 OK、1〜3 倍は赤字スレスレ、1 未満は撤退検討。SaaS では 3 ヶ月以内に CAC 回収もよく使われる目安。

「使ってはいけない式」

  • 全期間累計 ÷ 全ユーザー数:休眠ユーザーが含まれて数字が低く出る
  • チャーンを四半期/年単位で計算:細かい変動を見逃す → 月次 or 週次
  • 「払った人だけ」の LTV:マーケが「全ユーザー LTV」と勘違いする → ARPU と ARPPU を混同しない

Python で 5 業種の LTV を計算する

5 業種の LTV を 1 ファイルで
Python
import pandas as pdimport numpy as np
# ===== 1. SaaS LTV =====def saas_ltv(arpu_monthly: float, monthly_churn_rate: float) -> float:    """LTV = ARPU / Churn rate"""    if monthly_churn_rate <= 0:        raise ValueError("Churn rate は正の値")    return arpu_monthly / monthly_churn_rate
print(f"SaaS LTV: {saas_ltv(5000, 0.05):,.0f} 円")# → 100,000 円
# ===== 2. EC LTV =====def ec_ltv(avg_order_value: float, orders_per_year: float, retention_years: float) -> float:    return avg_order_value * orders_per_year * retention_years
print(f"EC LTV: {ec_ltv(5000, 6, 3):,.0f} 円")# → 90,000 円
# ===== 3. ゲーム LTV =====def game_ltv(arppu: float, paying_user_ratio: float, retention_months: float) -> float:    """1 MAU あたり LTV"""    return arppu * paying_user_ratio * retention_months
print(f"ゲーム LTV/MAU: {game_ltv(3000, 0.05, 4):,.0f} 円")# → 600 円
# ===== 4. B2B 受託 LTV =====def b2b_ltv(monthly_contract: float, retention_years: float) -> float:    return monthly_contract * 12 * retention_years
print(f"B2B LTV: {b2b_ltv(500_000, 3):,.0f} 円")# → 18,000,000 円
# ===== 5. 広告サポート LTV =====def ad_ltv(arpu_per_active_day: float, avg_active_days: float) -> float:    return arpu_per_active_day * avg_active_days
print(f"広告 LTV: {ad_ltv(10, 200):,.0f} 円")# → 2,000 円
実データから SaaS LTV を計算(csv → DataFrame)
Python
import pandas as pd
# 月次の ARPU と Churn 率を計算subs = pd.read_csv("subscriptions.csv", parse_dates=["start_date", "end_date"])
# Churn 率(月次) = 解約数 / 期初契約数month_starts = pd.date_range("2025-01-01", "2026-01-01", freq="MS")churn_rates = []for m_start in month_starts:    m_end = m_start + pd.DateOffset(months=1)    active_at_start = subs[(subs["start_date"] < m_start) & (subs["end_date"].isna() | (subs["end_date"] >= m_start))]    churned_in_month = active_at_start[(active_at_start["end_date"] >= m_start) & (active_at_start["end_date"] < m_end)]    if len(active_at_start) > 0:        churn_rates.append(len(churned_in_month) / len(active_at_start))
avg_churn = np.mean(churn_rates)arpu = subs["monthly_amount"].mean()print(f"平均月次 Churn: {avg_churn:.2%}")print(f"平均 ARPU: {arpu:,.0f} 円")print(f"LTV: {saas_ltv(arpu, avg_churn):,.0f} 円")

ふくふくの進め方

LTV を計算したいが業種に合った式が分からない」というご相談には、事業モデル分析(1 週間)→ 適切な計算式選定 → 実装 → 月次自動更新を 2〜3 週間で。LTV/CAC 比率の月次モニタリングまで含めたパッケージ。

次回予告

EP.07 は ・ARPU・ARPPU・課金者比率。購買行動を分解し、誰が VIP で誰が離脱予備軍かを見える化する話。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp