루틴을 꾸준히 지켰는가? — 저마찰 루틴·연속성 점수·결정 3개·자동 리마인더

성과는 루틴의 연속성에서 나옵니다. 목표는 거창할 필요가 없어요. 매일 두 가지만 확인하고(PMT%·진행률), 매주 금요일 밤 21:00에 결정 3개를 집행하는 것. 오늘은 지난 12주간 루틴이 얼마나 지켜졌는지 연속성 점수로 평가하고, 흔들릴 때 자동으로 다시 세우는 방법까지 정리합니다.


1) 데일리 2지표 — 저마찰 루틴

지표수식(예시)판정다음 행동
PMT 달성률 =실제입금/필요PMT 🟢 ≥1.00 / 🟡 0.8~1.0 / 🔴 <0.8 🔴일 때 보완 이체 즉시
진행률 오차 =ABS(현재잔고/이번달목표-1) 🟢 ≤5% / 🟡 ≤10% / 🔴 >10% 🔴일 때 기간+6m 검토(분기만)

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


2) 주간 ‘결정 3개’ 로그 — 유지/축소/증액

주차유지(Keep)축소(Cut)증액(Add)메모
W1현금 12% 유지구독 -1PMT +10%보너스 50% 규칙
W2쿨다운 24h주식 -2%p채권 +2%p드리프트 개선
...............

금요일 21:00에 일괄 집행. 감정 대신 규칙.


3) 월말 연속성 점수(0~10점)

항목배점판정 기준시트 수식(예시)
PMT 달성0~3달성률 100% = 3, 90~99% = 2, 80~89% = 1, 그외 0=IFS(PMT%≥1,3,PMT%≥0.9,2,PMT%≥0.8,1,TRUE,0)
결정 3개 집행0~24회/월 = 2, 3회 = 1, 그외 0=MIN(2,결정횟수/2)
현금 버퍼0~210~15% 유지 = 2, 8~<10% 또는 15~17% = 1=IFS(AND(현금%≥0.1,현금%≤0.15),2,AND(현금%≥0.08,현금%<0.1),1,AND(현금%>0.15,현금%≤0.17),1,TRUE,0)
드리프트 관리0~2MAX ≤ 20% = 2, ≤ 25% = 1=IFS(DriftMAX≤0.2,2,DriftMAX≤0.25,1,TRUE,0)
보고 연속성0~1월말 PDF 발송 = 1=IF(PDF발송="Y",1,0)

해석: 8~10점 🟢(루틴 정착) / 5~7점 🟡(보완 필요) / 0~4점 🔴(리셋 프로토콜 가동).


4) 구글 시트 블록(복붙)

라벨값/수식설명
A2필요PMT=ABS(PMT((1+연)^(1/12)-1,개월,-현재,-목표,0))월 납입 필요액
A3실제입금연동이번 달 합계
A4PMT%=A3/A2≥1.00 목표
B2이번달목표잔고=FV((1+연)^(1/12)-1,개월,-A2,-초기,0)
B3현재잔고연동
B4진행률오차=ABS(B3/B2-1)≤5% 권장
C2현금%=현금성/총자산10~15%
C3DriftMAX=MAX(ABS(현-목)/목)≤20%
D2결정횟수로그 집계월 4회 목표
D3PDF발송Y/N월말 보고
E2연속성점수=PMT점수+결정점수+현금점수+드리프트점수+보고점수0~10


5) 자동 리마인더(앱스 스크립트)

평일 07:30 데일리 체크, 금 21:00 주간 집행, 월말 PDF 발송.

// 평일 07:30 - 데일리 2지표 메일
function dailyTwo(){
  const s=SpreadsheetApp.getActive().getSheetByName('Dashboard');
  const v=r=>s.getRange(r).getValue();
  const msg=[
    '☀️ 데일리 체크',
    'PMT%: '+(v('A4')*100).toFixed(0)+'%  |  진행률오차: '+(v('B4')*100).toFixed(1)+'%',
    (v('A4')<0.8?'⚠️ PMT 보완 이체 필요':'') + (v('B4')>0.1?' ⚠️ 진행률오차 >10% (분기조정)':'')
  ].join('\n');
  MailApp.sendEmail(Session.getActiveUser().getEmail(),'[아침] 데일리 2지표',msg);
}

// 금 21:00 - 결정 3개 리마인더
function weeklyDecision(){
  const s=SpreadsheetApp.getActive().getSheetByName('Dashboard');
  const v=r=>s.getRange(r).getValue();
  const msg=[
    '🧭 금요일 21:00 — 결정 3개',
    '현금/주식/드리프트: '+(v('C2')*100).toFixed(0)+'% / '+(v('B3')*100).toFixed(0)+'% / '+(v('C3')*100).toFixed(0)+'%',
    '규칙: 이탈 자산만 ±1~3%p · 1회 이동 ≤3%p'
  ].join('\n');
  MailApp.sendEmail(Session.getActiveUser().getEmail(),'[금 21:00] 결정 3개',msg);
}

// 월말 21:05 - 대시보드 PDF 발송
function monthlyPdf(){
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Dashboard');
  const url=ss.getUrl().replace(/edit$/,'');
  const gid=sh.getSheetId();
  const ym=Utilities.formatDate(new Date(),Session.getScriptTimeZone(),'yyyyMM');
  const pdf=UrlFetchApp.fetch(
    url+'export?format=pdf&gid='+gid+'&size=A4&portrait=true&fitw=true&sheetnames=false&gridlines=false'
  ).getBlob().setName('Routine_'+ym+'.pdf');
  MailApp.sendEmail(Session.getActiveUser().getEmail(),'[월말] 루틴 리포트', '이번 달 연속성 점수를 확인하세요.', [pdf]);
}


6) 루틴이 흔들릴 때 — 7일 복구 프로토콜

  1. D1 진단: PMT%, 진행률오차, 현금%, DriftMAX 체크.
  2. D2 레버 1개 선택: PMT / 기간 / 비용 / 위험.
  3. D3 지출 리셋: 구독 -1, 고정비 재견적 예약.
  4. D4 현금 보강: 신규 납입분을 현금성으로.
  5. D5 리밸런싱: 이탈 자산만 ±1~3%p.
  6. D6 자동화 재가동: 이체·알림·PDF 확인.
  7. D7 로그 기록: 전→후, 종료 조건 메모.


7) 인쇄용 한 장(루틴 점검표)

[데일리] PMT __% (≥100%) | 진행률오차 __% (≤5%)
[주간] 금 21:00 결정 3개 — 유지 / 축소 / 증액
[월말] 연속성점수 __/10  |  PDF 발송 □
[가드레일] 현금 10~15% · 주식 ≤55% · 드리프트 ≤20% · 1회 이동 ≤3%p
[흔들림] 7일 복구 프로토콜 가동(레버 택1)


FAQ

  • Q. 시간이 부족해서 매일은 어렵습니다.
    A. 데일리는 두 지표만 보세요. 60초면 충분합니다. 집행은 금요일에 몰아서 합니다.
  • Q. 점수가 낮게 나왔습니다. 무엇부터 바꿀까요?
    A. PMT < 0.8이면 보완 이체, 현금 < 10%면 현금 보강. 그 외는 분기 리뷰에서 레버 1개만 수정하세요.

마무리 — 루틴은 의지의 문제가 아니라 설계와 자동화의 문제입니다. 오늘 시트를 복사해 연속성 점수를 측정하고, 금요일 21:00에 “결정 3개”만 꾸준히 집행해 보세요. 작은 일관성이 결국 큰 차이를 만듭니다.

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


🔜 다음 글 예고 | 무너진 습관, 어디서부터 무너졌을까?

  • 붕괴 신호: PMT 미달·현금 고갈·드리프트 이탈의 초기 패턴
  • 행동 로그수익곡선의 시간차 분석
  • 사전 차단: 트리거 차단·쿨다운·마찰 설계
  • 복구 매뉴얼: 7일 리셋과 단일 레버 조정

다음 편에서 붕괴 원인 매핑 표와 자동 경고 스크립트를 제공합니다.