기본 콘텐츠로 건너뛰기

나만의 투자 보고서, 이렇게 만들면 끝! — 1페이지 월간 리포트 포맷

투자 기록을 해도 행동으로 이어지지 않는 이유는 간단합니다. 보고서가 길고 복잡하기 때문이죠. 저는 한 장짜리 1페이지 투자 보고서로 바꿔서, 매월 10분 만에 점검을 끝냅니다. 오늘 그 구조와 제작법을 통째로 드립니다.


1) 원칙: 숫자를 ‘행동’으로 바꾸는 1페이지

  • 📌 길이: A4 한 장(차트 4 + KPI 카드 + 경보 + 3문장 코멘트)
  • 🎯 목적: “이번 달 무엇을 바꿀지”를 1분에 결정
  • 🧱 가드레일: 주식합산 ≤ 55%, 리밸런싱 밴드 ±20%, 현금 10~15%


2) 레이아웃(권장 배치)

영역 내용 자료 원천
상단 KPI 카드 순자산, XIRR, TWR, MDD, 변동성, 비용률 월별 스냅샷·계정원장
좌상 차트 도넛: 자산 비중(현재w) 자산입력 시트
우상 차트 막대: 드리프트(목표 대비 편차) 자산입력 시트
좌하 차트 콤보: 순자산 라인 + MDD 영역 월별 스냅샷
우하 차트 막대: 월 수익률(TWR) 월별 스냅샷


3) KPI 카드 수식(구글 시트 예시)

지표 수식(예시) 설명
순자산=LOOKUP(2,1/(LEN(평가열)),평가열)월말 평가금액
XIRR=XIRR(현금흐름열, 날짜열)내 돈의 실제 수익률
총 TWR=PRODUCT(1+월TWR범위)-1전략 성과
MDD=MIN(드로우다운열)최대 낙폭
변동성(연)=STDEV(월수익률)*SQRT(12)월 수익률 필요
비용률=연간(수수료+세금)/평균자산낮을수록 좋음


4) 경보 박스(리스크 규칙 체크)

항목 기준 상태 수식(예시)
주식합산 ≤ 55% =IF(주식비중<=0.55,"정상","경보")
밴드 이탈 |드리프트| ≤ 20% =IF(MAX(ABS(드리프트범위))<=0.2,"정상","조정")
현금 버퍼 10~15% =IF(현금비중>=0.1, IF(현금비중<=0.15,"정상","과다"),"부족")

조건부 서식으로 “경보/조정/부족”에 색(빨강/주황)을 주면 한눈에 보입니다.


5) 3문장 코멘트 규칙(복붙 템플릿)

[무슨 일이 있었나] 8월 TWR +0.7%, 순자산 사상 최고, MDD -9.8% 유지.
[원인] 해외주식 강세로 주식합산 53%→54.6%, 채권 약세로 드리프트 확대.
[다음 액션] 화·금 21:00 슬롯에서 채권 +2%p, 현금 버퍼 12% 유지.


6) PDF & 이메일 자동 발송(간단 스크립트)

보고서 완성 후 버튼 한 번으로 PDF 저장·이메일 전송까지 자동화할 수 있습니다.

function sendMonthlyReport(){
  const ss = SpreadsheetApp.getActive();
  const sheetName = '대시보드'; // 1페이지 보고서가 모여 있는 시트
  const url = ss.getUrl().replace(/edit$/,'export?');
  const pid = ss.getId();
  const gid = ss.getSheetByName(sheetName).getSheetId();
  const params = {
    format:'pdf', size:'A4', portrait:'true', fitw:'true',
    gridlines:'false', printtitle:'false', sheetnames:'false',
    pagenum:'DISABLED', top_margin:'0.4', bottom_margin:'0.4',
    left_margin:'0.4', right_margin:'0.4', gid: gid
  };
  const query = Object.keys(params).map(k=>`${k}=${params[k]}`).join('&');
  const token = ScriptApp.getOAuthToken();
  const resp = UrlFetchApp.fetch(
    `https://docs.google.com/spreadsheets/d/${pid}/export?${query}`,
    { headers:{Authorization:`Bearer ${token}`}}
  );
  const blob = resp.getBlob().setName(`월간투자보고서_${Utilities.formatDate(new Date(),'Asia/Seoul','yyyy-MM')}.pdf`);
  MailApp.sendEmail(Session.getActiveUser().getEmail(), '월간 투자 보고서', 'PDF 첨부 확인 바랍니다.', {attachments:[blob]});
}

Apps Script에서 트리거를 매월 1일 21:05로 설정하면 자동 발송됩니다.


7) 10분 루틴(매월 말)

  1. 자산입력: 현재금액 업데이트 → 현재w·드리프트 자동
  2. 월별스냅샷: 순자산·월 TWR 1줄 추가
  3. 대시보드: KPI·경보 색상 확인
  4. 3문장 코멘트 작성 → PDF/이메일 전송


마무리

보고서는 길수록 실행이 늦어집니다. 그림 4개 + 숫자 6개 + 3문장이면 충분합니다. 이번 달부터는 1페이지로 빠르게 보고하고, 리스크는 낮추고, 결정은 빨라지세요.

※ 교육용 정보이며 특정 상품 권유가 아닙니다. 수수료·세율·앱 기능은 각 기관 공지를 확인하세요.


다음 글 예고

다음 글에서는 위 1페이지 보고서를 가족과 공유하기 쉬운 버전으로 변환합니다. 숫자 용어를 줄이고, 목표·지출·안전망을 한 장에 담아 대화가 쉬워지도록 구성합니다.

  • 👨‍👩‍👧 표지: 목표 진행률·비상금·보험 체크
  • 📊 차트: 자산 비중·순자산 추이(간단 버전)
  • 💬 코멘트: 가족 결정 3문장(무엇/왜/언제)
  • 📤 공유: PDF·이메일·인쇄 체크리스트

재무는 혼자보다 함께가 강합니다.