성장률·수익률을 주간 단위로 추적하기 — WoW·언더워터·샤프 근사·자동 스냅샷

월간 보고만으로는 흐름의 변곡을 놓치기 쉽습니다. 주간 단위(WoW)로 수익률·성장률을 추적하면, 언더워터(드로다운)변동성, 샤프 근사까지 한 눈에 보입니다. 오늘은 구글 시트로 ①데이터 구조 ②주간 KPI 수식 ③차트 ④금요일 21:00 자동 스냅샷/메일까지 세팅합니다.


1) 데이터 구조(주간 마감 기반)

라벨예시/수식설명
AWeekEnd2025-09-12해당 주 금요일(마감일)
BStartBal=OFFSET(E2,-1,0)전 주 EndBal
CInflow+500,000입금(+)·출금(-) 분리 권장
DOutflow-120,000출금(음수)
EEndBal직접 입력/연동해당 주 금요일 잔고
FNetFlow=C2+D2순유입
GWoWReturn=(E2-B2-F2)/B2흐름 보정 수익률
HHighWater=MAX($E$2:E2)누적 고점
IDrawdown=E2/H2-1언더워터(음수일수록 깊음)
JAssetClass주식/채권/현금…선택(스파게티용)

가드레일(권장선): 현금 10~15%, 주식 합산 ≤ 55%, 드리프트 |편차| ≤ 20%, 1회 이동 ≤ 3%p.


2) 주간 KPI & 연환산 지표(샤프 근사)

지표수식(예시)해석
평균 주간 수익률 =AVERAGE(G:G) 기대 주간 수익률
연환산 수익률 =(1+AVERAGE(G:G))^52-1 주 52회 복리 가정
연환산 변동성 =STDEV.P(G:G)*SQRT(52) 주간 표준편차 기반
무위험수익률 =셀(Rf) 보수적 값(연간) 수동 입력
샤프 근사 =(연수익-무위험)/연변동성 클수록 효율적
최대 드로다운 =MIN(I:I) 가장 깊은 낙폭


3) 차트 4종(해석 중심)

  1. 언더워터(Underwater): I열 라인을 0 아래 음영 처리 → 회복 속도 확인.
  2. 스파게티: J=자산군별 G(주간 수익률) 라인 겹치기 → 무엇이 변동을 만들었나.
  3. 히트맵: 월×주간 수익률 색상 → 계절성/패턴 탐지.
  4. 워터폴: 순유입·투자수익 분해.


4) 자산군별 주간 추적(선택)

라벨예시/수식설명
AWeekEnd2025-09-12
BTicker/IndexKOSPI/AGG/MMF
CWeight0.35비중
DRet_w0.012주간 수익률
EContrib=C2*D2기여도


5) 조건부 서식(빨리 반응하기)

  • G:WoWReturn < -2% → 빨강 배경.
  • I:Drawdown ≤ -10% → 진한 파랑 음영.
  • 샤프 < 0.2 → 주석: “변동 대비 보상 낮음”.


6) 구글 시트 블록(복붙 수식)

라벨값/수식메모
K2Avg_w=AVERAGE(G:G)평균 주간
K3AnnRet=(1+K2)^52-1연환산
K4AnnVol=STDEV.P(G:G)*SQRT(52)연변동성
K5Rf0.02연 2% 예시
K6Sharpe=(K3-K5)/K4샤프 근사
K7MaxDD=MIN(I:I)최대 DD


7) 자동 스냅샷 & 주간 메일(앱스 스크립트)

금요일 21:00 기준. 비교기호는 엔티티 처리.

// 금 20:55 - 주간 스냅샷 복사
function weeklySnapshot(){
  const ss=SpreadsheetApp.getActive();
  const tag=Utilities.formatDate(new Date(),Session.getScriptTimeZone(),'yyyyMMdd');
  ss.copy('Weekly_'+tag);
}

// 금 21:00 - 주간 리포트 메일
function weeklyReport(){
  const s=SpreadsheetApp.getActive().getSheetByName('Weekly');
  const k=SpreadsheetApp.getActive().getSheetByName('KPI'); // 선택: KPI 별도 시트
  const last=s.getLastRow();
  const wow=s.getRange('G'+last).getValue();
  const dd=s.getRange('I'+last).getValue();
  const annRet=k?k.getRange('B3').getValue():null;
  const annVol=k?k.getRange('B4').getValue():null;
  const sharpe=k?k.getRange('B6').getValue():null;
  const msg=[
    '📈 주간 리포트',
    'WoW 수익률: '+(wow*100).toFixed(2)+'%',
    '언더워터: '+(dd*100).toFixed(1)+'%',
    (annRet!=null?'연수익/연변동성/샤프: '+(annRet*100).toFixed(1)+'% / '+(annVol*100).toFixed(1)+'% / '+sharpe.toFixed(2):''),
    '규칙: 현금 10~15% · 주식 ≤55% · 드리프트 ≤20% · 1회 이동 ≤3%p'
  ].join('\n');
  MailApp.sendEmail(Session.getActiveUser().getEmail(),'[금 21:00] 주간 성과 요약',msg);
}


8) 해석 팁(데이터에서 행동으로)

  • WoW 음전환 2주 연속 → 금 21:00 “결정 3개”에서 축소 1건 포함.
  • 언더워터 -10% 하회 → 신규 매수 24h 쿨다운, 현금 버퍼 점검.
  • 샤프 < 0.2 4주 연속 → 비용 낮추기/드리프트 교정부터.


9) 인쇄용 한 장(주간 추적 체크리스트)

[입력] WeekEnd □  StartBal □  In/Out □  EndBal □
[KPI] WoW ____% | MaxDD ____% | AnnRet ____% | AnnVol ____% | Sharpe ____
[차트] 언더워터 □  스파게티 □  히트맵 □  워터폴 □
[결정 3개(금 21:00)] 유지 ____  |  축소 ____  |  증액 ____


FAQ

  • Q. 입출금이 많은데 수익률 왜곡이 걱정됩니다.
    A. WoW=(End-Start-NetFlow)/Start로 흐름을 보정했습니다. 월 단위 XIRR은 보충 지표로 별도 계산하세요.

마무리 — 주간 추적의 목표는 빠른 인지와 작은 조정입니다. 오늘 시트를 만들어 금요일 21:00 자동 리포트까지 연결해 보세요. 작은 변화를 꾸준히 쌓으면, 분기 리밸런싱의 품질이 달라집니다.

※ 교육용 일반 정보입니다. 상품·세율·수수료·약관은 각 기관의 최신 공지를 확인하세요.


🔜 다음 글 예고 | 12주 재테크 여정, 한 권의 전략서로 정리하자

  • 전략 캔버스 통합: 목표·레버·가드레일·루틴
  • 케이스 스터디: 성공/실패 분기점과 복구 로그
  • 부록: 시트 템플릿 링크 모음·앱스 스크립트 번들
  • 출력용 PDF: 목차/요약/체크리스트 3장

다음 편에서 12주간 콘텐츠를 한 권의 전략서로 묶는 레이아웃과 파일 구조를 공개합니다.