수익 구축 (드라이버 기반 예측)
사용 시기
수익이 단일 성장률이 아닌 실제 운영 드라이버(마케팅 지출 또는 퍼널에서의 고객 수, 이탈, ARPU, 또는 제품 라인별 수량×가격)로 하향식으로 구축되어야 할 때 사용합니다. 운영 계획, ARR 예측, 드라이버에서 최상위 라인까지 방어 가능한 브리지가 필요한 펀드레이징 모델에 적합합니다. 이 스킬은 Claude 앱에서 openpyxl을 사용하여 다운로드 가능한 .xlsx 파일을 구축하며, Excel 애드인이나 Microsoft 365 연결을 사용하지 않습니다.
구축하는 항목
다음 6개 탭이 포함된 워크북:
- Cover: 제목, 색상 범례, 시나리오 선택기, 주요 수익 및 성장률.
- Drivers: 모든 파란색 입력값(시작 고객 수, 마케팅 지출, CAC 또는 퍼널 비율, ARPU, 이탈률, 가격, 시나리오 승수).
- Revenue Build: 기간별 고객 또는 유닛 스케줄 및 수익.
- Summary: 연간 수익, 성장률, 기말 고객 수 및 적용 시나리오.
- Sensitivity: 기말 ARR 또는 수익을 구동하는 이탈률 대 신규 추가 Data Table.
- Checks: 롤포워드 동일성 및 이상 징후 플래그.
구축 워크플로우
- 워크북과 6개 탭을 위 순서대로 생성합니다.
- Drivers 탭에서 모든 입력값을 파란색으로 표시하고 단위를 추가합니다. 시나리오 셀(1=Base, 2=Bull, 3=Bear)을 추가하고 이름을
scn으로 지정합니다. - 기간 헤더 행(월 또는 분기)을 한 번 설정하고 모든 곳에서 참조합니다.
- Revenue Build 탭에서 고객 또는 유닛 롤포워드를 구축합니다: 기초, 추가, 이탈, 기말.
- 각 기간의 수익을 스케줄에서 계산합니다(고객 수×ARPU 또는 수량×가격).
- Summary 탭에서 기간을 연도로 집계합니다.
- Sensitivity 탭을 네이티브 이변수 Data Table로 구축합니다.
- Checks 탭을 롤포워드 동일성 및 성장률 이상 징후 테스트로 구축합니다.
- 헤드리스로 워크북을 다시 계산합니다(LibreOffice) — 모든 수식이 계산되도록.
- 수식 오류(#REF!, #DIV/0!, #VALUE!, #NAME?)가 없는지 확인하고, 발견 시 수정 후 재계산을 반복한 후 제공합니다.
탭별 명세
Cover
- 제목 셀, 모델 목적 행, 작성일.
- 색상 범례 블록: "입력값" 레이블의 파란색 견본, "수식" 레이블의 검은색 견본, "교차 탭 링크" 레이블의 초록색 견본.
- 시나리오 에코: Drivers 탭의 활성 시나리오를 가져오는
=CHOOSE(scn,"Base","Bull","Bear"). - 주요 출력값(초록색 교차 탭 링크): 최신 연도 수익
=Summary!<최신 수익 셀>, 기말 고객 수, 최종 연도 YoY 성장률. - 워크북이 Excel에서 실시간으로 재계산되며 빌드 시 오류 없이 검증되었음을 명시하는 한 줄 읽어보기.
Drivers
- B2 시나리오 선택기(파란색, 1/2/3), 이름
scn. - 시작 고객 수 B5; 기간당 ARPU B6; 월 이탈률 % B7.
- 획득: 기간당 마케팅 지출 B8; CAC B9; 지출에서 신규 추가
=B8/B9(Build에서 계산, 여기서는 아님). - 선택적 퍼널: 리드 B10, 리드-고객 전환율 % B11.
- 시나리오 승수: 3열 블록(Base/Bull/Bear): 추가 승수 행 C14:E14, 이탈 승수 행 C15:E15. 활성 값: B14
=CHOOSE(scn,C14,D14,E14), B15=CHOOSE(scn,C15,D15,E15). - 선택적 제품 라인 블록: 라인당 가격 및 라인당 수량(수량×가격 구축용).
Revenue Build
- 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. 행 전체에 걸쳐 일관된 수식 하나를 사용합니다. - 이탈:
=기초*Drivers!$B$7*Drivers!$B$15(활성 이탈 승수). - 기말 고객 수:
=기초+추가-이탈. - 수익:
=기말*Drivers!$B$6(고객 수×ARPU), 또는 제품 라인의 경우=SUMPRODUCT(가격_범위,수량_범위). - ARR(구독인 경우):
=수익*12(기간이 월인 경우) 또는 적절히 연간화.
Summary
- 연간 수익:
=SUM(<해당 연도 12개월 수익 셀>). - YoY 성장률:
=올해/작년-1. - 연도별 기말 고객 수: 교차 탭 링크를 통해 해당 연도의 마지막 기간 기말 값.
- 활성 시나리오 레이블:
=CHOOSE(scn,"Base","Bull","Bear").
Sensitivity
- 왼쪽 상단 셀은 기말 ARR 또는 최종 기간 수익
='Revenue Build'!<기말 ARR 셀>을 참조합니다. - 열 입력: 기간당 신규 추가 값. 행 입력: 이탈률 % 값.
- 네이티브 이변수 Data Table: 행 입력 셀 = Drivers 이탈률, 열 입력 셀 = Drivers 추가 드라이버.
Checks
- 각 기간 롤포워드:
=IF(기말=기초+추가-이탈,"PASS","FAIL"), 모든 기간에 대해, 그 후=AND(...). - 연속성:
=IF(기초_기간_t=기말_기간_t-1,"PASS","FAIL"). - 성장률 이상 징후: YoY 성장률이 파란색 상한 입력값을 초과하거나 하한 미만인 경우 플래그.
- 모든 기간에 대해 고객 수 및 수익이 음수가 아닌지 확인.
수식 및 서식 규칙
- 파란색 글꼴: 입력값(Drivers 탭만). 검은색 글꼴: 탭 내 수식. 초록색 글꼴: 교차 탭 링크.
- 수식에 하드코딩된 숫자 없음; 상수는 Drivers 탭에 파란색 셀로 존재. 드라이버 셀에 절대 참조(
$B$7)를 사용하여 행이 여러 기간에 걸쳐 깔끔하게 채워지도록 함. - 행 전체에 걸쳐 일관된 수식 하나를 사용하여 수정 없이 가로로 복사 가능.
- 고객 수는 천 단위 구분 기호가 있는 정수; ARPU 및 수익은 통화; 이탈률 및 성장률은 백분율.
scn및 기말 ARR 셀에 이름을 지정하여 Checks 및 Sensitivity에서 명확하게 읽을 수 있도록 함.
검증
- 모든 기간에 대해 기말 = 기초 + 추가 - 이탈 (PASS/FAIL).
- 각 기간의 기초가 이전 기간의 기말과 동일.
- YoY 성장률이 명시된 허용 범위 내에 있음.
- 고객 수 및 수익이 음수인 경우 없음; 이탈률은 0과 1 사이.
재계산 및 검증
작성 후 헤드리스 LibreOffice로 재계산하여 openpyxl 수식 텍스트가 계산된 값이 되도록 합니다. 모든 시트에서 #REF!, #DIV/0!, #VALUE!, #NAME?를 검사합니다. 문제가 되는 수식이나 누락된 이름 범위를 수정하고 루프에서 다시 재계산합니다. Checks 탭에 모든 PASS가 표시되고 오류 문자열이 없을 때만 제공합니다.
입력해야 할 사항
- 시작 고객 수 또는 유닛, ARPU 또는 라인당 가격.
- 획득 메커니즘: 마케팅 지출 및 CAC, 또는 퍼널(리드 및 전환율).
- 기간당 이탈률 및 기간 길이(월 또는 분기).
- 시나리오 승수(추가 및 이탈용, Base/Bull/Bear).
- 예측 기간(기간 수).
예시
가상: 시작 고객 1,000명, 월 ARPU 50, 월 이탈률 3%. 월 마케팅 지출 100,000, CAC 500, 따라서 월 신규 추가 200명. 1개월 차 이탈 약 30명, 기말 약 1,170명. Base 시나리오에서 36개월 동안 고객이 증가하고 월 수익이 성장하며; Bull은 추가 1.2배, 이탈 0.8배 승수를 적용. Sensitivity는 추가 150~300, 이탈 2%~5%로 기말 ARR을 확인합니다.