세 줄 요약
- HMM 이 «처분 종료» 로 넘어간 첫날 곡선보다 싼 종목(z ≥ 1)을 사고 이웃 둘을 판 교체는 확인 구간 551건(연 84건)에서 비용 전 +0.34bp, 실측 왕복 1.75bp 를 빼면 −1.43bp(p 1.00)였다. 같은 z 의 무조건 잔차 매수보다도 0.20bp 나빴다.
- 학습된 «종료» 상태는 매도가 끝난 상태가 아니라 다섯 유형의 거래가 없는 날(당일 흐름 0 인 날 83%)이었다. 모형은 방향이 아니라 거래 활동량의 국면을 갈랐다.
- 더 근본적으로 종목의 5일 순매도와 같은 기간 잔차 변화의 상관이 |r| ≤ 0.06 이라 «처분이 종목을 싸게 만든다» 는 전제가 민평 자료에 없었다. 판정은 폐기다. 방향을 직접 쓴 탐색 변형은 비용 전 +1.11bp 로 나아졌지만 비용을 넘지 못했다.
가설과 결론
국고채 경과물은 지표물보다 거래가 드물어서, 한 종목에 매도가 몰리면 그 종목만 곡선보다 싸지는 일이 생길 수 있다. 펀드 환매처럼 팔아야 해서 파는 처분이라면 가격은 일시적으로 밀렸다가 처분이 끝나면 돌아온다는 것이 유동성 변환 문헌의 오래된 줄기다. 출발점은 미국 은행대출펀드와 하이일드펀드의 유동성 변환 위험을 정리한 연준 노트를 요약한 Bondnote 글이다. 그 글 자체는 처분 종료 뒤 되돌림을 다루지 않고 환매 취약성 지표를 다룬다. 그 생각을 국고채 종목 단위로 옮긴 것이 이 실험이다.
앞선 실험들은 곡선 잔차가 싸진 종목을 사고 이웃을 파는 교체가 비용 전에는 이익이지만 실측 왕복 비용을 넘지 못한다는 것을 보였다. 그렇다면 같은 잔차 신호 안에서 «왜 싸졌는가» 를 가려 이길 거래만 고를 수 있지 않을까. 투자자 유형별 종목 순매수는 2005 년부터 있는데 잔차의 조건으로 쓴 적이 없다. 이 실험은 그 흐름에 은닉 마르코프 모형을 맞춰 처분이 끝났다고 판정된 날만 들어가면 거래당 이익이 비용을 넘을 만큼 커지는지 물었다.
- 가설
- HMM 이 처분 진행에서 처분 종료로 넘어갔다고 판정한 첫날 잔차 z ≥ 1 인 종목을 다음 날 사고 이웃 둘을 DV01 중립으로 팔아 10영업일 들면, 실측 비용 뒤 거래당 손익이 0 보다 크다(H1068). 같은 z 의 무조건 잔차 매수보다 0.5bp 이상 낫다(H1069). 처분 진행 중에 들어가면 종료 뒤보다 나쁘다(H1070). HMM 시점을 무작위로 돌린 귀무보다 낫다(H1071). 보조로 HMM 없는 단순 소진 규칙보다 낫고(H1072), 진입을 하루 늦춰도 양이다(H1073).
- 결론
- 주가설 H1068 은 거래당 −1.43bp(Holm p 1.00)로 미지지다. H1069 는 차이가 −0.20bp(p 0.99)로 예측과 반대 방향이고, H1070 도 진행 중 매수가 오히려 0.20bp 나아 부호가 뒤집혔다. H1071 은 귀무와 구분되지 않는다(p 0.80). 빈도는 연 84건으로 충분했으므로 폐기의 이유는 빈도가 아니라 손익이다.
| 번호 | 내용 | 예측 | 결과 | p (Holm) | 판정 |
|---|---|---|---|---|---|
| H1068 | 주 규칙 순손익 > 0 | +0.5bp | −1.430bp, 551건 | 1.000 (1.000) | 미지지 |
| H1069 | 주 규칙 − B1 ≥ +0.5bp | +0.5bp 이상 | −0.203bp | 0.991 (1.000) | 미지지 |
| H1070 | B2 < 주 규칙 | 부호 − | B2 − 주 +0.199bp | 반대쪽 0.038 | 부호 반대 |
| H1071 | 주 규칙 > N2 귀무 | 부호 + | 귀무 평균 −1.355 | 0.800 (1.000) | 미지지 |
| H1072 | 주 규칙 − B3 > 0 | 부호 + | −0.158bp | 0.802 | 미지지 |
| H1073 | 하루 늦춘 진입 > 0 | 부호 + | −1.445bp, 543건 | 1.000 | 미지지 |
용어와 기호
- 민평
- 민간 채권평가사들이 매일 장 마감 뒤 매기는 종목별 평가 수익률. 이 실험의 모든 가격과 손익은 민평 수익률로 잰다.
- NS 곡선과 잔차 e
- 넬슨 시겔 계열 곡선을 날마다 전 종목 민평에 맞춘 값을 ŷ 라 할 때 잔차 e = y − ŷ (bp). e 가 크면 그 종목은 곡선보다 금리가 높다, 곧 싸다.
- z
- 잔차의 직전 60영업일 평균 μ 와 표준편차 σ 로 표준화한 값 z = (e − μ)/σ. z ≥ 1 이면 «평소보다 1 표준편차 넘게 싸다».
- 편차 d
- d = e − μ (bp). 신호 순간 그 종목이 평소보다 몇 bp 싸졌는지.
- 투자자 유형 순매수
- 외국인, 은행, 보험기금, 운용사 공모, 운용사 사모 다섯 유형의 종목별 일별 순매수(매수 − 매도, 원). 장외 거래를 포함한 단말 집계다.
- q, a
- q = 다섯 유형 순매수 합 / 전날 상장잔액. a = asinh(q/κ), κ 는 발견 구간에서 0 아닌 |q| 의 중앙값. asinh 는 큰 값을 눌러 꼬리를 줄인다.
- x1, x2, x3
- HMM 관측값. x1 = 당일 a, x2 = 5일 합, x3 = 20일 합을 각각 발견 구간 평균과 표준편차로 표준화했다. 흐름이 0 인 날의 x1 은 −0.123 이다.
- HMM
- 은닉 마르코프 모형. 보이지 않는 상태가 날마다 전이 행렬 A 에 따라 바뀌고, 상태마다 관측값이 다른 정규분포에서 나온다고 보는 모형.
- 필터링 확률
- 그날까지의 관측만으로 계산한 상태 확률 P(s_t | x_1..x_t). 미래 관측을 쓰는 평활 확률은 신호에 쓰지 않는다.
- 처분 진행, 종료, 정상
- 상태 이름. 사전 규칙으로 x2 평균이 가장 낮은 상태를 진행, 남은 둘 중 x3 평균이 낮은 쪽을 종료, 나머지를 정상이라 불렀다.
- 거래 유니버스
- 잔존 1년 이상, 지표물 아님, 발행이나 재개방 뒤 5영업일 아님, 앞 20영업일 장외 거래가 있는 종목일.
- 이웃
- 신호일에 유니버스 안에서 |z| < 1 이고 잔존 차가 1년 이하인 종목 중 잔존이 가장 가까운 둘. DV01 을 반씩 나눠 판다.
- DV01 중립 교체
- 산 종목과 판 종목의 금리 1bp 민감도를 같게 맞춘 쌍 거래. 곡선 전체가 움직여도 손익이 거의 없고 두 종목의 상대 움직임만 남는다.
- 왕복 비용 RT
- RT = 2 × (c_i + 0.5 c_j1 + 0.5 c_j2). c 는 100억 체결 한 번의 실측 비용(bp)으로 만기 칸과 종목 계층(지표물, 인도종목, 경과물)마다 다르다.
- B1, B2, B3
- 기준선. B1 은 z 가 1 을 처음 넘은 날 무조건 매수, B2 는 처분 진행 확률이 0.5 를 처음 넘은 날 매수, B3 는 HMM 없이 «직전 5일 순매도 뒤 오늘 순매도 아님» 인 날 매수. 모두 z ≥ 1 조건을 같이 건다.
- N1, N2
- 귀무. N1 은 주 규칙 신호마다 같은 날 z ≥ 1 인 다른 종목을 무작위로 산 것(1,000회), N2 는 종목마다 필터링 확률 서열을 무작위로 순환 이동한 뒤 주 규칙을 다시 돌린 것(500회).
- 월 블록 부트스트랩
- 진입 달 단위로 거래를 묶어 달을 복원 추출하는 검정. 같은 달 거래끼리의 상관을 보존한다. 한쪽 p 는 평균이 0 이하라는 귀무에서 계산한다.
자료
데이터셋
자료는 세 갈래다. 첫째는 인포맥스 단말에서 받은 국고채와 통안증권 전 종목의 투자자 유형별 일별 순매수 표 다섯 개와 상장잔액 표로, 2005-06-02 부터 2026-11-09 까지 있다. 둘째는 앞선 실험이 만든 곡선 잔차 패널로, 고정금리 국고채 156종목의 일별 민평, 잔존, 수정듀레이션, 넬슨 시겔 잔차와 z, 거래 유니버스 표시, 그리고 종목일마다의 실측 체결 비용을 담는다. 셋째는 그 비용의 출처인 장내 국고채 체결 실측 비용 지도다. 이 실험은 패널과 비용 지도를 고치지 않고 읽기만 했다.
표본 분할은 HMM 의 모든 모수와 흐름 특징의 척도를 발견 구간 2012 ~ 2019 에서만 정하고, 확인 구간 2020-01 ~ 2026-07 의 신호로 판정하는 방식이다. 규칙의 문턱(종료 확률 0.5, z 1, 보유 10일)은 사전등록 때 고정했고 결과를 보고 고르지 않았다. 넬슨 시겔 잔차는 단말 피팅이 2026-08-13 에서 끝나므로, 보유 10영업일이 그 안에 끝나는 2026-07-30 신호까지만 확인 구간에 넣었다.
| 자료 | 기간 | 크기 | 쓰임 |
|---|---|---|---|
| 투자자 유형 순매수 5표 | 2005-06-02 ~ 2026-11-09 | 표마다 87만 ~ 90만 행, 종목일 중복 0 | HMM 관측 x1, x2, x3 |
| 상장잔액 | 같은 기간 | 958,339 행 | 흐름을 잔액으로 나눔 |
| 곡선 잔차 패널 | 2010-01-04 ~ 2026-11-05 (NS 는 08-13 까지) | 4,157 영업일 × 156종목 | 민평, z, 유니버스, 비용 |
| HMM 적합 표본 | 2012-01-01 ~ 2019-12-31 | 서열 안 종목일 70,771, 관측 69,520 | 모수 추정 |
| 확인 구간 거래 | 신호 2020-01-01 ~ 2026-07-30 | 주 규칙 551건, 78개월 | 판정 |
점검과 시각 정렬
점검은 손익을 보기 전에 했다. 다섯 표 모두 종목일 중복이 없고, 패널의 156종목이 전부 흐름 표에 있으며, 2012 년 이후 패널 영업일 가운데 흐름 표에 없는 날은 0 이다. 순매수의 단위는 원이고 상장잔액의 단위는 표에 적혀 있지 않지만, 비율은 발견 구간 척도로 표준화하므로 절대 크기는 판정에 쓰이지 않는다. 2026 년 표는 하루 행 수 중앙값이 256 으로 2025 년의 298 보다 적고 0 인 행의 비율도 낮다. 0 인 행을 일부 빼고 적재한 것으로 보이며, 코드는 빠진 행을 흐름 0 으로 다루므로 특징의 뜻은 같다.
시각 정렬은 보수적으로 잡았다. 단말 일괄 적재가 다음 날 아침이고 흐름 집계의 공표 시각이 확인되지 않았으므로, 날 t 의 흐름과 날 t 의 민평 잔차는 t+1 아침에 안다고 보고 t+1 민평에 진입했다. 흐름 확정이 하루 더 늦을 위험은 진입을 t+2, t+3 으로 늦춘 판으로 따로 쟀다. 외부 서버로 올린 자료는 없고 학습은 모두 이 PC 의 CPU 에서 했다.
방법
절차는 네 단계다. 먼저 종목일마다 다섯 유형 순매수 합을 전날 잔액으로 나눈 q 를 만들고, asinh 로 꼬리를 누른 a 의 당일 값, 5일 합, 20일 합을 표준화해 세 관측값 x1, x2, x3 을 얻는다. 둘째로 모든 종목이 같은 모수를 쓰는 3상태 가우시안 HMM 을 발견 구간 서열로 적합한다. 셋째로 전 기간에 대해 필터링 확률을 계산해 신호를 만든다. 넷째로 신호마다 교체 거래의 손익을 민평으로 계산하고 실측 비용과 대차 비용을 뺀다.
주 규칙의 신호는 네 조건을 모두 만족하는 종목일이다. 종료 확률이 0.5 를 처음 넘은 날이어야 하고, 직전 10영업일 안에 진행 확률이 0.5 를 넘은 날이 하루 이상 있어야 하며(진행에서 종료로 넘어갔다는 뜻), 그날 잔차 z 가 1 이상이고, 종목이 거래 유니버스 안이어야 한다. 신호가 나면 다음 날 민평에 그 종목을 사고 이웃 둘을 DV01 을 반씩 나눠 팔며, 10영업일째 민평에 청산한다. 같은 종목에 열린 거래가 있으면 새로 들어가지 않는다.
손익은 신호 종목 DV01 1 당 bp 로 잰다. 가격 항은 −[(신호 종목 금리 변화) − (이웃 금리 변화 평균)] × 100 이고, 캐리 항은 [(신호 종목 금리 − CD91)/수정듀레이션 − 이웃 평균] × 보유 일수/365 × 100 이다. 비용은 만기 칸(2, 3, 5, 10, 20, 30년)과 계층별 100억 실측 비용으로 매긴 왕복 RT 와, 판 다리의 대차 비용 연 2bp 를 뺀다. 선물 판정에 쓰는 «3선 1틱» 은 이 현물 교체에는 맞지 않아 쓰지 않았다.
검정은 진입 달 블록 부트스트랩 1만 회의 한쪽 p 로 한다. 두 규칙의 비교(H1069, H1070, H1072)는 같은 달을 함께 뽑는 짝 부트스트랩으로 차의 분포를 만든다. H1068, H1069, H1071 을 한 족으로 Holm 보정했다. 판정 규칙은 사전에 정했다. H1068 과 H1069 가 Holm 문턱을 넘고 연 24건 이상이면 채택, 유의하지만 드물면 보류, H1068 이 비용 뒤 음수이거나 유의하지 않으면 폐기다. 문턱을 고르는 절차가 없으므로 선택 귀무 대신 HMM 시점을 순환 이동한 N2 귀무를 두었다.
강건성은 종료 확률 문턱 셋, z 문턱 셋, 보유 기간 셋의 27칸 격자와 비용 배수 0.5, 1, 2배, 진입 지연 0, 1, 2일, 연도별 손익, 충격 구간 제외판으로 본다. 깊이 분석은 모두 탐색이다. HMM 상태 수를 2와 4로 바꾼 판, 유형을 하나씩 뺀 판, 흐름의 방향을 직접 쓴 변형, 순매도와 잔차 변화의 상관(전제 점검), 신호 앞뒤 잔차 경로, 금리 수준과 기울기 요인 회귀를 냈다.
모델
모델은 종목 공통 모수의 3상태 가우시안 HMM 이다. 상태마다 3차원 평균과 완전 공분산을 갖고, 3 × 3 전이 행렬과 초기 확률을 함께 추정한다. 저장소 환경에 HMM 라이브러리가 없어 Baum-Welch(EM) 를 numpy 로 직접 짰고, 모든 종목 서열을 영업일 축에 나란히 놓아 시간 축으로 한 번에 돌린다. 시작값은 평균을 정해 준 것 셋(그중 둘은 흔든 것)과 무작위 넷, 모두 일곱 개였고 발견 구간 로그우도가 가장 큰 무작위 시작 1번(−64,285.0)을 골랐다. 일곱 시작의 로그우도는 −64,310 ~ −64,285 로 25 안쪽이었다.
학습된 모수를 그림으로 보면 이 모형이 무엇을 갈랐는지가 드러난다. 세 상태의 평균은 모두 0 근처로 서로 가깝고, 차이는 분산에 있다. «종료» 상태의 x1 표준편차는 0.013 으로 사실상 한 점이며, 그 점은 흐름이 0 인 날의 값 −0.123 과 같다. «진행» 상태는 표준편차 0.65 의 작은 흐름, «정상» 상태는 표준편차 1.50 의 큰 흐름이다. 평균 머무는 기간은 진행 9.0일, 종료 6.7일, 정상 44.7일이고, 종료에서 진행으로 가는 확률이 0.149, 진행에서 종료로 가는 확률이 0.095 라 두 상태가 며칠마다 뒤바뀐다. 이 HMM 은 처분의 방향이 아니라 거래 활동량의 국면을 학습했다.
예시 종목에서 진행과 종료의 확률은 흐름이 있는 날과 없는 날을 따라 0 과 1 사이를 거의 날마다 오간다. 2026-06-05 신호는 직전 닷새 동안 흐름이 없던 종목에서 5일 합이 줄어든 날에 났고, 그날 z 는 1.39 였다. 모형은 «매도가 끝났다» 기보다 «거래가 멈춘 상태가 이어진다» 를 말하고 있었다.
결과
확증 결과
확인 구간 2020-01 ~ 2026-07 에 주 규칙은 551건, 연 84건의 거래를 냈다. 거래당 비용 전 손익은 +0.344bp 로 양이었다. 그 가운데 가격 항이 +0.308bp, 캐리가 +0.036bp 다. 그러나 평균 왕복 비용이 1.752bp, 대차 비용이 0.022bp 라 순손익은 −1.430bp 이고, 진입 달 블록 부트스트랩 90% 구간은 −1.600 ~ −1.253bp, 한쪽 p 1.000 이다. 비용 전 손익이 그 거래의 왕복 비용을 넘은 거래는 14.3% 뿐이었다. H1068 은 비용 뒤 음수라 미지지이고, 사전 판정 규칙에 따라 실험은 폐기다.
이 숫자는 구간을 바꿔도 같다. 발견 구간 2012 ~ 2019 의 285건은 −1.323bp, 2024 년 이후 253건은 −1.733bp, 충격 구간과 겹치는 거래를 뺀 494건은 −1.430bp 다. 모형을 적합한 구간 안에서도 음수였으므로, 확인 구간에서 모형이 낡아 진 것이 아니라 처음부터 비용을 넘는 신호가 없었다.
기준선과 귀무
HMM 조건이 무엇을 더했는지는 기준선과 비교해야 보인다. 같은 z 문턱으로 무조건 산 B1 은 1,749건, 비용 전 +0.479bp, 비용 뒤 −1.227bp 였다. 주 규칙은 비용 전부터 B1 보다 작았고, 짝 부트스트랩으로 잰 차이는 −0.203bp(90% 구간 −0.342 ~ −0.062, p 0.991)다. 사전 예측 +0.5bp 와 부호부터 반대다. 처분 진행 중에 산 B2 는 −1.230bp 로 주 규칙보다 0.199bp 나았고, 그 차이는 반대 방향으로 p 0.038 이었다. «처분이 끝난 뒤가 낫다» 는 H1070 의 그림이 거꾸로 나왔다.
HMM 없이 «직전 5일 순매도 뒤 오늘 순매도 아님» 으로 정한 B3 는 154건(연 23.4건), −1.271bp 로 주 규칙과 다르지 않았다(H1072 p 0.80). 같은 날 z ≥ 1 인 다른 종목을 무작위로 산 N1 귀무의 평균은 −1.078bp 이고 95% 분위가 −0.918bp 라, 주 규칙은 같은 날 무작위로 고른 싼 종목보다도 나빴다(p 1.00). HMM 확률 서열을 종목마다 순환 이동한 N2 귀무 500회의 평균은 −1.355bp, 95% 분위 −1.199bp 로 주 규칙 −1.430bp 는 그 분포의 가운데에 있다(p 0.80). HMM 이 고른 시점은 무작위 시점과 구분되지 않는다.
| 규칙 | 건수 | 연 건수 | 비용 전 | 왕복 비용 | 비용 뒤 | 발견 2012 ~ 2019 | 2024 ~ |
|---|---|---|---|---|---|---|---|
| 주 규칙(HMM 종료) | 551 | 83.8 | +0.344 | 1.752 | −1.430 | −1.323 | −1.733 |
| B1 무조건 z ≥ 1 | 1,749 | 266.0 | +0.479 | 1.682 | −1.227 | −1.334 | −1.418 |
| B2 진행 중 매수 | 670 | 101.9 | +0.476 | 1.682 | −1.230 | −1.284 | −1.504 |
| B3 단순 소진 | 154 | 23.4 | +0.185 | 1.427 | −1.271 | −1.052 | −1.691 |
| N1 같은 날 무작위(1,000회) | −1.078 | ||||||
| N2 시점 순환 이동(500회) | −1.355 |
격자, 비용, 진입 지연
사전등록한 27칸 격자(종료 확률 문턱 0.5, 0.6, 0.7 × z 문턱 0.5, 1.0, 1.5 × 보유 5, 10, 20일)는 모든 칸이 음수다. 가장 나은 칸은 종료 확률 0.7, z 1.5, 보유 20일의 −1.00bp(256건)이고 가장 나쁜 칸은 −1.68bp 다. z 문턱을 올리고 보유를 늘릴수록 덜 나빠지지만, 종료 확률 문턱을 0.5 에서 0.7 로 바꿔도 손익은 0.02bp 안팎만 달라진다. 덜 나빠지는 방향은 «편차가 클수록, 되돌아올 시간을 더 줄수록» 이라는 잔차 되돌림 일반의 성질이지 HMM 조건의 효과가 아니다.
비용을 절반으로 잡아도 −0.554bp, 두 배면 −3.181bp 이고 대차 비용을 빼지 않아도 −1.408bp 다. 진입을 하루, 이틀 늦추면 −1.445, −1.469bp 로 거의 같다. 신호에 시간 가치가 거의 없다는 뜻이고, 흐름 공표가 늦을 위험이 결론을 바꾸지 않는다는 뜻이기도 하다. 연도별로는 2012 ~ 2026 년 15개 해가 모두 음수(−0.80 ~ −1.81bp)이고, B1 도 모든 해가 음수다. 특정 시기에만 진 것이 아니다.
실패 진단
실패의 첫째 원인은 모델 절에서 본 대로 «종료» 상태가 매도 종료가 아니라 무거래일이라는 데 있다. 발견 구간에서 종료로 분류된 종목일의 83% 가 다섯 유형 순매수가 정확히 0 인 날이다. 종료 상태의 x2, x3 평균이 음수(−0.19, −0.24)로 나와 사전 이름 규칙을 통과했지만, 그것은 흐름 0 을 발견 구간 평균(+0.16, 다섯 유형이 평균으로는 순매수자다)으로 중심화한 결과일 뿐이다.
둘째 원인은 더 근본적이다. 투자자 유형 순매도가 그 종목을 싸게 만들지 않았다. 종목의 5일 순매수 합과 같은 5일 잔차 변화의 상관은 다섯 유형 합으로 발견 −0.004, 확인 +0.033 이고, 유형별로도 절댓값 0.056 을 넘지 않는다. 확인 구간에서 5일 순매도가 상위 5% 인 종목일의 같은 기간 잔차 변화는 −0.16bp 로 오히려 비싸졌다. 다음 10일 잔차 변화와의 상관도 −0.04 ~ +0.01 이다. 처분이 가격을 밀어내야 되돌림이 생기는데, 민평에서는 밀어냄 자체가 보이지 않았다.
셋째는 신호 크기다. 신호 순간 편차 d 의 중앙값은 1.27bp 이고, 보유 10일 동안 돌아온 몫의 중앙값은 16% 다. 그림 7 에서 주 규칙 종목은 신호 전 20영업일 동안 평균 1.53bp 싸졌다가 신호 뒤 10영업일에 0.43bp 돌아왔다. B1 은 0.60bp, B2 는 0.56bp 돌아와 HMM 조건이 오히려 되돌림이 작은 종목을 골랐다. 또 신호 종목이 싸진 5일 동안 잔존 ±1년 이웃도 0.31bp 함께 싸졌다(유니버스 전체 0.002bp). 싸짐의 일부가 이웃 구간 전체의 움직임이라, 이웃을 판 다리가 되돌림의 일부를 지운다.
만기 칸별로 나누면 비용 전 손익이 뚜렷한 곳은 2년 칸(115건, +0.79bp)과 3년 칸(81건, +0.74bp)뿐이고 왕복 비용은 1.43, 1.47bp 다. 10년, 20년, 30년 칸은 비용 전 손익이 0 근처(+0.19, +0.01, −0.02bp)인데 왕복 비용이 2.0 ~ 3.3bp 라 손실의 대부분을 만든다. 비용 전 손익을 보유 기간의 패널 평균 금리 변화(수준)와 장단기 차 변화(기울기)에 회귀하면 R² 는 0.019 로, 손익은 금리 방향에서 오지 않는다.
| 만기 칸 | 건수 | 비용 전 | 왕복 비용 | 비용 뒤 |
|---|---|---|---|---|
| 2년 | 115 | +0.787 | 1.426 | −0.689 |
| 3년 | 81 | +0.738 | 1.474 | −0.764 |
| 5년 | 159 | +0.156 | 1.205 | −1.066 |
| 10년 | 76 | +0.193 | 2.083 | −1.900 |
| 20년 | 70 | +0.007 | 3.326 | −3.324 |
| 30년 | 50 | −0.016 | 1.980 | −2.001 |
정의 비교와 탐색 변형
이 절의 결과는 모두 결과를 본 뒤 고른 것이라 탐색이다. HMM 의 상태 수를 2(진행에서 빠져나온 첫날을 신호로)로 바꾸면 509건 −1.238bp, 4로 바꾸면 314건 −1.212bp 다. 다섯 유형 중 하나씩을 빼고 다시 적합한 다섯 판은 −1.26 ~ −1.40bp 다. 관측을 5일 합과 20일 합 둘로 줄인 V2 도 215건 −1.351bp 다. HMM 을 어떻게 바꾸어도 무조건 잔차 매수(B1)보다 나은 선택이 나오지 않았다.
방향을 직접 쓴 변형은 달랐다. V4 는 직전 10일 안에 실제 5일 순매도가 발견 구간 하위 5% 이하였고, 그 5일 합이 처음으로 0 이상으로 돌아선 날 z ≥ 1 인 종목을 산다. 이 정의가 이 실험에서 유일하게 «처분이 끝났다» 는 뜻에 맞는데, 124건(연 18.8건)에서 비용 전 +1.106bp 로 B1 의 2.3배였다. 그러나 왕복 1.45bp 를 넘지 못해 비용 뒤 −0.379bp(p 0.92)이고, 발견 구간에서는 −0.98bp 였으며, 빈도도 연 24건 문턱에 못 미친다. z ≥ 2 로 좁히면 비용 뒤 +0.004bp 의 손익분기지만 연 6건이다. 반대로 강한 순매도가 진행 중인 날 산 V5 는 −1.227bp 로 B1 과 같았다.
| 변형 | 건수 | 연 건수 | 비용 전 | 비용 뒤 | p |
|---|---|---|---|---|---|
| 정본(3상태, 5유형) | 551 | 83.7 | +0.344 | −1.430 | 1.00 |
| HMM 2상태 | 509 | 77.4 | +0.410 | −1.238 | 1.00 |
| HMM 4상태 | 314 | 47.7 | +0.343 | −1.212 | 1.00 |
| 유형 하나씩 뺀 HMM(5판) | 544 ~ 746 | 83 ~ 113 | +0.36 ~ +0.48 | −1.26 ~ −1.40 | 1.00 |
| 주 규칙, z ≥ 2 | 151 | 22.9 | +0.970 | −0.783 | 1.00 |
| V2 HMM(x2, x3) | 215 | 32.7 | +0.467 | −1.351 | 1.00 |
| V4 강한 순매도 뒤 전환, z ≥ 1 | 124 | 18.8 | +1.106 | −0.379 | 0.92 |
| V4, z ≥ 2 | 40 | 6.1 | +1.384 | +0.004 | 0.48 |
| V5 강한 순매도 진행 중, z ≥ 1 | 166 | 25.2 | +0.262 | −1.227 | 1.00 |
주 규칙이 비용 뒤 음수라 기존 검증 전략(미국 야간 되돌림 3선, 금통위 전날 10선)과의 손익 상관과 같은 날 겹침은 내지 않았다. 주 규칙 신호 가운데 z ≥ 2 인 큰 잔차 신호와 같은 종목일은 20.9% 였다.
깊이 보강
첫 결과를 낸 뒤 남은 의문 넷을 따로 점검했다. 모두 사전등록에 없던 분석이라 탐색이고 판정은 바꾸지 않는다. 첫째는 수렴 기준이다. 정본과 같은 시작값으로 관측당 로그우도 증가 1e−8, 최대 1,000회의 엄격한 기준으로 다시 적합하니 31회에서 멈췄고, 로그우도(−64,283.96)와 상태 이름, 평균, 표준편차가 정본과 같았다. 주 규칙은 558건 −1.414bp 로 정본 −1.430bp 와 같다. 느슨한 수렴이 결론을 만든 것이 아니다.
둘째는 탐색에서 가장 좋아 보였던 V4 의 비용 전 +1.11bp 가 흐름 시점의 정보인지다. 종목마다 5일 순매수 합 서열을 20일 이상 순환 이동해 흐름과 잔차의 시점 관계만 끊은 귀무 500회에서 같은 V4 를 다시 돌리면 비용 전 평균이 +0.81bp, 95% 분위가 +1.27bp 였다. 실제 값은 p 0.14 로 귀무와 구분되지 않는다. 귀무에서도 B1(+0.48bp)보다 높은 것은 «5일 합이 0 이상으로 돌아서는 날» 이라는 구조가 거래가 드문 종목을 고르기 때문으로 보인다. V4 의 우위는 처분 종료의 정보라고 말할 수 없다.
셋째는 주 규칙과 B1 의 차이 −0.20bp 가 만기 칸 구성 때문인지다. 같은 만기 칸 안에서 두 규칙을 비교해 주 규칙 거래 수로 가중하면 비용 전 −0.07bp, 비용 뒤 −0.11bp 다. 차이의 절반쯤은 주 규칙이 비용이 큰 장기 칸에 더 몰린 탓이고, 나머지는 같은 칸 안에서도 남는다. 칸을 맞춰도 HMM 조건이 낫다는 근거는 없다.
넷째는 실행 현실화다. 손익이 일별 민평이라 1분, 5분 진입 지연이나 지정가 체결은 잴 수 없고, 경과물은 장내 체결이 거의 없다. 대신 2025-01 이후 장외 투자자별 체결금리로 신호 종목이 진입일에 실제로 기관(외국인, 은행, 기금보험, 투신, 사모펀드) 매수 체결이 있었는지 보았다. 주 규칙 150건 중 48% 만 그날 기관 매수 체결이 있었고(B1 57%, 같은 기간 유니버스 종목일 50%), 체결이 있던 날의 매수 금리는 민평보다 중앙값 0.38bp 낮았다. 곧 민평보다 비싸게 샀다. 진입과 청산이 모두 체결된 42건의 왕복 유리함 중앙값은 −0.19bp(B1 173건 −0.42bp)다. 민평 기준 손익은 실제 체결 기준보다 낙관적일 가능성이 크다.
| 점검 | 값 | 읽기 |
|---|---|---|
| 엄격 수렴 HMM(1e−8) | 31회, 558건, −1.414bp | 정본과 같음 |
| V4 순환 이동 귀무 500회 | 귀무 +0.81bp, 95% +1.27, 실제 +1.11, p 0.14 | 흐름 시점 정보 아님 |
| 만기 칸 맞춤 주 규칙 − B1 | 비용 전 −0.07, 비용 뒤 −0.11bp | 칸 맞춰도 나쁨 |
| 진입일 기관 매수 체결 비율 | 주 48%, B1 57%, 유니버스 50% | 절반은 체결 확인 안 됨 |
| 진입 체결 금리 − 민평 중앙값 | 주 −0.38bp, B1 +0.10bp | 주 규칙 진입이 불리 |
| 왕복 체결 유리함 중앙값 | 주 −0.19bp(42건), B1 −0.42bp(173건) | 민평보다 나쁨 |
해석
이 실험의 질문은 두 층이었다. 위층은 «HMM 이 처분 종료를 알아볼 수 있는가» 이고, 아래층은 «처분 종료 뒤 잔차가 되돌아오는가» 다. 위층의 답은 «이 관측과 이 이름 규칙으로는 아니다» 다. 종목 단위 투자자 순매수는 0 인 날이 많고 0 아닌 날은 꼬리가 두꺼워, 가우시안 HMM 은 자연스럽게 «거래 없음, 작은 거래, 큰 거래» 의 분산 국면으로 나뉜다. 사전 이름 규칙은 평균만 보았기 때문에 무거래 상태를 종료라고 불렀고, 주 규칙은 결국 «흐름이 있던 종목이 하루 조용해진 날 싼 종목 사기» 가 되었다.
아래층의 답은 더 중요하다. 처분이 끝난 뒤 되돌림이 생기려면 먼저 처분이 가격을 밀어내야 한다. 그런데 민평 잔차와 투자자 순매도의 상관은 같은 기간에도 0 근처였다. 다섯 유형의 반대편에 있는 증권사, 개인, 기타 법인이 흐름을 흡수하거나, 민평이 체결가가 아니라 평가사의 호가 기반 평가라 종목 단위 수급 충격을 거의 싣지 않거나, 둘 다일 수 있다. 어느 쪽이든 이 자료에서 «왜 싸졌는가» 를 투자자 흐름으로 가르는 것은 잔차 신호에 정보를 더하지 못했다.
그래도 방향을 직접 쓴 V4 가 비용 전 손익을 B1 의 2.3배로 키운 것은 작은 단서다. 강한 순매도가 실제로 있었고 그것이 멈춘 날의 싼 종목은 다른 싼 종목보다 많이 돌아왔다. 다만 발견 구간에서는 음수였고 거래가 연 19건뿐이라, 지금으로서는 사후에 고른 우연과 구분할 수 없다. 이 단서를 시험하려면 문턱을 얼려 새 표본에 적용해야 한다.
비용 쪽에서 보면 결론은 앞선 잔차 교체 실험들과 같다. 2년, 3년 칸에서 비용 전 0.7 ~ 0.8bp 의 되돌림이 있지만 경과물 쌍 왕복 1.4bp 를 넘지 못하고, 장기 칸은 되돌림이 거의 없는데 비용은 두 배를 넘는다. 비용 전 손익을 두 배 가까이 키우는 조건이 없다면 이 계열의 현물 교체는 데스크 크기에서 비용을 넘기 어렵다.
한계
이 결론이 틀릴 수 있는 이유를 구체적으로 적는다.
도구가 대상을 잡지 못했다. 사전 이름 규칙(진행은 5일 합 평균 최저, 종료는 남은 둘 중 20일 합 평균이 낮은 쪽)은 흐름 0 이 많은 자료(다섯 유형 합이 0 아닌 종목일이 발견 구간 67%, 확인 구간 유니버스 57%)에서 무거래 상태를 종료라고 불렀다. 그래서 주 규칙의 실패는 «처분 종료 뒤 되돌림이 없다» 를 직접 보인 것이 아니다. 다만 방향을 직접 쓴 변형도 비용을 넘지 못했고, 흐름과 잔차의 상관이 0 근처라는 전제 점검은 HMM 과 무관하게 나왔으므로 폐기 결론은 바뀌지 않는다고 판단했다.
결과를 본 뒤 고친 것. 정본 런은 한 번만 돌렸다. HMM 상태 수 비교, 유형 빼기, V2 ~ V5 변형은 모두 결과를 본 뒤 고른 탐색이다. V2 를 처음 돌릴 때 시작값 차원이 맞지 않아 실패했고, 차원을 고쳐 다시 돌렸다(결과가 나오기 전 실패라 수치 영향은 없다). V4 의 좋아 보이는 비용 전 손익은 여러 변형 가운데 하나를 고른 값이라 선택 편향이 있다.
비용 가정. 체결 비용은 장내 지표물 실측 비용에 장외 투자자별 체결금리로 잰 경과물 웃돈을 더한 대리값이다. 경과물은 장내 체결이 거의 없어 직접 잴 수 없다. 비용을 절반으로 잡아도 −0.55bp 라 결론은 같지만, 10년 이상 칸의 실제 스프레드는 더 넓을 수 있고 데스크 크기에 따라 달라진다.
민평은 체결가가 아니다. 손익을 민평 변화로 쟀으므로 실제로 그 가격에 사고팔 수 있었는지는 알 수 없다. 민평이 종목 단위 수급 충격을 덜 반영한다면 체결 기준으로는 밀어냄과 되돌림이 모두 더 클 수 있고, 이 실험은 그것을 보지 못한다.
자료의 시점과 원천. 흐름의 공표 시각이 확인되지 않아 하루 늦은 진입을 기본으로 두었다. 2026 년 흐름 표는 0 인 행을 일부 빼고 적재되었고, 그해 진행 상태 점유율이 73% 로 다른 해(43 ~ 53%)보다 높다. 원천 집계가 바뀌었을 수 있다. 상장잔액의 단위가 표에 없어 흐름 비율의 절대 크기는 해석하지 않았다. 넬슨 시겔 잔차가 2026-08-13 에서 끝나 확인 구간의 마지막 석 달을 잃었고, 앞선 실험들이 같은 잔차 패널의 2020 년 이후를 이미 본 적이 있다.
HMM 적합. EM 을 직접 짰고, 관측 하나당 로그우도 증가가 1e−4 아래면 멈추는 기준이 느슨해 26 ~ 32회에서 멈췄다. 일곱 시작값의 로그우도 차가 25 안쪽이었고, 깊이 보강에서 1e−8 기준으로 다시 적합해 같은 상태와 같은 결과를 확인했다. 다만 시작값을 더 많이 쓰면 다른 국소해가 나올 가능성은 남는다. 장외 체결 대리는 2025 년 이후 150건 가운데 체결이 있던 날만 본 것이라 표본이 작고 소량 체결의 이상값이 섞여 있다.
다음에 해 볼 것
첫째, 체결 기반 종목 수급을 본다. 민평 대신 장외 투자자별 체결금리(2025-01 이후)로 «그 종목 매도 체결이 민평보다 얼마나 높은 금리에 났는가» 를 재고, 매도 체결 웃돈이 큰 날 뒤 체결 금리가 민평 쪽으로 돌아오는지 본다. 처분 압력은 평가 수익률보다 체결가에 먼저 보일 것이다.
둘째, V4 를 얼려 새 표본에 적용한다. 5일 순매도 하위 5% 뒤 순매수로 돌아선 날 z ≥ 2 인 종목을 사는 규칙을 문턱 그대로 통안증권 표본과 2005 ~ 2011 국고에 적용한다. 빈도가 연 6건이라 단독 전략은 못 되므로, 큰 잔차 교체 신호의 필터로 붙였을 때 비용 전 손익이 몇 배가 되는지를 질문으로 삼는다. 다만 깊이 보강에서 V4 의 우위가 흐름 시점 순환 귀무와 구분되지 않았으므로(p 0.14) 첫째보다 우선순위가 낮고, 할 때는 같은 순환 귀무를 판정에 넣는다.
산출물
모든 수치는 아래 파일에서 왔다. 정본 런은 한 번 돌렸고, 깊이와 탐색 스크립트는 정본 런 폴더에 산출물을 더한다. 큰 중간물(특징, 필터링 확률, 손익 표)은 저장소 밖 캐시에 있고 스크립트가 다시 만든다.
- 사전등록
protocol.md - 분석과 판정
analysis.md - 코드
code/dc.py데이터 점검,code/hmm.py특징과 HMM,code/s1.py정본,code/s2_depth.py깊이,code/s3_explore.py탐색,code/s4_depth2.py깊이 보강,code/render_figures.py그림 - 정본 런
results/20261111T062617_main/(metrics.json, hmm_params.json, trades_main.csv, trades_B1.csv, trades_B2.csv, trades_B3.csv, grid.csv, null_n1.npy, null_n2.npy, depth.json, premise.csv, event_paths.csv, variants.csv, explore.csv, depth2.json, v4_null.npy, cell_matched.csv, exec_proxy.csv) - 재현 명령
uv run python experiments/0282_ktb_stock_selling_exhaustion_hmm/code/s1.py, 이어서code/s2_depth.py <런 폴더>,code/s3_explore.py <런 폴더>,code/s4_depth2.py <런 폴더>,code/render_figures.py
Appendix
A. 데이터셋 실물
아래 B 의 예시 종목(KR103502G834, 잔존 21.8년 경과물)의 신호 직전 여섯 영업일 원자료와 특징이다. 순매수는 억 원, 빈칸은 그날 표에 행이 없는 것(코드는 0 으로 다룬다), y 는 민평 %, z 는 NS 잔차 z 다.
| 날짜 | 외국인 | 은행 | 보험기금 | 운용사 공모 | 운용사 사모 | y | z | x1 | x2 | x3 |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026-05-28 | +67.2 | +150.0 | −550.0 | −100.0 | 0 | 4.193 | 0.09 | −0.906 | −0.437 | −0.310 |
| 2026-05-29 | −162.0 | 0 | 4.084 | 0.95 | −0.457 | −0.542 | −0.345 | |||
| 2026-06-01 | 0 | 4.210 | 0.47 | −0.123 | −0.542 | −0.354 | ||||
| 2026-06-02 | 0 | 4.183 | −0.34 | −0.123 | −0.542 | −0.413 | ||||
| 2026-06-04 | 0 | 4.271 | −0.09 | −0.123 | −0.542 | −0.428 | ||||
| 2026-06-05 | 0 | 4.336 | 1.39 | −0.123 | −0.296 | −0.442 |
05-28 에 보험기금이 550억, 운용사 공모가 100억을 순매도했고, 05-29 에 운용사 공모가 162억을 더 팔았다. 그 뒤 나흘은 다섯 유형 모두 거래가 없어 x1 이 흐름 0 의 값 −0.123 에 머문다. 06-05 에 5일 창에서 05-28 이 빠지며 x2 가 −0.542 에서 −0.296 으로 올랐고, 같은 날 z 가 1.39 로 뛰었다.
B. 모델 입출력 실물
그 신호일에 정본 HMM 과 규칙이 실제로 받은 입력과 낸 출력이다. 상태 확률은 저장된 모수로 다시 계산한 필터링 확률이다.
- Request meta
- 신호일 t = 2026-06-05(금), 종목 KR103502G834, 20년 칸 경과물. 정본 HMM(발견 구간 적합, 무작위 시작 1번, 고정), 종료 확률 문턱 0.5, z 문턱 1, 진입 t+1 민평, 보유 10영업일, 100억 실측 비용.
- Input
- 전날 관측 x(t−1) = (−0.123, −0.542, −0.428), 전날 필터링 확률 P(진행) 0.9994, P(정상) 0.0006, P(종료) 0.0000. 오늘 관측 x(t) = (−0.123, −0.296, −0.442). 오늘 NS 잔차 z = 1.39, 편차 d = 0.54bp.
- Model response
- 오늘 필터링 확률 P(종료) 0.7524, P(진행) 0.2475, P(정상) 0.0001. 종료 확률이 처음 0.5 를 넘었고 직전 10일 안에 진행이 있었으며 z ≥ 1 이라 신호. 규칙 출력은 06-08 민평에 KR103502G834 매수, 잔존 1년 안 |z| < 1 이웃은 KR103502G933 하나라 그 종목을 DV01 전부로 매도.
- Ground truth check
- 06-22 민평에 청산. 신호 종목이 이웃보다 1.30bp 더 내려 가격 항 +1.30bp, 캐리 +0.04bp 로 비용 전 +1.34bp. 그러나 20년 칸 경과물 쌍 왕복 비용이 3.41bp 라 비용 뒤 −2.07bp. 잔차는 보유 동안 1.39bp 돌아왔지만, 이 한 건도 확인 구간 평균처럼 비용을 넘지 못했다.
C. 실험 설정
| 항목 | 값 |
|---|---|
| 관측 | q = 5유형 순매수 합 / 전날 상장잔액, a = asinh(q/κ), κ = 16.12, x1 = a, x2 = 5일 합, x3 = 20일 합, 발견 구간으로 표준화 |
| HMM | 3상태 가우시안, 완전 공분산, 종목 공통 모수, numpy Baum-Welch, 최대 200회, 관측당 로그우도 증가 < 1e−4 에서 멈춤 |
| 시작값 | 정해 준 평균 (0,0,0), (−1,−2,−2), (0,0,−1.5) 와 그것을 흔든 둘, 무작위 넷, 발견 구간 로그우도 최대(무작위 1번, 26회 반복) |
| 상태 이름 | 진행 = x2 평균 최저, 종료 = 남은 둘 중 x3 평균 낮은 쪽, 나머지 정상 |
| 적합 구간 | 2012-01-01 ~ 2019-12-31, 서열 = 민평이 있고 잔존 0.5년 이상인 날 |
| 신호 | P(종료) 0.5 첫 돌파, 직전 10일 P(진행) > 0.5 하루 이상, NS z ≥ 1, 거래 유니버스 |
| 거래 | t+1 민평 진입, 이웃 둘(잔존 ±1년, |z| < 1) DV01 반씩 매도, 10영업일 보유, 종목당 열린 거래 하나 |
| 비용 | 100억 실측 체결 비용(만기 칸 × 계층), 왕복 2 × (c_i + 0.5 c_j1 + 0.5 c_j2), 대차 연 2bp, 민감도 0.5, 1, 2배 |
| 확인 구간 | 신호 2020-01-01 ~ 2026-07-30 (청산이 NS 끝 2026-08-13 안) |
| 검정 | 진입 달 블록 부트스트랩 1만 회 한쪽, 짝 비교는 같은 달 함께 추출, Holm 족 H1068, H1069, H1071, seed 282 |
| 귀무 | N1 같은 날 z ≥ 1 무작위 종목 1,000회, N2 종목별 필터 확률 순환 이동(20일 이상) 500회 |
| 충격 구간 | 2013-05-22 등 13개 날짜와 그 뒤 10영업일에 걸친 거래 제외판 |
| 판정 규칙 | 채택: H1068, H1069 Holm 지지이고 연 24건 이상. 보류: 둘 다 지지이나 드묾. 폐기: H1068 이 음수이거나 미지지 |