3년 국채선물 · 동시호가 방향

안 쓰던 표를 동시호가 방향에 붙이면

덤프에 있으면서 지금까지 어떤 실험도 값으로 읽지 않은 표 다섯 블록을 골라, 이 저장소의 한 가지 종속변수인 15:34 컷오프 동시호가 방향의 예측에 더했다. 모델 격자는 앞선 실험의 것을 그대로 두고 피처만 움직였다. 다섯 가설 모두 기준 축을 넘지 못했고, 20분 모멘텀 규칙도 열한 티어 중 하나도 넘지 못했다.

폐기 · 가설 5개 전부 미지지 시험 1,497일 / 535일 티어 11 × 모델 18 × 시드 3 런 1회 (정본)

세 줄 요약

  1. 단기자금 금리를 더한 티어가 58.18%(기준 57.72%)로 유일하게 부호가 양수이지만 그 차이(+0.47%p)는 시드 흔들림 문턱(2.78%p)의 6분의 1이고 짝지은 McNemar p=0.4999 다.
  2. 입찰 결과, 야간 해외금리, 전일 현선갭, 대차/외국인은 모두 기준보다 낮았다.
  3. 이 저장소가 20분 모멘텀 규칙을 넘지 못한 것은 트리, 앙상블, 신경망, 사전학습 트랜스포머에 이어 이번이 다섯 번째다.

무엇을 물었나

앞선 실험들은 같은 피처 스토어를 돌려 쓰며 모델만 바꿨다. 이 실험은 피처만 바꾼다. 라벨, 유효일, 기준선, 모델 격자를 전부 고정하고, 지금까지 값으로 쓰지 않은 표 다섯 블록을 하나씩 더해 «무엇을 더했을 때 나아지나» 만 본다.

H29 · n1_
야간 해외금리(미국채 현물과 선물, 나스닥)가 그날 동시호가 방향을 돕는다. 밤새 미국 금리가 움직이면 그 몫이 장중에 다 반영되지 않고 마감 동시호가까지 남는다.
H30 · n2_
국고채 입찰 결과(응찰율, 테일, 서프라이즈)가 돕는다. 입찰 수요가 강한 날은 종가까지 매수 우위가 이어진다.
H31 · n3_
종목 대차잔량과 외국인 잔고의 전일 수준과 변화가 돕는다. 대차(숏 프록시)와 외국인 보유 변화가 마감 수급 압력의 선행 지표다.
H32 · n4_
단기자금 스프레드(CD, 콜, KOFR)가 돕는다. 자금이 조이면 캐리 포지션 청산이 마감에 몰린다.
H33 · n5_
전일 마감 현선 괴리 잔차가 돕는다. 전일 마감에서 못 메운 현선 괴리가 다음 날 마감 동시호가에서 정리된다.

기호: 틱 = 국채선물 호가 한 칸(0.01). ref_tick = 15:34 컷오프 가격 대비 15:45 동시호가 종가의 틱 차이이며 라벨은 그 부호다. bp = 0.01%p. 정직 선택 = 시험연도 이전 성적만 보고 모델을 고르는 것. 사후 최고 = 시험연도를 다 보고 고른 값(성능으로 주장하지 않는다).

데이터셋

라벨과 기준 피처는 앞선 실험의 캐시를 그대로 읽었다(3년 국채선물 근월 1분봉에서 만든 대회 라벨, 유효일 1,847일). 새로 더한 것은 아래 다섯 블록 93열 이다.

새 블록 다섯. 「관측 시각」은 그 값이 언제 이미 알려져 있는가이고, 전부 컷오프(15:34)보다 앞이다.
블록원천 표무엇을 넣나 열관측 시각값 있는 날
n1_ 야간 해외금리 ust_intra · ustfut_intra · nasdaq_intra 미국채 2·5·10년 금리 변화(저녁·뉴욕·새벽·전체), 변동성·레인지·기울기, 미국채선물 2·10·30년, 나스닥 수익률 19전일 15:45 ~ 당일 08:452021년~
n2_ 입찰 결과국채_입찰 응찰율(가중·최소), 부분낙찰율, 테일(응찰금리상−낙찰금리), 밴드, 낙찰금리−전일 커브(서프라이즈), 발행규모·낙찰비율, 만기 더미, 경과일 19당일 10:40 공표 뒤전 구간
n3_ 대차·외국인 국고통_당일대차잔량 · 국고통_외국인_잔고수량 · 국고통_상장잔액 · 국고통_듀레이션 국고채 전체·3년 구간·10년 구간의 대차잔량/상장잔액, 외국인잔고/상장잔액과 각각의 1·5·20일 변화 28T-1 원장전 구간
n4_ 단기자금 단기금리 · 기준금리 · 지준일_자체 CD3개월·콜·KOFR·통안1년의 기준금리 대비 스프레드와 1·5일 변화, CD−콜, 지준일·월말 더미 15T-1 고시(달력 더미만 당일)전 구간
n5_ 전일 현선갭마감_현선갭 전일 마감 현선 괴리 잔차(전체·중앙값·표준편차·테너별 3선/10선/30선), 장내 마지막 체결 지연, 5일 평균 12T-1 장 마감 산출2022년~

왜 대부분 T-1 인가. 표마다 당일 값이 몇 시에 서는지 보장할 수 없다(KOFR 는 다음 날 오전에 확정된다). 컷오프 안쪽임을 증명할 수 없는 값은 아예 쓰지 않았다. 누설 카나리아(피처 하나의 부호만으로 승률 62% 초과) 는 새 블록 93열에서 0건이다.

블록별 값이 있는 날의 비율
블록마다 시작 연도가 다르다. 그래서 창을 두 가족으로 갈랐다. 없는 해를 중앙값으로 메우면 «그 블록이 없던 해» 가 «중앙값이던 해» 로 둔갑하고, 그 상태로 잰 차이는 블록의 값이 아니다.

채점과 분할

라벨은 sign(ref_tick) 이고 유효일 규칙은 앞선 실험과 같다 (note 없음 ∧ ref_tick ≠ 0). 채점과 기준선 함수도 그대로 물려받았다. 기준선은 적응 상수(후행 120일 다수 방향), 규칙20(마감 전 20분 모멘텀의 부호), 무작위다. 워크포워드는 확장창이고, 시험연도 Y 의 학습과 모델 선택이 모두 Y 이전만 본다.

확장창 워크포워드 폴드
왼쪽이 긴 창(학습 2017~, 시험 2019~2026년 1,497일), 오른쪽이 짧은 창(학습 2022~, 시험 2024~2026년 535일)이다. 막대 안 숫자는 그 폴드가 쓴 행 수다.
사전등록 판정 문턱(protocol.md §5). 가설은 셋을 모두 넘어야 «지지» 이고, 실험 전체의 배포 관문은 따로다.
무엇문턱
가설 (블록 추가)① 기준 티어보다 높다 ② 같은 날을 짝지은 McNemar p<0.05 ③ 차이 > 시드 흔들림 × 2
배포 관문 (실험 판정)20분 모멘텀 규칙을 유의하게 넘는 티어가 하나라도 있어야 «채택»

모델

모델 격자는 앞선 실험의 18종을 그대로 썼다. 이 실험이 움직이는 축은 피처 하나이고, 모델 축을 같이 열면 무엇이 차이를 만들었는지 갈리지 않는다. 아래 표와 구조도는 모두 학습된 객체에서 그렸고, 그리기 전에 그 모델이 정본 런에 커밋된 확률을 소수점 아래 아홉째 자리까지 다시 내는지 확인했다 (18종 전부 통과, 시험 2026년 148일).

모델 열여덟 종 — 무엇을 학습하는 모델인가

아래 그림은 모두 같은 자리에서 그렸다: 티어 A_all(피처 129개), 학습 2017~2025년 1,693행, 시험 2026년. 모식도가 아니라 학습이 끝난 모델 객체에서 읽은 값이고, 그리기 전에 그 모델이 정본 런에 커밋된 확률을 소수점 아래 아홉째 자리까지 다시 내는지 확인한다.

모델 열여덟 종 — 계열, 무엇을 학습하나, 왜 넣었나.
이름계열무엇을 학습하나왜 넣었나
et
ExtraTrees — 극단적 무작위 트리
배깅트리트리 400그루를 키우되 분기 지점을 무작위로 뽑아 고른다. 무작위성이 커서 트리끼리 덜 닮고, 평균이 더 매끄럽다.0003 에서 가장 좋았던 계열이라 기준점으로 넣었다.
rf
RandomForest — 무작위 숲
배깅트리트리 400그루를 부트스트랩 표본으로 키우고, 분기마다 피처를 √(피처 수)개만 후보로 본다. 최적 분기를 그 후보 안에서 고른다.ExtraTrees 와 같은 배깅 계열인데 분기를 무작위가 아니라 최적으로 고른다 — 그 차이가 성적에 나타나는지 본다.
bag
Bagging — 배깅한 결정트리
배깅트리깊이 6 결정트리 200그루를 부트스트랩 표본과 피처 70% 로 키워 평균낸다. 무작위 숲에서 '분기 후보 제한' 만 뺀 것이다.배깅의 효과와 피처 무작위화의 효과를 갈라 보려고 넣었다.
lgb
LightGBM — 히스토그램 그래디언트 부스팅
부스팅피처를 미리 구간으로 묶어 빠르게 트리 400그루를 순서대로 키운다. 잎 수(15)로 복잡도를 제한한다.실무에서 표 데이터의 기본값으로 쓰이는 모델이다.
xgb
XGBoost — 정규화 그래디언트 부스팅
부스팅LightGBM 과 같은 부스팅인데 트리를 깊이 우선으로 키우고 손실에 정규화 항을 직접 넣는다.같은 부스팅이라도 구현이 다르면 성적이 갈리는지 본다.
hgb
HistGradientBoosting — scikit-learn 히스토그램 부스팅
부스팅LightGBM 과 같은 계열의 scikit-learn 구현. 피처를 256구간으로 묶고 400회 반복한다.부스팅 구현 셋을 같은 자리에서 맞대기 위해 넣었다.
gbdt
GradientBoosting — 고전 그래디언트 부스팅
부스팅구간으로 묶지 않고 원래 값에서 최적 분기를 찾는다. 느리지만 히스토그램 근사가 없는 기준선이다.히스토그램 근사가 성적을 깎는지 재려고 넣었다.
ada
AdaBoost — 적응 부스팅
부스팅깊이 2 짜리 아주 얕은 트리(그루터기)를 300개 이어 붙이되, 앞에서 틀린 표본의 가중치를 올려 다음 트리를 키운다.부스팅의 가장 오래된 형태 — 잔차가 아니라 표본 가중치로 배우는 방식이 여기서도 통하는지 본다.
dt
DecisionTree — 결정트리 한 그루
단일트리깊이 4, 잎 최소 40일. 조건을 따라 내려가면 예측이 나온다.앙상블이 트리 하나보다 얼마나 나은지 재는 바닥이다.
svm_rbf
SVM(RBF) — 방사기저함수 서포트벡터머신
커널·거리두 반을 가르는 경계를 가장 넓은 여백으로 긋는다. RBF 커널로 굽은 경계도 그을 수 있다.트리와 전혀 다른 방식으로 경계를 만드는 계열이다.
svm_lin
SVM(선형) — 선형 서포트벡터머신 + 확률 보정
커널·거리직선(초평면)으로 가르되 여백을 최대화한다. 확률은 교차검증 보정(Platt)으로 따로 만든다.같은 SVM 에서 커널만 뺀 대조다.
knn
k-최근접 이웃 (k=75)
커널·거리학습을 하지 않는다 — 표를 통째로 기억했다가, 예측할 때 가장 가까운 75일을 찾아 그날들의 방향을 거리로 가중해 투표한다.'비슷한 날은 비슷하게 끝난다'는 가정만으로 어디까지 가는지 본다.
log
LogisticRegression — 로지스틱 회귀
선형·확률피처의 가중합을 로지스틱 함수로 눌러 확률을 낸다. C=0.1 로 계수를 강하게 규제했다.분류 확률의 표준 기준선이다.
lin
LinearRegression — 최소제곱 선형회귀
선형·확률확률이 아니라 틱 변화 자체를 회귀하고 부호를 읽는다. 확률은 잔차 표준편차로 눌러 만든 값이라 보정된 확률이 아니다.규제가 전혀 없는 선형 바닥이다.
ridge
Ridge — L2 규제 선형회귀
선형·확률선형회귀에 계수 제곱 벌점(alpha=10)을 더해 계수를 0 쪽으로 민다.피처 115개에 표본 1,693행이면 규제가 필요한지 보려고 넣었다.
enet
ElasticNet — L1+L2 규제 선형회귀
선형·확률L1(계수를 0 으로 죽인다)과 L2 를 섞은 벌점. 피처 선택이 함께 일어난다.피처를 줄이는 쪽이 유리한지 보는 자리다.
gnb
GaussianNB — 가우시안 나이브베이즈
선형·확률피처마다 상승일·하락일의 평균과 분산만 배우고, 피처끼리 서로 독립이라고 가정해 곱한다.가장 단순한 확률 모델 — 독립 가정이 이 데이터에서 얼마나 해로운지 재는 자다.
mlp
MLPClassifier — 다층 퍼셉트론(신경망)
신경망32칸·16칸 은닉층 두 개를 지나 확률을 낸다. 조기 종료로 과적합을 막는다.표본이 작을 때 신경망이 트리 앙상블을 이기는지 본다.

배깅트리 — 여러 결정트리를 서로 다른 표본·피처로 따로 키운 뒤 평균낸다. 트리 하나하나는 과적합하지만 평균이 그 흔들림을 깎는다. 이 실험에서는 et · rf · bag 가 여기 든다.

부스팅 — 트리를 순서대로 키운다. 다음 트리는 앞선 트리들이 아직 틀린 부분만 고치도록 학습한다. 트리 하나는 얕고, 수백 그루가 조금씩 더해져 최종 값이 된다. 이 실험에서는 lgb · xgb · hgb · gbdt · ada 가 여기 든다.

단일트리 — 트리 한 그루. 앙상블이 얼마나 벌어 주는지를 재는 바닥 기준으로 넣었다. 구조가 그대로 읽히는 유일한 모델이다. 이 실험에서는 dt 가 여기 든다.

커널·거리 — 피처 공간에서 가까움을 재서 답한다. 트리처럼 축에 수직인 칸을 자르는 대신, 거리나 커널로 매끄러운 경계를 만든다. 이 실험에서는 svm_rbf · svm_lin · knn 가 여기 든다.

선형·확률 — 피처의 가중합 하나로 답한다. 구조가 가장 단순해서, 비선형 모델이 실제로 무엇을 더 벌었는지 재는 자가 된다. 이 실험에서는 log · lin · ridge · enet · gnb 가 여기 든다.

신경망 — 가중합과 비선형 변환을 층으로 쌓는다. 표본이 하루 1행으로 작아 큰 망은 쓰지 않았다. 이 실험에서는 mlp 가 여기 든다.

ExtraTrees — 극단적 무작위 트리 et

트리 400그루를 키우되 분기 지점을 무작위로 뽑아 고른다. 무작위성이 커서 트리끼리 덜 닮고, 평균이 더 매끄럽다. 0003 에서 가장 좋았던 계열이라 기준점으로 넣었다.

그림 A · 구조 — A_all/et · 시험 2026 (학습 1,693행) 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) ExtraTrees — 극단적 무작위 트리 — A_all/et · 시험 2026 f₁ f₂ f₃ f₄ f₅ ··· f₄₀₀ 위는 이 모델 트리 5그루와 마지막 그루의 실제 위상(점 = 잎) — 실물은 그림 B·C P(상승) = (1/K) Σ treeₖ(x) 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 하이퍼파라미터 — 세팅한 상한과 학습이 실제로 닿은 값 n_estimators = 400 이어 붙이는 트리 개수 — 위 f₁ … 가 이만큼 실제 400그루 max_depth = 6 뿌리(깊이 0)에서 잎까지 분기 최대 6번 — 그림 B·C 의 오른쪽 눈금 실제 깊이 전부 6 · 상한에 닿은 트리 400/400 min_samples_leaf = 20 잎 하나에 표본 20개 미만이면 그 분할을 하지 않는다 실제 가장 작은 잎 n=20 max_features = sqrt 분할마다 피처 129개 중 11개만 후보로 뽑는다 트리끼리 서로 다른 곳을 보게 만든다 그루별 잎 수 분포 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 40 잎 11~40개
트리 400그루 · 실제로 닿은 깊이 6~6 · 잎 11~40개. 세팅의 상한과 학습이 실제로 멈춘 자리를 나란히 둔다.
그림 B · 첫 트리 f₁ 의 실제 분기 깊이 0 · 뿌리 분기 조건 · n 깊이 1 분기 조건 · n 깊이 2 분기 조건 · n 깊이 3 분기 조건 · n 깊이 4 분기 조건 · n 깊이 5 분기 조건 · n 깊이 6 · 잎 분기 없음 max_depth = 6 뿌리→잎 분기 6번까지 이 트리 실제 깊이 6 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 g1p_curve_60m ≤ -16.17 n=1,693 g6_rate_CD3개월_chg5d ≤ 1.158 n=115 n3_d3y_lend_chg20 ≤ 0.0001254 n=82 잎값 +0.6545 n=55 잎값 +0.5926 n=27 잎값 +0.4848 n=33 n2_has_30y ≤ 0.03656 n=1,578 n3_d3y_fo_chg20 ≤ 0.007715 n=1,500 g1p_f10_ret_60m ≤ 9.147 n=1,298 n3_all_fo_chg1 ≤ -0.000976 n=1,111 잎값 +0.7200 n=25 g6_vol_60d ≤ 2.183 n=1,086 잎값 +0.4041 n=641 잎값 +0.4337 n=445 g1p_f10_ret_open ≤ 13.08 n=187 g1_pos_day ≤ 0.4806 n=79 잎값 +0.4762 n=21 잎값 +0.4483 n=58 n3_d10y_fo_chg20 ≤ 0.003227 n=108 잎값 +0.6875 n=64 잎값 +0.4773 n=44 n2_is_auction ≤ 0.1555 n=202 n3_d10y_out_log ≤ 23.21 n=140 g1_ret_30m ≤ -0.7629 n=97 잎값 +0.4318 n=44 잎값 +0.6792 n=53 잎값 +0.4186 n=43 g6_px_chg_20d ≤ -3.579 n=62 잎값 +0.5152 n=33 잎값 +0.4483 n=29 n3_all_fo ≤ 0.1836 n=78 g6_prev_ref_tick ≤ 0.8729 n=43 잎값 +0.2609 n=23 잎값 +0.1500 n=20 잎값 +0.3429 n=35 잎값 ≥ 0 (예측을 위로) 잎값 < 0 (예측을 아래로) n = 그 노드에 떨어진 학습 표본 수 · 조건(≤)이 참이면 왼쪽 가지 '예', 거짓(>)이면 오른쪽 '아니오'
분기 조건·표본 수·잎값을 모델 객체에서 그대로 읽었다. 노드 안 n 은 그 노드를 지난 학습 표본 수다.
그림 C · 마지막 트리 f₄₀₀ 의 실제 분기 깊이 0 · 뿌리 분기 조건 · n 깊이 1 분기 조건 · n 깊이 2 분기 조건 · n 깊이 3 분기 조건 · n 깊이 4 분기 조건 · n 깊이 5 · 접힘 아래를 접었다 max_depth = 6 뿌리→잎 분기 6번까지 이 트리 실제 깊이 6 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 g6_is_roll_week ≤ 0.2015 n=1,693 g6_dow ≤ 1.854 n=1,561 n2_has_30y ≤ 0.7052 n=610 n3_d10y_out_log ≤ 23.14 n=529 g1_vwap_dev ≤ -0.1781 n=258 하위 2잎 n=124 하위 2잎 n=134 n3_d10y_fo ≤ 0.1862 n=271 하위 2잎 n=185 하위 2잎 n=86 n3_all_fo_chg20 ≤ 0.001905 n=81 n2_partial_w ≤ 25.15 n=57 잎값 +0.3500 n=20 잎값 +0.2703 n=37 잎값 +0.2083 n=24 g1_vol_day ≤ 1.097e+05 n=951 g6_days_to_expiry ≤ 79.66 n=457 n4_call_spread_bp ≤ -2.871 n=378 하위 2잎 n=81 하위 2잎 n=297 n4_msb1y_spread_bp_chg1 ≤ 0.162 n=79 잎값 +0.5306 n=49 잎값 +0.6000 n=30 g1_gap_open ≤ 6.431 n=494 n4_cd_spread_bp ≤ 20.6 n=383 하위 2잎 n=226 하위 2잎 n=157 잎값 +0.3063 n=111 g1_ret_60m ≤ 0.7019 n=132 g6_rate_CD3개월 ≤ 2.739 n=86 g6_is_auction_day ≤ 0.002518 n=59 잎값 +0.6538 n=26 잎값 +0.5455 n=33 잎값 +0.4815 n=27 잎값 +0.6957 n=46 잎값 ≥ 0 (예측을 위로) 잎값 < 0 (예측을 아래로) n = 그 노드에 떨어진 학습 표본 수 · 조건(≤)이 참이면 왼쪽 가지 '예', 거짓(>)이면 오른쪽 '아니오' · 잎이 많아 깊이 5 아래를 접었다(이 트리 전체 깊이 6 · 잎 26개)
마지막 트리 — 부스팅이면 잔차를 마지막으로 다듬는 트리이고, 배깅이면 다른 무작위 표본으로 키운 또 한 그루다.
그림 D · 400그루 전체의 깊이×피처 분기 수
분기 위치 \ 피처g6_is_auction_dayg1_pos_60mg1_pos_dayg1_pos_20mn2_is_auctiong6_is_roll_weekg6_dowg6_prev_upg6_domg6_rate_CALL1일한은g6_days_to_expiryn3_all_fon3_d10y_out_logn2_has_30yg6_prev5_upg6_rate_CD3개월n3_all_out_logn3_n_codesn3_d3y_out_logg6_rate_통안1년g1p_curve_20mn3_d10y_lendg6_baserate_120dg6_vol_60dn3_d3y_fog1p_f10_ret_20mg1_ma_dev_20mg6_dflow_증권선물순매수수량g1_ma_dev_60mg6_dflow_개인순매수수량g1p_f10_ret_openg1_ret_30mg6_dflow_은행순매수수량n3_d10y_fog1_ret_1mg6_baserate_60dg6_vol_20dg1_vwap_devn3_all_lendg1_ret_10mg1_ret_120mg1p_f10_ret_5mg6_baserate_20dg6_px_chg_20dn3_d3y_lendg1_ret_20mg1_ret_60mg1p_f10_ret_60mg6_baserate_250dg6_dflow_외국인합순매수수량n2_partial_wg1p_curve_60mg6_prev_ref_tickn3_all_fo_chg20n2_days_sinceg1_rng_60mg6_prev_d_tickn2_n_auctiong6_dflow_보험순매수수량n3_all_lend_chg20n3_d3y_fo_chg20n4_cd_minus_call_bpg6_px_chg_60dg1_ret_openg1_vol_last30_shareg1_ret_5mg6_prev_abs_ref_tickg6_is_auction_3yg1_oi_chg_60mg1_vol_dayn2_has_5yn3_d3y_lend_chg20g1_oi_chg_dayg1_rng_20mn4_msb1y_spread_bpn2_size_jon3_all_fo_chg5g1_rng_dayg6_px_chg_5dg6_dflow_투신순매수수량n3_d10y_lend_chg20n4_cd_spread_bpn4_kofr_spread_bp_chg5n4_kofr_spread_bpg1_vol_last5_sharen2_has_3yn2_has_20yn3_all_lend_chg5n3_d10y_fo_chg20n4_call_spread_bp_chg5g1_gap_openn2_has_10yg6_rate_통안1년_chg5dn3_all_lend_chg1n3_d3y_lend_chg1n4_call_spread_bpn3_d3y_fo_chg5n3_all_fo_chg1n3_d10y_fo_chg5n3_d3y_lend_chg5n2_cover_minn3_d10y_lend_chg5n4_cd_spread_bp_chg5n4_msb1y_spread_bp_chg1n2_cover_wn2_size_vs_outn3_d10y_lend_chg1g6_rate_CALL1일한은_chg5dn4_kofr_spread_bp_chg1g6_is_mpc_dayn4_is_reserven4_cd_spread_bp_chg1g6_is_month_endn3_d3y_fo_chg1n3_d10y_fo_chg1n4_call_spread_bp_chg1n4_msb1y_spread_bp_chg5g6_rate_CD3개월_chg5dn2_has_50yn4_month_endg6_is_quarter_endn2_tail_bp_wn2_band_bp_wn2_surprise_bp_wn2_alloc_ration2_tail_bp_maxg1_n_barsg6_us_event_todayg6_us_event_prev합
깊이 0 (뿌리)2034252220167044432220135309304087261781121241343161729208410001700572504103090510402000200018001121100011031201200100100001000000000000400
깊이 1433136352140891471178307754731098841491011571195855649121545210953754113841228125357165162924521332124483000332423222322003142143111110411400100000771
깊이 238445838313924202491315273112211215131515101314181316919131812891510771714129810910171411101594137111013771381191013551061181312911167733360258363764346225819232123663411013230221000001,284
깊이 35965415132403527343328252219162622232427252224242222232527311018181617201713141911131818151491514159191514513101212141613913981213512101312691210138812108810119857511779661279448669763353143242322201200001,791
깊이 4784856504928435145383033371941293532293126342427292227252719232026262221303021192116221730212120271623221921231820111616111813102217211818171010514207131113141314141091251310121098612111010106392657448113537441211100000002,268
깊이 5715964535323576144464848315443642384038283541323629253514333225273223292525282024272924221618131825121331223219241431232220262216112018182110231119121426181514161619172110111223141771315111110611971051163773325352743220032210002,642
분기 합309281280249206186174168165137134131127126120120119117116114113113110109109108107106104102979489898786868585848483828079787676757372717171706969696868686866626260606059575656555454535251464646464645444441414140393937373735343333322727262524242321191717161414141414131097555410009,156

어느 깊이에서 어느 피처가 몇 번 갈랐나(그루 400개 합).

RandomForest — 무작위 숲 rf

트리 400그루를 부트스트랩 표본으로 키우고, 분기마다 피처를 √(피처 수)개만 후보로 본다. 최적 분기를 그 후보 안에서 고른다. ExtraTrees 와 같은 배깅 계열인데 분기를 무작위가 아니라 최적으로 고른다 — 그 차이가 성적에 나타나는지 본다.

그림 A · 구조 — A_all/rf · 시험 2026 (학습 1,693행) 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) RandomForest — 무작위 숲 — A_all/rf · 시험 2026 f₁ f₂ f₃ f₄ f₅ ··· f₄₀₀ 위는 이 모델 트리 5그루와 마지막 그루의 실제 위상(점 = 잎) — 실물은 그림 B·C P(상승) = (1/K) Σ treeₖ(x) 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 하이퍼파라미터 — 세팅한 상한과 학습이 실제로 닿은 값 n_estimators = 400 이어 붙이는 트리 개수 — 위 f₁ … 가 이만큼 실제 400그루 max_depth = 6 뿌리(깊이 0)에서 잎까지 분기 최대 6번 — 그림 B·C 의 오른쪽 눈금 실제 깊이 전부 6 · 상한에 닿은 트리 400/400 min_samples_leaf = 20 잎 하나에 표본 20개 미만이면 그 분할을 하지 않는다 실제 가장 작은 잎 n=20 max_features = sqrt 분할마다 피처 129개 중 11개만 후보로 뽑는다 트리끼리 서로 다른 곳을 보게 만든다 그루별 잎 수 분포 15 17 19 21 23 25 27 29 31 33 34 잎 15~34개
트리 400그루 · 실제로 닿은 깊이 6~6 · 잎 15~34개. 세팅의 상한과 학습이 실제로 멈춘 자리를 나란히 둔다.
그림 B · 첫 트리 f₁ 의 실제 분기 깊이 0 · 뿌리 분기 조건 · n 깊이 1 분기 조건 · n 깊이 2 분기 조건 · n 깊이 3 분기 조건 · n 깊이 4 분기 조건 · n 깊이 5 · 접힘 아래를 접었다 max_depth = 6 뿌리→잎 분기 6번까지 이 트리 실제 깊이 6 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 g1p_curve_60m ≤ -0.5 n=1,064 g1_pos_day ≤ 0.931 n=486 n3_d3y_lend_chg1 ≤ 9.242e-06 n=415 g1p_f10_ret_open ≤ -5.5 n=295 n3_d3y_fo_chg5 ≤ 0.002231 n=90 하위 2잎 n=70 잎값 +0.5938 n=20 g6_dow ≤ 1.5 n=205 하위 2잎 n=79 하위 2잎 n=126 n3_all_fo_chg5 ≤ 0.0003829 n=120 n3_all_lend_chg5 ≤ 1.961e-05 n=63 하위 2잎 n=42 잎값 +0.2353 n=21 n3_d3y_lend ≤ 0.001132 n=57 잎값 +0.4839 n=21 잎값 +0.1200 n=36 n3_d3y_fo_chg5 ≤ 0.0005325 n=71 n4_cd_minus_call_bp ≤ 19.65 n=40 잎값 +0.9444 n=20 잎값 +0.7500 n=20 잎값 +0.5952 n=31 g1_ma_dev_60m ≤ 1.5 n=578 n4_kofr_spread_bp ≤ -11.8 n=557 잎값 +0.7500 n=23 g1_ma_dev_20m ≤ 0.5 n=534 g6_px_chg_20d ≤ 55.5 n=447 하위 2잎 n=370 하위 2잎 n=77 n3_d10y_fo_chg5 ≤ -0.001031 n=87 잎값 +0.2258 n=20 하위 2잎 n=67 잎값 +0.7500 n=21 잎값 ≥ 0 (예측을 위로) 잎값 < 0 (예측을 아래로) n = 그 노드에 떨어진 학습 표본 수 · 조건(≤)이 참이면 왼쪽 가지 '예', 거짓(>)이면 오른쪽 '아니오' · 잎이 많아 깊이 5 아래를 접었다(이 트리 전체 깊이 6 · 잎 24개)
분기 조건·표본 수·잎값을 모델 객체에서 그대로 읽었다. 노드 안 n 은 그 노드를 지난 학습 표본 수다.
그림 D · 400그루 전체의 깊이×피처 분기 수
분기 위치 \ 피처g1p_f10_ret_openg1p_f10_ret_20mg1_oi_chg_60mg1_oi_chg_dayg1_pos_dayn3_d3y_out_logn4_kofr_spread_bp_chg5n3_d10y_fo_chg5g6_domn3_d3y_fo_chg20g1p_curve_20mn3_all_lend_chg20g1p_f10_ret_60mg1_vol_last5_shareg6_days_to_expiryn3_d10y_fo_chg20n3_all_lend_chg1g1_ret_20mn3_d3y_fo_chg5n3_d3y_fo_chg1g6_dflow_은행순매수수량g1_vol_dayg1p_f10_ret_5mg6_px_chg_20dn4_kofr_spread_bpg6_dflow_개인순매수수량g1_ret_openg1_vol_last30_sharen4_msb1y_spread_bpg1_pos_60mg6_dflow_증권선물순매수수량g6_vol_60dn3_d10y_lend_chg5g1_pos_20mg6_rate_통안1년n3_d10y_lend_chg20g6_vol_20dn3_all_lend_chg5n4_call_spread_bpn3_all_fo_chg1n3_all_fo_chg5n3_d10y_lend_chg1g6_px_chg_60dn3_d3y_fon4_kofr_spread_bp_chg1n3_d3y_lendg1_ret_30mn3_all_lendg6_dflow_투신순매수수량g6_rate_CALL1일한은n3_all_fon3_d10y_lendn4_cd_minus_call_bpn4_msb1y_spread_bp_chg1g1p_curve_60mn3_all_fo_chg20n3_d3y_lend_chg5n3_d3y_lend_chg20g6_dflow_외국인합순매수수량g6_rate_통안1년_chg5dn3_all_out_logg6_px_chg_5dn3_d10y_fo_chg1n3_d10y_out_logn3_d3y_lend_chg1g6_dflow_보험순매수수량g6_rate_CD3개월g1_ma_dev_60mg1_rng_dayg1_ret_60mn4_msb1y_spread_bp_chg5n4_call_spread_bp_chg5n4_cd_spread_bpg1_ret_10mg6_rate_CALL1일한은_chg5dg1_ma_dev_20mg1_rng_60mg6_baserate_250dg6_is_auction_dayg1_gap_openg1_ret_120mn3_d10y_fog6_baserate_120dg1_ret_5mg1_vwap_devg6_down2_surprise_bp_wn4_call_spread_bp_chg1g6_baserate_60dn3_n_codesn2_size_vs_outg1_ret_1mg1_rng_20mg6_baserate_20dn2_days_sincen2_size_jon2_partial_wg6_prev_abs_ref_tickn2_cover_wn2_cover_ming6_prev_ref_tickg6_rate_CD3개월_chg5dg6_prev5_upn2_band_bp_wn4_cd_spread_bp_chg5g6_prev_d_tickn2_tail_bp_wg6_is_roll_weekn2_is_auctionn2_tail_bp_maxg6_prev_upn2_has_30yn4_cd_spread_bp_chg1g6_is_auction_3yn2_n_auctionn2_alloc_ration2_has_5yg1_n_barsg6_is_month_endg6_is_quarter_endg6_is_mpc_dayg6_us_event_todayg6_us_event_prevn2_has_3yn2_has_10yn2_has_20yn2_has_50yn4_is_reserven4_month_end합
깊이 0 (뿌리)2237111933131161230520240010174105001520014200101000001280110111801000100000222017100150132011070112911100131012300000001000100110100000000000000400
깊이 1162320161710561461310115107616348619575109617792191163685664410418427713661134525113373010204112411511763144547159110224764285614523061035150400100000000000000790
깊이 2242124252326231822212219201119101829171226619171414112114141513131211814171613715101214171220112110182017141212191512911915161715916149101713111014310713755871165101236641263168553343433201400020000000000001,410
깊이 34231273528373124283125232323263025172632183125282416261925192521181629182210151330232222212112221922201518201824161819201624232420101610181523221810241210161724617128121391212148101299149957589538242353320100000000000002,006
깊이 4413238343132444831342648263832463919332932251629303324283420282537242234303333353225322426311422211825232226212619212621292222222122261525918191712161120276161717141291511121210881012859155910108562944532100100000000000002,411
깊이 532283836273737453539293024453027321336362740122430372827251826343215253430322731222828342521102639243022252218253827273123283119273717921152723241123819201016182025510201418181081310131236623837588126261200000000000000002,433
분기 합177172148147145145143142133132131131127122122122120118115113112108108107106105104104104103103102102100100100999999989797969696959494939392929292909090908989898888878786868584818078777675717169686766656457575756514948444343424241393432323029272423211918171714121122220000000000009,450

어느 깊이에서 어느 피처가 몇 번 갈랐나(그루 400개 합).

Bagging — 배깅한 결정트리 bag

깊이 6 결정트리 200그루를 부트스트랩 표본과 피처 70% 로 키워 평균낸다. 무작위 숲에서 '분기 후보 제한' 만 뺀 것이다. 배깅의 효과와 피처 무작위화의 효과를 갈라 보려고 넣었다.

그림 A · 구조 — A_all/bag · 시험 2026 (학습 1,693행) 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) Bagging — 배깅한 결정트리 — A_all/bag · 시험 2026 f₁ f₂ f₃ f₄ f₅ ··· f₂₀₀ 위는 이 모델 트리 5그루와 마지막 그루의 실제 위상(점 = 잎) — 실물은 그림 B·C P(상승) = (1/K) Σ treeₖ(x) 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 하이퍼파라미터 — 세팅한 상한과 학습이 실제로 닿은 값 n_estimators = 200 이어 붙이는 트리 개수 — 위 f₁ … 가 이만큼 실제 200그루 max_features = 0.7 분할마다 후보 피처를 일부만 뽑는다 트리끼리 서로 다른 곳을 보게 만든다 그루별 잎 수 분포 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 잎 17~33개
트리 200그루 · 실제로 닿은 깊이 6~6 · 잎 17~33개. 세팅의 상한과 학습이 실제로 멈춘 자리를 나란히 둔다.
그림 B · 첫 트리 f₁ 의 실제 분기 깊이 0 · 뿌리 분기 조건 · n 깊이 1 분기 조건 · n 깊이 2 분기 조건 · n 깊이 3 분기 조건 · n 깊이 4 분기 조건 · n 깊이 5 · 접힘 아래를 접었다 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 g1p_f10_ret_5m ≤ 3.5 n=1,068 g6_rate_통안1년 ≤ -6.968e-05 n=601 n2_days_since ≤ -8.282e-06 n=77 잎값 +0.2667 n=21 n2_cover_min ≤ 1.5 n=56 잎값 +0.4615 n=26 잎값 +0.8333 n=30 g6_is_month_end ≤ -4045 n=524 g6_prev_abs_ref_tick ≤ 2.5 n=48 잎값 +0.8605 n=24 잎값 +0.2571 n=24 n2_cover_min ≤ -6.5 n=476 g6_prev_abs_ref_tick ≤ 5.5 n=64 하위 2잎 n=41 잎값 +0.7500 n=23 g6_rate_CALL1일한은_chg5d ≤ -11.85 n=412 잎값 +0.6061 n=20 하위 2잎 n=392 g6_px_chg_60d ≤ 0.931 n=467 g6_dflow_은행순매수수량 ≤ 4.509e-05 n=398 n2_cover_w ≤ -0.5 n=372 g1_ret_1m ≤ 0.01818 n=93 잎값 +0.6304 n=30 하위 2잎 n=63 g1p_f10_ret_open ≤ 60971 n=279 하위 2잎 n=55 하위 2잎 n=224 잎값 +0.1842 n=26 n2_size_jo ≤ 2.171 n=69 g6_rate_CALL1일한은 ≤ 0.0005432 n=40 잎값 +0.8214 n=20 잎값 +0.4828 n=20 잎값 +0.9091 n=29 잎값 ≥ 0 (예측을 위로) 잎값 < 0 (예측을 아래로) n = 그 노드에 떨어진 학습 표본 수 · 조건(≤)이 참이면 왼쪽 가지 '예', 거짓(>)이면 오른쪽 '아니오' · 잎이 많아 깊이 5 아래를 접었다(이 트리 전체 깊이 6 · 잎 22개)
분기 조건·표본 수·잎값을 모델 객체에서 그대로 읽었다. 노드 안 n 은 그 노드를 지난 학습 표본 수다.
그림 D · 200그루 전체의 깊이×피처 분기 수
분기 위치 \ 피처g1_vwap_devn2_has_5yg1_ret_5mg1_vol_last5_sharen2_cover_wg1_vol_dayg6_rate_CALL1일한은g1p_curve_20mg6_prev_ref_tickg6_prev_abs_ref_tickg6_dflow_개인순매수수량n2_is_auctiong1_ret_120mg1_pos_60mg1_n_barsg1p_curve_60mg6_is_auction_dayg6_dflow_외국인합순매수수량g6_prev_d_tickn2_band_bp_wg1p_f10_ret_60mg6_baserate_20dn2_tail_bp_wn2_has_3yg1_ret_10mg1_ret_20mg1_ret_30mg1_rng_20mg6_baserate_60dg6_px_chg_60dg6_rate_CD3개월_chg5dg6_rate_CALL1일한은_chg5dn2_n_auctionn2_has_50yg1_pos_dayg1_rng_dayg6_is_mpc_dayg6_us_event_todayg1p_f10_ret_openg6_dowg6_is_auction_3yg6_dflow_보험순매수수량n2_size_vs_outn3_all_out_logg1_oi_chg_dayg6_rate_CD3개월n3_d3y_lendg6_dflow_투신순매수수량g1_pos_20mg6_prev_upg1_ret_60mg6_days_to_expiryn2_cover_ming1_ret_1mg1_gap_openg1p_f10_ret_20mg6_prev5_upg6_vol_60dn2_partial_wg1_vol_last30_shareg6_baserate_250dg6_px_chg_20dg6_dflow_증권선물순매수수량g6_rate_통안1년g6_rate_통안1년_chg5dg1_ret_openg6_px_chg_5dg6_domg6_is_month_endn2_days_sinceg1_ma_dev_60mg6_dflow_은행순매수수량g1p_f10_ret_5mg6_baserate_120dn2_tail_bp_maxn3_all_lendg1_ma_dev_20mg1_oi_chg_60mg6_is_quarter_endn3_all_fon2_has_10yn2_has_30yg6_is_roll_weekn2_alloc_ratiog1_rng_60mg6_vol_20dn2_size_jon2_has_20yg6_us_event_prevn2_surprise_bp_wn3_d3y_fon3_d3y_out_logn3_d10y_lendn3_d10y_fon3_d10y_out_logn3_n_codesn3_all_lend_chg1n3_all_lend_chg5n3_all_lend_chg20n3_all_fo_chg1n3_all_fo_chg5n3_all_fo_chg20n3_d3y_lend_chg1n3_d3y_lend_chg5n3_d3y_lend_chg20n3_d3y_fo_chg1n3_d3y_fo_chg5n3_d3y_fo_chg20n3_d10y_lend_chg1n3_d10y_lend_chg5n3_d10y_lend_chg20n3_d10y_fo_chg1n3_d10y_fo_chg5n3_d10y_fo_chg20n4_cd_spread_bpn4_call_spread_bpn4_kofr_spread_bpn4_msb1y_spread_bpn4_cd_minus_call_bpn4_cd_spread_bp_chg1n4_cd_spread_bp_chg5n4_call_spread_bp_chg1n4_call_spread_bp_chg5n4_kofr_spread_bp_chg1n4_kofr_spread_bp_chg5n4_msb1y_spread_bp_chg1n4_msb1y_spread_bp_chg5n4_is_reserven4_month_end합
깊이 0 (뿌리)201222152242254160611211232333061311104222420251323534613231100344133542402221302400111111000000000000000000000000000000000000000200
깊이 177545477332437663684543637323116855824653571158377733364174414214301537227345415254223444542000000000000000000000000000000000000000400
깊이 213131181110821291469846141455119135912108696911138910981058979135768123510489811141087666811871011276435677887866726000000000000000000000000000000000000000731
깊이 31313191411181518141611192112141615141412161715171111814131121121112141471212141410619811111415913111313111381510511129161587410121391099101612137101297134513860000000000000000000000000000000000000001,089
깊이 42319151718192515161717201416211814141322131816191714121819168151614151622161816121310141314981212915137161215121391219206131310141116710131015138131115710121159101011100000000000000000000000000000000000000001,253
깊이 518201824221512181616151213141315101415171410121216112313148178141111151314911181616917121817101912151213131012101317141010161217181496118141691315910111481215111815513140000000000000000000000000000000000000001,219
분기 합7672696969686865636363636262626262626161606060605858585858585858585857575757565656565656555555545353525252515151515151505050505050494949484847474646464645454545444443434242414139390000000000000000000000000000000000000004,892

어느 깊이에서 어느 피처가 몇 번 갈랐나(그루 200개 합).

LightGBM — 히스토그램 그래디언트 부스팅 lgb

피처를 미리 구간으로 묶어 빠르게 트리 400그루를 순서대로 키운다. 잎 수(15)로 복잡도를 제한한다. 실무에서 표 데이터의 기본값으로 쓰이는 모델이다.

그림 A · 구조 — A_all/lgb · 시험 2026 (학습 1,693행) 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) LightGBM — 히스토그램 그래디언트 부스팅 — A_all/lgb · 시험 2026 f₁ f₂ f₃ f₄ f₅ ··· f₄₀₀ 위는 이 모델 트리 5그루와 마지막 그루의 실제 위상(점 = 잎) — 실물은 그림 B·C P(상승) = σ(Σₖ ηf̂ₖ(x)) 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 하이퍼파라미터 — 세팅한 상한과 학습이 실제로 닿은 값 n_estimators = 400 이어 붙이는 트리 개수 — 위 f₁ … 가 이만큼 실제 400그루 max_depth = 4 뿌리(깊이 0)에서 잎까지 분기 최대 4번 — 그림 B·C 의 오른쪽 눈금 실제 깊이 전부 4 · 상한에 닿은 트리 400/400 num_leaves = 15 트리 한 그루의 잎(끝 상자) 최대 개수 실제 잎 5~15개 · 상한에 닿은 트리 3/400 min_data_in_leaf = 40 잎 하나에 학습 표본 40개 미만이면 그 분기를 하지 않는다 실제 가장 작은 잎 n=27 (하한 40 아래 — 근사 검사, 오류 아님) feature_fraction = 0.7 트리마다 피처 129개 중 70%만 무작위로 후보에 올린다 → 그림 D 의 피처별 분기 횟수가 고르게 퍼지는 이유 learning_rate = 0.03 트리 하나가 더하는 값 = 적합값 × 0.03 (아래 잎값에 이미 곱해져 있다) 작을수록 트리 한 그루의 발언권이 작다 그루별 잎 수 분포 5 6 7 8 9 10 11 12 13 14 15 잎 5~15개 · 상한 15
트리 400그루 · 실제로 닿은 깊이 4~4 · 잎 5~15개. 세팅의 상한과 학습이 실제로 멈춘 자리를 나란히 둔다.
그림 B · 첫 트리 f₁ 의 실제 분기 깊이 0 · 뿌리 분기 조건 · n 깊이 1 분기 조건 · n 깊이 2 분기 조건 · n 깊이 3 분기 조건 · n 깊이 4 · 잎 분기 없음 max_depth = 4 뿌리→잎 분기 4번까지 이 트리 실제 깊이 4 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 g1p_f10_ret_20m ≤ 2.5 n=1,381 n2_band_bp_w ≤ 8.226 n=904 n3_d10y_out_log ≤ 23.16 n=199 n2_surprise_bp_w ≤ -1.588 n=145 잎값 -0.2085 n=45 잎값 -0.2376 n=100 잎값 -0.2028 n=54 n3_all_lend ≤ 0.0007437 n=705 잎값 -0.1715 n=54 g6_vol_60d ≤ 2.275 n=651 잎값 -0.2099 n=362 잎값 -0.1935 n=289 g6_dom ≤ 20.5 n=477 g6_dflow_증권선물순매수수량 ≤ -1.475e+05 n=298 n4_kofr_spread_bp_chg5 ≤ 0.1 n=125 잎값 -0.1798 n=69 잎값 -0.2085 n=56 g1_vol_last30_share ≤ 0.09742 n=173 잎값 -0.1881 n=69 잎값 -0.1619 n=104 g6_px_chg_60d ≤ -16.5 n=179 n3_all_lend_chg5 ≤ 1.406e-05 n=101 잎값 -0.1984 n=56 잎값 -0.2258 n=45 잎값 -0.1775 n=78 잎값 ≥ 0 (예측을 위로) 잎값 < 0 (예측을 아래로) n = 그 노드에 떨어진 학습 표본 수 · 조건(≤)이 참이면 왼쪽 가지 '예', 거짓(>)이면 오른쪽 '아니오'
분기 조건·표본 수·잎값을 모델 객체에서 그대로 읽었다. 노드 안 n 은 그 노드를 지난 학습 표본 수다.
그림 D · 400그루 전체의 깊이×피처 분기 수
분기 위치 \ 피처n3_all_lend_chg1n4_kofr_spread_bp_chg5n4_kofr_spread_bp_chg1g1p_f10_ret_openg6_domn3_all_lend_chg20g1_oi_chg_dayn4_msb1y_spread_bp_chg1n3_d3y_fo_chg20g1_oi_chg_60mg6_dflow_은행순매수수량n3_d10y_lend_chg1n3_d10y_fo_chg20g1_vol_dayn3_d3y_lend_chg5g1_vol_last30_shareg6_px_chg_20dg6_px_chg_60dn3_d3y_out_logn4_msb1y_spread_bp_chg5g1_gap_openg1p_f10_ret_20mn4_kofr_spread_bpn3_all_fo_chg1n4_call_spread_bpg1_vol_last5_sharen3_d10y_fo_chg5g6_baserate_120dn3_d3y_lend_chg1g6_dflow_투신순매수수량n3_d10y_lend_chg5g6_rate_CALL1일한은_chg5dg6_prev5_upg6_px_chg_5dg6_rate_통안1년_chg5dg6_days_to_expiryn3_all_fo_chg20n3_d3y_fo_chg1n3_d3y_lendg1_pos_dayg6_dflow_개인순매수수량n2_surprise_bp_wn3_d10y_lend_chg20g1p_f10_ret_60mn3_all_lend_chg5n3_d10y_fo_chg1g1_ret_120mn3_d10y_out_logn3_all_fo_chg5g1p_curve_20mn2_size_vs_outn3_all_lendn3_d3y_fon3_d3y_fo_chg5n4_call_spread_bp_chg1g1_rng_dayg1p_f10_ret_5mn2_cover_ming1_pos_60mg6_dflow_보험순매수수량n3_d3y_lend_chg20n4_cd_minus_call_bpn4_cd_spread_bp_chg5n4_call_spread_bp_chg5g1_ret_10mg1_ret_30mg6_vol_60dg6_dflow_외국인합순매수수량g6_rate_통안1년g1_pos_20mg6_vol_20dg6_dflow_증권선물순매수수량g1_ret_openg6_is_auction_dayg6_rate_CALL1일한은g1_ret_20mg1p_curve_60mg6_baserate_250dn2_band_bp_wg1_ret_1mg1_ret_5mg6_baserate_60dg6_rate_CD3개월n3_d10y_lendn4_msb1y_spread_bpg1_rng_60mg6_baserate_20dn2_has_30yn2_days_sinceg1_vwap_devn2_cover_wg6_prev_ref_tickg1_ret_60mg1_rng_20mg6_prev_d_tickg6_dowg6_rate_CD3개월_chg5dn3_all_fon3_all_out_logn4_cd_spread_bp_chg1n2_size_jon2_has_3yn3_d10y_fog6_prev_abs_ref_tickn2_tail_bp_maxn4_cd_spread_bpn2_partial_wn2_tail_bp_wg1_ma_dev_20mg1_ma_dev_60mn2_n_auctiong6_prev_upn3_n_codesg6_is_roll_weekg1_n_barsg6_is_month_endg6_is_quarter_endg6_is_auction_3yg6_is_mpc_dayg6_us_event_todayg6_us_event_prevn2_is_auctionn2_alloc_ration2_has_5yn2_has_10yn2_has_20yn2_has_50yn4_is_reserven4_month_end합
깊이 0 (뿌리)1566131715344511046839211815146583616351211312132349243262135143203240109148014401153610051040001801031010100202000000001000000000000000000400
깊이 118201622171414149171279157515991679991011121278813161395265649736588567543418564235343373633373441723232423526221142421224112101221001000000000000000697
깊이 234232920171317202022211814171414131715141017151918201210201512158138151512131414610899710787139615126768810666653785116287658463643430324156224352201213111010100000000000000001,039
깊이 3352825202028292327141431291524301524171318102015121317816162312611221721181814151015161214881510881015613912913141251510716139413610662813477113108871836533361544537543542213100000000000000001,325
분기 합102777675717063616058585656535352525252515050504848474746464444424140403939393837373434313030292828272727272727262626252525252525242424242322212120202019191919181716161615141414131212111010101010101010999877665443210000000000000003,461
손실 감소(gain) 몫3.0%2.4%2.2%2.9%2.3%1.9%1.9%1.7%1.5%1.8%1.6%1.6%1.7%1.4%1.3%1.4%1.5%1.7%1.6%1.3%1.3%2.6%1.3%1.2%1.3%1.2%1.4%1.1%1.3%1.2%1.0%1.1%1.1%1.0%1.1%1.1%1.0%0.9%1.2%1.2%1.0%0.9%0.9%0.8%0.8%0.7%0.7%0.8%0.7%0.9%0.8%0.9%0.7%0.7%0.7%0.7%0.9%0.7%0.9%0.6%0.6%0.8%0.7%0.8%0.9%1.1%0.6%0.7%0.6%0.7%0.6%0.6%0.5%0.9%0.6%0.9%0.5%0.5%0.8%0.5%0.5%0.4%0.5%0.4%0.4%0.4%0.3%0.4%0.3%0.4%0.3%0.2%0.3%0.3%0.3%0.3%0.3%0.3%0.4%0.3%0.3%0.2%0.3%0.2%0.2%0.2%0.1%0.2%0.2%0.1%0.1%0.1%0.1%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%100%

어느 깊이에서 어느 피처가 몇 번 갈랐나(그루 400개 합).

XGBoost — 정규화 그래디언트 부스팅 xgb

LightGBM 과 같은 부스팅인데 트리를 깊이 우선으로 키우고 손실에 정규화 항을 직접 넣는다. 같은 부스팅이라도 구현이 다르면 성적이 갈리는지 본다.

그림 A · 구조 — A_all/xgb · 시험 2026 (학습 1,693행) 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) XGBoost — 정규화 그래디언트 부스팅 — A_all/xgb · 시험 2026 f₁ f₂ f₃ f₄ f₅ ··· f₄₀₀ 위는 이 모델 트리 5그루와 마지막 그루의 실제 위상(점 = 잎) — 실물은 그림 B·C P(상승) = σ(Σₖ ηf̂ₖ(x)) 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 하이퍼파라미터 — 세팅한 상한과 학습이 실제로 닿은 값 n_estimators = 400 이어 붙이는 트리 개수 — 위 f₁ … 가 이만큼 실제 400그루 max_depth = 4 뿌리(깊이 0)에서 잎까지 분기 최대 4번 — 그림 B·C 의 오른쪽 눈금 실제 깊이 전부 4 · 상한에 닿은 트리 400/400 feature_fraction = 0.7 트리마다 피처 129개 중 70%만 무작위로 후보에 올린다 → 그림 D 의 피처별 분기 횟수가 고르게 퍼지는 이유 learning_rate = 0.03 트리 하나가 더하는 값 = 적합값 × 0.03 (아래 잎값에 이미 곱해져 있다) 작을수록 트리 한 그루의 발언권이 작다 그루별 잎 수 분포 5 6 7 8 9 10 11 12 13 14 15 잎 5~15개
트리 400그루 · 실제로 닿은 깊이 4~4 · 잎 5~15개. 세팅의 상한과 학습이 실제로 멈춘 자리를 나란히 둔다.
그림 B · 첫 트리 f₁ 의 실제 분기 깊이 0 · 뿌리 분기 조건 · n 깊이 1 분기 조건 · n 깊이 2 분기 조건 · n 깊이 3 분기 조건 · n 깊이 4 · 잎 분기 없음 max_depth = 4 뿌리→잎 분기 4번까지 이 트리 실제 깊이 4 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 g1_ret_20m < 0 n2_band_bp_w < 8.378 n3_d3y_lend_chg1 < 6.309e-06 n2_cover_min < 299.3 잎값 -0.0450 잎값 -0.0228 잎값 -0.0108 g1_vwap_dev < 0 g6_px_chg_20d < 38 잎값 -0.0183 잎값 +0.0049 n3_all_fo_chg1 < 0.0001298 잎값 -0.0100 잎값 +0.0210 g1p_f10_ret_60m < 17 g1_oi_chg_day < -9415 잎값 +0.0315 n3_d10y_lend_chg20 < -9.329e-05 잎값 -0.0141 잎값 +0.0062 g1_vol_last30_share < 0.1405 잎값 +0.0371 잎값 +0.0095 잎값 ≥ 0 (예측을 위로) 잎값 < 0 (예측을 아래로) n = 그 노드에 떨어진 학습 표본 수 · 조건(≤)이 참이면 왼쪽 가지 '예', 거짓(>)이면 오른쪽 '아니오'
분기 조건·표본 수·잎값을 모델 객체에서 그대로 읽었다. 노드 안 n 은 그 노드를 지난 학습 표본 수다.
그림 D · 400그루 전체의 깊이×피처 분기 수
분기 위치 \ 피처n3_all_lend_chg1g1p_f10_ret_openn4_kofr_spread_bp_chg5n3_all_lend_chg20g6_px_chg_20dg6_domn3_d10y_lend_chg1g1_oi_chg_60mn4_kofr_spread_bp_chg1g6_dflow_은행순매수수량g1_vol_dayg1_vol_last5_sharen3_d3y_out_logn4_kofr_spread_bpg1_gap_openg1_oi_chg_dayn4_msb1y_spread_bp_chg1g6_baserate_120dn3_d10y_fo_chg20g6_prev5_upg6_px_chg_60dn4_msb1y_spread_bp_chg5g6_px_chg_5dn3_all_fo_chg1n3_d3y_lend_chg1n3_d10y_fo_chg5n3_d3y_fo_chg1g1p_f10_ret_20mg1_vol_last30_sharen3_d3y_lend_chg5n4_call_spread_bpg6_dflow_투신순매수수량n3_d10y_out_logg6_dflow_개인순매수수량n3_d3y_fo_chg20n3_d10y_fo_chg1g6_rate_통안1년_chg5dg6_rate_CALL1일한은_chg5dn3_d3y_lend_chg20n3_d3y_fo_chg5g6_days_to_expiryn2_surprise_bp_wn3_all_fo_chg5g6_dflow_보험순매수수량n3_all_lend_chg5n3_d10y_lend_chg5g1p_f10_ret_5mn3_d3y_lendn3_d3y_fog1_pos_dayn2_size_vs_outn3_all_lendn3_d10y_lend_chg20g1p_curve_20mg6_dflow_외국인합순매수수량g1_ret_openg6_rate_CD3개월n3_all_fo_chg20n4_msb1y_spread_bpn4_call_spread_bp_chg5g1_ret_120mg6_rate_CALL1일한은n2_cover_ming1_ret_1mg1p_f10_ret_60mg6_vol_20dg6_dflow_증권선물순매수수량n4_cd_minus_call_bpg1_vwap_devn3_d10y_lendg1p_curve_60mg6_rate_CD3개월_chg5dg1_rng_60mg1_pos_60mg1_rng_dayg6_baserate_250dg6_is_auction_dayn2_band_bp_wn4_call_spread_bp_chg1g1_ret_10mg6_baserate_20dg6_vol_60dn4_cd_spread_bp_chg5g1_ret_20mg1_ret_30mg1_pos_20mn2_has_30yg6_prev_d_tickg6_rate_통안1년n3_all_fon4_cd_spread_bp_chg1n3_d10y_fog1_ret_60mg1_ma_dev_20mn2_size_jog1_ret_5mg6_dowg6_baserate_60dn4_cd_spread_bpg1_rng_20mg6_prev_abs_ref_tickn2_days_sincen2_cover_wn2_partial_wn2_has_3yn3_all_out_logg6_prev_upg6_prev_ref_tickn2_tail_bp_maxn3_n_codesg6_is_auction_3yn2_tail_bp_wg1_ma_dev_60mn2_alloc_ratiog6_is_roll_weekn2_n_auctiong1_n_barsg6_is_month_endg6_is_quarter_endg6_is_mpc_dayg6_us_event_todayg6_us_event_prevn2_is_auctionn2_has_5yn2_has_10yn2_has_20yn2_has_50yn4_is_reserven4_month_end합
깊이 0 (뿌리)1216717881974911011137198104723241123673521113320317223172533502114012422312000001020074221088418220410312000000002100102011200000000000000400
깊이 1251718156181014131010412121359121111101091213910125711116146410985773626810459057468424444962425956534149652435543325504330114121032110100010000000000000000700
깊이 22322231723122118202417231423142518111219141614171914158211512108471610131588712810899879137597691051010676649107567588226481212324212432322212323223232303020100000000000001,009
깊이 332232614252430201819192618181519189201022172315132020121415131621181417141111231741715161668121269151212117121214681139121310549668695346612423503661632356534133101221221100000000000000001,213
분기 합927874636262626158575554545453525251515050504847474746444343434040383838373636363535343131313029292727272726262525252525242423222222212120201919181818181818181717171716141313121212121110101099887666666555544332100000000000003,322
손실 감소(gain) 몫0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%100%

어느 깊이에서 어느 피처가 몇 번 갈랐나(그루 400개 합).

HistGradientBoosting — scikit-learn 히스토그램 부스팅 hgb

LightGBM 과 같은 계열의 scikit-learn 구현. 피처를 256구간으로 묶고 400회 반복한다. 부스팅 구현 셋을 같은 자리에서 맞대기 위해 넣었다.

그림 A · 구조 — A_all/hgb · 시험 2026 (학습 1,693행) 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) HistGradientBoosting — scikit-learn 히스토그램 부스팅 — A_all/hgb · 시험 2026 f₁ f₂ f₃ f₄ f₅ ··· f₄₀₀ 위는 이 모델 트리 5그루와 마지막 그루의 실제 위상(점 = 잎) — 실물은 그림 B·C P(상승) = σ(Σₖ ηf̂ₖ(x)) 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 하이퍼파라미터 — 세팅한 상한과 학습이 실제로 닿은 값 n_estimators = 400 이어 붙이는 트리 개수 — 위 f₁ … 가 이만큼 실제 400그루 max_depth = 4 뿌리(깊이 0)에서 잎까지 분기 최대 4번 — 그림 B·C 의 오른쪽 눈금 실제 깊이 전부 4 · 상한에 닿은 트리 400/400 min_samples_leaf = 40 잎 하나에 표본 40개 미만이면 그 분할을 하지 않는다 실제 가장 작은 잎 n=40 max_features = 1.0 분할마다 후보 피처를 일부만 뽑는다 트리끼리 서로 다른 곳을 보게 만든다 learning_rate = 0.03 트리 하나가 더하는 값 = 적합값 × 0.03 (아래 잎값에 이미 곱해져 있다) 작을수록 트리 한 그루의 발언권이 작다 그루별 잎 수 분포 5 7 9 11 13 15 17 19 21 23 25 27 29 31 잎 5~16개 · 상한 31
트리 400그루 · 실제로 닿은 깊이 4~4 · 잎 5~16개. 세팅의 상한과 학습이 실제로 멈춘 자리를 나란히 둔다.
그림 B · 첫 트리 f₁ 의 실제 분기 깊이 0 · 뿌리 분기 조건 · n 깊이 1 분기 조건 · n 깊이 2 분기 조건 · n 깊이 3 분기 조건 · n 깊이 4 · 잎 분기 없음 max_depth = 4 뿌리→잎 분기 4번까지 이 트리 실제 깊이 4 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 g1p_f10_ret_20m ≤ -0.5 n=1,693 g1_pos_day ≤ 0.5 n=829 n4_kofr_spread_bp_chg1 ≤ -8.8 n=532 잎값 +0.0079 n=77 n3_d3y_out_log ≤ 23.51 n=455 잎값 -0.0245 n=385 잎값 -0.0009 n=70 n3_all_fo_chg5 ≤ 0.001208 n=297 g6_px_chg_5d ≤ 13.5 n=238 잎값 +0.0027 n=171 잎값 -0.0191 n=67 잎값 +0.0258 n=59 n4_kofr_spread_bp ≤ 0.7 n=864 g1_pos_60m ≤ 0.5833 n=272 g6_px_chg_20d ≤ 6 n=91 잎값 -0.0123 n=47 잎값 +0.0206 n=44 g6_dflow_외국인합순매수수량 ≤ 182315 n=181 잎값 +0.0361 n=116 잎값 +0.0118 n=65 n4_cd_spread_bp_chg1 ≤ -0.5 n=592 잎값 -0.0221 n=55 g6_dflow_외국인합순매수수량 ≤ 285556 n=537 잎값 +0.0046 n=487 잎값 +0.0324 n=50 잎값 ≥ 0 (예측을 위로) 잎값 < 0 (예측을 아래로) n = 그 노드에 떨어진 학습 표본 수 · 조건(≤)이 참이면 왼쪽 가지 '예', 거짓(>)이면 오른쪽 '아니오'
분기 조건·표본 수·잎값을 모델 객체에서 그대로 읽었다. 노드 안 n 은 그 노드를 지난 학습 표본 수다.
그림 D · 400그루 전체의 깊이×피처 분기 수
분기 위치 \ 피처n3_all_lend_chg1n4_kofr_spread_bp_chg1n3_all_lend_chg20n4_msb1y_spread_bp_chg1n3_d10y_fo_chg20n4_kofr_spread_bp_chg5g6_domg1_vol_dayg1_oi_chg_60mg1_gap_openg6_dflow_은행순매수수량n3_d3y_out_logn4_call_spread_bpg1p_f10_ret_openg6_px_chg_5dg1_vol_last5_shareg6_rate_CALL1일한은_chg5dn4_msb1y_spread_bp_chg5g6_baserate_120dn3_d10y_lend_chg1g6_px_chg_20dn3_d3y_lend_chg1n3_d3y_lend_chg5g6_prev5_upn2_surprise_bp_wn3_all_fo_chg1n3_d3y_fo_chg1g1_oi_chg_dayg1p_f10_ret_20mg6_px_chg_60dn3_d10y_fo_chg5n4_kofr_spread_bpg6_dflow_투신순매수수량n3_d3y_fo_chg20g1_pos_dayg1_ret_120mn3_all_fo_chg5n3_d10y_lend_chg20n4_cd_spread_bp_chg5g1_vol_last30_sharen2_size_vs_outn3_all_lend_chg5g6_dflow_보험순매수수량n4_call_spread_bp_chg5g6_days_to_expiryn3_d10y_lend_chg5g1_ret_20mg1_pos_60mg1p_f10_ret_5mg6_baserate_250dn3_d10y_out_logg6_rate_CD3개월n3_d3y_lend_chg20n3_all_lendn4_cd_minus_call_bpg6_rate_통안1년_chg5dn4_cd_spread_bp_chg1g1_ret_10mg1_ret_1mg1p_curve_60mg1_pos_20mg1p_curve_20mg6_dflow_개인순매수수량n3_d10y_lendn3_d3y_lendg1_rng_dayg1p_f10_ret_60mn3_d10y_fo_chg1g6_is_auction_dayn2_cover_minn3_d3y_fon3_d3y_fo_chg5g1_rng_60mn3_all_fo_chg20g1_ret_openn2_has_30yg1_ret_30mg6_dflow_외국인합순매수수량g6_baserate_20dn2_size_jon2_band_bp_wg1_ret_5mg6_vol_60dg6_dflow_증권선물순매수수량n3_d10y_fog6_vol_20dg6_rate_CALL1일한은n4_msb1y_spread_bpn4_call_spread_bp_chg1g6_prev_abs_ref_tickg6_dowg6_baserate_60dg6_prev_d_tickn3_all_fog1_rng_20mg6_rate_통안1년n2_cover_wn2_has_3yn4_cd_spread_bpg6_prev_upg6_prev_ref_tickn2_tail_bp_wg1_ret_60mn2_n_auctionn2_tail_bp_maxg1_ma_dev_20mg6_rate_CD3개월_chg5dn2_days_sincen2_partial_wn3_all_out_logg1_vwap_devg6_is_auction_3yg6_is_mpc_dayn3_n_codesn2_alloc_ratiog1_ma_dev_60mg1_n_barsg6_is_month_endg6_is_quarter_endg6_is_roll_weekg6_us_event_todayg6_us_event_prevn2_is_auctionn2_has_5yn2_has_10yn2_has_20yn2_has_50yn4_is_reserven4_month_end합
깊이 0 (뿌리)1241920612361909059100214152006043114002180110500100301100070843033030060003100000072500001130000600000000000002030001000000001000000000000000000400
깊이 141182417141115141622344614141619161761616615310023298129186112138168113661114281113608335010023809113315054462400031231001200000321201000010010000000000000000709
깊이 2153217628221024341561620121920419151716141702110171516247101113914716121331221910157692261012913139810571314871556071110101015453881291436252275401101141523140000100000000000000001,057
깊이 332422439272912152123294027252822238433152124411273027919172514201317299915616132413121111671351613813313101312781412271439265711147814211412584759823577483413132415312021000000000000001,375
분기 합100968482757473727169696562616160605856565351515049474746464544434242403837373736363635343333323232313029292827262624232322222222212020201919191918181717161615151413131313121212121111101010998887776665555422221000000000000003,541
손실 감소(gain) 몫2.7%2.7%2.1%1.9%2.3%2.3%1.9%1.5%2.1%1.6%1.9%2.0%1.6%2.7%1.5%1.5%1.3%1.2%1.1%1.5%1.3%1.5%1.4%0.9%1.0%1.1%1.4%1.3%2.9%1.4%1.1%1.3%1.2%1.3%1.4%1.0%1.2%0.9%0.9%0.9%0.7%0.9%0.9%0.9%1.1%0.7%1.5%1.2%1.3%0.9%0.6%0.7%0.7%0.9%0.7%0.7%0.8%1.1%0.7%0.4%0.7%0.7%0.6%0.7%0.8%0.4%0.7%0.5%1.0%0.7%0.5%0.4%0.6%0.4%0.3%0.4%0.8%0.6%0.4%0.5%0.8%0.3%0.4%0.4%0.4%0.3%0.3%0.3%0.2%0.3%0.4%0.2%0.2%0.2%0.3%0.2%0.2%0.2%0.2%0.2%0.1%0.2%0.1%0.1%0.1%0.2%0.1%0.1%0.1%0.1%0.0%0.1%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%0.0%100%

어느 깊이에서 어느 피처가 몇 번 갈랐나(그루 400개 합).

GradientBoosting — 고전 그래디언트 부스팅 gbdt

구간으로 묶지 않고 원래 값에서 최적 분기를 찾는다. 느리지만 히스토그램 근사가 없는 기준선이다. 히스토그램 근사가 성적을 깎는지 재려고 넣었다.

그림 A · 구조 — A_all/gbdt · 시험 2026 (학습 1,693행) 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) GradientBoosting — 고전 그래디언트 부스팅 — A_all/gbdt · 시험 2026 f₁ f₂ f₃ f₄ f₅ ··· f₃₀₀ 위는 이 모델 트리 5그루와 마지막 그루의 실제 위상(점 = 잎) — 실물은 그림 B·C P(상승) = σ(Σₖ ηf̂ₖ(x)) 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 하이퍼파라미터 — 세팅한 상한과 학습이 실제로 닿은 값 n_estimators = 300 이어 붙이는 트리 개수 — 위 f₁ … 가 이만큼 실제 300그루 max_depth = 3 뿌리(깊이 0)에서 잎까지 분기 최대 3번 — 그림 B·C 의 오른쪽 눈금 실제 깊이 전부 3 · 상한에 닿은 트리 300/300 min_samples_leaf = 20 잎 하나에 표본 20개 미만이면 그 분할을 하지 않는다 실제 가장 작은 잎 n=20 learning_rate = 0.03 트리 하나가 더하는 값 = 적합값 × 0.03 (아래 잎값에 이미 곱해져 있다) 작을수록 트리 한 그루의 발언권이 작다 그루별 잎 수 분포 4 5 6 7 8 잎 4~8개
트리 300그루 · 실제로 닿은 깊이 3~3 · 잎 4~8개. 세팅의 상한과 학습이 실제로 멈춘 자리를 나란히 둔다.
그림 B · 첫 트리 f₁ 의 실제 분기 깊이 0 · 뿌리 분기 조건 · n 깊이 1 분기 조건 · n 깊이 2 분기 조건 · n 깊이 3 · 잎 분기 없음 max_depth = 3 뿌리→잎 분기 3번까지 이 트리 실제 깊이 3 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 g1p_f10_ret_open ≤ 8.5 n=1,354 g1p_f10_ret_20m ≤ 2.5 n=854 g1_rng_day ≤ 23.5 n=645 잎값 -0.5193 n=565 잎값 +0.3002 n=80 g1_oi_chg_60m ≤ -3822 n=209 잎값 +1.6130 n=20 잎값 +0.0817 n=189 g1p_f10_ret_20m ≤ -3.5 n=500 g6_px_chg_5d ≤ -14.5 n=104 잎값 +0.8724 n=27 잎값 -0.6139 n=77 g1_ret_60m ≤ -2.5 n=396 잎값 -0.7732 n=27 잎값 +0.6535 n=369 잎값 ≥ 0 (예측을 위로) 잎값 < 0 (예측을 아래로) n = 그 노드에 떨어진 학습 표본 수 · 조건(≤)이 참이면 왼쪽 가지 '예', 거짓(>)이면 오른쪽 '아니오'
분기 조건·표본 수·잎값을 모델 객체에서 그대로 읽었다. 노드 안 n 은 그 노드를 지난 학습 표본 수다.
그림 D · 300그루 전체의 깊이×피처 분기 수
분기 위치 \ 피처n3_all_lend_chg1g1p_f10_ret_openg6_dflow_은행순매수수량g1p_f10_ret_20mg6_dflow_투신순매수수량n3_all_lend_chg20g6_domg1_vol_last30_sharen4_msb1y_spread_bp_chg1n4_kofr_spread_bp_chg1g1_oi_chg_60mn4_kofr_spread_bp_chg5g1_vol_dayn2_size_vs_outn3_d3y_out_logn3_d10y_fo_chg20g1_vol_last5_sharen3_all_lendg1_oi_chg_dayg6_rate_CALL1일한은_chg5dn3_d3y_lend_chg1g6_baserate_120dn4_msb1y_spread_bp_chg5n3_all_fo_chg1n3_d10y_lend_chg1g1p_f10_ret_5mg1_gap_openn3_d10y_fo_chg5g6_prev5_upg6_px_chg_20dg6_rate_통안1년n3_d3y_lend_chg5n3_d3y_fo_chg5n4_kofr_spread_bpg1_ret_120mg6_is_auction_dayn4_call_spread_bpg1_ret_20mg1_pos_dayg6_px_chg_5dn2_surprise_bp_wn3_all_fo_chg20n4_call_spread_bp_chg1g6_dflow_증권선물순매수수량g6_dflow_개인순매수수량n3_d3y_fo_chg20g6_px_chg_60dn3_d3y_fo_chg1g1_ret_30mn3_d3y_fon3_d3y_lend_chg20g1p_f10_ret_60mn3_d10y_out_logg6_dflow_보험순매수수량n3_all_lend_chg5n3_d10y_lend_chg20n4_call_spread_bp_chg5g6_days_to_expiryn3_all_fo_chg5n3_d10y_lend_chg5g1_ret_10mn2_has_30yn3_d10y_fo_chg1g1_ret_openg6_baserate_20dn2_cover_minn4_cd_spread_bp_chg1n4_cd_spread_bp_chg5g1_ret_1mg1p_curve_60mg6_vol_60dg6_dflow_외국인합순매수수량g6_rate_CALL1일한은g6_rate_CD3개월_chg5dn3_all_out_logn4_msb1y_spread_bpg1_pos_60mg6_vol_20dg6_rate_CD3개월n2_size_jon3_all_fon3_d10y_lendn4_cd_minus_call_bpg1_rng_dayg6_prev_d_tickn3_d3y_lendg1_ma_dev_20mg1p_curve_20mg6_baserate_250dg6_rate_통안1년_chg5dn2_band_bp_wg6_baserate_60dg1_ret_5mg1_rng_20mg1_vwap_devn2_cover_wn2_partial_wn2_tail_bp_wg1_ret_60mg1_pos_20mg1_rng_60mg6_prev_ref_tickg6_is_quarter_endn4_cd_spread_bpg6_is_mpc_dayn2_tail_bp_maxn2_alloc_ratiog1_ma_dev_60mg6_prev_abs_ref_tickg6_dowg6_is_roll_weekn2_is_auctionn2_days_sincen2_has_3yn2_has_10yn3_d10y_fon3_n_codesg1_n_barsg6_prev_upg6_is_month_endg6_is_auction_3yg6_us_event_todayg6_us_event_prevn2_n_auctionn2_has_5yn2_has_20yn2_has_50yn4_is_reserven4_month_end합
깊이 0 (뿌리)91049831456163881032373414932763968523362104060122010921210321110130010443010000030100100301301100000201100100000001000000000000000000300
깊이 1161712111187141310788115710667817610810674563579667687856886352655466533372326322635313310445334202252012021021122201210000001101000000000000544
깊이 2211525181824131414211719131014191618131614109151286135118101613105123813512101110108114912688656689719774344354686648343453273113542423221111031011110110010000000000000877
분기 합464241383735343333323030292929292827262626252524242322222121212121212020201919191919191818181717161615141413131313121212111111101010101099999999888888877766666544444433333322211111111110000000000001,721

어느 깊이에서 어느 피처가 몇 번 갈랐나(그루 300개 합).

AdaBoost — 적응 부스팅 ada

깊이 2 짜리 아주 얕은 트리(그루터기)를 300개 이어 붙이되, 앞에서 틀린 표본의 가중치를 올려 다음 트리를 키운다. 부스팅의 가장 오래된 형태 — 잔차가 아니라 표본 가중치로 배우는 방식이 여기서도 통하는지 본다.

그림 A · 구조 — A_all/ada · 시험 2026 (학습 1,693행) 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) AdaBoost — 적응 부스팅 — A_all/ada · 시험 2026 f₁ f₂ f₃ f₄ f₅ ··· f₃₀₀ 위는 이 모델 트리 5그루와 마지막 그루의 실제 위상(점 = 잎) — 실물은 그림 B·C P(상승) = σ(Σₖ ηf̂ₖ(x)) 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 하이퍼파라미터 — 세팅한 상한과 학습이 실제로 닿은 값 n_estimators = 300 이어 붙이는 트리 개수 — 위 f₁ … 가 이만큼 실제 300그루 learning_rate = 0.05 트리 하나가 더하는 값 = 적합값 × 0.05 (아래 잎값에 이미 곱해져 있다) 작을수록 트리 한 그루의 발언권이 작다 그루별 잎 수 분포 3 4 잎 3~4개
트리 300그루 · 실제로 닿은 깊이 2~2 · 잎 3~4개. 세팅의 상한과 학습이 실제로 멈춘 자리를 나란히 둔다.
그림 B · 첫 트리 f₁ 의 실제 분기 깊이 0 · 뿌리 분기 조건 · n 깊이 1 분기 조건 · n 깊이 2 · 잎 분기 없음 예 아니오 예 아니오 예 아니오 g1p_f10_ret_20m ≤ -0.5 n=1,693 g1_pos_day ≤ 0.3425 n=829 잎값 +0.2970 n=431 잎값 +0.4472 n=398 g1_ret_20m ≤ 4.5 n=864 잎값 +0.5096 n=781 잎값 +0.7108 n=83 잎값 ≥ 0 (예측을 위로) 잎값 < 0 (예측을 아래로) n = 그 노드에 떨어진 학습 표본 수 · 조건(≤)이 참이면 왼쪽 가지 '예', 거짓(>)이면 오른쪽 '아니오'
분기 조건·표본 수·잎값을 모델 객체에서 그대로 읽었다. 노드 안 n 은 그 노드를 지난 학습 표본 수다.
그림 D · 300그루 전체의 깊이×피처 분기 수
분기 위치 \ 피처n3_all_lend_chg5g6_px_chg_20dg1_vol_last30_shareg6_baserate_120dn3_d3y_lend_chg1g1_ret_20mn3_all_fo_chg1g1_oi_chg_dayn3_all_lend_chg1g6_vol_60dn2_has_30yg6_is_auction_dayg1_ret_30mg6_domg1p_f10_ret_5mg1p_f10_ret_openn3_all_lendn3_all_lend_chg20g1p_f10_ret_20mg1_pos_dayg6_days_to_expiryg6_dflow_투신순매수수량n3_d3y_out_logn4_msb1y_spread_bpg1_vol_dayn3_d10y_lend_chg5n4_kofr_spread_bp_chg5g1_ma_dev_20mg6_px_chg_60dg6_dflow_은행순매수수량g6_dflow_개인순매수수량n3_d10y_fo_chg5g1_ret_1mg1_pos_60mg6_is_roll_weekn3_d3y_lendn3_d10y_fo_chg20g1_ret_10mg1_ret_120mg1_oi_chg_60mg1p_f10_ret_60mg1p_curve_60mn2_cover_minn4_cd_spread_bp_chg1n4_kofr_spread_bp_chg1n4_msb1y_spread_bp_chg1g1_ret_5mg1_ret_60mg1_ret_openg1_gap_openg1_rng_20mg1_pos_20mg1_rng_60mg1_ma_dev_60mg1_rng_dayg1_vol_last5_shareg1_vwap_devg1_n_barsg1p_curve_20mg6_baserate_20dg6_baserate_60dg6_baserate_250dg6_prev_upg6_prev5_upg6_prev_ref_tickg6_prev_abs_ref_tickg6_prev_d_tickg6_vol_20dg6_px_chg_5dg6_dowg6_is_month_endg6_is_quarter_endg6_is_auction_3yg6_is_mpc_dayg6_us_event_todayg6_us_event_prevg6_dflow_외국인합순매수수량g6_dflow_증권선물순매수수량g6_dflow_보험순매수수량g6_rate_통안1년g6_rate_CD3개월g6_rate_CALL1일한은g6_rate_통안1년_chg5dg6_rate_CD3개월_chg5dg6_rate_CALL1일한은_chg5dn2_is_auctionn2_days_sincen2_n_auctionn2_size_jon2_cover_wn2_partial_wn2_tail_bp_wn2_tail_bp_maxn2_band_bp_wn2_surprise_bp_wn2_alloc_ration2_size_vs_outn2_has_3yn2_has_5yn2_has_10yn2_has_20yn2_has_50yn3_all_fon3_all_out_logn3_d3y_fon3_d10y_lendn3_d10y_fon3_d10y_out_logn3_n_codesn3_all_fo_chg5n3_all_fo_chg20n3_d3y_lend_chg5n3_d3y_lend_chg20n3_d3y_fo_chg1n3_d3y_fo_chg5n3_d3y_fo_chg20n3_d10y_lend_chg1n3_d10y_lend_chg20n3_d10y_fo_chg1n4_cd_spread_bpn4_call_spread_bpn4_kofr_spread_bpn4_cd_minus_call_bpn4_cd_spread_bp_chg5n4_call_spread_bp_chg1n4_call_spread_bp_chg5n4_msb1y_spread_bp_chg5n4_is_reserven4_month_end합
깊이 0 (뿌리)11905140025091013211101004802010000200000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300
깊이 148102191553254019181731333910105075545444133332122211111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000481
분기 합1671027055535040281917161514131010109877555444333332222211111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000781

어느 깊이에서 어느 피처가 몇 번 갈랐나(그루 300개 합).

DecisionTree — 결정트리 한 그루 dt

깊이 4, 잎 최소 40일. 조건을 따라 내려가면 예측이 나온다. 앙상블이 트리 하나보다 얼마나 나은지 재는 바닥이다.

그림 A · 구조 — A_all/dt · 시험 2026 (학습 1,693행) 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) DecisionTree — 결정트리 한 그루 — A_all/dt · 시험 2026 f₁ 위는 이 모델 트리 1그루와 마지막 그루의 실제 위상(점 = 잎) — 실물은 그림 B·C P(상승) = σ(Σₖ ηf̂ₖ(x)) 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 하이퍼파라미터 — 세팅한 상한과 학습이 실제로 닿은 값 n_estimators = 1 이어 붙이는 트리 개수 — 위 f₁ … 가 이만큼 실제 1그루 max_depth = 4 뿌리(깊이 0)에서 잎까지 분기 최대 4번 — 그림 B·C 의 오른쪽 눈금 실제 깊이 전부 4 · 상한에 닿은 트리 1/1 min_samples_leaf = 40 잎 하나에 표본 40개 미만이면 그 분할을 하지 않는다 실제 가장 작은 잎 n=40 그루별 잎 수 분포 13 잎 13~13개
트리 1그루 · 실제로 닿은 깊이 4~4 · 잎 13~13개. 세팅의 상한과 학습이 실제로 멈춘 자리를 나란히 둔다.
그림 B · 첫 트리 f₁ 의 실제 분기 깊이 0 · 뿌리 분기 조건 · n 깊이 1 분기 조건 · n 깊이 2 분기 조건 · n 깊이 3 분기 조건 · n 깊이 4 · 잎 분기 없음 max_depth = 4 뿌리→잎 분기 4번까지 이 트리 실제 깊이 4 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 g1p_f10_ret_20m ≤ -0.5 n=1,693 g1_pos_day ≤ 0.3425 n=829 n4_cd_spread_bp ≤ 12.5 n=431 n4_cd_minus_call_bp ≤ 1.3 n=135 잎값 +0.3191 n=47 잎값 +0.1136 n=88 n3_all_lend_chg20 ≤ -5.989e-05 n=296 잎값 +0.5581 n=43 잎값 +0.3123 n=253 g6_px_chg_5d ≤ 13.5 n=398 g6_baserate_20d ≤ 0.375 n=282 잎값 +0.3590 n=78 잎값 +0.5490 n=204 g1_oi_chg_60m ≤ -1334 n=116 잎값 +0.4902 n=51 잎값 +0.2000 n=65 g1_ret_20m ≤ 4.5 n=864 n3_all_lend_chg1 ≤ 1.502e-05 n=781 g1_vol_day ≤ 142945 n=722 잎값 +0.5599 n=568 잎값 +0.4156 n=154 잎값 +0.2712 n=59 n3_d3y_fo ≤ 0.2428 n=83 잎값 +0.8250 n=40 잎값 +0.6047 n=43 잎값 ≥ 0 (예측을 위로) 잎값 < 0 (예측을 아래로) n = 그 노드에 떨어진 학습 표본 수 · 조건(≤)이 참이면 왼쪽 가지 '예', 거짓(>)이면 오른쪽 '아니오'
분기 조건·표본 수·잎값을 모델 객체에서 그대로 읽었다. 노드 안 n 은 그 노드를 지난 학습 표본 수다.
그림 D · 1그루 전체의 깊이×피처 분기 수
분기 위치 \ 피처g1_ret_20mg1_pos_dayg1_vol_dayg1_oi_chg_60mg1p_f10_ret_20mg6_baserate_20dg6_px_chg_5dn3_d3y_fon3_all_lend_chg1n3_all_lend_chg20n4_cd_spread_bpn4_cd_minus_call_bpg1_ret_1mg1_ret_5mg1_ret_10mg1_ret_30mg1_ret_60mg1_ret_120mg1_ret_openg1_gap_openg1_rng_20mg1_pos_20mg1_ma_dev_20mg1_rng_60mg1_pos_60mg1_ma_dev_60mg1_rng_dayg1_vol_last5_shareg1_vol_last30_shareg1_vwap_devg1_oi_chg_dayg1_n_barsg1p_f10_ret_5mg1p_f10_ret_60mg1p_f10_ret_openg1p_curve_20mg1p_curve_60mg6_baserate_60dg6_baserate_120dg6_baserate_250dg6_prev_upg6_prev5_upg6_prev_ref_tickg6_prev_abs_ref_tickg6_prev_d_tickg6_vol_20dg6_px_chg_20dg6_px_chg_60dg6_vol_60dg6_dowg6_domg6_is_month_endg6_is_quarter_endg6_days_to_expiryg6_is_roll_weekg6_is_auction_dayg6_is_auction_3yg6_is_mpc_dayg6_us_event_todayg6_us_event_prevg6_dflow_외국인합순매수수량g6_dflow_증권선물순매수수량g6_dflow_은행순매수수량g6_dflow_투신순매수수량g6_dflow_보험순매수수량g6_dflow_개인순매수수량g6_rate_통안1년g6_rate_CD3개월g6_rate_CALL1일한은g6_rate_통안1년_chg5dg6_rate_CD3개월_chg5dg6_rate_CALL1일한은_chg5dn2_is_auctionn2_days_sincen2_n_auctionn2_size_jon2_cover_wn2_cover_minn2_partial_wn2_tail_bp_wn2_tail_bp_maxn2_band_bp_wn2_surprise_bp_wn2_alloc_ration2_size_vs_outn2_has_3yn2_has_5yn2_has_10yn2_has_20yn2_has_30yn2_has_50yn3_all_lendn3_all_fon3_all_out_logn3_d3y_lendn3_d3y_out_logn3_d10y_lendn3_d10y_fon3_d10y_out_logn3_n_codesn3_all_lend_chg5n3_all_fo_chg1n3_all_fo_chg5n3_all_fo_chg20n3_d3y_lend_chg1n3_d3y_lend_chg5n3_d3y_lend_chg20n3_d3y_fo_chg1n3_d3y_fo_chg5n3_d3y_fo_chg20n3_d10y_lend_chg1n3_d10y_lend_chg5n3_d10y_lend_chg20n3_d10y_fo_chg1n3_d10y_fo_chg5n3_d10y_fo_chg20n4_call_spread_bpn4_kofr_spread_bpn4_msb1y_spread_bpn4_cd_spread_bp_chg1n4_cd_spread_bp_chg5n4_call_spread_bp_chg1n4_call_spread_bp_chg5n4_kofr_spread_bp_chg1n4_kofr_spread_bp_chg5n4_msb1y_spread_bp_chg1n4_msb1y_spread_bp_chg5n4_is_reserven4_month_end합
깊이 0 (뿌리)0000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
깊이 11100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002
깊이 20000001110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004
깊이 30011010001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005
분기 합11111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012

어느 깊이에서 어느 피처가 몇 번 갈랐나(그루 1개 합).

SVM(RBF) — 방사기저함수 서포트벡터머신 svm_rbf

두 반을 가르는 경계를 가장 넓은 여백으로 긋는다. RBF 커널로 굽은 경계도 그을 수 있다. 트리와 전혀 다른 방식으로 경계를 만드는 계열이다.

그림 A · 구조 — A_all/svm_rbf · 시험 2026 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) SVM(RBF) — 방사기저함수 서포트벡터머신 — A_all/svm_rbf · 시험 2026 1. 결측 대치 학습창 중앙값으로 채운다 2. 표준화 학습창 평균 0 · 표준편차 1 — 커널 폭이 척도에 민감하다 3. RBF 커널 K(x, xᵢ) = exp(−γ‖x − xᵢ‖²) 4. 보정 결정값 → 시그모이드 → P(상승) 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 세팅과 학습 결과 C = 1 마진을 어기는 값에 물리는 벌점 — 세팅 실현: 상한에 붙은 서포트벡터 1,166개 gamma = scale RBF 커널의 폭 — 세팅 실현값 γ = 0.00787402 (= 1 / (피처수 × 분산)) 서포트벡터 1,539개 결정면을 실제로 떠받치는 학습 행 학습 1,693행의 91% 확률 보정 SVM 의 결정값을 확률로 바꾸는 시그모이드 A = -0.6291 · B = -0.0720 f(x) = Σᵢ αᵢyᵢ exp(−γ‖x−xᵢ‖²) + b → 시그모이드 보정 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1
학습 1,693행 중 1,539행이 서포트벡터가 됐다.
그림 B · 서포트벡터의 가중치 |α| 분포 서포트벡터 1,539개 (하락 808 · 상승 731) — 학습 1,693행 중 91% |α| = 0 |α| = C = 1 가장 많은 칸 1,183개 상한 C 에 붙은 서포트벡터 1,166개 — 이 점들은 마진 안쪽이다 · 확률 보정(Platt) A=-0.6291 · B=-0.0720
오른쪽 끝(|α| = C)에 쌓인 점들은 마진 안쪽으로 들어온 날이다 — 이 데이터가 선형·커널 경계로 깔끔히 갈리지 않는다는 증거다.

SVM(선형) — 선형 서포트벡터머신 + 확률 보정 svm_lin

직선(초평면)으로 가르되 여백을 최대화한다. 확률은 교차검증 보정(Platt)으로 따로 만든다. 같은 SVM 에서 커널만 뺀 대조다.

그림 A · 구조 — A_all/svm_lin · 시험 2026 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) SVM(선형) — 선형 서포트벡터머신 + 확률 보정 — A_all/svm_lin · 시험 2026 1. 결측 대치 학습창 중앙값으로 채운다(시험연도를 보지 않는다) 2. 표준화 학습창 평균·표준편차로 z 화 — 계수가 서로 비교 가능해진다 3. 선형 결합 z = b + Σ wᵢ·xᵢ (계수 129개) 4. 링크 σ(z) → 확률 5. 보정 보정 래퍼 3겹의 계수 평균 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 계수 — 세팅과 학습 결과 피처 129개 표준화된 공간의 계수 — 서로 크기 비교가 된다 0 이 아닌 계수 127개 절편 b = +0.0144 모든 피처가 학습창 평균일 때의 출발점 기저율 쏠림이 여기에 담긴다 |w| 최대 = 0.2794 가장 센 피처: n3_all_out_log |w| 중앙값 0.0295 C = 0.05 역정규화 강도 작을수록 더 강한 규제
피처 129개 중 0 이 아닌 계수 127개 · 절편 +0.0144.
그림 B · 계수 — 어느 피처가 어느 쪽으로 미나 ← 하락 쪽 상승 쪽 → n3_all_out_log -0.2794 n3_n_codes -0.1978 n3_all_fo +0.1933 n2_tail_bp_w -0.1703 g6_vol_60d +0.1664 g6_ g1p_f10_ret_open +0.1413 g1p_ n3_all_lend -0.1404 n2_tail_bp_max +0.1336 g6_dflow_은행순매수수량 -0.1158 g6_ g1_ret_open -0.1131 g1_ g6_baserate_120d -0.1124 g6_ n4_kofr_spread_bp_chg5 -0.1070 g6_px_chg_60d -0.1009 g6_ n3_d10y_lend +0.0977 g1_pos_day +0.0976 g1_ n3_d10y_fo +0.0964 표준화된 공간의 계수 상위 16개 · 절편 b = +0.0144 · 전체 129개 중
표준화된 공간의 계수라 서로 크기를 비교할 수 있다.

k-최근접 이웃 (k=75) knn

학습을 하지 않는다 — 표를 통째로 기억했다가, 예측할 때 가장 가까운 75일을 찾아 그날들의 방향을 거리로 가중해 투표한다. '비슷한 날은 비슷하게 끝난다'는 가정만으로 어디까지 가는지 본다.

그림 A · 구조 — A_all/knn · 시험 2026 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) k-최근접 이웃 (k=75) — A_all/knn · 시험 2026 1. 결측 대치 학습창 중앙값으로 채운다 2. 표준화 학습창 평균 0 · 표준편차 1 — 거리 계산에 필수다 3. 이웃 찾기 가장 가까운 75개 4. 가중 투표 1/거리 로 가중한 상승 비율 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 세팅과 학습 결과 n_neighbors = 75 몇 명에게 물을지 — 세팅 실현: 학습표 1,693행에서 고른다 weights = distance 가까운 이웃에 더 큰 표를 준다 가중치 = 1 / 거리 metric = minkowski 표준화된 129차원에서의 거리 k번째 이웃 거리 중앙값 13.070 학습 파라미터 없음 이 계열은 적합하지 않는다 — 표를 기억한다 예측할 때마다 전체 표와 거리를 잰다 P(상승) = Σᵢ(1/dᵢ · yᵢ) / Σᵢ(1/dᵢ), i ∈ 가장 가까운 k일 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1
학습 파라미터가 없는 계열이다 — 학습창 1,693행을 그대로 들고 있다가 예측할 때 거리를 잰다.
그림 B · 실제 시험일 하나의 이웃 75개 시험일 2026-01-02 하나의 이웃 75개 — 학습표 1,693행 중에서 고른다 왼쪽 막대 = 거리(가까울수록 짧다) · 오른쪽 막대 = 투표 가중치 1/거리 · 색이 옅으면 그 이웃의 정답은 하락 거리 → ← 가중치 10.489 0.095 상승 상승 상승 하락 하락 하락 하락 하락 상승 상승 상승 하락 하락 하락 상승 상승 하락 하락 하락 상승 상승 하락 하락 하락 하락 상승 하락 하락 하락 상승 하락 하락 상승 상승 상승 하락 하락 하락 하락 하락 하락 하락 하락 하락 하락 상승 하락 하락 하락 상승 하락 하락 상승 상승 하락 하락 상승 상승 하락 상승 하락 하락 하락 상승 하락 하락 상승 상승 상승 하락 하락 하락 하락 하락 14.400 0.069 하락 P(상승) = Σ(가중치 × 이웃의 상승) / Σ가중치 = 0.3516 k = 75 · 가중 distance · 거리 minkowski · 피처 129개 시험 구간 전체에서 k번째 이웃까지의 거리 — 하위10% 11.098 · 중앙 13.070 · 상위10% 25.516
모식도가 아니라 그 날의 실제 이웃이다. 거리·정답·가중치를 모델 객체에서 읽었다.

LogisticRegression — 로지스틱 회귀 log

피처의 가중합을 로지스틱 함수로 눌러 확률을 낸다. C=0.1 로 계수를 강하게 규제했다. 분류 확률의 표준 기준선이다.

그림 A · 구조 — A_all/log · 시험 2026 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) LogisticRegression — 로지스틱 회귀 — A_all/log · 시험 2026 1. 결측 대치 학습창 중앙값으로 채운다(시험연도를 보지 않는다) 2. 표준화 학습창 평균·표준편차로 z 화 — 계수가 서로 비교 가능해진다 3. 선형 결합 z = b + Σ wᵢ·xᵢ (계수 129개) 4. 링크 σ(z) → 확률 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 계수 — 세팅과 학습 결과 피처 129개 표준화된 공간의 계수 — 서로 크기 비교가 된다 0 이 아닌 계수 127개 절편 b = -0.2210 모든 피처가 학습창 평균일 때의 출발점 기저율 쏠림이 여기에 담긴다 |w| 최대 = 0.3380 가장 센 피처: n3_n_codes |w| 중앙값 0.0506 C = 0.1 역정규화 강도 작을수록 더 강한 규제
피처 129개 중 0 이 아닌 계수 127개 · 절편 -0.2210.
그림 B · 계수 — 어느 피처가 어느 쪽으로 미나 ← 하락 쪽 상승 쪽 → n3_n_codes -0.3380 n3_all_out_log -0.3178 g1p_f10_ret_open +0.3046 g1p_ g6_vol_60d +0.2657 g6_ n3_d10y_fo +0.2584 g1_ret_open -0.2546 g1_ g6_baserate_120d -0.2309 g6_ g1_pos_day +0.2146 g1_ n3_all_lend -0.2054 n4_kofr_spread_bp_chg5 -0.2047 n3_all_fo +0.1967 n2_tail_bp_w -0.1962 g6_is_auction_day -0.1891 g6_ n2_has_30y -0.1864 g6_dflow_은행순매수수량 -0.1848 g6_ g6_px_chg_60d -0.1728 g6_ 표준화된 공간의 계수 상위 16개 · 절편 b = -0.2210 · 전체 129개 중
표준화된 공간의 계수라 서로 크기를 비교할 수 있다.

LinearRegression — 최소제곱 선형회귀 lin

확률이 아니라 틱 변화 자체를 회귀하고 부호를 읽는다. 확률은 잔차 표준편차로 눌러 만든 값이라 보정된 확률이 아니다. 규제가 전혀 없는 선형 바닥이다.

그림 A · 구조 — A_all/lin · 시험 2026 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) LinearRegression — 최소제곱 선형회귀 — A_all/lin · 시험 2026 1. 결측 대치 학습창 중앙값으로 채운다(시험연도를 보지 않는다) 2. 표준화 학습창 평균·표준편차로 z 화 — 계수가 서로 비교 가능해진다 3. 선형 결합 z = b + Σ wᵢ·xᵢ (계수 129개) 4. 링크 z → 예상 틱, 부호가 방향 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 계수 — 세팅과 학습 결과 피처 129개 표준화된 공간의 계수 — 서로 크기 비교가 된다 0 이 아닌 계수 127개 절편 b = -0.2056 모든 피처가 학습창 평균일 때의 출발점 평균적인 ref_tick 변화 |w| 최대 = 5.8699 가장 센 피처: g6_rate_CD3개월 |w| 중앙값 0.1081
피처 129개 중 0 이 아닌 계수 127개 · 절편 -0.2056.
그림 B · 계수 — 어느 피처가 어느 쪽으로 미나 ← 하락 쪽 상승 쪽 → g6_rate_CD3개월 -5.8699 g6_ g6_rate_통안1년 +3.1036 g6_ g6_rate_CALL1일한은 +3.0258 g6_ n2_tail_bp_w -1.4233 n3_all_fo +1.3658 n2_tail_bp_max +1.3651 n4_msb1y_spread_bp -1.3015 n3_all_out_log -0.8477 n3_n_codes -0.6484 g1_ma_dev_20m +0.5600 g1_ g1p_f10_ret_open +0.5421 g1p_ g6_dflow_외국인합순매수수량 -0.5250 g6_ n2_cover_w +0.5241 n4_cd_spread_bp +0.4965 g6_vol_60d +0.4857 g6_ n4_cd_minus_call_bp +0.4844 표준화된 공간의 계수 상위 16개 · 절편 b = -0.2056 · 전체 129개 중
표준화된 공간의 계수라 서로 크기를 비교할 수 있다.

Ridge — L2 규제 선형회귀 ridge

선형회귀에 계수 제곱 벌점(alpha=10)을 더해 계수를 0 쪽으로 민다. 피처 115개에 표본 1,693행이면 규제가 필요한지 보려고 넣었다.

그림 A · 구조 — A_all/ridge · 시험 2026 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) Ridge — L2 규제 선형회귀 — A_all/ridge · 시험 2026 1. 결측 대치 학습창 중앙값으로 채운다(시험연도를 보지 않는다) 2. 표준화 학습창 평균·표준편차로 z 화 — 계수가 서로 비교 가능해진다 3. 선형 결합 z = b + Σ wᵢ·xᵢ (계수 129개) 4. 링크 z → 예상 틱, 부호가 방향 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 계수 — 세팅과 학습 결과 피처 129개 표준화된 공간의 계수 — 서로 크기 비교가 된다 0 이 아닌 계수 127개 절편 b = -0.2056 모든 피처가 학습창 평균일 때의 출발점 평균적인 ref_tick 변화 |w| 최대 = 0.6840 가장 센 피처: n3_all_fo |w| 중앙값 0.0977 alpha = 10.0 릿지 벌점 클수록 계수를 더 눌러 붙인다
피처 129개 중 0 이 아닌 계수 127개 · 절편 -0.2056.
그림 B · 계수 — 어느 피처가 어느 쪽으로 미나 ← 하락 쪽 상승 쪽 → n3_all_fo +0.6840 n2_tail_bp_w -0.6650 n2_tail_bp_max +0.6115 n3_n_codes -0.5417 g1_ma_dev_20m +0.5158 g1_ n3_all_out_log -0.5142 g1p_f10_ret_open +0.5095 g1p_ n2_cover_w +0.4442 g6_vol_60d +0.4162 g6_ g1_ret_open -0.3516 g1_ g1_pos_20m -0.3298 g1_ n3_all_lend -0.3173 n3_d10y_fo +0.3152 g6_px_chg_60d -0.2989 g6_ g6_rate_통안1년_chg5d +0.2964 g6_ n4_msb1y_spread_bp -0.2905 표준화된 공간의 계수 상위 16개 · 절편 b = -0.2056 · 전체 129개 중
표준화된 공간의 계수라 서로 크기를 비교할 수 있다.

ElasticNet — L1+L2 규제 선형회귀 enet

L1(계수를 0 으로 죽인다)과 L2 를 섞은 벌점. 피처 선택이 함께 일어난다. 피처를 줄이는 쪽이 유리한지 보는 자리다.

그림 A · 구조 — A_all/enet · 시험 2026 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) ElasticNet — L1+L2 규제 선형회귀 — A_all/enet · 시험 2026 1. 결측 대치 학습창 중앙값으로 채운다(시험연도를 보지 않는다) 2. 표준화 학습창 평균·표준편차로 z 화 — 계수가 서로 비교 가능해진다 3. 선형 결합 z = b + Σ wᵢ·xᵢ (계수 129개) 4. 링크 z → 예상 틱, 부호가 방향 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 계수 — 세팅과 학습 결과 피처 129개 표준화된 공간의 계수 — 서로 크기 비교가 된다 0 이 아닌 계수 85개 절편 b = -0.2056 모든 피처가 학습창 평균일 때의 출발점 평균적인 ref_tick 변화 |w| 최대 = 0.3545 가장 센 피처: g1_ma_dev_20m |w| 중앙값 0.0224 alpha = 0.05 릿지 벌점 클수록 계수를 더 눌러 붙인다
피처 129개 중 0 이 아닌 계수 85개 · 절편 -0.2056.
그림 B · 계수 — 어느 피처가 어느 쪽으로 미나 ← 하락 쪽 상승 쪽 → g1_ma_dev_20m +0.3545 g1_ g1_ret_20m +0.2793 g1_ g1p_f10_ret_open +0.2690 g1p_ g6_is_auction_day -0.1766 g6_ g1_pos_20m -0.1683 g1_ n3_all_lend_chg20 -0.1679 g6_is_roll_week +0.1628 g6_ g1_gap_open -0.1550 g1_ n3_all_out_log -0.1508 g1_ret_open -0.1503 g1_ g1_vwap_dev -0.1421 g1_ n2_n_auction -0.1387 g1_pos_day +0.1351 g1_ g6_dflow_개인순매수수량 -0.1300 g6_ g1_ret_120m -0.1284 g1_ g1p_curve_60m +0.1267 g1p_ 표준화된 공간의 계수 상위 16개 · 절편 b = -0.2056 · 전체 129개 중
표준화된 공간의 계수라 서로 크기를 비교할 수 있다.

GaussianNB — 가우시안 나이브베이즈 gnb

피처마다 상승일·하락일의 평균과 분산만 배우고, 피처끼리 서로 독립이라고 가정해 곱한다. 가장 단순한 확률 모델 — 독립 가정이 이 데이터에서 얼마나 해로운지 재는 자다.

그림 A · 구조 — A_all/gnb · 시험 2026 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) GaussianNB — 가우시안 나이브베이즈 — A_all/gnb · 시험 2026 1. 결측 대치 학습창 중앙값으로 채운다 2. 표준화 학습창 평균 0 · 표준편차 1 3. 반별 정규분포 적합 피처마다 상승·하락 각각의 평균·분산 4. 베이즈 결합 사전확률 × 피처별 우도의 곱 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 세팅과 학습 결과 피처 129개 피처마다 반별 평균과 분산 두 쌍을 적합한다 학습 파라미터 516개 P(상승) 사전 = 0.451 학습창의 상승일 비율 하락 930일 · 상승 763일 var_smoothing = 1e-09 분산이 0 에 붙는 것을 막는 하한 가장 갈라진 피처: g1_pos_60m |평균차| / 표준편차 갈라짐 0.32 P(상승|x) ∝ P(상승) · Πᵢ N(xᵢ; μᵢ,상승, σ²ᵢ,상승) 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1
학습한 값은 피처마다 평균·분산 두 쌍뿐이다.
그림 B · 반별로 학습된 정규분포 — 가장 갈라진 피처 10개 학습된 것은 반(class)마다의 평균과 분산뿐이다 — 하락 930일 · 상승 763일 진한 곡선 = 상승일의 분포 · 옅은 곡선 = 하락일의 분포 (표준화된 값, 학습창에서 적합한 것) g1_pos_60m 갈라짐 0.32 μ -0.14 / +0.17 g1p_f10_ret_20m 갈라짐 0.30 μ -0.13 / +0.16 g1_ret_20m 갈라짐 0.30 μ -0.13 / +0.16 g1_pos_day 갈라짐 0.30 μ -0.13 / +0.16 g1_ma_dev_20m 갈라짐 0.30 μ -0.13 / +0.16 g1_ma_dev_60m 갈라짐 0.28 μ -0.13 / +0.15 g1_ret_30m 갈라짐 0.28 μ -0.13 / +0.15 g1_pos_20m 갈라짐 0.28 μ -0.12 / +0.15 g1p_curve_20m 갈라짐 0.27 μ +0.12 / -0.15 g1_ret_10m 갈라짐 0.26 μ -0.12 / +0.14 사전확률 P(하락) = 0.549 · P(상승) = 0.451 · 피처 129개 전부를 서로 독립이라고 가정한다
두 곡선이 겹칠수록 그 피처는 방향을 못 가른다. 곡선은 학습된 μ·σ² 로 그린 것이다.

MLPClassifier — 다층 퍼셉트론(신경망) mlp

32칸·16칸 은닉층 두 개를 지나 확률을 낸다. 조기 종료로 과적합을 막는다. 표본이 작을 때 신경망이 트리 앙상블을 이기는지 본다.

그림 A · 구조 — A_all/mlp · 시험 2026 입력 데이터 3년 국채선물 근월 + 새 블록 2017-01-03 ~ 2026-09-18 유효일 1,841 · 하루 1행 학습 2017~2025 · 1,693행 0틱 무효일 제외 피처 129개 / 6블록 3년선물 1분봉 10년선물·커브 일별·캘린더 입찰 결과(새) 대차·외국인(새) 단기자금(새) MLPClassifier — 다층 퍼셉트론(신경망) — A_all/mlp · 시험 2026 1. 결측 대치 학습창 중앙값으로 채운다(시험연도를 보지 않는다) 2. 표준화 학습창 평균 0 · 표준편차 1 3. 순전파 3개 가중치 층을 지난다 4. 역전파 학습 adam · 손실 log-loss 출력 P(상승) ↓ 0.5 기준 상승 / 하락 게이트 없음 동시호가 방향 하루 1건 세팅과 학습 결과 hidden_layer_sizes = (32, 16) 은닉층의 폭 — 세팅 실현: 가중치 층 3개 · 파라미터 4,705개 alpha = 0.01 L2 벌점 — 클수록 가중치를 0 쪽으로 민다 learning_rate_init = 0.003 adam 의 초기 보폭 실현: 마지막 손실 0.0217 max_iter = 600 반복 상한 — 세팅 실현: 58 반복에서 멈췄다 early_stopping = True 검증 0.1 로 20회 나아지지 않으면 멈춘다 검증 최고 0.6000 P(상승) = σ(W₃ · tanh… ) 라벨 sign(ref_tick) · 컷오프 15:34 · 새 블록은 n1 08:45 · n2 10:40 · n3·n4·n5 는 T-1
가중치 층 3개 · 파라미터 4,705개.
그림 B · 층 — 모양·활성함수·파라미터 수 깊이 = 가중치 층 3개 (은닉 2개 + 출력 1개) · 파라미터 4,705개 입력 피처 129개 표준화된 값 은닉 1 층 129 → 32 활성 relu 가중치 129×32 편향 32 파라미터 4,160 층 1 은닉 2 층 32 → 16 활성 relu 가중치 32×16 편향 16 파라미터 528 층 2 출력 층 16 → 1 활성 logistic 가중치 16×1 편향 1 파라미터 17 층 3 출력 P(상승) 0.5 기준 방향 ← 깊이 3 층 →
상자 하나가 가중치 층 하나다. 화살표 위 숫자가 그 층의 입력→출력 폭이고, 아래 눈금이 깊이다.
그림 C · 학습 손실 곡선과 멈춘 지점 멈춘 지점 — 반복 58 0.7242 0.0217 손실 (위 = 최고, 아래 = 최저) 반복 1 반복 67 → 세팅 상한 600 은 축 밖 조기 종료 켬 · 검증 최고 정확도 0.6000
세로선이 실제로 멈춘 반복(58)이다 — 상한 600 에 닿기 전에 조기 종료가 걸렸는지 그림에서 바로 읽힌다.

결과

정본 런 results/20260922_183243_auction/. 성능은 모두 정직 선택 값이고, 사후 최고는 참고로만 싣는다.
티어새 블록피처 시험정직 선택누적 적응상수규칙20사후 최고
A0_core— (기준)67 1,497일0.5772+461틱 0.55040.5878et 0.6005
A2_auctionn2_ 입찰86 1,497일0.5752+467틱 0.55040.5878et 0.5985
A3_lendn3_ 대차·외국인95 1,497일0.5598+349틱 0.55040.5878et 0.5912
A4_fundingn4_ 단기자금 821,497일0.5818 +525틱0.55040.5878 et 0.5999
A_all셋 전부129 1,497일0.5678+471틱 0.55040.5878et 0.5932
A_only새 블록만62 1,497일0.5418+297틱 0.55040.5878svm_rbf 0.5631
B0_core— (기준)67 535일0.5664+144틱 0.60190.5925knn 0.6093
B1_nightn1_ 야간 해외금리86 535일0.5626+160틱 0.60190.5925knn 0.5981
B5_gapn5_ 전일 현선갭79 535일0.5514+128틱 0.60190.5925rf 0.5981
B_all다섯 전부160 535일0.5383+124틱 0.60190.5925et 0.5944
B_only새 블록만93 535일0.5402+128틱 0.60190.5925svm_rbf 0.6019
티어별 승률과 기준선
짙은 막대가 기준 티어다. 붉은 점선이 20분 모멘텀 규칙, 회색 점선이 적응 상수다. 규칙선 위로 올라간 막대가 하나도 없다. 짧은 창에서는 적응 상수(60.19%)가 규칙보다도 높다. 2024~2026년은 하락이 우세한 해다.
최고 티어와 기준 티어의 누적 틱
맞으면 +|ref|, 틀리면 −|ref| 를 더한 누적이다. 단기자금 티어가 기준보다 +64틱 앞서지만 여덟 해에 걸친 차이라 하루 0.04틱 수준이다.

가설별로 읽기

가설 다섯. 모두 «기준 티어 대비» 이고, 같은 시험일을 짝지어 봤다.
#블록티어 vs 기준승률 차 흔들림 2배 문턱짝지은 McNemar판정
H29n1_ 야간 해외금리 0.5626 vs 0.5664−0.37%p2.72%p p=0.8877미지지
H30n2_ 입찰 결과 0.5752 vs 0.5772−0.20%p3.42%p p=0.8644미지지
H31n3_ 대차·외국인 0.5598 vs 0.5772−1.74%p3.68%p p=0.0857미지지
H32n4_ 단기자금 0.5818 vs 0.5772+0.47%p2.78%p p=0.4999미지지
H33n5_ 전일 현선갭 0.5514 vs 0.5664−1.50%p2.60%p p=0.3317미지지
가설별 효과 크기와 문턱
막대가 기준 티어 대비 승률 차, 붉은 눈금이 시드 흔들림 2배 문턱이다. 부호가 양수인 것은 H32 하나이고 그 크기가 문턱의 6분의 1이다.
긴 창 티어의 연도별 승률
연도별로 보면 2019~2022년이 낮고 2023년부터 올라온다. 티어 사이 순서도 해마다 바뀐다. 합산 차이가 작은 이유가 여기 있다.

왜 그런가

  • 열을 더하면 대체로 나빠진다. 긴 창에서 62열을 더한 A_all 이 기준보다 −0.94%p 이고, 새 블록만 쓴 A_only 는 −3.54%p 다. 표본이 1,497일인데 열이 129개면 트리가 쪼갤 자리는 많고 신호는 얇다.
  • 가장 덜 해로운 것이 단기자금(15열)이다. 열 수가 가장 적고 결측이 없으며 유일하게 부호가 양수다. 다음에 이 축을 다시 연다면 여기다.
  • 같은 표라도 질문이 맞아야 값이 난다. 대차와 외국인 집계는 여기서 −1.74%p 다. 앞선 실험에서 같은 표가 종목 횡단면(어느 종목이 싼가)에서는 값을 냈다. 그 정보는 «오늘 시장이 오르나» 에 있는 것이 아니다.
  • 모델이 고르는 것도 바뀌지 않는다. 정직 선택이 해마다 고른 모델은 대부분 et, rf(배깅트리)이고, 사후 최고도 열한 티어 중 여덟에서 et 다. 피처를 바꿔도 계열 순서가 그대로다.
  • 짧은 창에서는 열을 더하는 것이 통계적으로 해롭다. B_all과 B_only 는 적응 상수 대비 McNemar p=0.0182, 0.0109 로 유의하게 나쁘다.

한계

짧은 창이 짧다. n1_과 n5_ 는 2022년부터라 시험이 535일뿐이고 그 구간의 기저율이 쏠려 상수 기준선이 60% 다. 이 창에서 «신호 없음» 과 «표본 부족» 을 가르지 못한다. 사전등록에 그 사실을 미리 적었다.

  • 블록을 통째로만 넣었다. 열 단위 선택(전진 선택, 정규화 경로)은 하지 않았다. n4_ 15열 중 한둘만 유효할 가능성은 이 실험이 답하지 않는다.
  • 레짐 분해 미수행. 연도별 표만 냈다.
  • 비용과 체결 축은 비해당. 방향 채점 게임이라 손익 축이 없다.
  • 계산 사고 하나. 티어를 병렬로 돌릴 때 워커 안쪽 스레드 수가 부스팅 파라미터 사전에 박혀 있어 첫 시도가 과다구독으로 한 시간 넘게 티어 하나도 끝내지 못했다. 스레드를 고정하고 워커를 넷으로 줄여 34분에 끝냈다. 결과에는 영향이 없다. 스레드 수는 확률을 바꾸지 않으며, 구조도 렌더러도 같은 수로 맞춰 18종 전부 재현 검증을 통과했다.

산출물

  • 사전등록protocol.md
  • 분석과 판정(정본 수치)analysis.md
  • 정본 런results/20260922_183243_auction/
  • 새 블록 빌더code/nfeat10.py
  • 티어와 가설 정의code/tiers10.py
  • 그림과 구조도code/render_figures10.py, code/render_model10.py