세 줄 요약
- 카드 날 1,326일에서 «카드가 비용 1틱 넘게 진 날» 을 밤사이 특징 20개의 로지스틱 회귀(해마다 다시 학습)로 예측하고, 예측 확률이 0.6 을 넘는 날 방향을 뒤집었다. 기준선(카드 + R1) 대비 같은 날 손익 차이는 발견 −0.330틱/일, 확인 −0.246틱/일, 확인 구간 월 블록 부트스트랩 한쪽 p 0.831 이다.
- 모델의 구분력은 AUC 0.51(2016 ~ 2022), 0.52(확인) 로 동전 던지기 수준이다. 확률 0.6 을 넘긴 날 실제로 카드가 진 비율은 27%, 39% 로 오히려 평균(35%, 42%)보다 낮았다.
- 카드가 질 날은 밤사이 공개 정보로 미리 알 수 없다. 판정은 폐기다. 문턱 0.5, 0.7 도 모두 음이고, 2차와 3차 프로그램 주가설 63개 Holm 보정 p 1.00 이다.
가설과 결론
이 프로그램의 기준선은 «미국 10년 금리 밤사이 되돌림 카드» 다. 미국 10년 금리가 밤사이 3bp 이상 움직이면 다음 날 3선이 시가에서 그 방향으로 크게 갭을 내는데, 장중에는 그 갭이 일부 되돌아오는 경향이 있어 시가에 반대로 들어가 종가에 나온다. 평균으로는 이기지만 크게 지는 날도 있다. 그런 날은 되돌림이 아니라 추세가 이어진 날이다.
지는 날에 공통된 밤사이 조건(예: 유럽 금리가 같이 크게 움직였다, 원화가 따로 움직였다)이 있다면, 그 확률이 높은 날만 카드를 거꾸로(추종) 들어 손실을 이익으로 바꿀 수 있다. 이 실험은 그 조건을 로지스틱 회귀로 배우게 했다.
- 가설
- H321(카드 변형). 예측 확률 p̂ > 0.6 인 카드 날 방향을 뒤집은 규칙이 같은 날의 카드 + R1 대비 확인 구간 일별 손익 차이 평균 > 0, 월 블록 부트스트랩 한쪽 p < 0.05
- 결론
- 확인 2023-01 ~ 2026-10 419일 차이 −0.246틱/일, p 0.831, 90% 구간 [−0.69, +0.17]. 발견 구간도 −0.330틱/일(p 0.994). Holm 보정 p 1.00. 판정은 폐기
| 가설 | 검정 | 결과(확인) | 한쪽 p | 판정 |
|---|---|---|---|---|
| H321 | 같은 날 일별 손익 차이 평균 > 0 | −0.246틱/일 (419일) | 0.831 | 폐기 |
용어와 기호
- 3선
- 한국거래소 3년 국채선물. 가격으로 거래하며 금리가 오르면 가격이 내린다
- 틱
- 3선 가격의 최소 단위 0.01. 계약(액면 1억원)당 1만원
- bp
- 0.01%p. 금리 변화의 단위
- 세션 s, e
- s 는 정보가 쌓이는 한국 거래일(행), e 는 매매하는 다음 거래일
- g_us
- 미국 10년 국채금리의 하루 변화(bp, 뉴욕 날짜 s)
- ε
- 원화 고유 충격. NDF 로 본 밤사이 원화 변화(%) 가운데 달러인덱스와 미국 금리로 설명되지 않는 나머지(직전 250일 회귀)
- 카드
- |g_us| ≥ 3bp 이고 e 가 다음 달력일이며 만기 교체 날이 아니면, e 시가에 3선을 sign(g_us) 방향(미국 금리 상승이면 매수)으로 들어가 e 종가에 청산하는 규칙
- R1 가중
- 미국 금리와 원화 충격 방향이 엇갈리면(sign(g_us) × sign(ε) < 0) 1계약, 같으면 0.5계약, ε 이 없으면 1계약
- gross
- 카드 방향 × 3선 e 장중(종가 − 시가) 손익(틱/계약, 비용 전)
- 라벨(lose)
- gross < −1 이면 1. 카드가 비용 1틱 넘게 진 날이고, 뒤집으면(추종) 이겼을 날이다
- p̂
- 로지스틱 회귀가 낸 «카드가 질 확률»
- 뒤집기
- p̂ > 0.6 인 날 계약 수는 그대로 두고 방향만 반대로(w → −w)
- 일별 손익 차이
- 같은 날 (뒤집기 규칙 손익) − (카드 + R1 손익), 비용 1틱 뒤. 뒤집지 않은 날은 0
- AUC
- 질 날과 이긴 날을 하나씩 무작위로 뽑았을 때 질 날에 더 높은 p̂ 를 줄 확률. 0.5 면 구분력이 없다
- 확장 창
- 해마다 1월 첫 거래일에 2013 년부터 그 전 해 말까지의 카드 날로 모델을 다시 학습하고 그 해만 예측한다
- 월 블록 부트스트랩, 한쪽 p
- 일별 차이를 달 단위 묶음으로 5,000회 다시 뽑아 평균의 분포를 만든다. 한쪽 p 는 «참 평균이 0 인데 이만큼 양으로 나올 확률»
- 발견, 확인 구간
- 발견 2013-01 ~ 2022-12(첫 예측 2016 년이라 2013 ~ 2015 는 차이 0), 확인 2023-01 ~ 2026-10
- Holm 보정
- 여러 가설을 한꺼번에 시험할 때 우연한 통과를 막으려고 p 값을 가설 수에 맞춰 키우는 방법. 같은 프로그램 주가설 63개를 한 가족으로 센다
자료
데이터셋
| 자료 | 원천 | 기간 | 해상도 | 쓰임 |
|---|---|---|---|---|
| 3선 시가, 종가 | 인포맥스 단말 일봉(연결) | 2013 ~ 2026-10 | 일 | 카드 손익, 라벨 |
| 미국 2년, 5년, 10년 금리 | FRED | 2013 ~ 2026 | 일(뉴욕 날짜) | 카드 신호, 특징 |
| 원화 현물, NDF, 스왑포인트, 달러인덱스 | 인포맥스 단말, 인포맥스 API | 2013 ~ 2026 | 일 | ε, R1 가중, 특징 |
| 독일, 프랑스, 일본 10년 금리 | 인포맥스 단말 | 2013 ~ 2026 | 일(각국 종가) | 특징 |
| 나스닥100 선물, 금, 비트코인 | 인포맥스 단말, 거래소 자료 | 2013 ~ 2026(비트코인 없으면 0) | 일(뉴욕 날짜) | 특징 |
| 코스피 외국인 순매수, 외국인 국채 보유 비중, 기준금리 | 인포맥스 단말 | 2013 ~ 2026 | 일 | 특징 |
| 항목 | 발견 2013 ~ 2022 | 확인 2023 ~ 2026-10 |
|---|---|---|
| 카드 날 | 907(예측이 있는 2016 ~ 2022 는 639) | 419 |
| 라벨 1 비율(카드가 진 날) | 34.0%(2016 ~ 2022 은 34.9%) | 41.8% |
| 카드 + R1 하루 평균 손익(비용 1틱 뒤) | +1.49틱 | +0.79틱 |
학습과 시험 분할
언제 무엇을 아는가
| 시각 | 일어나는 일 |
|---|---|
| s 일 15:45 | 3선 마감. 국내 특징(코스피 외국인, 보유 비중, 기준금리, 스왑) 확정 |
| e 일 새벽 | 뉴욕 날짜 s 의 미국 금리, 달러인덱스, 나스닥, 금, 비트코인, 유럽 금리, NDF 확정. g_us, ε, 카드 신호 계산 |
| e 일 08:20 이전 | 특징 20개를 학습 구간 평균과 표준편차로 표준화하고 p̂ 계산, 뒤집을지 결정 |
| e 일 개장 | 3선 시가에 진입(2025-11 까지 09:00, 2025-12 부터 08:45) |
| e 일 종가 | 청산, 손익과 라벨 확정 |
방법
- 카드 날 표. 패널에서 카드 신호가 선 날만 고르고 gross, R1 가중, 라벨을 붙인다.
- 학습. 2016 ~ 2026 각 해에 대해, 그 전 해 말까지의 카드 날로 특징을 표준화하고(결측은 0) 로지스틱 회귀를 학습한다.
- 뒤집기. 그 해 카드 날마다 p̂ 를 내고 p̂ > 0.6 이면 방향을 뒤집는다. 계약 수는 R1 가중 그대로라 기준선과 총 계약이 같다.
- 판정. 확인 구간 일별 손익 차이의 월 블록 부트스트랩 5,000회 한쪽 p < 0.05.
- 탐색(판정에 쓰지 않음). E1 뒤집은 날 수와 그날 카드 손익, E2 문턱 0.5, 0.7.
모델
기준선 카드
카드는 학습하는 값이 없는 고정 규칙이다(문턱 3bp, 시가 진입, 종가 청산, R1 가중). 이 실험은 카드를 바꾸지 않고, 카드가 서는 날 가운데 일부의 방향만 바꾼다.
로지스틱 회귀
로지스틱 회귀는 특징의 가중합을 0 ~ 1 확률로 바꾸는 선형 분류기다. 특징 20개 각각이 «카드가 질 확률» 의 로그 오즈를 얼마나 올리거나 내리는지 계수 하나씩을 배운다. L2 규제(C = 1)로 계수가 지나치게 커지지 않게 했다. 해마다 다시 학습하므로 모델은 11개다.
| 항목 | 값 |
|---|---|
| 구현 | scikit-learn LogisticRegression |
| 규제 | L2, C = 1.0 |
| solver, max_iter | lbfgs(기본), 500 |
| class_weight | 없음 |
| 표준화 | 학습 구간 평균과 표준편차, 결측은 표준화 뒤 0 |
| 목표 | lose = 1(gross < −1) |
| 특징 20개 | g_us, g_us2, g_us5, 달러인덱스 변화, 원화 밤사이 변화 g_fx, ε, 나스닥100 선물, 금, 비트코인, 독일, 프랑스, 일본 10년 변화, 원/달러 20일 변동성 rv20, 원/달러 50원 단위까지 거리, 코스피 외국인 순매수, 외국인 국채 보유 비중, 기준금리, 1년 스왑 금리, 1년 스왑포인트, |g_us| |
| 학습 창 | 확장 창, 2013 ~ 시험 전 해 말, 첫 예측 2016 |
| 뒤집기 문턱 | p̂ > 0.6 |
결과
확증 결과
| 항목 | 발견 2013 ~ 2022 | 확인 2023 ~ 2026-10 |
|---|---|---|
| 카드 날 | 907 | 419 |
| 뒤집은 날 | 52 | 31 |
| 기준선(카드 + R1) 하루 평균 | +1.49 | +0.79 |
| 뒤집기 규칙 하루 평균 | +1.16 | +0.54 |
| 일별 차이 평균 | −0.330 (p 0.994) | −0.246 |
| 부트스트랩 한쪽 p, 90% 구간 | [−0.54, −0.15] | 0.831, [−0.69, +0.17] |
| 차이가 양인 해 | 0 / 10 | 0 / 4 |
| Holm 보정 p(63개) | 1.00 |
차이가 양인 해가 하나도 없다. 뒤집은 날이 없던 해(2013 ~ 2015, 2020, 2021, 2023, 2024)는 차이가 0 이고, 뒤집은 해는 모두 손해였다. 규칙은 기준선을 한 번도 이기지 못했다.
| 연도 | 2016 | 2017 | 2018 | 2019 | 2022 | 2025 | 2026 |
|---|---|---|---|---|---|---|---|
| 뒤집은 날 | 2 | 32 | 8 | 4 | 6 | 3 | 28 |
| 차이 합 | −5 | −83 | −101 | −17 | −93 | −66 | −37 |
질 날을 가려냈나
| p̂ 구간 | 2016 ~ 2022 날 수 | 실제 비율 | 확인 날 수 | 실제 비율 |
|---|---|---|---|---|
| 0 ~ 0.2 | 98 | 33.7% | 51 | 31.4% |
| 0.2 ~ 0.3 | 134 | 34.3% | 91 | 44.0% |
| 0.3 ~ 0.4 | 170 | 33.5% | 112 | 42.0% |
| 0.4 ~ 0.5 | 119 | 38.7% | 85 | 44.7% |
| 0.5 ~ 0.6 | 66 | 40.9% | 49 | 44.9% |
| 0.6 초과(뒤집은 날) | 52 | 26.9% | 31 | 38.7% |
| AUC | 0.51 | 0.52 | ||
뒤집은 날 카드 손익(비용 1틱 뒤)은 발견 +2.46틱, 확인 +0.23틱으로 카드가 이긴 날이었다. 뒤집어서 그 이익을 손실로 바꿨다.
탐색 결과
| 문턱 | 발견 | 확인 | 확인 p |
|---|---|---|---|
| p̂ > 0.5 | −0.525 | −0.752 | 0.983 |
| p̂ > 0.6(주가설) | −0.330 | −0.246 | 0.831 |
| p̂ > 0.7 | −0.121 | −0.248 | 0.908 |
문턱을 낮추면 더 많이 뒤집고 더 많이 잃는다. 문턱을 높이면 뒤집는 날이 줄어 손실이 줄 뿐이다.
해석
카드가 지는 날은 밤사이 공개된 가격 정보로 구분되지 않았다. 카드의 승패는 그날 장중에 나오는 뉴스와 수급이 정하고, 그것은 개장 전 특징에 담겨 있지 않다. 로지스틱 회귀가 꾸준히 잡은 프랑스 10년 금리 계수도 예측력으로 이어지지 않았다. 기준선 카드를 손대려면 손익이 아니라 크기(계약 수)를 조절하는 쪽이 낫고, 방향을 뒤집는 규칙은 근거가 없다.
한계
- 라벨 비율이 35 ~ 42% 이고 모델 확률이 대부분 0.3 ~ 0.4 라, 문턱 0.6 을 넘는 날은 연 0 ~ 32일로 들쭉날쭉하다.
- 특징 20개는 앞선 실험에서 쓰던 목록을 그대로 썼고 이 문제에 맞춰 고르지 않았다. 다른 특징이나 비선형 모델은 시험하지 않았다.
- 2023 ~ 2026 은 기준선 카드의 R1 가중을 찾을 때 이미 본 기간이다.
산출물
- 계획
protocol.md(사전등록 88b2c97) - 분석
analysis.md - 코드
code/s1_flip.py(확증),code/s_detail.py(모델 재적합과 계수, 보정표, 확증 수치 재현 assert),code/render_figures.py(그림) - 런
results/20261029T160608_main/,results/20261030T164107_detail/(card_days.csv, coefs_by_year.csv)
Appendix
A. 데이터셋 실물
card_days.csv 의 실제 행. 열은 행 s, g_us(bp), ε(%), 3선 e 장중(틱), 카드 방향, gross, R1 가중 w, 라벨, p̂, 뒤집기, 기준선 손익, 규칙 손익, 차이(모두 비용 1틱 뒤 틱).
| s | g_us | ε | 장중 | 방향 | w | 라벨 | p̂ | 뒤집기 | 기준선 | 규칙 | 차이 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2016-06-27 | −11 | −0.606 | −13 | −1 | 0.5 | 0 | 0.604 | 예 | +6.0 | −7.0 | −13.0 |
| 2016-11-10 | +8 | +0.831 | −8 | +1 | 0.5 | 1 | 0.673 | 예 | −4.5 | +3.5 | +8.0 |
| 2024-01-02 | +7 | −0.064 | −9 | +1 | 1.0 | 1 | 0.255 | 아니오 | −10.0 | −10.0 | 0 |
| 2026-10-01 | −5 | −0.294 | +7 | −1 | 0.5 | 1 | 0.696 | 예 | −4.0 | +3.0 | +7.0 |
| 2026-10-13 | −3 | +0.195 | −4 | −1 | 1.0 | 0 | 0.659 | 예 | +3.0 | −5.0 | −8.0 |
| 2026-10-22 | −17 | +0.456 | −17 | −1 | 1.0 | 0 | 0.663 | 예 | +16.0 | −18.0 | −34.0 |
B. 모델 입출력 실물
- Request meta
- 행 s = 2026-10-22, 매매일 2026-10-23. 2013 ~ 2025 카드 날 1,244일로 학습한 2026 년 모델
- Input
- g_us = −17bp(미국 금리 급락, 카드는 3선 매도), ε = +0.456%(원화 약세, 미국 금리와 엇갈려 R1 가중 1계약). 특징 20개를 학습 구간 기준으로 표준화
- Model response
- p̂ = 0.663 > 0.6 → 카드가 질 것으로 보고 방향을 뒤집어 3선 1계약 매수
- Ground truth check
- 3선 e 장중 −17틱. 카드(매도)는 +17틱(비용 뒤 +16)으로 이겼고 뒤집은 매수는 −18틱. 이날 하나로 기준선 대비 −34틱
C. 실험 설정
- 카드|g_us| ≥ 3bp, 다음 달력일 세션, 만기 교체 날 제외, 시가 진입 종가 청산, R1 가중(엇갈림 1, 일치 0.5)
- 라벨gross < −1틱
- 모델로지스틱 회귀 L2 C = 1, max_iter 500, 특징 20개 표준화(결측 0), 연도 확장 창, 첫 예측 2016
- 뒤집기p̂ > 0.6 이면 w → −w
- 분할발견 2013-01 ~ 2022-12, 확인 2023-01 ~ 2026-10
- 검정같은 날 일별 차이 평균 > 0, 월 블록 부트스트랩 5,000회(seed 66), 비용 1틱, Holm 63개
- 탐색E1 뒤집은 날 손익, E2 문턱 0.5, 0.7