가설과 결론
- 가설
- «인상기냐 인하기냐에 따라 미국 변동의 기준값이 달라야 하고, 변곡점에서는 예측력이 떨어진다. 같은 국면의 자료끼리 통계를 내야 한다. 외국인 순매수도 강하게 작용하고, 한은이 한 번 올리고 멈출 것 같은 기대도 반영돼야 한다»(2026-10-13 사용자). 이 정보를 아침에 알 수 있는 태그로 만들어 넣으면 되돌림 카드가 걷기 전진에서 지금 규칙을 이긴다(H146).
- 결론
- 국면마다 평균은 다르다. 그러나 그 차이를 써서 거래할 날을 고르면 걷기 전진에서 지금 규칙보다 나빠진다. 2016~2020 년에는 인하기가, 2021~2026 년에는 인상기가 좋았고, «인상기가 좋다» 는 대부분 2022 년 한 해에서 나온다. 두 시기 모두 같은 쪽이던 것은 «외국인 5일 동행 > 역행» 과 «인상 기대 강화» 뿐이다. 그래서 태그는 일일 카드 학습에 붙여 매일 다시 추정하되, 0 쪽 수축과 90% 관문을 넘을 때만 판정에 쓴다. 국면별 임계와 크기는 두지 않는다.
| 번호 | 가설 | 판정 | 근거 |
|---|---|---|---|
| H146 | 국면·수급·기대 태그를 아침 정보로 넣은 모델이 걷기 전진에서 지금 규칙(M0)을 이긴다 — 같은 세션 일별 손익의 쌍 차이 > 0 | 기각 | M3 − M0 세션당 −0.52틱(t −3.81, 20세션 블록 부트스트랩 p < 0.001). M2 −0.42(t −3.18), M1 −0.21(t −2.64). 카드 학습 규칙으로는 차이 0 |
용어와 기호
- 3선 · 틱
- 한국거래소 3년 국채선물. 틱은 가격의 최소 단위 0.01. 손익은 1계약 기준 틱으로 적는다.
- 세션 t · s
- t 는 카드를 내는 한국 거래일, s 는 그 직전 한국 거래일.
- Δ
- 밤사이 미국 10년 금리 변화(bp). 세션 t 개장 전 마지막 뉴욕 종가와 s 개장 전 마지막 뉴욕 종가의 차. 단일 영업일일 때만 규칙이 거래한다.
- 되돌림 규칙
- |Δ| ≥ 3bp 이면 Δ 반대 방향(Δ > 0 이면 매수)으로 시가에 진입해 종가에 청산한다. 손절 20틱(닿으면 −21틱). 주말과 연휴 뒤, 금통위, 커브 뒤틀림, 미국 휴장, 여러 날 Δ 는 쉰다(카드 필터).
- 단위 · 사다리
- |Δ| 3~6bp 1단위(17계약), 6~10bp 2단위(33), 10bp 이상 3단위(50). 손익 합은 «틱 × 단위».
- y
- 세션 순손익 = p − 1틱(왕복 비용). p 는 위 규칙의 1계약 손익.
- 후보
- 카드 필터를 통과하고 |Δ| ≥ 2bp 인 세션. 2~3bp 는 모델이 임계 아래에서도 고를 수 있게 넣었다.
- 태그
- 세션 t 아침(07:30)에 알 수 있는 0/1 상황 표시. 표 3 이 전부다.
- β · τ
- β 는 회귀 계수(틱), τ 는 β 의 사전 표준편차다. 작을수록 0 쪽으로 세게 누른다.
- 수축 사후 · 90% 관문
- 카드 학습(daily_learn)의 태그 효과 = 같은 크기 평균 대비 잔차를 의사 관측 64건만큼 0 쪽으로 당긴 가중 평균. 90% 구간이 0 을 벗어나야 판정에 쓴다.
자료
| 자료 | 원천 | 기간 | 해상도 | 쓰임 |
|---|---|---|---|---|
| 3선 일봉·규칙 관측표 | 카드 학습 관측표 cards/learn_obs.csv(카드와 같은 필터·손절) | 2013-01-03~2026-09-18 | 일 | y, Δ, 기존 태그, 후보 1,492행 |
| 기준금리 | 07_정책단기금리/기준금리.csv 한국·미국 | 2012-12~ | 일 | 연준·한은 국면, 전환 초기 |
| 미국 2년 금리 | 저장소 일별 풀 미국_2Y | 2010~ | 일 | 2년 추세, 정책↔2년 반대 |
| 통안 1년 | 일별 풀 통안_1Y | 2010~ | 일 | 한은 경로 기대 = 통안 1년 − 기준금리 |
| 3선 외국인 순매수 | 선물일봉_투자자수량_3선.csv 외국인합 | 2012-01~ | 일(계약) | 수급 동행/역행 |
| 묶음 | 태그 | 정의 |
|---|---|---|
| 국면 | 연준·한은 인상기/인하기/동결기 | t 전 마지막 기준금리 변경 방향, 그 변경이 270일보다 오래면 동결기 |
| 국면 | 연준·한은 전환 초기 | 새 방향 첫 변경 뒤 180일 안 |
| 시장 | 미 2년 상승/하락 추세 | s 까지 60세션 변화 > +25bp / < −25bp |
| 시장 | 연준·한은 방향 ↔ 미 2년 반대 | 정책 방향과 2년 추세가 반대(동결기면 추세가 있을 때) — 변곡점 직전의 아침 대용치 |
| 기대 | 한은 인상/인하 기대 | 통안 1년 − 기준금리 > +15bp / < −15bp |
| 기대 | 인상기·인상 멈춤 기대 | 한은 인상기인데 위 값 ≤ +5bp |
| 기대 | 인상/인하 기대 강화 | 위 값의 20세션 변화 > +15 / < −15bp |
| 수급 | 외국인 5일 동행/역행 | 5세션 순매수 합 ÷ 직전 250세션 표준편차 = z, |z| ≥ 0.5 이고 부호가 되돌림 방향과 같으면 동행 |
| 수급 | 외국인 전일 동행/역행 | s 하루 순매수의 z, |z| ≥ 1 |
| 기존 | FOMC·미 고용·미 CPI 밤, 고변동·저변동 예상, 전일 추세일, 만기 주간 | 일일 카드가 이미 쓰던 태그 |
미래 정보 점검. tests/test_context_feats.py 가 s 뒤의 미 2년, 통안 1년, 외국인 수급을 크게 바꿔도
세션 t 의 태그가 그대로인지, 기준금리 변경 당일 아침에는 아직 그 변경을 모르는지 확인한다.
분할과 평가 방법
- 평가 대상2016-01-04~2026-09-18 후보 1,168 세션(그중 규칙 거래일 912, 2~3bp 256)
- 손익모델이 거래로 고른 세션의 y × 단위, 안 고른 세션 0
- 비교같은 세션의 (모델 손익 − M0 손익) 평균, 그 t, 20세션 블록 부트스트랩 4,000회의 한쪽 p. 사전에 정한 비교는 이 하나다
모델
| 이름 | 무엇을 하나 | 특징 | 결정 |
|---|---|---|---|
| M0 지금 규칙 | 학습 없음 | — | |Δ| ≥ 3bp 이면 거래 |
| M1 기존 태그 | 가중 베이즈 능형 회귀 y = Xβ. β ~ N(0, τ²), 관측 잡음 σ = 10틱, 관측 가중 0.5^(나이/500). 사후 평균 β = (XᵀWX/σ² + diag(1/τ²))⁻¹ XᵀWy/σ² | |Δ| 구간 5개(τ 5) + 기존 태그 7개(τ 1.25) | 예측 ŷ > 0 이면 거래, 크기는 |Δ| 사다리 |
| M2 + 국면 | M1 + 국면·시장 10개 + 큰 Δ(≥10bp)×연준·한은 인상/인하 4개(τ 1.25) | ||
| M3 + 국면·수급·기대 | M2 + 수급 4개 + 기대 5개(τ 1.25) | ||
| 카드 A / B | 일일 카드의 학습 규칙 그대로: 태그별 수축 평균(의사 관측 64), 90% 관문, «크기별 평균 + 유의 태그 효과 < 비용» 이면 접기, 크기 초과 오차 ±0.5 면 사다리 한 칸 | A 기존 태그 · B 기존 + 새 태그 21개 | M0 거래일 912 중 접기·크기 변경 |
τ 1.25틱은 카드 학습의 «의사 관측 64건» 과 같은 세기다(잔차 표준편차 약 10틱 ÷ √64). 회귀로 태그를 함께 적합하면 서로 겹치는 태그(연준 인상기, 한은 인상기, 2년 상승)를 이중으로 세지 않는다. 카드 규칙(A/B)은 태그를 하나씩 따로 추정하므로 둘을 다 봤다.
results/walk.csv 의 같은 블록 예측과 1e-9 안에서 같은지 확인했다.
결과 1 · 전체 표본의 국면 차이
전체 표본으로 보면 인상기(연준 +2.4, 한은 +3.1틱)가 인하기(+1.5, +1.7)나 동결기(+1.2, +0.6)보다 좋고, 인상 기대가 강해지는 날(+4.0)과 외국인이 같은 쪽으로 사는 날(+2.1)이 좋아 보인다. 외국인이 전일 반대로 판 날은 +0.6 으로 가장 약하다. 처음 물음이 기대한 모양이다.
결과 2 · 걷기 전진
| 모델 | 거래 | 합계 | 거래당 | t | 이긴 날 | 2023~ | 최대 낙폭 | M0 대비 세션당(t, p) |
|---|---|---|---|---|---|---|---|---|
| M0 지금 규칙 | 912 | 3,285 | 3.60 | 4.74 | 53.4% | 1,018 | 188 | — |
| M1 기존 태그 | 907 | 3,036 | 3.35 | 4.38 | 53.0% | 974 | 221 | −0.21 (−2.64, 0.0005) |
| M2 + 국면 | 883 | 2,791 | 3.16 | 4.05 | 52.3% | 788 | 262 | −0.42 (−3.18, < 0.001) |
| M3 + 국면·수급·기대 | 876 | 2,684 | 3.06 | 3.91 | 52.3% | 674 | 263 | −0.52 (−3.81, < 0.001) |
크기로만 쓰면. M0 의 912 거래는 그대로 두고 단위를 max(ŷ, 0) 에 비례하게(총 단위는 같게) 나누면 M3 3,726 대 사다리 3,285 로 13% 높았다. 그러나 쌍 차이 t 0.89 로 유의하지 않고, 2023 년 이후만 보면 938 대 1,018 로 낮았다. ŷ 와 실제 손익의 순위 상관은 0.06 이다(탐색이며 사전 비교가 아니다).
결과 3 · 시기마다 뒤집히는 효과
연준 인상기는 +0.97 → +3.81, 인하기는 +2.38 → +0.81 로 순서가 바뀐다. 한은도 같다(+0.59 → +4.03 대 +2.04 → +1.07). 앞 시기에 배운 «인하기가 낫다» 를 뒤 시기에 쓰면 틀리고, 그 반대도 같다. 걷기 전진이 진 이유다. 뒤 시기의 인상기 우위는 2022 년(규칙 합계 +1,370, 평가 구간 전체의 42%)에 크게 기대 있다. 두 시기 모두 같은 쪽이던 것은 외국인 5일 동행(+1.02, +3.53) > 역행(+0.79, +0.84)과 인상 기대 강화(+3.82, +4.25)다.
변곡점. 금리 방향이 바뀌기 전 6개월(사후에만 아는 구간)의 규칙 거래는 연준 기준 +0.6틱(t 0.8), 한은 기준 +0.1틱(t 0.2)으로 우위가 거의 없었다
(code/split.py, FRED 연준 목표금리 상단과 금통위 결정으로 잰 탐색). 아침 대용치 «정책 ↔ 2년 반대» 는 그 구간 172세션 중 120세션을 잡았지만 그날들의 평균도
+0.7~1.3틱으로 플러스라 접으면 손해였다.
결과 4 · 카드 학습 규칙 그대로
카드가 실제로 쓰는 규칙(code/wf_card.py)으로 같은 걷기 전진을 돌렸다. 기존 태그만(A)과 새 태그 21개 추가(B) 모두 접기 0건, 크기 변경 0건, 합계 3,285 로 M0 와 같았다.
관문을 넘은 새 태그는 «미 2년 상승 추세»(94세션)와 «인상 기대 강화»(17세션)뿐이고 둘 다 효과가 플러스라 접지 않았다. 수축과 관문이 결정을 지킨 셈이다. 그래서 태그를 카드에 붙였다.
results/learn_state_20261013.json). 점 = 수축 사후, 선 = 90% 구간. 0 을 벗어난 것이 없어 오늘 카드에는 «참고» 로만 나온다.한계와 다음
- 국면 태그는 기준금리 변경 방향이라 «인상 사이클의 끝» 같은 사람의 견해를 담지 못한다. 시장이 반영한 기대(통안 1년 − 기준금리)로 대신했다.
- 3선 외국인 일별 수급 파일은 수집이 하루 이틀 늦을 수 있다(2026-10-13 아침 마지막 10-08). 늦으면 그 전 값으로 태그가 붙는다.
- 전체 표본 나눔(결과 1)과 크기 조절, 변곡점 점검은 탐색이다. 판정은 사전에 정한 M0 대비 쌍 비교 하나로 했다.
- 2016~2026 은 인상과 인하 사이클이 두세 번뿐이라 국면 효과를 배우기에 표본이 작다. 카드 학습에 붙인 태그는 사이클이 쌓이면 스스로 관문을 넘을 수 있다. 매일 다시 추정한다.
산출물
- 분석과 판정
analysis.md - 태그
experiments/0018_daily_ktb3_reco/code/context_feats.py,tests/test_context_feats.py - 걷기 전진
code/wf.py→results/candidates.csv,results/walk.csv,results/summary.json,results/betas_last.json - 카드 규칙 A/B
code/wf_card.py→results/walk_card.csv,results/summary_card.json - 전체 표본 나눔(탐색)
code/split.py - 그림과 모델
code/render.py→paper/assets/,results/final_models.json
Appendix
A. 데이터셋 실물(results/candidates.csv 마지막 세 행)
| session | reason | d_used | cf_dir | u_rule | gap | oc | range | p | tags | ctx | y | units |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-09-15 | below | 2.2 | 1 | 0 | -47.0 | -22.0 | 29.0 | -21.0 | expiry | rg_fed_hold rg_bok_up rg_bok_turn rg_us2_up rg_fed_opp ex_hike fx5_against fx1_against | -22.0 | 1 |
| 2026-09-17 | below | 2.2 | 1 | 0 | -15.0 | 17.0 | 19.0 | 17.0 | fomc prevtrend | rg_fed_hold rg_bok_up rg_bok_turn rg_us2_up rg_fed_opp ex_hike fx5_against | 16.0 | 1 |
| 2026-09-18 | ok | -9.0 | -1 | 2 | 11.0 | -3.0 | 14.0 | 3.0 | prevtrend | rg_fed_up rg_bok_up rg_fed_turn rg_bok_turn rg_us2_up ex_hike fx5_with | 2.0 | 2 |
B. 모델 입출력 실물(2026-09-18, 평가 구간 마지막 세션)
- Request meta
- 세션 2026-09-18, 블록 59/59(학습 1,484행, 2013-01-03~2026-08-19). 07:30 결정, 08:45 시가 진입, 15:45 종가 청산.
- Input
Δ -9.0bp → 되돌림 매도 · |Δ| 구간 6~10bp · tags=[prevtrend] · ctx=[rg_fed_up rg_bok_up rg_fed_turn rg_bok_turn rg_us2_up ex_hike fx5_with]- Model response
- M3: ŷ = |Δ| 6~10bp +0.717 + 전일 추세일 -0.014 + 연준 인상기 +0.277 + 연준 전환 초기 -0.023 + 한은 인상기 +0.634 + 한은 전환 초기 -0.227 + 미 2년 상승 추세 +0.586 + 외국인 5일 동행 +0.718 + 한은 인상 기대 +0.458 = +3.125틱 → 거래(2단위). M1 +1.481, M2 +2.390, M0 거래
- Ground truth check
- 실제 p = +3.0틱, y = +2.0틱 → 네 모델 모두 거래했고 같은 손익 +4.0(틱×단위). 이날은 모델 사이 차이가 없다.
C. 실험 설정
- 후보learn_obs 의 reason ∈ {ok, below}, |Δ| ≥ 2bp, p 있음, 반사실 방향 ≠ 0, 과거(src=hist) 행만
- 목표y = p − 1틱, p = 시가 진입, 종가 청산 1계약 손익, 손절 20틱(닿으면 −21)
- 구간 더미|Δ| [2,3) [3,4) [4,6) [6,10) [10,∞) bp, τ 5틱
- 태그 사전τ 1.25틱, σ 10틱
- 가중0.5^(나이/500), 나이 = 과거로 몇 번째 후보
- 재적합평가 2016-01-01 부터 20세션 블록 59개, 학습 = 블록 첫 세션 전 후보 전부
- 결정ŷ > 0 이면 거래, 단위 = |Δ| 사다리(2~3bp 도 1단위)
- 부트스트랩20세션 블록, 4,000회, seed 0, 한쪽
- 카드 규칙K_DIR 64, K_SIZE_TAG 64, Z90 1.645, 비용 1틱, SIZE_STEP 0.5, 반감기 500
- 태그 문턱동결 270일, 전환 초기 180일, 2년 추세 60세션 ±25bp, 기대 ±15bp, 멈춤 ≤ +5bp, 기대 변화 20세션 ±15bp, 수급 z 250세션, 5일 |z| ≥ 0.5, 전일 |z| ≥ 1