자료 품질, 장중 1분 자료 4계열, Isolation Forest, 2022 ~ 2026

심어 둔 자료 오류를 이상 탐지가 규칙 검사보다 먼저 잡는가

우리가 실제로 겪은 자료 오류 다섯 종을 깨끗한 1분 자료에 1,500번 다시 심고, 지금의 수집 가드와 하루 특징 Isolation Forest, 전략 손익 경보가 각각 몇 번 잡는지와 깨끗한 날을 몇 번 잘못 잡는지 쟀다. 이상 탐지는 규칙과 손익 경보를 크게 앞섰지만 미리 정한 탐지율 80%, 오탐률 2% 에는 못 미쳤다.

보류, H955 지지, H954 미지지 IF 탐지 62.7%, 오탐 3.2% 평가 2025-01 ~ 2026-10, 심은 날 1,500

세 줄 요약

  1. 다섯 종 오류를 1,500번 심었을 때 하루 특징 Isolation Forest 는 62.7% 를 잡고 깨끗한 날 3.2% 를 잘못 잡았다. 지금의 수집 가드는 3.7%, 손익 경보는 10.0% 만 잡았다.
  2. 미리 정한 문턱(탐지 80% 이상, 오탐 2% 이하)에는 둘 다 못 미쳤다. 오탐의 39% 는 연결 1분표가 만기일 11:31 에 월물을 바꾸는 이음 날이었다.
  3. 판정은 보류다. 실제 자료에서 10선 2023-12-19 만기 월물의 150틱 이탈 체결이 연결표에 36분 실린 것을 찾았다. 다음은 이음 봉을 지운 견고 z 가드의 재검정이다.

가설과 결론

가설
H954: 1분봉과 하루 특징 12개의 Isolation Forest 가 다섯 종 오류의 세 강도에서 탐지율 80% 이상, 깨끗한 날 오탐률 2% 이하를 낸다. H955: 그 탐지율이 지금의 규칙 검사보다 높다. H956: 전략 손익 경보의 탐지율은 이상 탐지보다 낮다. H957: 규칙과 이상 탐지를 함께 쓰면 규칙보다 많이 잡고 오탐률은 3% 이하다. H958: 이상 탐지가 다섯 종 모두 강 단계에서 절반 이상을 잡는다. H959: 실제 자료에서 몰랐던 오류 후보를 찾는다(탐색).
결론
H955 와 H956 은 지지, H954, H957, H958 은 미지지다. 이상 탐지는 규칙보다 +59.0%p, 손익 경보보다 +51.3%p 더 잡았고 두 차이 모두 월 블록 부트스트랩 한쪽 p < 0.0005 다. 그러나 탐지율 62.7% 와 오탐률 3.24% 는 문턱 밖이다. 사전등록 규칙대로 판정은 보류다. 이상 탐지는 가드 후보지만 지금 꼴로는 배치에 올릴 수 없다.

이 실험은 거래 신호가 아니라 거래 신호의 입력을 지키는 장치에 관한 것이다. 우리는 지난 몇 달 사이 자료 오류 때문에 실험 결론을 여러 번 되돌렸다. 달러선물 1분 표의 일부 열은 해마다 같은 경로가 복사돼 있었고, 코스콤 틱 표의 하루는 같은 행이 중복으로 부풀어 있었다. WTI 1분 자료는 미국 중부 시간이었는데 한국 시간으로 읽어 미래 정보를 썼고, 장중 표의 마지막 스탬프에는 관측값이 아닌 종가 슬롯 값이 실려 있었다. 3선 1분표에 10선 값이 섞여 들어온 날도 있었다. 이런 오류는 대부분 사람이 결과가 이상하다고 느낀 뒤에야 드러났다.

출발점은 Jane Street 의 운영 강연을 정리한 노트였다. 노트의 요지는 서버가 정상으로 답해도 틀린 종목과 틀린 가격으로 거래할 수 있으니, 서비스 정상률보다 «너무 좋은 체결» 같은 사건 경보를 정의하라는 것이다. 노트는 재생 자료에 오류를 심고 서비스 경보와 손익 경보의 탐지율과 오탐률을 비교하라는 가설을 남겼다. 우리는 이것을 세 갈래로 바꿨다. 지금 수집 배치에 있는 규칙 검사, 하루 단위 특징의 비지도 이상 탐지, 그리고 우리 전략과 같은 입력을 쓰는 손익 경보다. 손익 경보가 늦을 것이라는 예측은 우리 전략이 하루 한 번 거래하고 손익 분포가 넓다는 데서 왔다.

용어와 기호

계열 날
한 계열(3선, 10선, 달러선물, 코스피200 선물)의 하루치 1분봉. 탐지의 단위다.
정상 세션 날
첫 봉이 09:01 또는 08:46, 마지막 봉 15:45, 봉 380개 이상, 같은 시각 중복 없음인 계열 날. 가격은 보지 않고 시각과 개수만 본다.
심은 날
평가 구간 정상 세션 날 하나를 골라 오류 한 종을 한 강도로 넣은 계열 날. 모두 1,500개(5종 × 3강도 × 100)다. 복원 추출이라 고유한 계열 날은 980개다.
E0 음성 대조
아무것도 바꾸지 않고 심는 코드만 거친 계열 날 100개. 심는 과정이 경보를 만들지 않는지 본다.
탐지율(TPR)
심은 날 가운데 경보가 울린 몫.
오탐률(FPR)
평가 구간 깨끗한 정상 세션 날 1,669개 가운데 경보가 울린 몫.
D1 규칙(현행)
지금 수집 배치의 가드 넷: 그날 가격 중앙값의 밴드, 직전 종가 대비 점프, 형제 테너 표와의 값열 완전 일치, 세션 모양.
D1x 넓힌 규칙
D1 에 전날 값열 일치, 봉 수익 20σ 초과, 달러선물과 코스피200 의 학습 범위 밴드와 점프를 더한 비교용 규칙.
D2 Isolation Forest(IF)
계열마다 학습 구간 정상 세션 날로 학습한 무작위 분기 나무 300그루의 이상 탐지. 점수가 학습 점수의 98 분위를 넘으면 경보.
D2b 견고 z 최댓값
같은 특징 12개를 학습 중앙값과 IQR 로 표준화한 절댓값의 최댓값. 문턱은 역시 학습 98 분위. 비교 모델이다.
D3 손익 경보
대리 전략 둘의 그날 손익이 학습 구간 일별 손익 99% 띠 밖이면 경보. 3선과 10선에만 쓴다.
D4 결합
D1 또는 D2 가 울리면 경보.
견고 z
(값 − 학습 중앙값) ÷ 학습 IQR. 평균과 표준편차 대신 중앙값과 사분위 범위를 써 극단값에 덜 흔들린다.
IQR
사분위 범위. 75 분위 − 25 분위.
만기 이음 날
연결 1분표가 근월 월물을 다음 월물로 바꾸는 날. 국채선물은 3, 6, 9, 12월 셋째 화요일 11:31 봉에서 바뀐다.
월 블록 부트스트랩
심은 날이나 깨끗한 날을 달 단위로 묶어 달을 복원 추출해 통계량 분포를 만드는 방법. 같은 달 안의 상관을 보존한다.
p, Holm
p 는 한쪽 부트스트랩 p 값(차이가 0 이하인 재표본 비율). Holm 은 가설 셋(H955, H956, H957)의 다중 비교 보정이다.
틱
국채선물 가격 0.01. 손익 경보의 단위다.

자료

데이터셋

대상은 한국 시간으로 찍힌 장중 1분 자료 네 계열이다. 3선과 10선은 우리가 월물별 원표에서 근월을 이어 만든 연결 1분표이고, 달러선물과 코스피200 선물은 인포맥스 장중 표다. 기간은 2022-01-03 부터 2026-10-31 까지이고 봉 라벨은 봉 끝 시각이다(09:01 은 09:00 개장 뒤 첫 봉). 오류 재현의 원래 목록에 있던 WTI 1분과 미국 국채선물 1분은 뺐다. WTI 는 2026 년 것만 있어 학습 구간이 없고, 미국 국채선물 1분은 시각 체계가 두 번 바뀌어 깨끗한 날을 정할 수 없었다. 그래서 시간대 오류는 국내 계열에서 «값이 시각보다 k 분 늦게 찍힌» 꼴로 재현했다.

표 1. 계열별 자료와 정상 세션 날 수(학습 2022 ~ 2024, 평가 2025-01 ~ 2026-10). 정본 런 train_feats.csv 와 clean.csv 에서 셌다.
계열원천기간전체 날학습 날평가 날점검에서 본 것
3선연결 1분표(자체)2022-01 ~ 2026-101,1226953982026-07 전체 공백, 2026-08 일부
10선연결 1분표(자체)2022-01 ~ 2026-101,1287013982026-07 공백, 2022-07 일부
달러선물장중 표2022-01 ~ 2026-101,177709435같은 시각 중복 4행
코스피200 선물장중 표2022-01 ~ 2026-101,0205544382022 ~ 2023 빈 달 다수, 중복 1행
합계4,4472,6591,669

점검과 분할

결과를 보기 전에 기간, 빈 날, 중복, 시각을 점검했다. 하루 봉 수의 중앙값은 405개(09:01 ~ 15:45)였고 2025-12 개장이 08:45 로 당겨진 뒤로는 420개(08:46 ~ 15:45)다. 수능일과 연초처럼 늦게 열거나 16:45 에 끝나는 날이 있고, 0 이하 가격이나 빈 값은 없었다. 이 특수한 날은 정상 세션 날 거름에서 빠진다. 거름은 시각과 봉 수만 보므로 가격 오류와는 무관하지만 세션 모양 규칙의 오탐을 0 으로 만드는 효과가 있어 규칙에 유리하다. 학습은 2022 ~ 2024 정상 세션 날 2,659개, 평가는 2025-01 ~ 2026-10 정상 세션 날 1,669개다. 특징 가운데 직전 20일 통계를 쓰는 것이 있어 각 계열의 첫 21일은 쓰지 않았다.

계열별 달마다 정상 세션 날 수와 학습 평가 분할을 보인 가로 막대 그림
그림 1. 계열별 정상 세션 날의 분포와 분할. 옅은 파랑이 학습(2022 ~ 2024), 짙은 파랑이 평가(2025 ~ 2026-10)이고 색이 진할수록 그 달의 날이 많다. 3선과 10선의 2026-07 공백, 코스피200 의 2022 ~ 2023 빈 달이 보인다.

방법

심는 오류

평가 구간 정상 세션 날 가운데 (종류, 강도)마다 100개를 무작위로 뽑고(계열 넷 균등, seed 263) 한 계열 한 날에만 오류를 넣었다. 봉 시각 격자는 바꾸지 않아 세션 모양은 그대로다. 경로 복사(E1)는 그날보다 앞선 해의 무작위 날 1분 수익을 원래 날 시가에 이어 붙이며, 오후 1/3, 뒤 2/3, 하루 전체를 바꾼다. 날 중복(E2)은 같은 자리 봉의 가격과 거래량을 직전 거래일 것으로 바꾸며 강도는 같은 비율이다. 시각 어긋남(E3)은 가격과 거래량이 실제보다 5분, 15분, 60분 늦게 찍히게 밀고 앞자리는 전날 마지막 값으로 메운다. 마지막 스탬프 누설(E4)은 마지막 봉 값을 다음 거래일 첫 봉, 10:00 봉, 마지막 봉 종가로 바꾼다. 단위 오류(E5)는 봉 하나, 연속 10% 구간, 하루 전체의 가격에 100 을 곱한다.

같은 날 3선 1분 가격에 다섯 가지 오류를 심기 전과 뒤를 겹친 여섯 패널 그림
그림 2. 2025-06-17 3선 1분 가격(회색)과 오류를 심은 뒤(빨강). 경로 복사와 시각 어긋남은 하루 모양이 그럴듯해 눈으로도 가려내기 어렵고, 마지막 스탬프 누설은 마지막 봉 하나만 바뀐다. 단위 ×100 구간은 그림 위쪽에서 잘라 그렸다. 이날은 6월 만기일이라 원본의 11:31 계단은 만기 이음이다.

탐지기 넷

D1 규칙은 지금 수집 배치에 실제로 들어 있는 가드를 옮긴 것이다. 그날 가격 중앙값이 밴드(3선 95 ~ 110, 10선 98 ~ 125) 밖이면, 중앙값이 직전 종가에서 3선 1.5pt, 10선 2.5pt 넘게 떨어지면, 3선과 10선의 값열이 완전히 같으면, 세션 모양이 정상과 다르면 경보다. 달러선물과 코스피200 에는 가격 가드가 없다. D2 Isolation Forest 는 계열 날마다 특징 12개를 장 마감 뒤 계산해 계열마다 따로 학습했다. 특징은 분포(실현변동 비, 최대 수익 비, 첨도, 마지막 봉 수익의 z), 수준(시가 갭, 중앙값 이탈, 거래량 비), 정렬(짝 계열과 같은 분 상관, ±60분 시차 상관 이득), 복사(다른 모든 날 경로와의 상관 최댓값, 전날 같은 자리 가격 일치율, 거래량 일치율) 넷으로 묶인다. 짝은 3선과 10선, 달러선물과 코스피200 이다.

D3 손익 경보는 3선과 10선 각각에 대리 전략 둘을 돌린다. P1 은 개장 뒤 60분 수익 부호로 진입해 마지막 봉에 청산하는 첫 시간 추세이고, P2 는 전날 일간 수익의 반대 부호로 전날 마지막 봉에 진입해 그날 마지막 봉에 청산하는 하루 되돌림이다. 학습 구간 일별 손익을 달 단위로 1,000번 복원 추출해 0.5 분위와 99.5 분위를 평균한 띠를 만들고, 그날 P1 이나 P2 가 띠 밖이면 경보다. 양쪽 꼬리를 모두 보므로 «너무 좋은 손익» 도 경보다. 0018 카드와 0229 의 원 전략 코드는 오염 자료로 다시 돌리지 않았고, 같은 입력을 쓰는 대리 전략으로 갈음했다. D4 는 D1 또는 D2 다. 비교로 D1x(넓힌 규칙), D2b(견고 z 최댓값), 12시까지의 봉만 쓴 D2 를 함께 쟀다.

검정과 판정

모든 문턱과 판정 규칙은 결과를 보기 전에 사전등록했다. H954 는 IF 의 전체 탐지율 80% 이상과 평가 구간 오탐률 2% 이하를 점 추정으로 둘 다 만족해야 지지다. H955, H956, H957 은 같은 심은 날을 짝지은 탐지율 차이를 심은 날의 달로 묶은 월 블록 부트스트랩 2,000번으로 검정하고 한쪽 p 를 Holm 으로 보정해 0.05 와 비교했다. H957 은 결합의 오탐률 3% 이하도 함께 요구한다. H958 은 검정 없이 강 단계 종류별 탐지율이 모두 50% 이상인지 본다. 실험 판정은 H954 와 H955 가 모두 지지면 채택, H955 만 지지면 보류, H955 가 미지지면 폐기로 정했다. 거래 신호가 아니라서 비용과 연간 빈도 규칙은 쓰지 않는다. IF 의 문턱은 학습 구간 점수만으로 정했고 심은 날로 고르지 않았으므로 선택 편향 귀무는 필요하지 않다. 대신 E0 음성 대조로 심는 코드를 사보타주 검증했고, 규칙은 하나씩 꺼 보며 무엇이 일하는지 확인했다.

모델

Isolation Forest 는 무작위로 고른 특징과 무작위 분기점으로 표본을 반복해 나누는 나무를 여러 그루 키우고, 어떤 점이 홀로 떨어지기까지 거친 분기 수(경로 길이)의 평균으로 이상함을 잰다. 드문 값은 적은 분기로 떨어지므로 경로가 짧고 점수가 크다. 정답 라벨이 필요 없어 오류 사례를 모으지 않고도 학습할 수 있다는 점 때문에 골랐다. 나무 300그루, 나무당 표본 256개, 특징은 학습 중앙값과 IQR 로 표준화하고 빈 값은 0 으로 채웠다. 아래 구조도는 정본 런과 같은 학습 특징과 같은 seed 로 다시 적합한 3선 모델에서 그렸고, 그리기 전에 정본 런이 저장한 심은 날 점수를 오차 1e-6 안에서 재현하는지 확인했다.

모델 개요 입력(계열 날 하나, 장 마감 뒤) 그날 1분 가격과 거래량 전날 마지막 봉, 직전 20일 통계 짝 계열 같은 날 1분 가격 같은 계열 모든 날 경로 특징 12개(학습 중앙값, IQR 로 표준화) 분포 4: 변동, 최대 수익, 첨도, 마지막 봉 수준 3: 갭, 이탈, 거래량 정렬 2: 같은 분, 시차 상관 복사 3: 경로 유사도, 전날 일치 둘 Isolation Forest (3선, 학습 2022 ~ 2024 정상 세션 695일) f₁ f₂ f₃ f₄ f₅ … f₃₀₀ 위는 이 모델 트리 5그루와 마지막 그루의 실제 위상(점 = 잎): 실물은 그림 B, C 점수(x) = 2^(−평균 h(x) / c(256)), 나무 300그루 나무마다 256표본 무작위 추출, 무작위 특징과 무작위 분기점 출력 이상 점수 = 평균 경로 길이가 짧을수록 큼 점수 > 학습 98 분위 이면 경보 계열마다 따로 학습 하이퍼파라미터: 세팅한 상한과 학습이 실제로 닿은 값 n_estimators = 300 이어 붙이는 트리 개수: 위 f₁ … 가 이만큼 실제 300그루 max_features = 1.0 분할마다 후보 피처를 일부만 뽑는다 트리끼리 서로 다른 곳을 보게 만든다 그루별 잎 수 분포 18 22 26 30 34 38 42 46 50 54 58 62 66 70 74 78 82 86 90 92 잎 18~92개
그림 3. 3선 Isolation Forest 개요. 계열 날 하나에서 특징 12개를 만들고, 300그루 나무에서 그 날이 몇 번 만에 홀로 떨어지는지 평균해 이상 점수를 낸다.
첫 나무 깊이 0, 뿌리 분기 조건, n 깊이 1 분기 조건, n 깊이 2 분기 조건, n 깊이 3 분기 조건, n 깊이 4 분기 조건, n 깊이 5, 접힘 아래를 접었다 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 최대 수익 비 ≤ 0.9736 n=256 수준 이탈 z ≤ 4.522 n=235 전날 가격 일치율 ≤ 0.1878 n=234 마지막 봉 z ≤ -0.5597 n=131 첨도 ≤ -0.1123 n=24 하위 7잎 n=15 하위 7잎 n=9 시차 상관 이득 ≤ 0.2677 n=107 하위 8잎 n=73 하위 6잎 n=34 거래량 비 ≤ -0.4103 n=103 전날 가격 일치율 ≤ 3.904 n=38 하위 6잎 n=34 하위 4잎 n=4 시차 상관 이득 ≤ -0.3561 n=65 하위 7잎 n=18 하위 6잎 n=47 잎값 +0.6662 n=1 짝 같은 분 상관 ≤ -0.8436 n=21 잎값 +0.8907 n=1 전날 거래량 일치율 ≤ -0.06436 n=20 전날 가격 일치율 ≤ 0.8719 n=15 시차 상관 이득 ≤ -0.8003 n=14 하위 5잎 n=5 하위 6잎 n=9 잎값 +0.7345 n=1 마지막 봉 z ≤ 2.162 n=5 마지막 봉 z ≤ -0.1138 n=2 잎값 +0.2506 n=1 잎값 +0.3274 n=1 짝 같은 분 상관 ≤ 0.05856 n=3 잎값 +0.6792 n=1 하위 2잎 n=2 잎값 ≥ 0 (예측을 위로) 잎값 < 0 (예측을 아래로) n = 그 노드에 떨어진 학습 표본 수, 조건(≤)이 참이면 왼쪽 가지 '예', 거짓(>)이면 오른쪽 '아니오', 잎이 많아 깊이 5 아래를 접었다(이 트리 전체 깊이 8, 잎 70개)
그림 4. 첫 나무의 실제 분기. 분기 특징과 분기점은 무작위로 뽑히며, 일찍 홀로 떨어진 잎(표본 수가 적은 얕은 잎)이 이상한 날의 자리다.
마지막 나무 깊이 0, 뿌리 분기 조건, n 깊이 1 분기 조건, n 깊이 2 분기 조건, n 깊이 3 분기 조건, n 깊이 4 분기 조건, n 깊이 5 분기 조건, n 깊이 6, 접힘 아래를 접었다 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 예 아니오 시차 상관 이득 ≤ 3.162 n=256 실현변동 비 ≤ 1.766 n=255 짝 같은 분 상관 ≤ -0.3266 n=240 짝 같은 분 상관 ≤ -0.6174 n=74 경로 복사 유사도 ≤ -1.678 n=51 잎값 +0.6700 n=1 시가 갭 z ≤ 0.6629 n=50 하위 4잎 n=36 하위 4잎 n=14 경로 복사 유사도 ≤ -1.565 n=23 짝 같은 분 상관 ≤ -0.4721 n=2 잎값 +0.8156 n=1 잎값 +0.0472 n=1 첨도 ≤ 1.135 n=21 하위 4잎 n=19 하위 2잎 n=2 실현변동 비 ≤ -1.798 n=166 잎값 +0.3756 n=1 마지막 봉 z ≤ 0.9488 n=165 전날 거래량 일치율 ≤ 1.063 n=129 하위 4잎 n=127 하위 2잎 n=2 경로 복사 유사도 ≤ -0.9278 n=36 하위 3잎 n=7 하위 3잎 n=29 전날 거래량 일치율 ≤ 0.0146 n=15 첨도 ≤ 19.92 n=14 경로 복사 유사도 ≤ 4.553 n=13 시가 갭 z ≤ 6.361 n=12 하위 4잎 n=11 잎값 +0.9771 n=1 잎값 +0.8850 n=1 잎값 +0.3960 n=1 잎값 +0.3173 n=1 잎값 +0.2470 n=1 잎값 ≥ 0 (예측을 위로) 잎값 < 0 (예측을 아래로) n = 그 노드에 떨어진 학습 표본 수, 조건(≤)이 참이면 왼쪽 가지 '예', 거짓(>)이면 오른쪽 '아니오', 잎이 많아 깊이 6 아래를 접었다(이 트리 전체 깊이 8, 잎 39개)
그림 5. 마지막(300번째) 나무. 나무마다 다른 256표본과 다른 분기로 자란다.
깊이별 분기 특징
분기 위치 \ 피처시차 상관 이득첨도실현변동 비마지막 봉 z경로 복사 유사도수준 이탈 z최대 수익 비짝 같은 분 상관시가 갭 z거래량 비전날 거래량 일치율전날 가격 일치율합
깊이 0 (뿌리)262620172027362635202126300
깊이 1514058514637484836443741537
깊이 2608377826781729072607754875
깊이 31241199611811711396100103105931011,285
깊이 41601541551701561351691431631681481271,848
깊이 52122502302052151982052152131971792152,534
깊이 63052812882832862812682742752822632533,339
깊이 73693453623533523733503463373463402834,156
분기 합1,3071,2981,2861,2791,2591,2451,2441,2421,2341,2221,1581,10014,874

표 A. 300그루 전체에서 깊이마다 어느 특징으로 몇 번 갈랐는지 센 표(3선 모델).

결과

확증 비교

사전등록한 비교는 표 2 와 그림 6 에 있다. 지금의 규칙은 심은 날 1,500개 가운데 56개(3.7%) 만 잡았다. 56개는 전부 3선과 10선의 하루 전체 ×100 이었고, 밴드와 점프가 같은 날을 함께 잡았다. 깨끗한 날 오탐은 0 이었다. IF 는 941개(62.7%) 를 잡았지만 깨끗한 날 1,669개 가운데 54개(3.24%) 를 잘못 잡았다. 월 블록 95% 구간은 탐지율 59.7 ~ 65.8%, 오탐률 2.29 ~ 4.17% 로 두 문턱 모두 구간 밖이다. 그래서 H954 는 미지지다. IF 와 규칙의 짝지은 차이는 +59.0%p(95% 구간 55.9 ~ 62.2)로 2,000번 재표본 중 한 번도 0 아래로 가지 않았다. 이상 탐지가 지금의 가드보다 훨씬 많이 잡는다는 H955 는 Holm 보정 뒤에도 지지다.

표 2. 탐지기별 탐지율과 오탐률(정본 런 metrics.json, 구간은 월 블록 부트스트랩 95%). 손익 경보는 3선과 10선 심은 날 752개, 깨끗한 날 796개에서 쟀다.
탐지기탐지율95% 구간오탐률95% 구간지위
D1 규칙(현행)3.7%2.9 ~ 4.6%0.00%0 ~ 0%확증 비교
D2 Isolation Forest62.7%59.7 ~ 65.8%3.24%2.29 ~ 4.17%확증
D3 손익 경보10.0%1.13%확증 비교
D4 규칙 또는 IF63.0%60.0 ~ 66.0%3.24%2.29 ~ 4.17%확증
D1x 넓힌 규칙20.9%16.7 ~ 25.9%9.77%5.0 ~ 15.7%비교
D2b 견고 z 최댓값65.2%2.46%비교
D2 12시까지 봉만40.6%4.61%비교
탐지기별 오탐률과 탐지율 산점도와 Isolation Forest 문턱 격자 선
그림 6. 가로는 깨끗한 날 오탐률, 세로는 심은 날 탐지율이다. 점선은 H954 의 문턱(80%, 2%)이고 두 점선이 만드는 왼쪽 위 칸(오탐 2% 이하, 탐지 80% 이상)이 목표 자리다. 선은 IF 의 문턱 분위(95 ~ 99.5)와 나무 수, 표본 크기 격자다. 어떤 격자 칸도 목표 자리에 닿지 못했다.

손익 경보는 선물 심은 날 752개 가운데 10.0% 만 잡았다. 같은 날들에서 IF 는 61.3% 를 잡아 차이는 +51.3%p(47.1 ~ 55.8), 한쪽 p < 0.0005 로 H956 은 지지다. 손익 경보가 잡은 것은 거의 하루 전체 ×100(100%)과 10% 구간 ×100(11%)뿐이었다. 학습 구간에서 정한 3선 첫 시간 추세의 99% 띠가 −51 ~ +45틱, 하루 되돌림이 −78 ~ +68틱으로 넓어서 경로 복사나 시각 어긋남처럼 손익을 수 틱만 바꾸는 오류는 띠 안에 머문다. 결합 D4 는 규칙보다 +59.3%p 더 잡았지만(p < 0.0005) 오탐률이 IF 와 같은 3.24% 라 3% 문턱을 넘어 H957 은 미지지다. 아무것도 심지 않은 E0 100건에서 IF 경보는 2건(2.0%)이었다. 오탐률 3.24% 라면 100건에서 기대 3.2건이고 이항 분포로 0 ~ 7건이 흔하므로 어긋나지 않는다. 다만 이 값은 깨끗한 날 오탐률의 월 블록 구간(2.29 ~ 4.17%) 밖이고, 100건으로는 심는 코드의 무결성을 강하게 입증하지 못한다.

종류와 강도별

그림 7 은 탐지율을 종류와 강도로 나눈 것이다. IF 는 날 중복(약 94%, 중과 강 100%)과 단위 ×100 의 봉 하나와 10% 구간(100%)을 거의 다 잡는다. 반면 경로 복사는 오후 1/3 과 2/3 을 바꾼 약과 중에서 6%, 11% 에 그치고 하루 전체를 바꾼 강도 27% 다. 시각 어긋남은 5분이든 60분이든 49 ~ 53% 로 강도와 거의 무관하다. 마지막 스탬프 누설은 48 ~ 63% 다. 강 단계에서 경로 복사 27%, 시각 어긋남 49% 가 50% 에 못 미쳐 H958 은 미지지다. 눈에 띄는 것은 하루 전체 ×100 을 IF 가 88% 만 잡았다는 점이다. 같은 특징으로 만든 견고 z 최댓값은 100% 를 잡았다. 이 차이는 해석 절에서 IF 의 범위 밖 맹점으로 설명한다.

오류 종류와 강도 15행, 탐지기 7열의 탐지율 열지도
그림 7. 종류와 강도별 탐지율(%). 행은 오류 다섯 종의 약, 중, 강이고 열은 탐지기다. 손익 경보 열은 3선과 10선 심은 날만 센 값이다. 규칙(현행) 열은 단위 ×100 강의 56% 를 빼면 모두 0 이다.
표 3. 종류별 IF 탐지율을 계열로 나눈 것(%), 강도 셋을 합쳤다. 정본 런 explore/by_type_series.csv.
종류3선10선달러선물코스피200
경로 복사2919410
날 중복9910093100
시각 어긋남34624169
마지막 스탬프 누설27555385
단위 ×1001009590100

계열로 나누면 3선이 가장 약하다. 3선의 시각 어긋남과 마지막 스탬프 누설 탐지율은 34%, 27% 로 10선(62%, 55%)의 절반 남짓이다. 3선은 하루 움직임이 몇 틱에 그쳐 1분 수익이 0 과 ±1틱으로 끊기고, 그래서 시차 상관과 마지막 봉 z 가 깨끗한 날에도 크게 흔들린다. 달러선물의 경로 복사 탐지율은 4% 로 가장 낮은데, 달러선물과 코스피200 의 같은 분 상관 중앙값이 0.17 로 3선과 10선의 0.48 보다 훨씬 낮아 짝 시장과 어긋나도 티가 덜 난다.

깨끗한 날과 오류 종류별 심은 날의 Isolation Forest 점수 상자 그림
그림 8. IF 점수에서 문턱을 뺀 값의 분포. 0 위가 경보다. 날 중복과 단위 ×100 은 상자 전체가 문턱 위에 있고, 경로 복사는 상자 대부분이 깨끗한 날과 겹친다.

문턱 격자와 특징 빼 보기

사전등록한 격자(문턱 분위 다섯 × 나무 수 둘 × 표본 크기 둘)에서 문턱을 95 분위로 낮추면 탐지율이 75.3% 로 오르지만 오탐률이 7.8% 가 되고, 99.5 분위로 올리면 오탐률 0.9% 에 탐지율 35.3% 다. 나무 수와 표본 크기는 결과를 거의 바꾸지 않았다. 80% 와 2% 를 함께 만족하는 칸은 20칸 중 하나도 없다. 오탐 2% 를 지키는 99 분위에서 IF 는 51.1% 를 잡는다. 특징 묶음을 하나씩 뺀 표 4 는 각 특징이 어떤 오류를 맡는지 보여 준다.

표 4. 특징 묶음을 뺀 IF 의 종류별 탐지율과 오탐률(%), 정본 런 ablation.csv. 마지막 열은 경로 복사 강 단계만이다.
뺀 묶음탐지오탐복사중복시각누설×100복사 강
없음(전부)62.73.214.798.050.754.396.027
짝 계열 2개57.82.57.799.335.352.794.08
복사 3개50.13.59.339.352.356.393.312
분포 4개46.83.727.799.748.34.354.047
특징 묶음을 하나씩 뺀 Isolation Forest 의 오류 종류별 탐지율 막대 그림
그림 9. 특징 묶음을 뺐을 때 종류별 탐지율. 분포 특징을 빼면 마지막 스탬프 누설이 거의 사라지지만 경로 복사 강은 27% 에서 47% 로 오른다. 숲 하나에 특징을 모두 넣으면 서로의 신호를 희석한다는 뜻이다.

짝 계열 특징을 빼면 시각 어긋남이 51% 에서 35% 로, 복사 특징을 빼면 날 중복이 98% 에서 39% 로, 분포 특징을 빼면 마지막 스탬프 누설이 54% 에서 4% 로 떨어진다. 각 묶음이 자기 몫의 오류를 실제로 맡고 있다는 사보타주 확인이다. 그런데 분포 특징 넷을 빼면 경로 복사 강의 탐지율이 오히려 27% 에서 47% 로 오른다. 복사된 날은 경로 유사도가 1.0 에 가까운 아주 뚜렷한 흔적을 남기지만, 숲은 무작위로 고른 특징으로 나누므로 그 특징이 뽑히지 않은 분기에서는 소음 많은 분포 특징이 경로 길이를 정한다. 오전 12시까지의 봉만 쓴 IF 는 탐지율 40.6%, 오탐률 4.6% 였다. 마지막 스탬프 누설과 날 중복 약은 구조상 오전에는 보이지 않는다.

오탐의 정체와 실제 자료의 후보

여기부터는 결과를 본 뒤 한 탐색이다. IF 의 오탐 54개 가운데 21개(39%) 가 만기 이음 날이었다. 평가 구간 깨끗한 날에 이음 날은 40개 있었고 IF 는 그 절반을 울렸다. 이음 날을 빼면 IF 오탐률은 2.03%, 견고 z 최댓값은 1.23% 다. 연결 1분표는 만기일 11:31 봉에서 근월을 바꾸며 월물 간 가격 차이(3선 최대 83틱)를 1분 수익 하나로 남기고, 이것이 최대 수익 비와 첨도를 학습 범위 끝으로 밀어낸다. 이음 날을 학습에서만 빼고 다시 학습해 보니 이음 아닌 날 오탐이 2.8% 로 오히려 올랐다. 이음 날을 빼는 것보다 이음 봉 하나를 지운 뒤 특징을 계산하는 쪽이 맞는 처리다.

그래서 3선, 10선, 달러선물의 만기일 11:31 이전 봉을 월물 간 차이만큼 옮겨 이음 점프를 없앤 자료로, 같은 seed 와 같은 심은 날을 써서 전체를 다시 돌렸다(표 6). IF 의 오탐률은 3.24% 에서 2.76% 로, 이음 날의 오탐은 53% 에서 10% 로 줄었고 탐지율은 64.7% 로 조금 올랐다. 국채선물만 보면 오탐률이 3선 1.5%, 10선 1.3% 다. 남은 오탐의 큰 몫은 이음 처리를 하지 않았고 2026 에 급등락한 코스피200(5.3%)이다. 같은 자료의 견고 z 최댓값은 탐지 67.1%, 오탐 1.92% 로 오탐 문턱을 처음 지켰다. 그래도 탐지 80% 에는 13%p 모자라다.

표 6. 이음 봉 보정 전후(탐색). 보정 전은 정본 런, 보정 뒤는 results/20261110T053954_rolladj/ 이고 심은 날과 seed 는 같다.
탐지기탐지율 전탐지율 뒤오탐률 전오탐률 뒤
D1 규칙(현행)3.7%3.7%0.00%0.00%
D2 Isolation Forest62.7%64.7%3.24%2.76%
D2b 견고 z 최댓값65.2%67.1%2.46%1.92%
D3 손익 경보10.0%9.7%1.13%0.88%
계열별과 연도별 깨끗한 날 오탐률 막대 그림
그림 10. 깨끗한 날 오탐률을 계열별(왼쪽)과 연도별(오른쪽)로 나눈 것. 빨간 점선이 2% 다. 코스피200 이 4.8% 로 가장 높고, 2025 와 2026 은 3.3%, 3.1% 로 비슷하다. 2025-04 관세 충격 달을 빼도 3.0% 다.

정상 세션 날 4,328개 전체를 IF 로 매겨 상위 20개를 원천과 대조했다(H959). 16개가 만기 이음 날이었다. 새로 찾은 후보는 10선 2023-12-19 다. 연결표가 10:54 에 113.50 에서 112.00 으로 150틱 떨어지고 11:30 까지 112.00 에 머문다. 월물별 원표에서도 만기 월물이 10:54 에 300계약을 112.00 에 체결한 뒤 그대로였고, 같은 시각 다음 월물은 113.76 에서 움직이지 않았다. 다음 월물의 그날 거래량은 만기 월물의 12배였다. 벤더 오류가 아니라 한산한 만기 월물의 이탈 체결이 연결표에 36분 동안 실린 것이다. 둘째 후보는 코스피200 2026-07-28 ~ 31 이다. 마지막 값이 나흘 동안 −19% 뒤 하루 +19% 인데 같은 날 닛케이 선물과 달러선물은 그만큼 움직이지 않았다. 로컬에 독립된 코스피200 일봉이 없어 진위는 정하지 못했다.

여러 날 이어지는 오류와 전용 검사

이 소절도 탐색이다. 확증 실험은 오류가 하루에만 있다고 두었지만, 실제로 결론을 뒤집은 오류(복사 경로, 시간대, 종가 슬롯)는 모두 몇 주에서 몇 년 이어졌다. 그래서 3선과 10선의 평가 구간에서 시작일 40개씩을 골라 경로 복사(약 1년 전 같은 자리 날의 경로), 60분 시각 어긋남, 마지막 스탬프 누설을 20거래일 연속으로 심고, 오염된 날이 다음 날의 직전 통계에도 들어가게 했다. 손익 경보는 하루 경보와 함께 5일, 20일 누적 손익이 학습 구간 누적 손익의 99% 띠를 벗어나는지도 보았다. 같은 시작일에서 아무것도 심지 않은 창이 헛경보의 기준이다.

여러 날 이어지는 오류에서 탐지기별 첫 경보까지의 누적 비율 곡선 네 패널
그림 11. 오류가 시작된 뒤 그날까지 한 번이라도 경보가 울린 창의 비율. 맨 왼쪽은 아무것도 심지 않은 창이라 헛경보다. IF 하루 경보는 깨끗한 창의 절반에서도 20일 안에 한 번은 울리지만, «3일 중 2일» 규칙은 깨끗한 창에서 한 번도 울리지 않았다.

결과는 그림 11 과 같다. IF 의 하루 경보는 20일 안에 경로 복사 창 100%(첫날 63%), 60분 어긋남 100%(중앙값 2 ~ 3일째), 누설 100% 를 잡았다. 같은 창에서 하루 손익 경보는 25%, 14%, 40%, 누적 손익 경보는 16%, 3%, 10% 에 그쳤다. 아무것도 심지 않은 창에서도 하루 손익 경보가 15%, 누적이 6% 울렸으므로 손익 경보는 20일을 기다려도 헛경보와 거의 구별되지 않는다. 반대로 IF 하루 경보는 깨끗한 창의 48% 에서도 20일 안에 한 번은 울린다. 하루 오탐률 2.6% 가 20일 쌓인 결과다. 이것을 «최근 3일 중 2일 경보» 로 바꾸면 깨끗한 창 80개(1,600일)에서 헛경보가 0 이었고, 경로 복사 100%(중앙값 2일째), 누설 98%, 60분 어긋남 95% 를 20일 안에 잡았다. 오류가 이어진다면 하루 오탐 문턱 2% 는 지나치게 엄격한 기준이었던 셈이다.

표 7. 종류별 전용 검사(탐색). 특징 하나에 문턱 하나를 건 검사 여섯(복사 유사도, 전날 가격 일치율, 시차 상관 이득, 마지막 봉 z, 최대 수익 비, 수준 이탈)의 합집합. α 는 여섯 검사에 나눈 학습 구간 오탐 예산이다. depth/dedicated.csv.
자료α탐지율오탐률복사중복시각누설×100
원본0.0276.5%3.86%431008159100
원본0.0170.6%2.34%281007253100
이음 보정0.0279.8%4.07%561008460100
이음 보정0.0175.6%2.40%461007854100

숲 하나 대신 특징마다 따로 문턱을 건 전용 검사 여섯의 합집합은 같은 특징으로 더 많이 잡는다. 원본 자료에서 α 0.01 일 때 탐지 70.6%, 오탐 2.34% 로, 비슷한 오탐에서 IF 의 99 분위 문턱(51.1%, 1.7%)보다 약 20%p 많다. 이음 봉을 보정한 자료에서는 탐지 75.6%, 오탐 2.40% 로 사전등록 문턱(80%, 2%)에 가장 가까웠다. 시각 어긋남이 72 ~ 84% 로 크게 오른 것이 차이의 대부분이다. 숲에서는 묻히던 시차 상관 이득이 혼자 문턱을 가지면서 살아났다. 남은 약점은 경로 복사(28 ~ 56%)와 마지막 스탬프 누설(53 ~ 60%)이다. 확증 평가의 연도별 탐지율은 2025 년 61.9%(906건), 2026 년 64.0%(594건)로 비슷했다.

해석

지금의 규칙이 거의 아무것도 잡지 못한 이유는 가드가 하나의 사고, 즉 다른 테너 값의 혼입을 겨냥해 만들어졌기 때문이다. 밴드와 점프는 그날 가격의 중앙값을 본다. 한두 행의 이상치로 하루를 버리지 않으려는 의도였지만, 그 탓에 봉 하나나 10% 구간의 ×100, 마지막 봉 하나의 누설은 중앙값을 움직이지 못해 통과한다. 경로 복사, 날 중복, 시각 어긋남은 가격 수준을 바꾸지 않으므로 밴드와 점프가 볼 수 없다. 달러선물과 코스피200 에는 가격 가드가 아예 없다. 학습 구간 범위로 밴드를 새로 세운 넓힌 규칙은 깨끗한 날에 163번 울렸다. 코스피200 이 2025 ~ 2026 에 학습 구간 최댓값의 두 배를 넘었기 때문이다. 고정 밴드는 추세가 강한 시장에서 쓸 수 없다.

손익 경보는 노트의 «너무 좋은 체결» 경보를 우리 처지에 옮긴 것이다. 그 경보는 하루에 수많은 체결을 내는 시장 조성 데스크에서 체결 하나의 이익이 평소 분포를 벗어나는지를 본다. 우리 대리 전략은 하루 한 번 진입하고 일별 손익의 99% 띠가 수십 틱이다. 손익을 띠 밖으로 밀어낼 만큼 큰 오류는 이미 눈에 띄는 오류(하루 전체 ×100)뿐이고, 결론을 조용히 비트는 그럴듯한 오류는 손익 경보로는 거의 잡히지 않는다. 예측대로 손익 경보는 늦고 둔했다.

이상 탐지가 문턱에 못 미친 데는 세 가지 원인이 겹친다. 첫째, 경로 복사와 시각 어긋남은 하루 안의 수익 분포를 바꾸지 않아 흔적이 특징 하나(경로 유사도, 시차 상관 이득)에만 남는데, 숲은 열두 특징 가운데 무작위로 골라 나누므로 그 흔적이 희석된다. 둘째, IF 의 나무는 학습 범위 밖 값을 학습 최댓값과 같은 잎으로 보낸다. 하루 전체 ×100 처럼 터무니없는 값도 «학습 구간에서 가장 이상했던 날» 만큼만 이상하게 매겨져 12% 를 놓쳤다. 셋째, 깨끗한 날 쪽에 만기 이음 날이라는 구조적 이상이 섞여 오탐의 3분의 1 을 만들었다. 같은 특징의 견고 z 최댓값이 99 분위 문턱에서 오탐 1.4% 로 58.6% 를 잡아, 비슷한 오탐에서 IF(51.1%)보다 7%p 남짓 많이 잡은 것도 이 해석과 맞다.

한계

심은 오류의 대표성. 다섯 종과 세 강도는 우리가 겪은 사고에서 골랐지만 강도의 크기는 내가 정했고, 오류 하나가 한 계열 한 날에만 있다고 두었다. 실제 달러선물 복사 경로는 여러 해에 걸쳐 반복됐다. 그 경우 여러 날의 경로 유사도가 함께 올라 더 쉬울 수도 있고, 학습 자료가 같은 오류로 오염돼 더 어려울 수도 있다. 세션 모양을 바꾸는 오류(봉 빠짐, 격자 이동)와 형제 테너 혼입은 심지 않았다. 지금 규칙이 실제로 잡아 온 오류가 이것들이므로 규칙의 3.7% 는 이 다섯 종에 대한 숫자다.

깨끗한 날 라벨. 깨끗한 날에 만기 이음 날과 숨은 실제 오류가 섞여 있다. 이음 봉을 이어 붙이는 전처리를 넣으면 오탐률이 2.76% 로 내려가지만(탐색 재실행), 이것은 결과를 본 뒤 안 사실이라 판정에 쓰지 않았다. 반대로 정상 세션 거름은 세션 모양 규칙의 오탐을 0 으로 만들어 규칙에 유리하다.

감사 뒤 재실행. 첫 정본 런은 경로 복사 특징(f_copy)이 그날 이후의 경로까지 비교했고, 경로 복사 오류의 기증 날도 미래 해에서 뽑힐 수 있었다. 독립 감사에서 찾은 이 미래 자료 누설을 고쳐(그날보다 앞선 날만 비교, 앞선 해에서만 기증) 같은 문턱과 규칙으로 다시 돌린 것이 이 페이지의 수치다. 고치기 전보다 IF 탐지율이 63.7% 에서 62.7% 로, 경로 복사 강이 48% 에서 27% 로 내려갔고 판정(보류)은 그대로다. 결과를 한 번 본 뒤의 재실행이라는 점은 남는다. 2025-12 이후 08:45 개장 날은 앞선 해에 같은 길이의 날이 없어 기증 경로를 마감 쪽에 맞추고 첫 15봉은 원래 수익을 두었다.

경보 빈도와 만기 판별. 깨끗한 평가 날에서 IF 경보는 2025 년 32건, 2026 년 1 ~ 10월 22건으로 네 계열 합쳐 한 해 약 29건이다. 만기 이음 날 판별은 셋째 화요일과 셋째 월요일 규칙이라 휴일로 옮겨진 만기(예: 2024-09-13)를 놓친다. 이음 날 관련 수치는 그만큼 불완전하다.

표본 크기. 평가 구간 깨끗한 날은 계열당 약 400일이라 오탐률 1%p 는 17일이다. 2% 와 3% 의 구분은 날 십여 개 차이이고 오탐률 95% 구간 2.33 ~ 4.18% 는 H957 의 3% 문턱을 품는다. 탐지율은 심은 날 100개 단위라 종류와 강도 칸 하나의 표준오차가 약 5%p 다. 심은 날 1,500건은 복원 추출이라 고유한 계열 날은 980개뿐이므로 독립 표본 1,500개로 읽으면 안 된다.

손익 경보의 대리. 0018 카드와 0229 의 원 전략이 아니라 같은 입력을 쓰는 대리 전략 둘로 만들었다. 원 전략은 진입 시각과 특징이 달라 탐지율이 다를 수 있다. 다만 일별 손익 분포가 넓다는 구조는 같다. 거래 신호가 아니므로 비용, 체결, 빈도 가정은 적용하지 않았다.

결과를 본 뒤 한 것. 만기 이음 날 분석, 이음 봉 보정 재실행, 지속 오류 창(시작일 80개, 한 유형에 창 80개뿐), 전용 검사, 범위 밖 가드, 견고 z 문턱 격자, 이음 날을 뺀 재학습은 모두 결과를 본 뒤 만든 탐색이다. 같은 자료에서 다시 확인해야 하고 판정에 쓰지 않았다. 코스피200 2026-07 후보는 독립 원천과 대조하지 못했다.

다음에 해 볼 것

첫째, 이음 봉을 지운 자료에서 종류별 전용 검사 여섯의 합집합(α 0.01)에 «최근 3일 중 2일» 규칙을 더한 가드를 새로 사전등록해 검정한다. 만기 이음 봉(국채선물 11:31, 달러선물 셋째 월요일 포함)과 만기 월물의 이탈 체결 구간을 지운 1분 자료로 특징을 계산하고, 2026-11 ~ 2027-01 새 자료에 새로 심은 하루 오류와 20일 지속 오류로 잰다. 문턱은 하루 오류 탐지 75% 이상과 하루 오탐 2% 이하, 지속 오류는 5거래일 안 탐지 90% 이상과 깨끗한 20일 창 헛경보 5% 이하로 둔다. 둘째, 남은 약점 둘을 겨눈 검사를 더한다. 오후 일부만 복사한 경로는 하루 전체가 아니라 1시간 창마다 과거 경로와의 상관을 보고, 마지막 스탬프 누설은 마지막 봉을 일봉 종가와 다음 날 시가에 대조한다. 3선의 시차 상관 짝은 10선 대신 국고 지표물 현물 분봉으로 바꿔 본다. 코스피200 2026-07-28 ~ 31 은 거래소 일봉과 먼저 대조한다.

산출물

모든 수치는 정본 런 한 번에서 나왔고, 탐색은 그 런의 산출물을 다시 읽어 계산했다. 1분 원자료를 계열 날로 나눈 캐시는 수십 MB 라 저장소 밖 캐시에 두었고 코드가 없으면 다시 만든다. 재현은 아래 명령 셋으로 한다.

  • 사전등록protocol.md
  • 분석과 판정analysis.md
  • 자료와 특징code/data.py
  • 본 런uv run python experiments/0263_planted_data_error_detection/code/s1.py
  • 탐색uv run python experiments/0263_planted_data_error_detection/code/s2_explore.py
  • 이음 보정 재실행(탐색)uv run python experiments/0263_planted_data_error_detection/code/s3_rolladj.py, results/20261110T053954_rolladj/
  • 그림과 구조도uv run python experiments/0263_planted_data_error_detection/code/render_figures.py
  • 정본 런results/20261110T053630_main/ (metrics.json, cases.csv, clean.csv, grid.csv, ablation.csv, rules_sabotage.csv, h959_top.csv, explore/)

Appendix

A. 데이터셋 실물

3선 연결 1분표의 실제 행이다(2025-06-17 첫 세 봉과 마지막 두 봉). 열은 일자, 시간, 일자시간, 테너, 시가, 저가, 고가, 현재가, 체결거래량, 체결거래대금, 미결제약정, 내재수익률 순이다. 이 실험은 현재가와 체결거래량만 쓴다. 15:44 봉의 거래량 0 과 15:45 봉의 9,899계약은 종가 단일가가 마지막 봉에 몰린 모습이다.

2025-06-17,09:01:00,2025-06-17 09:01:00,3선,107.05,107.05,107.06,107.06,703.0,75257090.0,82963.0,2.541
2025-06-17,09:02:00,2025-06-17 09:02:00,3선,107.06,107.05,107.06,107.05,491.0,52565460.0,82076.0,2.544
2025-06-17,09:03:00,2025-06-17 09:03:00,3선,107.05,107.04,107.05,107.04,505.0,54056760.0,81526.0,2.548
…(중략, 400행)
2025-06-17,15:44:00,2025-06-17 15:44:00,3선,107.21,107.21,107.21,107.21,0.0,0.0,523139.0,2.491
2025-06-17,15:45:00,2025-06-17 15:45:00,3선,107.21,107.21,107.21,107.21,9899.0,1061271790.0,523052.0,2.491

H959 에서 찾은 10선 2023-12-19 의 연결표 행(시간, 시가, 저가, 고가, 현재가, 거래량)이다. 10:54 봉에서 300계약이 112.00 에 체결되고 11:31 에 다음 월물로 이어진다.

10:53:00,113.5,113.5,113.5,113.5,1.0
10:54:00,113.5,112.0,113.5,112.0,300.0
10:55:00,112.0,112.0,112.0,112.0,0.0
…(중략, 10:56 ~ 11:29 는 112.0, 거래 없음)
11:30:00,113.52,113.52,113.52,113.52,7.0
11:31:00,113.81,113.8,113.83,113.8,126.0

B. 모델 입출력 실물

정본 런 cases.csv 에서 옮긴 심은 날 두 개의 실제 입력(특징)과 출력(점수, 경보)이다. 첫째는 3선 2025-07-03 에 60분 시각 어긋남을 심은 날로, 짝 계열과의 같은 분 상관이 0.07 로 낮고 시차 상관 이득이 0.47 로 높은데도 IF 와 견고 z 모두 놓쳤다. 둘째는 코스피200 2025-10-01 을 전날 값으로 통째로 바꾼 날로, 경로 유사도 1.0 과 전날 가격 일치율 1.0 이 바로 경보를 낸다.

{"series": "3선", "d": "2025-07-03", "typ": "E3", "lvl": "강",
 "input":  {"f_rv": -0.210, "f_maxr": 1.099, "f_kurt": 3.354, "f_last": 0.000, "f_gap": 0.000, "f_lvl": 0.698,
            "f_vol": -0.376, "f_c0": 0.068, "f_lag": 0.467, "f_copy": 0.165, "f_prev": 0.037, "f_vprev": 0.002},
 "output": {"s_D2": -0.043, "D2": false, "D2b": false, "rules": {"밴드": false, "점프": false, "형제일치": false, "세션": false},
            "D1": false, "D3": 0, "p1_ticks": 0.0, "p2_ticks": 8.0}}

{"series": "k200", "d": "2025-10-01", "typ": "E2", "lvl": "강",
 "input":  {"f_rv": 0.057, "f_maxr": 2.481, "f_kurt": 6.501, "f_last": 0.000, "f_gap": 0.417, "f_lvl": 0.056,
            "f_vol": -0.011, "f_c0": 0.090, "f_lag": 0.147, "f_copy": 1.000, "f_prev": 1.000, "f_vprev": 0.979},
 "output": {"s_D2": 0.076, "D2": true, "D2b": true, "D1": false, "D1x": true, "rules_x": {"전날일치": true}, "D2noon": true}}

C. 실험 설정

표 5. 실험 설정(protocol.md 와 code/s1.py 의 상수).
항목값
학습 구간2022-01-03 ~ 2024-12-31 정상 세션 날 2,659개(계열마다 따로)
평가 구간2025-01-01 ~ 2026-10-31 정상 세션 날 1,669개
심은 날5종 × 3강도 × 100 = 1,500, E0 음성 대조 100, seed 263, 계열 균등 추출
IFn_estimators 300, max_samples 256, random_state 263, 특징 12개, 견고 표준화(학습 중앙값, IQR), 빈 값 0, ±1,000 자르기
IF 문턱계열별 학습 점수 98 분위(3선 0.555, 10선 0.554, 달러선물 0.582, 코스피200 0.547)
규칙 문턱밴드 3선 95 ~ 110, 10선 98 ~ 125. 점프 3선 1.5pt, 10선 2.5pt
손익 경보 띠(틱)3선 P1 −50.9 ~ 44.8, P2 −77.9 ~ 68.1. 10선 P1 −109.1 ~ 101.5, P2 −149.9 ~ 136.6
부트스트랩월 블록, 2,000회(검정), 1,000회(손익 띠), 한쪽 p, Holm(H955 ~ H957)
격자문턱 분위 95, 97, 98, 99, 99.5 × 나무 100, 300 × 표본 128, 256
런 시간약 200초(CPU), 2026-11-10 05:36 KST(감사 수정 재실행)