v3를 자동 갱신에 올리기 전에 구조를 다시 점검했어요. 고쳐야 할 오류 3개, 설계상 약점 5개, 경미한 문제 4개를 찾아 모두 반영했어요. 그 결과 성적은 실제 수준으로 내려왔고, 이 보고서의 숫자는 모두 고친 뒤의 값이에요. v3.2에서는 금리와 가계신용을 한국은행 원자료로 바꿨어요.
세 구간만으로는 구간을 어떻게 자르느냐에 따라 결과가 크게 달라져서, 5년 창을 1년씩 옮겨가며 13번 평가했어요. 숫자는 지수와 이후 12개월 실거래 가격의 순위상관이에요. '이후 12개월'은 점수가 발표되는 달(기준월 다음 달 20일)부터 재요. 기준월부터 재면 발표 전 1개월이 섞여 성적이 부풀어요(2026-10-22 점검에서 고침). 단순한 기준 세 가지와 나란히 놓았어요.
표를 선행·동행·후행 세 그룹으로 나눠 같은 비중으로 평균 내기 때문에, 그룹마다 표 수가 다르면 한 표의 무게도 달라져요. 최신 달 기준 주제별 실제 비중이에요. 비중을 억지로 맞추는 두 방식(그룹 안 주제 균등, 소득연계 통계 합치기)은 최악 구간 성적을 나쁘게 만들어서 채택하지 않고, 대신 숫자를 공개해요.
2006년과 지금은 데이터가 만들어지는 방식, 정책, 시장 구조가 많이 달라요. 지표마다 추세와 단절이 있는지, 점수가 0이나 100에 오래 붙어 있는지 진단하고, 해결책 후보를 실거래 정답으로 시험했어요.
추세: 시간과의 순위상관. 평균 이동: 2016년 전후 평균 차이(표준편차 단위). 고착: 점수가 10 이하나 90 이상에 연속으로 머문 최장 개월.
지표마다 최근 10년 안에서 순위를 매기는 방식이 이미 대부분의 장기 변화를 흡수하고 있었어요. 추세를 지우면 과열 신호까지 같이 지워졌고, 과거 성적으로 가중치를 정하는 방법은 사이클이 두 번뿐인 데이터에서 잡음에 맞춰졌어요. 그래서 성능은 지키면서 시기마다 구성이 같아지는 고정 구성을 택했어요.
여러 지표를 평균하면 점수가 가운데로 몰려요. v2는 20년 동안 26~84만 써서 극단적 공포가 한 번도 나오지 않았어요. 그래서 마지막에 50을 중심으로 눈금을 넓혔어요.
같은 45개 지표를 서로 다른 기준으로 묶었어요. 숫자는 지수 점수와 이후 12개월 실거래 가격 변화의 순위상관이에요(1이면 완벽, 0이면 무관). 이 v2 분석 표는 그때 방식대로 기준월부터 잰 값이라, 발표 기준으로 재면 조금 낮아요. 7년씩 세 구간으로 나눠 가장 나쁜 구간의 값으로 순위를 매겼어요. 오른쪽 끝 열은 정답을 KB 지수로 바꿨을 때의 최저값이에요.
막대는 세 구간 중 최저값, 가는 선은 전체 기간의 90% 신뢰구간(12개월 블록 부트스트랩)이에요. 1·2위는 신뢰구간이 겹쳐서 사실상 같은 수준이에요.
v1은 KB 지수를 정답으로 두 구간만 비교해서 가격부담을 뺐어요. 실거래 정답과 세 구간으로 다시 보니, 빼는 쪽은 최근 구간에서만 좋고 앞의 14년 동안은 약했어요. 그래서 v2는 실시간으로 계산할 수 없는 KB 분양·입주 일정 두 개만 빼고 나머지를 모두 넣었어요.
그룹 하나만으로는 어느 구간에서든 꾸준한 게 없었어요. 관심(검색량)과 자금(금리)은 2020년 이후에만 맞았고, 가격부담은 그때만 반대로 움직였어요. 서로 다른 구간에 강한 그룹을 섞었기 때문에 종합지수가 꾸준해진 거예요.
API 키로 받은 국토부 실거래, 한국부동산원, 청약홈 자료로 만든 지표예요. 청약 지표는 청약홈 자료가 2020년부터라 마지막 구간만 평가할 수 있어요.
정답과 지표를 바꾸면서 기존 공개 지수의 문제가 드러났어요.
서울 분양 세대수. KB 수치에는 조합원 몫이 포함돼 평소에도 청약홈보다 2~3배 크지만, 2025년부터 차이가 9~13배로 벌어졌어요. 아직 실행되지 않은 일정이 섞인 거예요.
서울 아파트 연간 상승률(%). 실거래 반복매매지수와 비교하면 부동산원 지수가 크게 낮았어요. 그래서 이 지수는 정답으로 쓰지 않았어요.
지표 2~4개 조합 19만여 개를 모두 시험했어요. 학습기간 성적이 좋은 조합을 골라도 검증기간에서는 아무 조합이나 고른 것과 차이가 없었어요. 의미 단위로 묶는 게 맞다는 v1의 결론은 그대로예요.
v3 지수를 구성하는 세 그룹과, 설명용으로 본 주제별 점수예요. 그룹·주제는 표가 적어 이미 넓게 퍼져 있어 넓히지 않은 원점수예요(지수는 세 그룹 평균을 1.5배로 넓힌 값). 50보다 오른쪽이면 탐욕, 왼쪽이면 공포예요.
재현: update_pipeline.py (자료 갱신 → v3.2 계산 → 지도·보고서·사이트). 점검 코드는 audit.py, audit2.py, 구조 비교는 eval_structure.py, 실시간 기록은 live_track.py예요.