세 줄 요약
- 모형은 상관이 음(평균 −0.10)인 체제 0과 양(평균 +0.38)인 체제 1을 찾았다. 발견 구간 카드는 체제 0 에서 계약당 +2.58틱, 체제 1 에서 +0.56틱이라 체제 0 을 «좋은 체제» 로 잠갔다.
- 같은 총 계약의 일별 손익 차이는 발견 +0.329(p 0.078), 확인 −0.012(p 0.552) 다. 확인 구간에서는 날의 82% 가 체제 0 이라 사실상 모든 날에 1.5배를 실었고, 체제 0 카드 손익(+0.63)이 오히려 체제 1(+0.84)보다 작았다.
- 금리와 주식의 상관 체제는 카드 손익을 가르지 못한다. 판정은 폐기다.
가설과 결론
미국 금리와 주가의 하루 변화는 시기에 따라 같이 움직이기도 하고 반대로 움직이기도 한다. 성장 기대가 시장을 이끌 때는 금리와 주가가 함께 오르고(양의 상관), 물가와 긴축이 시장을 이끌 때는 금리가 오르면 주가가 내린다(음의 상관). 데스크 카드(미국 금리 밤사이 충격을 다음 날 3선에서 되돌리는 규칙)가 어느 쪽 체제에서 더 잘 되는지 안다면, 체제에 따라 크기를 나눌 수 있다. 체제는 직접 보이지 않으므로 마르코프 전환 모형(은닉 마르코프 모형의 한 종류)으로 추정한다.
- 가설
- H306. 확인 구간(2023-01 ~ 2026-10) 카드 날 일별 손익 차이(체제 사이징 − 카드 + R1, 같은 총 계약, 비용 1틱)의 평균 > 0, 월 블록 부트스트랩 한쪽 p < 0.05.
- 결론
- 확인 구간 평균 −0.012틱/일, 90% 구간 −0.189 ~ +0.156, 한쪽 p 0.552. 2차와 3차 묶음 주가설 63개 Holm 보정 p 1.00. 판정은 폐기다.
| 가설 | 내용 | 결과(확인) | 한쪽 p | 판정 |
|---|---|---|---|---|
| H306 | 상관 체제 0 확률 > 0.5 면 R1 × 1.5, 아니면 × 0.5. R1 대비 일별 손익 차이 > 0 | −0.012틱/일(419일) | 0.552 | 폐기 |
발견 구간에서도 p 0.078 로 문턱 밖이었고, 그 이득은 2022 년 한 해(+328틱)에 몰렸다. 체제를 나누는 기준이 카드의 성패와 무관하다는 쪽이 결과에 맞는 설명이다.
용어와 기호
- 3선, 틱
- 한국거래소 3년 국채선물. 1틱은 가격 0.01, 계약당 1만원
- bp
- 금리 0.01%p
- g_us, g_nq
- 미국 10년 금리 하루 변화(bp)와 나스닥100 선물 하루 로그 변화(%). 둘 다 뉴욕 날짜 s 종가
- cs
- 행 s 까지 직전 60행(최소 50) g_us 와 g_nq 의 상관. 양이면 금리와 주가가 같이 움직이는 시기
- 마르코프 전환 모형
- 관측값(c)이 보이지 않는 체제 몇 개 중 하나에서 나오고, 체제는 전날 체제에 따라 정해진 확률로 바뀐다고 보는 모형. 체제마다 평균과 분산이 다르다
- p[i→j]
- 오늘 체제 i 일 때 내일 체제 j 일 확률(전이 확률)
- 필터 확률
- 그날까지의 관측만으로 계산한 «지금 체제 k 일 확률». 미래 관측을 쓰지 않는다(쓰는 것은 평활 확률)
- 좋은 체제
- 발견 구간에서 확률 > 0.5 인 카드 날의 계약당 손익이 더 큰 체제. 여기서는 체제 0
- 카드
- |g_us| ≥ 3bp, 다음 세션이 바로 다음 달력일, 만기 교체 날 아님. 방향 sign(g_us)(미국 금리 상승이면 3선 매수), 시가 진입 종가 청산
- ε, R1
- ε 는 원화 고유 충격, R1 은 sign(ε) 가 sign(g_us) 와 엇갈리면 1계약, 같으면 0.5계약. 기준선이다
- 같은 총 계약, k
- 구간마다 Σ 새 계약이 Σ R1 과 같도록 새 손익에 k 를 곱한다(발견 1.040, 확인 0.752)
- 일별 손익 차이 d
- 카드 날마다 새 계약 × (손익 − 1틱) × k − R1 × (손익 − 1틱)
- 발견, 확인 구간
- 발견 2013-01 ~ 2022-12(모형 적합, 좋은 체제 선택), 확인 2023-01 ~ 2026-10(계수 고정, 판정)
- 월 블록 부트스트랩, 한쪽 p
- d 를 달 단위로 묶어 복원 추출 5,000번으로 평균의 분포를 만들고 효과 0 일 때 지금 평균 이상이 나올 확률을 센다
- Holm 보정
- 여러 가설을 함께 시험할 때 p 를 가설 수에 맞춰 키우는 방법. 2차와 3차 묶음 주가설 63개
자료
| 자료 | 원천 | 기간 | 해상도 | 쓰임 |
|---|---|---|---|---|
| 미국 10년 금리 g_us | FRED DGS10 | 2012 ~ 2026-10 | 일, 뉴욕 날짜 | 카드, 상관 c |
| 나스닥100 선물 g_nq | 인포맥스 단말 | 2015-01 ~ 2026-10 | 일, 뉴욕 날짜 | 상관 c |
| 3선 시가, 종가(기준가 사슬), 만기 교체 표시 | 인포맥스 단말 일봉 | 2013 ~ 2026-10 | 일 | 카드 손익 |
| 원화 고유 충격 ε | 인포맥스 단말 NDF, 달러인덱스 | 2013 ~ 2026-10 | 일 | R1 |
| 항목 | 발견 2013 ~ 2022 | 확인 2023 ~ 2026-10 |
|---|---|---|
| 상관 c 가 있는 날(모형 적합 표본) | 1,918(2015-03-19 부터) | 상관 있는 모든 날(계수 고정) |
| 카드 날 | 907 | 419 |
| 그중 체제 확률이 없어 배수 1 인 날 | 183(2013 ~ 2015-03) | 0 |
| 모든 날 중 체제 0 확률 > 0.5 비율 | 43% | 82% |
나스닥 자료가 2015-01 부터라 60일 상관은 2015-03-19 부터 나온다. 시점은 이렇다. cs 는 뉴욕 날짜 s 종가까지의 자료로 계산되어 한국 세션 e 개장 전에 알려지고, 필터 확률도 행 s 까지만 쓴다.
방법
- 상관 만들기. cs = 직전 60행 g_us 와 g_nq 의 상관.
- 모형 적합. 발견 구간 c 에 두 체제 마르코프 전환 모형(체제별 평균과 분산)을 최대우도로 적합하고 계수를 잠근다.
- 필터 확률. 잠근 계수로 전 기간 필터 확률을 계산한다(그날까지의 관측만 씀).
- 좋은 체제 고르기. 발견 구간 카드 날 중 확률 > 0.5 인 날의 계약당 손익(비용 1틱 뒤)이 큰 체제를 좋은 체제로 잠근다.
- 계약 배분. 좋은 체제 확률 > 0.5 면 R1 × 1.5, 아니면 R1 × 0.5, 확률이 없으면 R1.
- 비교. 구간마다 총 계약을 R1 과 같게 맞추고 일별 손익 차이 d 의 월 블록 부트스트랩 5,000회(seed 66) 한쪽 p 를 낸다.
- 판정에 쓰지 않는 탐색. E1 체제별 카드 손익.
모델
설정
모형이 배우는 것은 여섯 값이다. 두 체제의 평균과 분산, 그리고 체제가 유지될 확률 둘. 학습된 모형은 매일 «지금 어느 체제일 확률» 을 내고, 사이징은 그 확률이 0.5 를 넘는지만 본다.
| 항목 | 값 |
|---|---|
| 모형 | statsmodels MarkovRegression, k_regimes = 2, 상수항만(평균 전환), switching_variance = True |
| 적합 | 최대우도(statsmodels 기본 EM 뒤 준뉴턴), 발견 구간 1,918일, 한 번 |
| 관측값 | cs, 60행 상관(최소 50) |
| 확인 구간 | 계수 고정, 필터 확률만 계산 |
| 사이징 | 좋은 체제 확률 > 0.5 → ×1.5, 아니면 ×0.5(R1 에 곱함), 구간별 총 계약 맞춤 |
| 비용 | 왕복 1틱 |
학습된 두 체제
| 값 | 체제 0 | 체제 1 |
|---|---|---|
| 평균 상관 | −0.096 (0.008) | +0.375 (0.005) |
| 분산(표준편차) | 0.0342 (0.185) | 0.0141 (0.119) |
| 머무를 확률 | p[0→0] = 0.9913 | p[1→1] = 1 − 0.0066 = 0.9934 |
| 평균 지속 기간 | 115일 | 150일 |
| 발견 카드 날(확률 > 0.5) | 335일, +2.58틱 | 389일, +0.56틱 |
로그 우도는 940.4 다. 두 체제는 «금리와 주가가 함께 오르내리는 시기(체제 1, 2015 ~ 2020 년의 대부분)» 와 «금리가 오르면 주가가 내리는 시기(체제 0, 2021 년 이후의 대부분)» 로 깔끔하게 갈린다.
결과
확증 결과
| 항목 | 발견 2013 ~ 2022 | 확인 2023 ~ 2026-10 |
|---|---|---|
| 카드 날 | 907 | 419 |
| R1 하루 손익(틱) | 1.491 | 0.789 |
| 체제 사이징 하루 손익(틱, 총 계약 맞춤 뒤) | 1.820 | 0.776 |
| 차이(틱/일) | +0.329, p 0.078 | −0.012, p 0.552 |
| 90% 구간 | −0.034 ~ +0.709 | −0.189 ~ +0.156 |
| 차이가 양인 해 | 7/10 | 2/4 |
| 총 계약 맞춤 계수 k | 1.040 | 0.752 |
| Holm 보정 p(63개) | 1.00 |
확인 구간 k 가 0.752 라는 것은 새 규칙이 확인 구간 대부분의 날에 1.5배를 실어 총 계약이 33% 늘었고, 그것을 다시 줄였다는 뜻이다. 거의 모든 날이 같은 배수를 받으면 배분이 바뀌지 않고, 차이는 0 이 된다.
체제별 카드 손익과 연도별 차이
아래는 확증 런을 다시 만들어(모형 계수와 일별 차이를 assert 로 확인) 낸 기술 통계다. 체제별 손익은 사전등록 탐색 E1 과 같은 값이다.
| 체제 | 발견 날 수 | 발견 손익 | 발견 평균 c | 확인 날 수 | 확인 손익 | 확인 평균 c |
|---|---|---|---|---|---|---|
| 체제 0(×1.5) | 335 | +2.58 | −0.11 | 345 | +0.63 | −0.16 |
| 체제 1(×0.5) | 389 | +0.56 | +0.38 | 74 | +0.84 | +0.24 |
| 확률 없음(×1) | 183 | 0 |
| 연도 | 카드 날 | 체제 0 비율 | 평균 c | 차이 합(틱) |
|---|---|---|---|---|
| 2015 | 107 | 22% | +0.25 | −20.5 |
| 2016 | 93 | 27% | +0.26 | −11.2 |
| 2017 | 78 | 55% | +0.12 | +15.6 |
| 2018 | 64 | 34% | +0.22 | +8.5 |
| 2019 | 86 | 0% | +0.48 | −60.5 |
| 2020 | 86 | 17% | +0.35 | +4.5 |
| 2021 | 97 | 95% | −0.17 | +25.4 |
| 2022 | 135 | 84% | −0.08 | +327.9 |
| 2023 | 126 | 87% | −0.14 | +55.8 |
| 2024 | 106 | 94% | −0.03 | −21.1 |
| 2025 | 105 | 51% | +0.10 | −41.5 |
| 2026(10월까지) | 82 | 100% | −0.32 | +1.5 |
2013, 2014 년(161일)은 확률이 없어 배수 1 이었고 차이 합은 +8.6틱(총 계약 맞춤 효과)이다. 발견 구간 체제 0 의 높은 손익은 2021 ~ 2022 년, 특히 카드가 크게 번 2022 년이 만든 것이다. 체제 0 이 «좋은 체제» 가 아니라 «2022 년이 들어 있는 체제» 였던 셈이다.
해석
체제 모형은 상관을 잘 나눴다. 두 체제의 평균이 뚜렷이 다르고 오래 지속된다. 문제는 그 구분이 카드 손익과 관계가 없다는 점이다. 발견 구간의 차이는 2022 년 한 해가 체제 0 에 들어 있어서 생겼고, 2023 년 이후 체제 0 이 대부분인 시기에는 카드가 평범했다. 체제 사이징은 결국 «최근 몇 년이 2022 년과 닮았는가» 를 묻는 규칙이 되었고, 표본 밖에서는 아무것도 가르지 못했다.
한계
- statsmodels 가 프로젝트 환경에 없어
uv run --with statsmodels임시 환경에서 돌렸다. - 발견 구간의 필터 확률과 좋은 체제 선택은 같은 구간에 적합한 계수로 계산했다. 발견 구간 +0.329 는 표본 안 값이다.
- 나스닥 자료가 2015-01 부터라 2013 ~ 2015-03 카드 날 183일은 배수 1 이었다.
- 확인 구간에서 체제 1 인 카드 날이 74일뿐이라 체제별 손익 비교가 거칠다.
- 사이징을 0.5 문턱의 두 값으로만 했다. 확률을 연속적으로 쓰는 방법은 사전등록 범위 밖이다.
산출물
- 계획
protocol.md(사전등록 88b2c97) - 분석, 판정
analysis.md - 코드
code/s1_hmm.py(확증),code/s_detail.py(기술 통계, 모형 계수 재현 assert),code/render_figures.py(그림) - 런
results/20261029T160608_main/(확증),results/20261030T163152_detail/(corr_regime.csv, card_days.csv, metrics.json) - 공용 코드
../0100_model_open_error_fade/code/libb2.py(카드 사이징 비교),../0066_multi_asset_panel/code/lib66.py(카드, 부트스트랩)
Appendix
A. 데이터셋 실물
card_days.csv 의 실제 행(2026-09 ~ 10, 확인 구간). p_good 은 체제 0 필터 확률, base 와 new 는 비용 1틱 뒤 하루 손익(new 는 k = 0.752 를 곱한 값).
| s | g_us | c | p_good | gross | R1 | 배수 | 새 계약 | base | new | d |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026-09-15 | +3 | −0.30 | 1.00 | +14 | 1 | 1.5 | 1.50 | +13.0 | +14.66 | +1.66 |
| 2026-09-30 | +3 | −0.47 | 1.00 | +6 | 0.5 | 1.5 | 0.75 | +2.5 | +2.82 | +0.32 |
| 2026-10-01 | −5 | −0.46 | 1.00 | −7 | 0.5 | 1.5 | 0.75 | −4.0 | −4.51 | −0.51 |
| 2026-10-15 | −9 | −0.37 | 1.00 | −15 | 1 | 1.5 | 1.50 | −16.0 | −18.04 | −2.04 |
| 2026-10-19 | +6 | −0.37 | 1.00 | +19 | 1 | 1.5 | 1.50 | +18.0 | +20.29 | +2.29 |
| 2026-10-22 | −17 | −0.39 | 1.00 | +17 | 1 | 1.5 | 1.50 | +16.0 | +18.04 | +2.04 |
모든 날이 같은 배수 1.5 를 받으므로 d 는 R1 손익의 약 12.8%(1.5 × 0.752 − 1)만큼 같은 방향으로 따라 움직일 뿐이다.
B. 모델 입출력 실물
- Request meta
- 신호일 s = 2026-10-22, 발견 구간에서 잠근 계수(평균 −0.096 / +0.375, 분산 0.0342 / 0.0141, p[0→0] 0.9913, p[1→0] 0.0066)로 필터 확률 계산
- Input
- 직전 60행 g_us 와 g_nq 상관 c = −0.393. 전날 체제 0 필터 확률 1.00. 카드: g_us −17bp → 3선 매도, R1 1계약
- Model response
- 체제 0 필터 확률 1.00(c 가 체제 1 평균에서 6 표준편차 넘게 떨어져 있다). 좋은 체제이므로 배수 ×1.5, 새 계약 1.5
- Ground truth check
- 3선 장중 −17틱, 매도 계약당 +17틱. R1 +16.0, 체제 사이징 +18.04(총 계약 맞춤 뒤), 차이 +2.04. 확인 구간 419일 평균 차이는 −0.012 다
C. 실험 설정
- 카드, 기준선|g_us| ≥ 3bp, 다음 달력일 세션, 만기 교체 날 제외, R1 계약(엇갈림 1, 일치 0.5)
- 관측값c = 직전 60행(최소 50) g_us 와 g_nq 상관
- 모형MarkovRegression 두 체제, 평균과 분산 전환, 발견 구간 적합 뒤 고정, 필터 확률
- 사이징좋은 체제(0) 확률 > 0.5 → ×1.5, 아니면 ×0.5, 확률 없으면 ×1, 구간별 총 계약 맞춤
- 비용왕복 1틱
- 분할발견 2013-01 ~ 2022-12, 확인 2023-01 ~ 2026-10
- 검정일별 손익 차이 월 블록 부트스트랩 5,000회, seed 66, 한쪽 p < 0.05, 63개 Holm