GBT
한국외국어대학교Global Business & Technology
금융 AI · 모듈 9 — k-NN 아날로그 — 닮은 과거를 찾아라
목차 강의 홈 ↗
금융 AI 강의 · 모듈 9

k-NN 아날로그 —
닮은 과거를 찾아라

"이 모양, 어디서 봤는데…"라는 차트쟁이의 직감을 수학으로 옮기면 k-최근접이웃 전략이 된다. 무엇을 닮았다고 볼 것인가(거리), 몇 건을 참고할 것인가(k), 이웃의 후일담을 어디까지 믿을 것인가(룩어헤드와 비정상성). 결정론적 시계열에서 직접 이웃을 찾아보는 조작형 실습이 들어 있다.

금융 AI · 패턴과 표현4개 절 + 실습 1개해설 · 퀴즈 포함원문 출처 링크
0
1969년, MIT 기상학과

닮은 두 날을 찾아 나선 사람

"닮은 과거를 찾아 미래를 점친다"는 발상은 금융보다 기상학이 먼저 진지하게 시험했다. 결론은 매력과 한계를 동시에 보여 줬다.

도입 · 한 장면

오늘과 가장 닮은 날의 "그 다음 날"

1969년, MIT의 기상학자 에드워드 로렌즈는 수십 년치 관측 기록을 뒤져 서로 닮은 대기 상태의 쌍을 찾고 있었다. 오늘의 기압 배치와 꼭 닮은 과거의 날을 찾으면, 그날의 "다음 날"이 곧 내일의 예보가 된다 — 수치 시뮬레이션이 조악하던 시절 기상학자들이 실제로 쓰던 아날로그 예보의 논리다.

결과는 뼈아팠다. 대기의 상태 공간이 너무 방대해서 "충분히 닮은" 두 날은 관측 역사상 거의 없었고, 어설프게 닮은 쌍은 금세 서로 다른 미래로 갈라졌다. 그런데 반세기가 지난 지금, 금융에서 같은 발상이 다시 등장한다. 차트를 오래 본 사람들의 "이 모양, 어디서 봤는데…"라는 직감을 그대로 알고리즘으로 옮긴 것이 이 모듈의 주인공, k-최근접이웃(k-NN) 아날로그 전략이다. 아이디어의 매력과 한계를 모두 알고 시작하는 셈이다.

닮은 과거를 찾는 k-NN 아날로그를 다룬 4컷 만화
여는 만화. 이 장의 핵심 질문을 압축한 예고편이다 — "지금 차트와 닮은 과거를 찾으면 다음이 보이는가"에서 출발해, 닮음을 어떻게 재고 몇 건을 참고할지, 그리고 이웃의 '그 후 이야기'를 어디까지 믿어도 되는지로 이어진다.
무엇이 닮음인가거리의 정의. z-정규화로 수준과 진폭을 지우면 순수한 '모양'만 남는다
몇 건을 볼 것인가k의 선택. 작으면 한 사례의 우연에 흔들리고, 크면 아무 정보 없는 전체 평균이 된다
후일담은 어디까지이웃의 "그 후 5일"은 반드시 학습 구간의 기록이어야 한다 — 이 전략 고유의 룩어헤드 급소
더 읽기

같은 발상이 다른 이름으로 여러 분야에 존재한다. 감정평가사의 거래사례비교법은 우리 집과 비슷한 평수·연식의 최근 실거래 몇 건을 찾아 평균 내는 방법이고, 판례를 검색해 유사 사건의 결론을 참고하는 법률 실무도 구조가 같다. "비슷한 처지였던 사례들의 결과를 참고한다"는 것은 인간의 아주 오래된 추론 방식이며, k-NN은 그 상식에 거리와 평균이라는 수학의 옷을 입힌 것뿐이다. 문제는 상식이 늘 그렇듯 어디까지 통하는지가 명시돼 있지 않다는 점이고, 이 모듈의 후반부는 그 경계선을 긋는 데 쓴다.

생각해 볼 질문

부동산 시세를 잡을 때 "비슷한 집"의 기준으로 무엇을 쓰는지 세 가지만 떠올려 보자. 그 각각이 이 모듈에서 거리 정의·정규화·사례집 구성에 대응된다는 것을 끝에서 확인하게 된다.

1
모델 없이 사례집으로

사례 검색이라는 학습

k-NN은 데이터를 요약하지 않는다. 사례집 자체가 모델의 전부이고, 설계란 거리·k·종합 방식이라는 세 질문에 답을 정해 두는 일이다.

정의 · 게으른 학습

교과서를 통째로 들고 다니는 학생

k-최근접이웃(k-NN)은 새 문제와 가장 닮은 과거 사례 k개를 찾아, 그 사례들의 결과를 평균해 답으로 쓰는 가장 단순한 머신러닝이다. 모델을 "학습"하지 않고 사례를 "검색"만 한다.

"학습하지 않는다"는 말을 짚어 두자. 팩터 랭킹 모듈에서 본 회귀·트리 같은 모델은 데이터를 요약해 몇 개의 계수로 압축한다 — 공부를 마치면 교과서를 덮어도 되는 학생이다. 반면 k-NN은 데이터를 전혀 요약하지 않는다. 과거 사례집 자체가 모델의 전부이고, 예측할 때마다 사례집을 처음부터 뒤진다 — 교과서를 통째로 들고 다니며 시험 문제가 나올 때마다 비슷한 예제를 찾아 베끼는 학생이다. 그래서 게으른 학습(lazy learning)이라고도 부른다.

장점작동 원리를 누구에게나 설명할 수 있다("이 예측은 저 과거 25건의 평균입니다"). 새 데이터는 사례집에 끼워 넣기만 하면 된다
단점예측할 때마다 수만 건을 검색해야 한다. 사례집의 질이 실력의 전부라서, 사례집이 오염되면(§3의 주제) 예측도 함께 오염된다
더 읽기

일상 예제 하나. 이번 수능 점수를 예측하고 싶다면, 지난 세 번의 모의고사 점수 패턴이 나와 가장 비슷했던 선배 3명(k=3)을 찾아 그들의 실제 수능 점수를 평균하면 된다. "비슷한 처지였던 사람들의 결과를 참고한다"는 지극히 상식적인 방법을 수학으로 만든 것이 k-NN이다.

이 방법에는 반드시 답해야 할 질문이 세 가지 숨어 있다. 첫째, 무엇을 "비슷하다"고 볼 것인가 — 거리의 정의. 둘째, 몇 건의 사례를 참고할 것인가 — 한 건만 보면 그 집이 급매물이었을 수 있고, 백 건을 보면 동네 전체 평균이 되어 버린다. 이것이 k의 선택이다. 셋째, 참고한 사례들을 어떻게 종합할 것인가 — 여기서는 단순 평균을 쓴다. k-NN의 설계란 결국 이 세 질문에 답을 정해 두는 일이다.

출처 Fix & Hodges, "Discriminatory Analysis: Nonparametric Discrimination", USAF School of Aviation Medicine Report (1951); 재간행 International Statistical Review 57(3), 1989, doi:10.2307/1403797 · Cover & Hart, "Nearest Neighbor Pattern Classification", IEEE Transactions on Information Theory 13(1), 1967, doi:10.1109/TIT.1967.1053964.

거리와 k

닮음을 재는 자, 이웃 수를 정하는 다이얼

"얼마나 닮았나"는 유클리드 거리로 잰다 — 각 자리의 차이를 제곱해 더한 뒤 제곱근을 씌운 값, \( d(a,b)=\sqrt{\textstyle\sum_j (a_j-b_j)^2} \). 거리가 작을수록 닮은 것이다.

후보모의고사 점수거리 계산거리판정
나 (질의)(80, 90)기준점
선배 A(82, 88)√(2²+2²) = √8≈ 2.8가장 가까운 이웃
선배 B(85, 95)√(5²+5²) = √50≈ 7.1k=2면 포함
선배 C(70, 100)√(10²+10²) = √200≈ 14.1탈락 — 평균은 비슷해도 궤적이 들쭉날쭉

선배 C는 두 점수의 평균(85)이 나(85)와 같은데도 거리가 가장 멀다. 거리가 '수준의 닮음'이 아니라 '모양의 닮음'을 걸러 내고 있다는 뜻이다. k=2로 잡으면 A와 B를 뽑아 두 사람의 실제 수능 점수를 평균한 값이 내 예측치가 된다.

k는 몇으로 잡아야 하는가. k=1이면 가장 닮은 선배 딱 한 명의 점수를 그대로 가져오는데, 그 선배가 시험 당일 컨디션이 유난히 좋았거나 나빴다면 그 우연이 내 예측을 통째로 흔든다. 반대로 k를 전교생 수만큼 키우면 나와 아무 상관 없는 "전교생 평균"이 나온다. 즉 k는 잡음 제거(크게)와 개성 보존(작게) 사이의 다이얼이다 — 이 감각은 실습에서 직접 확인한다.

더 읽기

여러 이웃을 평균하는 것이 왜 잡음을 줄이는지는 통계의 기본 성질이다. 서로 독립인 잡음 k개를 평균하면 잡음의 크기(표준편차)가 \( 1/\sqrt{k} \)로 준다. k=4면 절반, k=25면 5분의 1이다. 다만 이 축복에는 전제가 있다 — 평균에 넣는 사례들이 정말로 같은 질문에 대한 답이어야 한다는 것. k를 키울수록 "닮은 사례"의 기준이 느슨해져 관계없는 사례가 섞여 들어오므로, 잡음은 줄어도 신호 자체가 희석된다. 잡음 감소와 신호 희석이 만나는 지점 어딘가에 적정 k가 있고, 그 위치는 데이터마다 다르다.

2
질의 20일 · 이웃 25개 · 후일담 5일

전략의 설계

최근 한 달의 궤적을 질문지로 삼아 25만 장의 사례집에서 상위 0.01%의 "정말 닮은" 조각만 뽑는다. 각 숫자에는 모두 이유가 있다.

전략 흐름

질의 → 검색 → 이웃 → 후일담 평균 → 매수

전략 전체는 다섯 단계다. 오늘의 차트 조각을 질문지로 삼아 과거 사례집을 검색하고, 가장 닮은 조각들의 "그 후 이야기"를 평균해 예측으로 쓴다.

  1. 오늘 기준 최근 20일 수익률 흐름을 잘라 질의(query)로 삼는다 — 거래일 기준 약 한 달의 궤적
  2. 과거 데이터를 20일짜리 창으로 하루씩 밀며 잘라(슬라이딩 윈도) 수만 개의 조각을 만든다 — 종목 100개 × 각 10년(약 2,500거래일)이면 사례집은 약 25만 장
  3. 질의와 가장 닮은 25개(k=25)를 찾는다 — 25만 장 중 25장, 상위 0.01%의 "정말 닮은" 조각만 쓰겠다는 뜻
  4. 그 조각들 직후 5일의 수익률 평균을 예측으로 삼는다 — "닮은 모양 뒤에 오는 단기 흐름"을 노린다
  5. 예측이 가장 좋은 상위 2종목을 산다 — 확신이 가장 강한 곳에 집중
더 읽기

슬라이딩 윈도의 대가도 기억해 두자. 하루씩 밀며 자르므로 조각 수는 최대로 확보되지만, 이웃한 조각끼리는 20일 중 19일이 겹친다. 시작일이 하루 차이인 두 조각은 거의 같은 내용이므로, 어떤 조각이 이웃으로 뽑히면 그 옆 조각도 함께 뽑히기 쉽다. k=25라 해도 실질적으로 서로 다른 "독립적인 사례"는 그보다 훨씬 적을 수 있다는 뜻이다 — 실습에서 이웃 목록에 연속된 위치가 쌍으로 나타나는 것으로 직접 확인할 수 있다.

핵심 기술 ① · z-정규화

수준과 진폭을 지우면 '모양'만 남는다

z-정규화는 각 조각에서 평균을 빼고 표준편차로 나누는 것이다. "하루 3%씩 오르고 1% 빠진 패턴"과 "6% 오르고 2% 빠진 패턴"은 진폭만 다를 뿐 모양이 같다 — z-정규화는 이 둘을 같은 것으로 취급하게 한다.

감을 잡는 손계산: 조각 (1%, 2%, 3%)의 평균은 2%, 표본표준편차는 1%. 정규화하면 (−1, 0, +1)이다. 조각 (2%, 4%, 6%)도 평균 4%, 표본표준편차 2%로 정규화하면 똑같이 (−1, 0, +1)이 된다. 두 조각의 거리는 0 — "같은 모양"으로 판정된다. z-정규화 없이 원시 수익률로 거리를 재면 변동성이 큰 종목·시기가 거리 계산을 지배해 정작 '모양'이 무시된다.

널리 퍼진 오해

"정규화는 그냥 전처리 잡무다 — 하면 좋고 안 해도 그만."

아니다. z-정규화는 무엇을 지우고 무엇을 남길 것인가라는 모델링의 핵심 선택이다. 진폭을 지운다는 것은 진폭이 담고 있던 정보도 함께 버린다는 뜻이다. 하루 3% 하락과 하루 15% 폭락은 '모양'은 같아도 시장의 체온은 전혀 다르다 — 후자 뒤에는 반대매매, 유동성 경색 같은 별개의 역학이 따라붙는 경우가 많다. z-정규화된 세계에서는 이 둘이 같은 이웃으로 묶인다. 여기서는 "형태의 반복"이라는 가설에 베팅하기 위해 진폭 정보를 의도적으로 포기한 것이다.

더 읽기

두 번째 핵심 기술은 풀링(pooling)이다. 모든 종목의 과거 조각을 하나의 사례집으로 합친다 — 좋은 패턴은 특정 종목의 전유물이 아니라는 가정이자, 검색할 사례 수를 늘리는 실용적 장치다. 그러나 이것 역시 공짜가 아니다. 대형 우량주의 조각과 거래량이 얇은 중소형주의 조각을 한 사례집에 섞는 것은 "패턴은 종목을 가리지 않는다"는 가정 위에서만 정당하다. 이 가정이 틀린 구석에서는 풀링이 사례 수를 늘리는 게 아니라 소음을 늘린다.

숨은 제약 · 차원의 저주

20차원에서 "가깝다"는 말

20일짜리 조각을 비교한다는 것은 20차원 공간에 찍힌 점들 사이의 거리를 재는 일이다. 그런데 차원이 높아지면 "가장 닮은 이웃"이라는 개념 자체가 희미해진다.

차원이 높아지면 점들이 공간 구석구석으로 흩어져, 어떤 점에서 봐도 "가장 가까운 점"과 "가장 먼 점"의 거리 차이가 상대적으로 쪼그라든다. 모두가 엇비슷하게 멀다면 최근접 이웃의 변별력이 사라진다 — 이것이 차원의 저주다. 고차원에서 최근접 이웃 검색의 변별력이 급격히 떨어질 수 있다는 것은 데이터베이스 이론의 고전적 결과로 알려져 있다.

이 전략에 주는 교훈은 실용적이다. "더 긴 과거를 보면 더 정확하겠지"라는 생각으로 창을 20일에서 200일로 늘리면, 비교 공간이 200차원이 되어 이웃의 변별력이 떨어지고, 잘라낼 수 있는 조각 수마저 줄어든다. 창 길이는 "정보를 더 담는 것"과 "거리가 의미를 유지하는 것" 사이의 타협이며, 무작정 늘리는 쪽이 오히려 손해인 대표적 하이퍼파라미터다.

출처 Beyer, Goldstein, Ramakrishnan & Shaft, "When Is 'Nearest Neighbor' Meaningful?", ICDT 1999, doi:10.1007/3-540-49257-7_15.

L
직접 확인한다

이웃 찾기 실험실

결정론적 시계열에서 최근 20일과 닮은 과거 조각을 직접 찾고, k를 돌리며 예측이 어떻게 변하는지 본다.

실습 · 조작형

k를 돌리면 예측이 어떻게 변하는가

LAB · k-NN 이웃 검색

240일 시계열에서 최근 20일의 이웃 찾기

목표 — 최근 20일 조각(질의)과 z-정규화 거리가 가장 가까운 과거 조각 k개를 찾아, 그 "직후 5일 수익률"의 평균이 k에 따라 어떻게 변하는지 확인한다. 시계열은 주기 21일·47일 사이클을 겹친 결정론적 합성 데이터다(난수 없음 — 새로고침해도 같은 결과).

이웃 조각 (20일) 이웃 직후 5일 (후일담) 질의 (최근 20일)

조작 안내 — k를 1에서 10까지 한 칸씩 움직여 본다. 관찰 포인트 — ① k가 작을 때 예측이 요동친다: k=1이면 +1.58%, k=4에서 +0.64%로 내려갔다가 k=5에서 이웃 하나(+3.28%짜리)가 추가되며 +1.17%로 튄다. 사례 하나가 예측을 통째로 흔드는 것이다. ② k를 10까지 키우면 +0.53%로, 전체 후보 평균(0.00%)을 향해 뭉개진다 — 잡음은 줄지만 "닮은 사례를 찾았다"는 의미도 함께 희석된다. ③ 이웃 목록에 31·32처럼 연속된 위치가 쌍으로 나타난다 — 슬라이딩 윈도로 자른 이웃 조각끼리 19일이 겹치기 때문이다. ④ 거리는 z-정규화된 모양끼리 재므로, 질의보다 진폭이 큰 구간도 모양이 닮으면 이웃으로 뽑힌다.

더 읽기

이 실험실은 실제 전략의 축소판이다. 실제 전략과의 차이는 규모뿐이다 — 여기서는 종목 1개·후보 조각 196개·k≤10이지만, 실제로는 종목 100개를 풀링해 약 25만 장에서 k=25를 뽑는다. 후보가 196개뿐이어도 k=10이면 벌써 전체 평균 쪽으로 끌려가는 것을 봤다. 사례집이 클수록 "정말 닮은" 이웃만으로 k를 채울 수 있으므로, 풀링으로 사례 수를 늘리는 것과 k를 적절히 잡는 것은 한 몸의 문제다.

화면 오른쪽 끝 질의 구간 직후에는 아무 색칠이 없다는 점도 눈여겨보라. 질의의 "직후 5일"은 아직 오지 않은 미래라서 데이터에 없다 — 그 빈칸을 이웃들의 후일담 평균으로 메우는 것이 이 전략의 전부다.

3
알고리즘의 정의 안에 든 위험

이 전략의 룩어헤드 위험 지점

이동평균은 미래를 훔칠 통로 자체가 없지만, k-NN 아날로그는 "이웃의 미래 5일"을 쓰는 행위가 정의 안에 들어 있다. 급소를 알고 막아야 한다.

구조적 위험

후일담 꼬리표는 어디까지의 데이터로 붙이는가

아날로그 예측은 사례집의 각 조각에 "그 후 5일 동안 무슨 일이 있었나"라는 후일담 꼬리표를 붙여야만 작동한다. 미래를 들여다보는 행위가 알고리즘의 정의 안에 들어 있는 것이다.

이동평균 같은 전략은 계산에 과거 가격만 쓰므로 미래를 훔칠 통로 자체가 없다. 그러나 k-NN 아날로그에서는 꼬리표를 어느 시점의 데이터까지 써서 붙이느냐가 문제이며, 여기서 한 발만 삐끗하면 백테스트 성과가 화려하게 부풀어 오른다. 누출 시나리오를 손으로 짚어 보자.

  1. 학습 구간이 2015~2021년, 테스트 구간이 2022년이라 하자
  2. 2022년 3월 10일의 예측을 만드는데, 사례집을 실수로 데이터 전체에서 만들었다면 2022년 6월 초의 조각이 이웃으로 뽑힐 수 있다
  3. 그 조각의 꼬리표는 "직후 5일", 즉 6월 중순의 수익률 — 결국 3월의 매매 판단에 6월의 미래가 스며든다. 현실에서는 절대 알 수 없는 정보다
  4. 사례집을 2021년 말까지의 데이터로만 만들면, 모든 조각의 후일담이 늦어도 2022년 첫 거래일 전에 끝나므로 이런 침범이 원천 봉쇄된다
더 읽기

방어는 세 겹이다. 첫째 겹은 방금 본 사례집의 시간 제한 — 사례집(조각 + 그 후 5일 수익)은 학습 구간에서만 만든다. 이 전략 고유의 급소를 직접 막는다. 둘째 겹인 prefix 불변 테스트는 데이터의 뒷부분을 잘라내도 앞 시점의 신호가 변하지 않는지 기계적으로 검사한다 — 사례집이 몰래 전체 데이터를 쓰고 있었다면 뒷부분을 자르는 순간 이웃 구성이 달라져 테스트가 즉시 실패한다. 셋째 겹인 엔진의 하루 지연은 신호가 만들어진 다음 날에야 체결시켜 계산 순서의 미묘한 실수까지 완충한다(전향 평가 모듈의 표준 장치). 세 겹을 겹치는 이유는 단순하다 — 룩어헤드는 한 겹의 방어쯤은 뚫고 들어오기 때문이다.

널리 퍼진 오해

"학습 구간 안의 미래도 어쨌든 미래 아닌가"

기준은 언제나 예측을 내리는 시점이다. "미래 정보"란 절대적 시점이 아니라 예측 시점에 상대적인 개념이다.

오해

"이웃 조각의 '직후 5일'을 쓰는 것 자체가 미래 정보 사용이므로, 학습 구간 안이라도 반칙이다."

아니다. 2022년의 내가 2018년 조각의 "직후 5일"을 들춰 보는 것은, 부동산 시세를 잡으며 작년 실거래가를 참고하는 것과 같다 — 이미 공개된 과거의 기록이다. 학습 구간 내부의 "미래"는 테스트 시점에서 보면 이미 다 지나간 후일담이므로 안전하다. 반칙은 내년 실거래가를 미리 알고 오늘 호가를 부르는 것, 즉 테스트 구간의 미래가 예측에 들어오는 경우뿐이다.

더 읽기

이 구분이 헷갈리는 이유는 "미래"라는 단어가 두 가지 시점 기준으로 쓰이기 때문이다. 조각의 입장에서 "직후 5일"은 그 조각의 미래지만, 예측자의 입장에서는 과거다. 룩어헤드 판정에서 유일하게 중요한 것은 후자, 즉 예측을 내리는 순간에 그 정보가 이미 공개되어 있었는가다. 이 질문 하나로 모든 사례를 판정할 수 있다 — 애매하면 "그 시점의 나는 이 숫자를 화면에서 볼 수 있었는가"를 자문하면 된다.

생각해 볼 질문

학습 구간의 마지막 4일(예: 2021년 12월 27~30일)에서 시작하는 20일 조각은 사례집에 넣어도 되는가. 후일담 5일이 어디까지 뻗는지 계산해 보면 답이 나온다.

4
구현의 증거 ≠ 시장의 증거

검증과 정직한 해석

심어 둔 패턴을 수확하는 능력과, 시장에 패턴이 실제로 있다는 믿음은 별개의 문장이다. 둘을 섞지 않는 것이 이 절의 전부다.

양성 대조군

샤프 6.98은 무엇의 증거인가

이 플랫폼의 합성데이터 실험에서, 위상이 서로 다른 63일 주기 사이클을 심은 양성 대조군에 대해 OOS 샤프 6.98(인샘플 7.61에서 유지)이 나왔다. 심은 반복 패턴을 정확히 수확한 것이다 — 그러나 이 숫자가 증명하는 것은 구현의 올바름뿐이다.

실험 설계를 뜯어 보자. 63일은 대략 한 분기의 거래일 수다. 가짜 데이터에 63일마다 반복되는 사이클을 심되 종목마다 위상(출발점)을 다르게 두면, "지금 어느 국면에 있는지"를 모양으로 알아채고 다음 국면을 맞히는 능력을 정확히 시험할 수 있다. z-정규화가 제대로 모양을 비교하고, 풀링이 종목을 넘나들며 사례를 모으고, 이웃 검색이 올바르게 작동한다면 이 패턴은 반드시 수확되어야 한다. 만약 실패했다면 그것은 시장 탓이 아니라 코드의 버그다.

즉 양성 대조군은 "정답을 아는 문제"를 미리 풀려 구현을 검증하는 장치이고, 샤프 6.98도 그렇게 읽어야 한다. 실제 시장에서 샤프 7은 사실상 존재하지 않는 성적이다. 사인파 사이클은 세상에서 가장 배우기 쉬운 반복 구조이며, 저 숫자가 말하는 것은 전략의 우수함이 아니라 심어 둔 신호가 그만큼 노골적이었다는 사실뿐이다.

더 읽기

"패턴이 있다면 수확할 준비가 된 도구"와 "패턴이 실제로 있다는 증거"는 별개의 문장이다. 전자는 대조군 실험으로 얻었고, 후자는 아직 아무것도 얻지 못했다. 이 구분을 흐리는 순간, 구현 검증용 수치가 성과 광고로 둔갑한다 — 모듈 1에서 본 "평가가 아니라 광고"의 또 다른 변형이다.

진짜 시장의 두 도전

비정상성, 그리고 효율적 시장 가설

실제 시장의 패턴은 훨씬 약하고, 통계적 성질이 시간에 따라 변하며(비정상성), "과거 가격만으로는 미래를 맞힐 수 없다"는 효율적 시장 가설의 도전을 받는다.

첫째가 비정상성이다. 2020년 3월 팬데믹 국면의 시장은 하루에 수 퍼센트씩 출렁였지만, 그보다 몇 해 전의 조용한 박스권 장세는 하루 변동이 1%도 안 되는 날이 대부분이었다. z-정규화 덕에 두 시기의 조각이 "같은 모양"으로 묶일 수는 있어도, 같은 모양 뒤에 오는 후속 흐름을 만드는 시장의 역학 자체가 달라져 있다면 과거의 후일담은 참고서가 아니라 오답 노트가 된다. "사례집이 클수록 유리하다"는 k-NN의 상식이 금융에서 꺾이는 지점이 바로 여기다 — 오래된 사례는 양을 늘려 주지만, 그 사례가 태어난 시장은 이미 사라졌을 수 있다.

둘째가 효율적 시장 가설(EMH)이다. EMH는 반영되는 정보의 범위에 따라 약형(과거 가격·거래량은 이미 반영됨), 준강형(공개된 모든 정보), 강형(내부 정보까지)으로 나뉜다. k-NN 아날로그가 정면으로 부딪히는 것은 이 중 가장 낮은 문턱인 약형이다 — 이 전략의 재료가 오직 과거 가격뿐이기 때문이다. 수십 년의 실증 연구는 대체로 "약형조차 이기기 어렵다"는 쪽에 무게를 실어 온 것으로 알려져 있지만, 모멘텀처럼 과거 가격 기반인데도 오래 살아남은 이상현상(anomaly)에 대한 논쟁 역시 계속되고 있다. 그래서 이 모듈의 태도는 양쪽 모두에 정직하다 — 구현은 대조군으로 엄격히 검증하되, 시장에서의 성과는 약속하지 않는다.

출처 Fama, "Efficient Capital Markets: A Review of Theory and Empirical Work", Journal of Finance 25(2), 1970, doi:10.1111/j.1540-6261.1970.tb00518.x · Jegadeesh & Titman, "Returns to Buying Winners and Selling Losers", Journal of Finance 48(1), 1993, doi:10.1111/j.1540-6261.1993.tb04702.x.

역사의 대조군

기상학이 먼저 부딪힌 벽

도입의 장면으로 돌아가자. 로렌즈의 1969년 연구는 아날로그 예보의 한계를 정량적으로 보여 줬고, 금융의 아날로그 전략도 같은 벽 앞에 선다.

대기의 상태 공간이 너무 방대해서 "충분히 닮은" 두 날은 관측 역사상 거의 없었고, 어설프게 닮은 쌍은 금세 서로 다른 미래로 갈라졌다 — 카오스 이론의 개척자다운 발견이었다. 금융으로 번역하면 이렇다. 사례집이 25만 장으로 커 보여도 20차원 공간에서 질의와 '진짜로' 닮은 조각은 드물고, 그럭저럭 닮은 이웃 25개의 평균은 자칫 시장 전체의 평균, 곧 아무 정보 없는 예측으로 뭉개진다. 실습에서 k를 키울 때 예측이 0%를 향해 수렴하던 바로 그 현상이다.

사례 검색이라는 아이디어의 매력과 한계는 반세기 전 기상학이 이미 정직하게 보여 준 셈이다. 그렇다고 이 접근이 무가치하다는 뜻은 아니다 — 해석 가능성과 단순함이라는 미덕은 남고, "닮음"의 정의를 더 영리하게 만드는 일은 다음 모듈의 주제로 이어진다. 오토인코더 모듈은 원시 20차원 대신 압축된 표현 공간에서 닮음을 재는 방법을 다룬다.

출처 Lorenz, "Atmospheric Predictability as Revealed by Naturally Occurring Analogues", Journal of the Atmospheric Sciences 26(4), 1969, doi:10.1175/1520-0469(1969)026<0636:APARBN>2.0.CO;2.

확인

퀴즈와 정리

답을 보기 전에 먼저 스스로 답해 본다. 전부 이 모듈 안에서 다룬 내용이다.

k를 1로 하면 무엇이 위험한가?
단 하나의 사례가 갖는 잡음에 그대로 노출된다. 그 사례가 우연히 특이했다면 예측이 통째로 흔들린다. 여러 이웃을 평균하면 각자의 잡음이 상쇄된다(독립 잡음 k개의 평균은 잡음을 1/√k로 줄인다). 실습에서 k=1의 +1.58%가 k=4에서 +0.64%까지 출렁이던 것이 이 현상이다.
z-정규화 없이 원시 수익률로 거리를 재면 어떤 문제가 생기나?
변동성이 큰 종목·시기가 거리 계산을 지배해 '모양'이 무시된다. z-정규화는 평균을 빼고 표준편차로 나눠 수준·진폭을 지우고 순수한 형태만 비교하게 한다 — 예: (1%, 2%, 3%)과 (2%, 4%, 6%)은 정규화 후 똑같이 (−1, 0, +1)이 된다.
이 전략에서 미래 정보가 샐 수 있었던 경로와 그 차단법은?
이웃 조각의 "직후 5일" 후일담이 테스트 구간을 침범하는 경로다. 사례집을 학습 구간의 데이터로만 만들면 모든 후일담이 테스트 시작 전에 끝나므로 원천 봉쇄된다. 여기에 prefix 불변 테스트와 엔진의 하루 지연이 겹쳐 삼중 방어를 이룬다.
비교 창을 20일에서 200일로 늘리면 이웃 검색에 어떤 문제가 생기나?
200차원 공간의 차원의 저주로 최근접과 최원거리 이웃의 거리 차가 상대적으로 줄어 "가장 닮았다"의 변별력이 떨어지고, 만들 수 있는 조각 수도 줄어든다. 창 길이는 무작정 늘리는 쪽이 손해인 하이퍼파라미터다.
양성 대조군의 OOS 샤프 6.98을 실제 시장에서 기대할 수 있는 성과로 읽으면 안 되는 이유는?
심어 둔 사인파는 가장 배우기 쉬운 노골적 반복 구조라서, 이 수치는 구현의 올바름을 보여 줄 뿐 실제 시장에 그런 패턴이 존재한다는 증거가 아니다. 실제 시장에서 샤프 7은 사실상 존재하지 않는 성적이다. "수확할 준비가 된 도구"와 "패턴이 실제로 있다는 증거"는 별개의 문장이다.
풀링이 오히려 해가 될 수 있는 경우는?
"좋은 패턴은 종목을 가리지 않는다"는 가정이 깨질 때다. 성격이 이질적인 종목(예: 대형 우량주와 거래량이 얇은 중소형주)의 조각들이 소음 이웃으로 섞여 들어와 예측을 흐린다. 이때 풀링은 사례 수가 아니라 소음을 늘린다.
핵심 정리

① k-NN = 사례 검색. 학습 없음, 해석 쉬움, 과거 사례집이 실력의 전부다.

② z-정규화 = 수준·진폭을 지우고 모양만 비교한다. 지운 진폭 정보는 되돌아오지 않는다 — 이것은 전처리가 아니라 모델링 선택이다.

③ k는 잡음 제거(크게)와 개성 보존(작게) 사이의 다이얼. 키울수록 예측은 전체 평균으로 뭉개진다.

④ 이웃의 "미래"는 반드시 학습 구간 안의 기록만 쓴다 — 후일담 꼬리표가 이 전략 고유의 룩어헤드 지점이다.

⑤ 양성 대조군 통과는 구현이 올바르다는 증거일 뿐, 시장에 패턴이 있다는 증거가 아니다. 비정상성과 약형 EMH가 진짜 시장의 관문이다.

원문으로 확인하기

참고문헌

수치와 일화는 아래 원문 기준으로 서술했다. 링크는 공개 서지(DOI)가 확실한 것만 달았다.

k-NN · 최근접 이웃 이론

  1. Fix, E. & Hodges, J. L. (1951, 재간행 1989). "Discriminatory Analysis: Nonparametric Discrimination — Consistency Properties." USAF School of Aviation Medicine Report 4; 재간행 International Statistical Review 57(3). doi:10.2307/1403797 — 최근접 이웃 방법의 원류.
  2. Cover, T. & Hart, P. (1967). "Nearest Neighbor Pattern Classification." IEEE Transactions on Information Theory 13(1). doi:10.1109/TIT.1967.1053964 — 1-NN 오류율의 고전적 상계.
  3. Beyer, K., Goldstein, J., Ramakrishnan, R. & Shaft, U. (1999). "When Is 'Nearest Neighbor' Meaningful?" ICDT 1999. doi:10.1007/3-540-49257-7_15 — 고차원에서 최근접 이웃 변별력이 무너진다는 결과.

아날로그 예보 · 시장 효율성

  1. Lorenz, E. N. (1969). "Atmospheric Predictability as Revealed by Naturally Occurring Analogues." Journal of the Atmospheric Sciences 26(4). doi:10.1175/1520-0469(1969)026<0636:APARBN>2.0.CO;2 — 자연 발생 아날로그로 본 대기 예측 가능성.
  2. Fama, E. (1970). "Efficient Capital Markets: A Review of Theory and Empirical Work." Journal of Finance 25(2). doi:10.1111/j.1540-6261.1970.tb00518.x — 약형·준강형·강형 EMH의 표준 정식화.
  3. Jegadeesh, N. & Titman, S. (1993). "Returns to Buying Winners and Selling Losers: Implications for Stock Market Efficiency." Journal of Finance 48(1). doi:10.1111/j.1540-6261.1993.tb04702.x — 과거 가격 기반인데도 살아남은 모멘텀 이상현상.

이 자료의 백테스트 수치(양성 대조군 OOS 샤프 6.98, 인샘플 7.61)는 강의용 실험 플랫폼의 합성데이터 실험 실측이며, 실제 투자 성과를 시사하지 않는다. 실습의 시계열은 결정론적 합성 데이터다(주기 21·47일 사이클 + 고정 위상 진동의 합, 난수 없음). 인용 원칙: 연도는 발표 기준, 1차 자료 확인이 어려운 서술은 "~로 알려져 있다"로 구분했다.