세 줄 요약
- 서울 아파트 매매 계약 106만 건(2012 ~ 2026-10)으로, 매월 첫 거래일에 «신고 기한이 끝난 마지막 달» 의 계약 건수가 1년 전 같은 달보다 얼마나 늘었는지(로그)를 만들었다. 그 값이 다음 20거래일 3년 국채선물(3선)을 설명하는지 월간 회귀로 쟀다.
- 계수는 발견 구간(111개월) +6.8틱(t 1.20), 확인 구간(41개월) +8.0틱(t 0.38)이다. 부호는 같지만(거래가 늘면 3선이 오른다) 확인 한쪽 p 는 0.35, 2차 주가설 17개 Holm 보정 p 는 1.00 이다.
- 판정은 폐기다. 신고 기한 때문에 쓸 수 있는 정보가 1 ~ 3개월 늦고, 그 사이 시장은 다른 경로로 이미 알고 있었을 것이다.
가설과 결론
주택 거래량은 집값보다 먼저 움직이는 경기 지표로 자주 쓰인다. 한국은행은 금리를 정할 때 서울 집값과 가계부채를 함께 본다. 그래서 서울 아파트 거래가 갑자기 늘면 «한은이 금리를 덜 내리거나 올릴 수 있다» 는 기대가 생기고 3년 금리가 오를(3선 가격이 내릴) 수 있다. 반대로 거래 증가가 금리 하락의 결과라면 관계는 반대 부호가 된다. 이 실험은 방향을 미리 정하지 않고 발견 구간에서 부호를 정한 뒤, 확인 구간에서 같은 방향이 유지되는지 물었다.
| 가설 | 내용 | 결과 | 한쪽 p | 판정 |
|---|---|---|---|---|
| H272 | fwd20 = a + bus·g_us + bε·ε + bx·x(월간, HAC 2)에서 확인 구간 bx 가 발견 구간 부호(+) 방향 | bx = +7.97 (t 0.38) | 0.351 | 폐기 |
발견 구간 부호는 양(+)이었다. 거래가 늘면 다음 달 3선이 오른다(금리 하락)는 쪽으로, «한은이 집값을 보고 금리를 덜 내린다» 는 직관과는 반대다. 확인 구간도 같은 부호지만 t 0.38 로 우연과 구별되지 않아 폐기다.
용어와 기호
- 3선
- 한국거래소 3년 국채선물. 가격으로 거래하며 금리가 오르면 가격이 내린다
- 틱
- 3선 가격의 최소 단위 0.01. 계약(액면 1억원)당 1만원
- 신고 기한
- 부동산 거래 신고법상 계약 뒤 신고해야 하는 기간. 2020-02-21 이후 계약은 30일, 그 전 계약은 60일
- m*
- 날짜 s 에 계약 신고가 모두 끝났다고 볼 수 있는 마지막 달력월. s 에서 기한 일수를 뺀 날이 속한 달의 바로 전달
- x
- x = log(m* 계약 건수) − log(m* 의 12개월 전 같은 달 계약 건수). 전년 같은 달과 비교해 계절성을 지운다. 0.69 면 약 두 배
- s, e
- s 는 매월 첫 한국 거래일(정보를 쓰는 날), e 는 그 다음 거래일(매매를 시작하는 날). 표본은 월마다 한 행
- fwd20(y)
- 3선 e 시가에 사서 s 로부터 20번째 거래일 종가에 판다고 할 때의 손익(틱). 만기 교체 점프는 이어 붙여 없앴다. 한 달 간격이라 거의 겹치지 않는다
- g_us
- 미국 10년 국채금리의 하루 변화(bp, 뉴욕 날짜 s). 1bp 는 0.01%p
- ε
- 원화 고유 충격. 밤사이 원화 변화(%) 가운데 달러 전반의 움직임과 미국 금리로 설명되지 않는 나머지. 계수는 그날 이전 250거래일로만 추정한다
- bx
- 회귀에서 x 의 계수. x 가 1(로그) 오를 때 3선 20일 손익이 몇 틱 바뀌는가
- HAC 표준오차
- 표본끼리 닮는 정도(자기상관)를 감안해 표준오차를 키우는 방식(Newey-West). 월간 표본이라 지연 2
- t, 한쪽 p
- t 는 계수를 표준오차로 나눈 값. 한쪽 p 는 «효과가 0 인데 우연히 미리 정한 방향으로 이만큼 나올 확률»
- 발견 구간, 확인 구간
- 발견 2013-01 ~ 2022-12 에서 부호를 정하고, 손대지 않은 확인 2023-01 ~ 2026-10 에서만 판정한다
- Holm 보정
- 여러 가설을 한꺼번에 시험할 때 우연한 통과를 막으려고 p 값을 작은 것부터 남은 가설 수만큼 곱해 키우는 방법
- 분위
- x 를 작은 값부터 다섯 묶음으로 같은 개수씩 나눈 것. 각 구간 안에서 따로 나눴다
자료
데이터셋
| 자료 | 원천 | 기간 | 해상도 | 쓰임 |
|---|---|---|---|---|
| 서울 아파트 매매 계약(해제 포함) | 국토교통부 실거래가 공개시스템 CSV, 2026-10-29 수집 | 2012-01-01 ~ 2026-10-28 | 거래 1,060,050건을 계약일별 5,415행으로 집계 | x |
| 3선 시가, 종가(연결) | 인포맥스 단말 일봉 | 2013 ~ 2026 | 일 | fwd20 |
| 미국 10년 금리 | FRED DGS10 | 2013 ~ 2026 | 일 | g_us(통제) |
| 원화 NDF, 스왑포인트, 달러인덱스 | 인포맥스 단말 | 2013 ~ 2026 | 일 | ε(통제) |
| 항목 | 발견 | 확인 |
|---|---|---|
| 첫 행 ~ 마지막 행(s) | 2013-05-02 ~ 2022-12-01 | 2023-02-01 ~ 2026-09-01 |
| 회귀 표본(월) | 111 | 41 |
| x 표준편차 | 0.81 | 0.58 |
| fwd20 표준편차 | 49.7틱 | 69.4틱 |
연도별 전체 계약은 2015 년 12만 건이 가장 많고 2022 년 1.3만 건이 가장 적다. 2022 년의 급감과 2023 ~ 2024 년의 회복 때문에 확인 구간의 x 는 대부분 양수다.
언제 무엇을 아는가
자료는 2026-10-29 에 받은 스냅샷이라 «신고일» 열이 없다. 과거 어느 날 공개돼 있던 건수를 그대로 다시 만들 수 없으므로, 신고 기한이 끝난 계약만 쓴다. 기한이 지난 계약은 그날까지 신고가 끝났어야 하기 때문이다. 또 기한 뒤의 계약 해제는 나중에 알게 된 정보이므로 해제를 뺀 건수가 아니라 해제를 포함한 전체 건수를 쓴다.
| s | 기한 | s − 기한 | 그 달 | m*(전달) | 정보 지연 |
|---|---|---|---|---|---|
| 2020-03-02 | 60일 | 2020-01-02 | 2020-01 | 2019-12 | 약 2 ~ 3개월 |
| 2024-01-02 | 30일 | 2023-12-03 | 2023-12 | 2023-11 | 약 1 ~ 2개월 |
코드는 s 가 2020-04-21 이전이면 60일, 이후면 30일을 쓴다(2020-02-21 이전 계약에 60일 기한이 걸려 있던 시기를 덮는다). 매매는 e 개장(2025-11 까지 09:00, 2025-12 부터 08:45)에 시작하므로 x 는 그보다 한참 전에 알려진 값이다.
방법
이 실험은 2026-10-29 에 사전등록한 다자산 2차 프로그램의 하나다. 이 실험에 해당하는 공통 규칙은 아래와 같다.
- 주가설 하나. 판정은 H272 하나로 한다. 3개월 합, 다른 목표 변수는 탐색이다.
- 증분 회귀(T1 꼴). 이미 알려진 밤사이 충격(미국 10년 금리 변화, 원화 고유 충격)을 통제 변수로 넣고 그 위에 x 의 계수를 본다. 발견 구간에서 부호를 정하고, 확인 구간에서 그 방향 한쪽 p < 0.05 면 지지.
- 분할. 발견 2013-01 ~ 2022-12, 확인 2023-01 ~ 2026-10.
- 다중검정. 2차 프로그램 주가설 전체(이 실험을 마친 시점 H259 ~ H275, 17개)에 Holm 보정을 건다.
- 채택 문턱. 계수만 의미가 있으면 «보류(설명력만)». 매매 후보가 되려면 비용 뒤 이익과 기존 전략과의 독립성까지 보여야 한다. 이 실험은 계수 단계에서 멈췄다.
모델
모델은 설명 변수 세 개의 선형회귀다. 월마다 한 행, fwd20 을 상수, g_us, ε, x 에 회귀한다. g_us 와 ε 은 s 하루의 해외 충격을 빼는 통제 변수다. 학습할 값이 네 개뿐이라 과적합 위험은 작지만, 표본이 월간이라 확인 구간이 41개뿐인 점이 정밀도를 크게 제한한다.
| 항목 | 값 |
|---|---|
| 목표 | fwd20: 3선 e 시가 → s 로부터 20번째 거래일 종가(틱) |
| 설명 변수 | 상수, g_us(bp), ε(%), x(로그 전년 대비) |
| 표본 | 매월 첫 한국 거래일, 빈 값이 있는 달 제외 |
| 추정 | 최소제곱, 구간별 한 번 |
| 표준오차 | Newey-West HAC, 지연 2 |
| 변수 | 발견 | 확인 |
|---|---|---|
| 상수 | +6.02 (1.57) | −13.41 (−1.10) |
| g_us, 1bp 당 | +0.38 (0.45) | +0.82 (0.39) |
| ε, 1% 당 | −8.17 (−0.48) | −17.29 (−0.96) |
| x, 1 당 | +6.78 (1.20) | +7.97 (0.38) |
| R² | 0.017 | 0.025 |
결과
확증 결과
| 항목 | 발견 2013 ~ 2022 | 확인 2023 ~ 2026 |
|---|---|---|
| 표본(월) | 111 | 41 |
| x 계수(틱/1) | +6.78 (t 1.20) | +7.97 (t 0.38) |
| 정한 부호 | 양(+) | |
| 한쪽 p | 0.351 | |
| Holm 보정 p(2차 주가설 17개) | 1.00 |
x 가 1 표준편차(약 0.6 ~ 0.8) 움직일 때 3선 20일 기대는 약 4 ~ 6틱 바뀐다. 같은 20일 손익의 표준편차가 50 ~ 70틱이므로 효과는 하루하루의 흔들림에 비해 열 배 이상 작고, 확인 구간 41개월로는 구별할 수 없다.
분위와 산점도로 보면
아래는 확증 런과 같은 표본을 다시 만들어(계수를 대조해 확인) 나눠 본 서술 통계다.
| 분위 | 발견 x 평균 | 발견 y | 확인 x 평균 | 확인 y |
|---|---|---|---|---|
| 1(거래 감소) | −1.36 | +3.48 | −0.28 | −20.11 |
| 2 | −0.47 | +4.36 | +0.29 | +15.13 |
| 3 | −0.03 | +5.64 | +0.51 | −17.38 |
| 4 | +0.28 | −5.46 | +0.74 | −12.50 |
| 5(거래 증가) | +0.89 | +17.41 | +1.34 | −6.25 |
| 분위당 표본 | 22 ~ 23 | 8 ~ 9 | ||
발견 구간의 양의 계수는 대부분 5분위(+17.4틱) 한 칸에서 나온다. 확인 구간은 분위당 8 ~ 9개월이라 한두 달의 큰 움직임이 평균을 좌우한다(3선 20일이 ±200틱 가까이 움직인 달이 있다).
탐색 결과
| 항목 | 발견 | 확인 |
|---|---|---|
| E1 x 를 3개월 합 전년 대비로 | +6.65 (0.97), 110개월 | +13.21 (0.53), 한쪽 p 0.30 |
| E2 y = 3선 다음 5거래일 | +2.16 (0.68) | +2.22 (0.41), 42개월, 한쪽 p 0.34 |
| E2 y = 10선 다음 20거래일 | +22.46 (1.06) | +26.73 (0.39), 한쪽 p 0.35 |
어느 변형도 두 구간 모두 같은 양의 부호지만 t 가 1 근처에 머문다. 사전등록한 E3(단말의 주택 전체 거래, 신고월 기준 2019-04 ~)은 돌리지 않았다.
해석
부호는 «서울 거래가 늘면 다음 달 3선이 오른다(금리가 내린다)» 쪽으로 두 구간과 모든 변형에서 같았다. 거래 증가가 금리 하락 기대의 결과이고, 그 금리 하락이 조금 더 이어지는 모양일 수 있다. 그러나 이 정보는 신고 기한 때문에 1 ~ 3개월 늦게 쓸 수 있고, 그동안 시장은 부동산원 주간 통계와 기사로 같은 흐름을 이미 봤을 것이다. 늦게 확정되는 공식 건수만으로는 금리에 더할 정보가 남지 않았다. 매일의 신고 건수 스냅샷을 쌓으면 기한 전 정보로 다시 볼 수 있다.
한계
- 확인 구간이 41개월뿐이라 계수의 표준오차가 크다(95% 구간 약 −33 ~ +49틱).
- 스냅샷 자료라 과거 시점에 실제로 공개돼 있던 건수를 재현하지 못한다. 기한이 지난 계약만 써서 미래 정보는 피했지만, 그 대가로 정보가 늦다.
- 신고 기한 전환(60일 → 30일)은 계약일 기준인데 코드는 s 날짜 2020-04-21 로 나눴다. 전환 직후 두어 달의 m* 가 한 달 이르거나 늦을 수 있다.
- 사전등록 탐색 E3 은 실행하지 않았다.
- 분위 표와 산점도는 결과를 본 뒤 만든 서술 통계다.
산출물
- 계획
protocol.md(사전등록 f131303) - 분석, 판정
analysis.md - 코드
code/s1_apt.py(확증),code/s_detail.py(서술 표),code/render_figures.py(그림) - 런
results/20261029T145147_main/,results/20261030T163058_detail/(monthly.csv, contracts_by_month.csv, detail.json)
Appendix
A. 데이터셋 실물
원자료 seoul_apt_trades_by_contract_day.csv 의 첫 행(계약일 하루 한 행).
| 계약일 | 전체 | 해제 | 해제 제외 | 직거래 | 중개 | 등기 완료 | 신고 기한일 |
|---|---|---|---|---|---|---|---|
| 2012-01-01 | 8 | 0 | 8 | 0 | 0 | 0 | 2012-03-01 |
| 2012-01-02 | 65 | 0 | 65 | 0 | 0 | 0 | 2012-03-02 |
회귀 표본 monthly.csv 의 실제 행. 열은 s, m*, m* 계약 건수, 12개월 전 같은 달 건수, x, 3선 다음 20거래일(틱), g_us(bp), ε(%).
| s | m* | 건수 | 12개월 전 | x | fwd20 | g_us | ε |
|---|---|---|---|---|---|---|---|
| 2020-03-02 | 2019-12 | 9,639 | 1,590 | +1.80 | −2 | −3 | −0.18 |
| 2020-04-01 | 2020-01 | 6,500 | 1,723 | +1.33 | +49 | −8 | +0.33 |
| 2020-05-04 | 2020-03 | 4,634 | 2,281 | +0.71 | +40 | 0 | −0.35 |
| 2024-01-02 | 2023-11 | 1,933 | 768 | +0.92 | −7 | +7 | −0.06 |
| 2024-02-01 | 2023-12 | 1,875 | 910 | +0.72 | −44 | −12 | +0.34 |
| 2024-03-04 | 2024-01 | 2,694 | 1,497 | +0.59 | +11 | +3 | +0.21 |
2020-05-04 행은 m* 가 2020-04 가 아니라 2020-03 이다. s − 60일이 2020-03-05 라 그 전달을 쓴다.
B. 모델 입출력 실물
발견 구간에서 학습한 계수(상수 +6.02, g_us +0.38, ε −8.17, x +6.78)로 계산한 예다.
- Request meta
- s = 2020-04-01(발견 구간), 신고 기한 60일 적용, e 개장 전 계산
- Input
- m* = 2020-01, 계약 6,500건, 1년 전 같은 달 1,723건 → x = log(6,500 / 1,723) = 1.33. g_us = −8bp, ε = +0.33%
- Model response
- fwd20 기대 = 6.02 + 0.38 × (−8) − 8.17 × 0.33 + 6.78 × 1.33 ≈ +9.3틱(3선 강세 방향)
- Ground truth check
- 실제 +49틱. 방향 일치
- Request meta
- s = 2024-01-02(확인 구간), 신고 기한 30일 적용
- Input
- m* = 2023-11, 1,933건 대 768건 → x = 0.92. g_us = +7bp, ε = −0.06%
- Model response
- fwd20 기대 = 6.02 + 0.38 × 7 − 8.17 × (−0.06) + 6.78 × 0.92 ≈ +15.4틱
- Ground truth check
- 실제 −7틱. 방향 불일치
C. 실험 설정
- 건수해제 포함 전체 계약, 계약일 기준 달력월 합
- 정보 시점s 가 2020-04-21 이전이면 60일, 이후 30일. m* = (s − 기한)이 속한 달의 전달
- xlog(m*) − log(m* − 12개월)
- 목표3선 e 시가 → s + 20거래일 종가
- 회귀통제 g_us, ε, HAC 지연 2, 구간별 최소제곱
- 분할발견 2013-01 ~ 2022-12, 확인 2023-01 ~ 2026-10
- 문턱확인 한쪽 p < 0.05, 2차 주가설 Holm 함께 보고
- 탐색E1 3개월 합, E2 3선 5일과 10선 20일(E3 미실행)