sgkstudio.
엔지니어링

교란 변수 찾기: 주식 진입 시간대 적자의 진짜 원인은 밤을 넘긴 거래

진입 시간대가 수익을 가른다는 결론은 틀렸고, 교란 변수는 거래가 밤을 넘겼는지 여부였습니다. 10시대와 11시대 진입은 누적 −25.3%와 −27.3%로 적자였지만, 같은 표에 다음 날 정리한 거래의 비율을 붙이자 그 비율이 9시대 8.7%에서 10시대 31.7%, 11시대 40.0%로 적자와 나란히 올라갔습니다. 이 글은 “그 시간대를 막자”는 가설을 세웠다가 버린 과정과, 같은 표에서 하나 더 틀린 가설을 그대로 남긴 기록입니다.

2026-10-22진입 시각대별 거래 수(n)·누적 수익률·D+1 비율·D+1 거래 합계 교차표 (9시대 46건 · 10시대 41건 · 11시대 25건 · 12시대 15건)관측 수단: 진입 시각 축과 보유 기간(D+0·D+1·D+2~) 축을 한 표에 겹친 교차표반증된 가설 1: 10~11시대 진입 자체가 손실 원인이다반증된 가설 2: BBSqueeze 가 SurgePullback 보다 성질이 나쁜 전략이다 (D+1 거래 24건 대 7건)발견 일자: 2026년 8월 25일

진입 시간대별 수익, 왜 10시와 11시만 적자였나?

증상은 단순했습니다. 전략이 낸 거래를 진입한 시각대로 나누어 누적 수익률을 보니 9시대는 +34.8%, 12시대는 +7.0%로 흑자인데, 그 사이에 낀 10시대는 −25.3%, 11시대는 −27.3%로 적자였습니다. 오전장 한가운데 두 시간만 움푹 꺼진 모양입니다.

표본 크기도 무시할 수준은 아니었습니다. 9시대 46건, 10시대 41건, 11시대 25건, 12시대 15건입니다. 적자 구간인 10시대는 9시대와 건수가 비슷했고, 11시대도 12시대보다 많았습니다. “몇 건 안 돼서 우연히 그렇게 나왔다”로 넘기기 어려운 크기였습니다.

표. 진입 시각대별 거래 수와 누적 수익률. 9시대 46건 +34.8%, 10시대 41건 −25.3%, 11시대 25건 −27.3%, 12시대 15건 +7.0%
처음 본 표: 시각대별 누적 수익률만 있을 때

이 표만 놓고 보면 결론은 거의 저절로 나옵니다. 그리고 그 결론이 바로 처음에 의심한 원인이었습니다.

처음 세운 가설: 10~11시대는 들어가면 안 되는 시간이다

처음 가설은 “10~11시대 진입 자체가 손실을 만든다”였습니다. 장 초반 급등락이 지나간 뒤라 신호의 질이 떨어진다거나, 그 시간대에 거래량이 빠진다거나, 설명을 붙이려면 얼마든지 붙일 수 있었습니다. 결론도 자연스러웠습니다. 그 시간대 진입을 막는 규칙을 하나 더하면 됩니다.

이런 규칙은 만들기 쉽고 효과도 바로 보입니다. 표에서 적자 두 줄을 지우면 남은 줄은 전부 흑자이기 때문입니다. 바로 그 점이 위험했습니다. 적자 행을 지우는 규칙은 거의 언제나 과거 수익률을 올려 줍니다. 수익률이 올랐다는 사실만으로는 그 규칙이 원인을 건드렸는지, 결과만 잘라 냈는지 알 수 없습니다.

10~11시대 진입이 적자(−25.3%·−27.3%)라 “그 시간대를 막자”가 자연스러운 결론인데, D+1 비율을 같이 보면 인과가 뒤집힌다.

가설을 어떻게 확인했나: 진입 시각과 보유 기간을 한 표에 겹치기

확인 수단은 교차표였습니다. 진입 시각대라는 축 하나만 보지 않고, 같은 거래를 보유 기간 축으로도 나눠 두 축을 한 표에 겹쳤습니다. 각 시각대 행마다 두 칸을 더 붙였습니다. 하나는 그 시각대 거래 가운데 다음 날 정리한 거래의 비율(D+1 비율), 다른 하나는 그 D+1 거래들의 수익률 합계입니다.

이 칸을 붙인 이유가 있었습니다. 같은 전략을 보유 기간으로 나눠 보면 모양이 뚜렷했기 때문입니다. 진입한 날 안에 판 D+0 거래는 흑자, 다음 날 판 D+1 거래는 크게 무너지고, 이틀 이상 들고 간 D+2~ 거래는 다시 흑자였습니다. 손실이 한 칸에 몰려 있다면, 시간대 적자도 그 칸과 관련이 있는지부터 봐야 했습니다.

표. 진입 시각대별 거래 수, 누적 수익률, D+1 비율, D+1 거래 합계. 9시대 46건 +34.8% 8.7% −18.2%, 10시대 41건 −25.3% 31.7% −38.8%, 11시대 25건 −27.3% 40.0% −24.6%, 12시대 15건 +7.0% 13.3% −11.0%
같은 거래에 보유 기간 축을 겹친 교차표

표를 읽는 법은 이렇습니다. “누적”은 그 시각대 거래 전체의 누적 수익률이고, “그중 D+1 합계”는 그 가운데 다음 날 정리한 거래만 떼어 낸 몫입니다. 두 값을 나란히 놓으면 시각대 적자 가운데 얼마가 밤을 넘긴 거래에서 왔는지 한눈에 보입니다.

시간대 가설의 알리바이: 적자는 시간대가 아니라 다음 날에서 났다

교차표가 시간대 가설에 알리바이를 줬습니다. 10시대의 누적은 −25.3%인데 그중 D+1 거래 합계만 −38.8%입니다. 밤을 넘긴 거래가 시간대 전체 적자보다 더 크게 잃었다는 뜻이고, 거꾸로 말하면 같은 10시대에 들어갔어도 다음 날 정리하지 않은 나머지 거래들은 손실을 메우는 쪽이었습니다. 11시대도 누적 −27.3% 가운데 D+1 합계가 −24.6%로, 적자의 대부분을 D+1이 설명합니다.

두 번째 근거는 비율의 움직임입니다. D+1 비율은 9시대 8.7%, 10시대 31.7%, 11시대 40.0%, 12시대 13.3%입니다. 적자가 깊은 시각대일수록 밤을 넘긴 거래의 비율이 높고, 흑자로 돌아선 12시대에서 비율도 다시 내려옵니다. 누적 수익률의 모양과 D+1 비율의 모양이 정확히 거울처럼 겹쳤습니다.

막대 그래프. 진입 시각대별 D+1 비율. 9시대 8.7%, 10시대 31.7%, 11시대 40.0%, 12시대 13.3%
시각대별로 다음 날까지 들고 간 거래의 비율

흑자 시각대도 같은 그림을 보여 줍니다. 9시대 역시 D+1 거래 합계는 −18.2%, 12시대도 −11.0%로 밤을 넘긴 거래는 어느 시각대에서나 적자였습니다. 9시대가 흑자인 이유는 D+1 거래가 잃지 않아서가 아니라, 그런 거래가 46건 가운데 8.7%로 적었기 때문입니다. 시간대마다 D+1의 성질이 다른 게 아니라 D+1의 양이 달랐습니다.

여기서 “10~11시대 진입이 손실을 만든다”는 가설은 설 자리를 잃었습니다. 시각대가 원인이라면 그 시각대에 들어가서 밤을 넘기지 않은 거래도 나빠야 하는데, 손실은 D+1 칸에 몰려 있었습니다.

교란 변수는 무엇이었나: 늦게 들어간 거래가 밤을 넘긴다

진짜 원인은 오버나이트, 즉 장이 닫힌 밤을 넘겨 다음 날 정리한 거래였습니다. 진입 시각은 그 거래가 밤을 넘길지 말지를 높은 확률로 미리 알려 주는 대리 변수였을 뿐입니다. 기록에 남긴 문장 그대로 옮기면 이렇습니다.

늦게 들어가면 당일 안에 정리되지 못해 밤을 넘기고, 손실은 거기서 난다.

인과의 화살표를 그려 보면 차이가 분명합니다. 처음 가설은 “진입 시각 → 손실”이었습니다. 실제 구조는 “진입 시각 → 당일 정리 실패 → 오버나이트 → 손실”입니다. 진입 시각과 손실 사이의 상관은 진짜였지만, 그 상관을 만든 것은 가운데 낀 오버나이트였습니다. 이런 제3의 변수를 통계에서는 교란 변수라고 부릅니다.

흐름도. 처음 가설은 진입 시각에서 손실로 바로 이어진다. 실제 구조는 늦은 진입 시각에서 당일 정리 실패, 오버나이트 보유를 거쳐 손실로 이어진다
처음 그린 인과와 교차표가 보여 준 인과

12시대가 흑자로 돌아선 점은 이 구조로 설명하기 어려운 대목입니다. 더 늦게 들어갔는데 D+1 비율은 13.3%로 다시 낮았습니다. 기록에는 그 이유가 남아 있지 않습니다. 15건이라는 작은 표본 탓인지, 12시대 진입 신호의 성격이 다른 탓인지는 이 분석이 답하지 않았습니다. 확실히 말할 수 있는 것은 하나입니다. 시각대가 바뀌어도 적자는 D+1 비율을 따라 움직였습니다.

같은 표에서 하나 더 틀린 가설: BBSqueeze 는 나쁜 전략인가?

같은 분석에서 두 번째 오판도 잡혔습니다. 두 전략 가운데 BBSqueeze 가 SurgePullback 보다 적자가 컸고, 여기서도 자연스러운 결론은 “BBSqueeze 는 성질이 나쁜 전략이니 손보거나 빼자”였습니다.

보유 기간으로 나눠 보니 두 전략의 모양은 똑같았습니다. 둘 다 D+0은 흑자, D+1은 붕괴, D+2~는 다시 흑자입니다. 차이는 모양이 아니라 양이었습니다. BBSqueeze 의 D+1 거래는 24건, SurgePullback 은 7건으로, BBSqueeze 가 밤을 3배 더 많이 넘겼습니다.

막대 그래프. 전략별 D+1 거래 수. BBSqueeze 24건, SurgePullback 7건
두 전략이 다음 날까지 들고 간 거래 수

시간대 가설과 정확히 같은 구조입니다. “전략 → 손실”로 보였던 관계 가운데 상당 부분이 “전략 → 오버나이트 빈도 → 손실”이었습니다. 이걸 전략 성질의 차이로 읽었다면 BBSqueeze 의 진입 조건이나 지표를 고쳤을 테고, 손실이 실제로 나는 자리인 밤 넘김은 그대로 남았을 겁니다.

고친 방법: 필터를 더하지 않고 가설의 순서를 바꿨다

이번에 고친 것은 매매 코드가 아니라 판단의 순서입니다. 10~11시대 진입 차단은 독립 규칙으로 올리지 않았습니다. 손댈 자리는 시간대가 아니라 밤을 넘기는 거래라고 정했고, 시간대는 그 축을 다룬 다음에 다시 볼 후보로 내렸습니다.

두 규칙을 따로 검증해서 둘 다 채택하는 길도 있었습니다. 시간대 필터를 검증하면 수익률이 오르고, 오버나이트 규칙을 검증해도 수익률이 오릅니다. 둘 다 통과했으니 둘 다 넣는 셈입니다. 이 길에는 두 가지 문제가 있습니다.

  • 같은 거래를 두 번 자릅니다. 10~11시대에 들어가서 밤을 넘긴 거래는 시간대 필터에도, 오버나이트 규칙에도 걸립니다. 두 규칙이 같은 손실을 놓고 서로 자기 공이라고 주장합니다.
  • 각 규칙의 개별 기여를 영영 잴 수 없습니다. 둘을 함께 켠 결과만 남으니, 나중에 하나를 끄면 어떻게 되는지 알 수 없고, 시장이 바뀌어 한쪽이 낡아도 알아챌 방법이 없습니다.
  • 필요 없는 제약이 남습니다. 오버나이트만 다루면 됐을 경우, 시간대 필터는 당일 안에 잘 정리되던 10~11시대 거래까지 같이 버립니다.

오버나이트 축을 실제로 어떻게 다룰지, 그 결과 수익률이 어떻게 바뀌었는지는 이 기록의 범위 밖입니다. 이 글이 다루는 것은 거기까지 가기 전에 틀린 방향 두 개를 걸러 낸 과정입니다.

같은 실수를 어떻게 막나: 축을 보태기 전에 교차표부터

재발 방지 장치는 가설을 세우는 순서 자체에 걸었습니다. 기록에 남긴 교훈은 다음 한 문단입니다.

두 축이 각각 유의해 보일 때 한 축이 다른 축의 대리 변수일 수 있다. 따로 검증해 둘 다 채택하면 같은 거래를 두 번 자르고, 개별 기여를 영영 못 잰다. 교차표(축 A × 축 B의 노출 비율)를 먼저 그려 종속 관계를 확인한 뒤에 가설 순서를 정한다.

실무 절차로 풀면 이렇습니다. 새 필터 후보가 하나 생기면, 이미 손실과 관련이 있다고 알려진 축과 한 표에 겹쳐 봅니다. 새 축의 각 칸에서 기존 축의 노출 비율, 이번 경우라면 시각대마다 D+1 비율을 같이 적습니다. 그 비율이 새 축의 성과를 그대로 따라 움직이면, 새 축은 독립 원인이 아니라 그림자일 가능성이 높습니다.

통계 카드. 시간대 적자 −25.3%와 −27.3%, D+1 비율 8.7%에서 31.7%, 40.0%로 상승, 전략별 D+1 거래 24건 대 7건
이번 분석에서 교란 변수를 드러낸 세 숫자
  • 새 축의 성과를 볼 때, 이미 알려진 손실 축의 노출 비율을 같은 표에 붙인다
  • 두 값이 같은 방향으로 움직이면, 새 축을 규칙으로 올리기 전에 알려진 축부터 다룬다
  • 두 전략·두 그룹을 비교할 때도 같은 표를 그린다. 성질 차이로 보이는 것이 노출 빈도 차이일 수 있다
  • 규칙 두 개가 같은 거래를 자르는지 확인하고, 겹치면 하나씩 켜서 개별 기여를 따로 잰다

교란 변수를 의심해야 하는 신호는 무엇인가?

이번 사례에서 교란 변수를 의심할 단서는 처음부터 표에 있었습니다. 첫째, 적자가 시간대의 시작이나 끝이 아니라 가운데 두 칸에만 몰렸고 그 뒤 12시대에 다시 흑자로 돌아섰습니다. 시간 자체가 원인이라면 이런 불연속을 설명할 이야기가 따로 필요합니다. 둘째, 같은 전략 안에서 보유 기간에 따라 성과가 극적으로 갈린다는 사실을 이미 알고 있었습니다. 강한 손실 축이 하나 알려져 있다면, 새로 보이는 손실 축은 먼저 그 축과 겹쳐 봐야 합니다.

매매 전략만의 이야기도 아닙니다. 광고 채널별 전환율, 요일별 매출, 상담 경로별 계약률처럼 한 축으로 잘라 본 성과표는 어디에나 있고, 그 축이 다른 축의 그림자일 가능성도 어디에나 있습니다. 같은 저장소에서 표본 하나로 필터를 세웠다가 다시 본 기록은 약세장 표본 하나로 만든 필터 이야기에 정리해 두었습니다. 사내 데이터로 이런 판단을 자동화하고 싶다면 상담으로 문의해 주세요.

작성: SGK Studio 엔지니어링. 이 글의 수치는 전부 2026년 8월 25일 분석 기록의 교차표에서 그대로 옮겼습니다.

같은 방식으로 우리 업무를 재보고 싶다면

이 글에 쓴 계측·판정·자동화는 저희가 실제로 매일 돌리는 방식 그대로입니다. 어떤 작업을 자동화할 수 있고 어디를 사람이 잡아야 하는지, 현재 업무 흐름을 놓고 같이 짚어 드립니다.

새 글이 올라오면 알려 드립니다

이런 계측 기록을 새로 쓰면 메일로 한 통 보냅니다. 광고나 판촉은 보내지 않습니다.