시장과 투자/시장 구조와 수급

흔들리는 시장속에서, 선옵향이 느껴진거야_3

Paulworld 2026. 6. 21. 14:29

10년 백테스트가 알려준 의외의 결론

앞선 글에서는 선물·옵션 시장위험 리포트를 텔레그램으로 자동화한 과정을 정리했다.

KOSPI200, KOSPI200 선물, 베이시스, 프로그램매매, 외국인 선물 수급, VKOSPI, 옵션 IV, 삼성전자와 SK하이닉스까지 모아서 30분마다 시장 상태를 받아보는 구조였다.

처음에는 꽤 그럴듯했다.

리포트에는 위험등급이 나왔다.
안정, 주의, 위험, 급위험 같은 식으로 시장 상태가 표시됐다.
외국인 선물이 강한지, 비차익 프로그램이 매도인지, VKOSPI가 높은지, 옵션 IV가 높은지에 따라 위험점수가 계산됐다.

그런데 여기서 자연스럽게 이런 생각이 들었다.

위험등급이 높으면 비중을 줄여야 하는 것 아닐까.
위험점수가 높을 때 시장을 피하면 손실을 줄일 수 있지 않을까.
반대로 위험점수가 낮을 때만 시장에 참여하면 더 좋은 전략이 되지 않을까.

나도 처음에는 그렇게 생각했다.

하지만 10년 데이터를 돌려본 결과, 결론은 생각보다 달랐다.

위험등급이 높다는 것은 하락 신호가 아니었다.
위험등급이 높다는 것은 “크게 흔들릴 수 있다”는 뜻에 가까웠다.


처음 가설은 단순했다

시장위험 리포트를 만들면서 처음 세운 가설은 단순했다.

위험점수가 높으면 시장이 위험한 상태일 것이다.
그렇다면 그런 구간에서는 비중을 줄이는 것이 맞지 않을까.

이 가설은 직관적으로는 맞아 보인다.

예를 들어 이런 조건들이 동시에 나타난다고 해보자.

  • VKOSPI가 높다.
  • 옵션 ATM IV가 높다.
  • 비차익 프로그램이 대규모 순매도다.
  • 외국인 선물과 현물 수급이 엇갈린다.
  • 삼성전자와 SK하이닉스 프로그램 수급이 나쁘다.
  • 장중 급등락이 반복된다.

이런 장을 보면 누구나 “위험하다”고 느낀다.
그렇다면 위험한 장에서는 비중을 줄여야 한다고 생각하기 쉽다.

나도 처음에는 그렇게 접근했다.

그래서 combined risk regime이라는 위험 체제 모델을 만들었다.
시장을 normal, caution, high, extreme 같은 등급으로 나누고, 등급이 높아질수록 가상의 포지션 비중을 줄이는 방식이었다.

예를 들면 이런 식이다.

  • normal: 100% 노출
  • caution: 75% 노출
  • high: 50% 노출
  • extreme: 25% 노출

더 엄격한 버전도 만들었다.
extreme 구간에서는 아예 0%로 줄이는 방식도 테스트했다.

겉으로 보기에는 합리적이다.
문제는 실제 결과였다.


10년 데이터를 쌓았다

이 가설을 확인하기 위해 KRX 데이터를 이용해 10년치 일별 데이터를 쌓았다.

수집 기간은 2016년 6월 20일부터 2026년 6월 12일까지였다.
최종 feature row는 2,448개였다.
데이터 cache는 약 3.04GB였고, 다운로드에는 약 6시간 33분이 걸렸다.

데이터에는 다음 항목들이 포함됐다.

  • KOSPI200 선물 일별 가격
  • 옵션 일별 가격
  • 옵션 내재변동성
  • 미결제약정
  • 파생상품지수
  • KOSPI·KOSDAQ 주식 일별 가격
  • 삼성전자·SK하이닉스 가격
  • 종목별 breadth 계산용 데이터
  • 옵션 IV 기반 변동성 feature
  • 반도체 쏠림 feature
  • 위험 regime feature

KRX 옵션 일별매매정보에는 기준일자, 상품구분, 권리유형, 종목코드, 종목명, 종가, 시가, 고가, 저가, 내재변동성, 거래량, 거래대금, 미결제약정 등이 포함된다.

이 데이터로 크게 세 가지를 검증했다.

첫째, 방향성 예측 모델이 의미가 있는가.
둘째, 위험등급에 따라 비중을 줄이면 MDD가 줄어드는가.
셋째, 고변동성 구간은 실제로 하락 위험을 뜻하는가.


방향성 예측 모델은 실패했다

먼저 방향성 예측 모델을 만들었다.

목표는 단순했다.
과거의 선물, 옵션, 변동성, breadth 데이터를 이용해서 이후 5거래일 수익률 방향을 설명할 수 있는지 확인하는 것이었다.

10년 데이터 기준으로 predictive model을 다시 돌렸을 때, return_model의 결과는 좋지 않았다.

  • Pearson: 0.0373
  • Spearman: -0.0219
  • 방향 hit-rate: 48.79%

이 정도면 운영에 쓸 수 없다.
방향성 예측 모델이라고 부르기 어렵다.

특히 hit-rate가 50%를 넘지 못했다.
상관도 거의 없었다.

즉, 내가 모은 선물·옵션·변동성 feature만으로 “앞으로 시장이 오를지 내릴지”를 안정적으로 맞히는 것은 실패했다.

실망스러운 결과였지만, 오히려 중요한 결론이었다.

시장을 맞히는 모델을 쉽게 만들 수 없다는 것을 확인했기 때문이다.


하지만 변동성 모델은 쓸 만했다

그런데 모든 모델이 실패한 것은 아니었다.

방향성 모델은 약했지만, 변동성 모델은 꽤 의미가 있었다.

10년 기준 vol_model 결과는 다음과 같았다.

  • Pearson: 0.6941
  • Spearman: 0.5020

즉 이 모델은 시장이 오를지 내릴지를 잘 맞히지는 못했지만, 앞으로 변동성이 커질지 작아질지는 어느 정도 설명했다.

이 차이가 중요하다.

투자자는 보통 “오르냐, 내리냐”를 알고 싶어 한다.
하지만 실제로 더 중요한 질문은 다를 수 있다.

얼마나 크게 흔들릴 것인가.
지금 내가 감당할 수 있는 변동성인가.
레버리지를 써도 되는 장인가.
추격매수하면 장중 흔들림을 버틸 수 있는가.

vol_model은 이런 질문에 더 가까웠다.

즉 내가 만든 상태판은 방향 예측기는 아니었지만, 위험 체제 판단기로는 가능성이 있었다.


위험등급에 따라 비중을 줄였더니

가장 중요한 테스트는 이것이었다.

위험등급에 따라 포지션을 줄이면 실제로 성과가 좋아질까.

결과는 다음과 같았다.

  • Always-long: 총수익률 +337.5%, MDD -35.76%
  • Combined rule scale: 총수익률 +78.5%, MDD -36.10%
  • Strict scale: 총수익률 +44.8%, MDD -36.54%
  • Transition scale: 총수익률 +86.9%, MDD -35.89%

결과는 충격적이었다.

비중을 줄였더니 수익률은 크게 줄었다.
그런데 MDD는 거의 개선되지 않았다.
오히려 일부 전략에서는 MDD가 더 나빠졌다.

이 말은 단순하다.

위험등급이 높다고 비중을 줄이는 전략은 실패했다.

만약 이 상태판을 보고 “위험등급이 높으니 줄이자”고 했다면, 장기적으로 큰 상승장을 상당 부분 놓쳤을 가능성이 높다. 그리고 그렇게 놓친 대가에 비해 손실 방어 효과는 충분하지 않았다.

이 결과가 이번 실험의 핵심이었다.

위험은 하락과 같은 말이 아니었다.


왜 이런 결과가 나왔을까

처음에는 이상했다.

위험한 구간이면 당연히 시장이 안 좋아야 하는 것 아닐까.

그런데 실제 시장은 그렇게 단순하지 않았다.
특히 한국 시장의 고변동성 구간은 강한 상승과도 자주 겹쳤다.

고변동성 상승장 이벤트를 따로 뽑아봤다.

event_high_vol_up_v1은 133건이었다.

  • 이후 5거래일 평균 수익률: +1.69%
  • 이후 5일 실현변동성: 1.84
  • left-tail: -2.21

event_high_vol_up_v2는 79건이었다.

  • 이후 5거래일 평균 수익률: +1.89%
  • 이후 5일 실현변동성: 2.27
  • left-tail: -2.81

즉 고변동성 상승장은 평균적으로 오히려 더 올랐다.
하지만 동시에 변동성과 하방 꼬리 위험도 커졌다.

이게 핵심이다.

고변동성은 하락 신호가 아니었다.
고변동성은 큰 움직임의 신호였다.

위로도 크게 가고, 아래로도 크게 흔들릴 수 있는 구간이었다.

따라서 위험등급이 높다는 이유만으로 시장을 피하면, 오히려 강한 상승장을 놓칠 수 있다. 반대로 위험등급을 무시하고 레버리지로 추격하면 장중 급락에 크게 당할 수 있다.


Extreme은 매도 신호가 아니었다

위험 체제 중에서도 extreme 구간을 따로 봤다.

결과는 흥미로웠다.

  • all_extreme: 이후 5거래일 평균 수익률 +1.97%, 실현변동성 2.85, left-tail -3.42
  • extreme_persistence_2d: 실현변동성 3.03, left-tail -3.61
  • extreme_persistence_3d: 실현변동성 3.16, left-tail -3.75

extreme 구간의 평균 수익률은 플러스였다.
하지만 extreme 상태가 2일, 3일 지속될수록 변동성과 left-tail 위험은 더 커졌다.

이 결과는 해석이 중요하다.

extreme은 “팔아라”가 아니다.
extreme은 “흔들림이 커지고 있다”다.

특히 extreme이 하루 뜨는 것보다 며칠 지속되는 것이 더 중요했다.
위험한 것은 단순히 높은 위험등급이 아니라, 높은 위험등급이 계속 유지되는 상태였다.

그래서 다음 버전의 리포트에는 이런 문구가 더 적절하다고 판단했다.

“극단 변동성 상태가 2회 이상 연속 관측되고 있습니다.
평균 방향성은 하락으로 단정할 수 없지만, 이후 변동성과 하방 꼬리 위험이 커지는 구간입니다.”

이 정도가 맞다.


반도체 쏠림도 매도 신호는 아니었다

한국 시장에서는 삼성전자와 SK하이닉스의 영향이 너무 크다.
그래서 반도체 대형주가 시장을 끌고 가는 쏠림 장세도 따로 테스트했다.

결과는 다음과 같았다.

  • 반도체 쏠림 이벤트: 268건, 이후 5거래일 평균 수익률 +0.87%, 변동성 1.30, left-tail -1.61
  • 반도체 쏠림 + 약한 breadth 이벤트: 212건, 이후 5거래일 평균 수익률 +0.48%, 변동성 1.33, left-tail -1.73

이것도 마찬가지였다.

반도체 쏠림은 무조건 나쁜 신호가 아니었다.
오히려 이후 평균 수익률은 플러스였다.

다만 breadth가 약해질수록 tail risk는 커졌다.

즉 일부 대형주가 지수를 끌고 가는 장은 계속 오를 수 있다.
하지만 시장 전체 체력이 약하면 흔들림도 커진다.

이것도 매도 신호로 쓰면 안 된다.
대신 “상승은 가능하지만 시장 내부 체력 확인이 필요하다”는 문구로 쓰는 것이 맞다.


그래서 위험등급은 어떻게 써야 할까

백테스트 이후 내가 내린 결론은 명확하다.

위험등급은 매도 신호가 아니다.
위험등급은 자동 비중축소 신호도 아니다.
위험등급은 변동성 상태판이다.

위험등급이 높다는 말은 이렇게 해석해야 한다.

  • 방향성 단정 금지
  • 장중 변동폭 확대 가능성
  • 추격매수 주의
  • 레버리지 주의
  • 과대비중 주의
  • 손절·익절 기준을 더 명확히 해야 하는 구간
  • 위로도 아래로도 크게 움직일 수 있는 구간

예를 들어 지수가 오르는데 VKOSPI와 ATM IV도 높다면, 이것은 단순한 상승장이 아니다.
고변동성 상승장이다.

고변동성 상승장은 더 오를 수 있다.
하지만 흔들림도 크다.

그래서 이 구간에서 필요한 것은 “무조건 팔기”가 아니다.
내가 이 변동성을 감당할 수 있는 포지션인지 점검하는 것이다.


공격적으로 보면, 위험은 기회와 같이 온다

이 결과를 공격적으로 해석하면 이렇다.

고변동성 구간을 무조건 피하면 안 된다.
오히려 큰 상승은 고변동성 구간에서 나오는 경우가 있다.

위험이 높다는 이유만으로 시장을 벗어나 있으면, 수익률은 크게 훼손될 수 있다.

Always-long이 +337.5%였는데, 위험등급에 따라 줄인 전략은 +78.5%, +44.8%, +86.9% 수준에 그쳤다.
이것은 시장에 오래 머무는 것이 얼마나 강력한지 보여준다.

공격적인 관점에서 보면 위험등급은 회피 신호가 아니다.

오히려 “큰 움직임이 나올 수 있는 구간”을 알려주는 신호에 가깝다.
이 구간에서 시장의 방향성과 수급이 맞아떨어지면 강한 상승이 나올 수도 있다.

따라서 공격적인 결론은 이렇다.

위험하다고 무조건 피하지 말라.
다만 왜 위험한지, 그 위험이 상승 에너지와 함께 나타나는지 확인해야 한다.


보수적으로 보면, 위험은 포지션을 점검하라는 신호다

반대로 보수적인 관점에서 보면 결론은 다르다.

고변동성 구간은 결코 편안한 구간이 아니다.
평균 수익률이 플러스여도, left-tail과 장중 변동성은 커진다.

특히 레버리지, 곱버스, 단기 추격매수에는 위험한 환경이다.

방향이 맞아도 진입 가격이 나쁘면 흔들림을 견디기 어렵다.
방향이 틀리면 손실이 빠르게 커진다.

따라서 보수적으로 보면 위험등급은 비중을 기계적으로 줄이라는 신호가 아니라, 내 포지션의 내구성을 점검하라는 신호다.

내가 감당할 수 있는 손실 범위인가.
레버리지가 과하지 않은가.
손절 기준이 있는가.
장중 급락이 나와도 버틸 수 있는가.
추격매수로 들어간 포지션은 아닌가.

이 질문에 답해야 한다.

보수적인 결론은 이렇다.

위험한 장에서 과대비중과 레버리지는 조심하라.
위험등급이 높아질수록 수익보다 생존을 먼저 확인하라.


내가 바꾸기로 한 것

이 결과를 보고 텔레그램 리포트도 바꾸기로 했다.

처음 리포트에는 이런 문구가 있었다.

  • 포지션 신호: 초소형비중
  • 신규 진입: 시장가 추격 금지
  • 레버리지 신규 진입: 원칙적 주의
  • 위험등급: 급위험

그런데 이런 문구는 자칫 매매 지시처럼 보일 수 있다.
백테스트 결과를 반영하면 표현을 바꾸는 것이 맞다.

예를 들면 이렇게 바꿀 수 있다.

“본 리포트의 위험등급은 매수·매도 또는 자동 비중축소 신호가 아닙니다.
위험등급은 변동성 확대, 수급 충돌, 장중 급변동 가능성을 설명하는 상태판입니다.”

또 시장 상태도 더 구체적으로 나눌 필요가 있다.

  • 고변동성 상승장
  • 선물 주도 고변동성 랠리
  • 급등 후 급락 조정
  • 급락 후 반등
  • 반등 실패
  • 고변동성 왕복장
  • 선물-현물 괴리
  • 반도체 쏠림 장세

이렇게 바꿔야 실제 장중 상황을 더 잘 설명할 수 있다.

위험등급 하나로 시장을 설명하려고 하면 오해가 생긴다.
대신 시장의 상태를 더 구체적인 언어로 분류해야 한다.


세 번째 결론

처음에는 시장을 맞히고 싶었다.
하지만 백테스트는 다른 답을 줬다.

시장을 맞히는 것은 어렵다.
위험등급으로 매수·매도 전략을 만드는 것도 잘 되지 않았다.

하지만 시장이 어떤 상태인지는 어느 정도 분류할 수 있었다.

위험한 장은 반드시 빠지는 장이 아니다.
위험한 장은 크게 흔들리는 장이다.

따라서 내가 만든 상태판의 목적은 이렇게 정리된다.

오를지 내릴지를 맞히는 것이 아니라,
지금 시장이 어떤 변동성 환경에 있는지 보여주는 것.

이 결론이 오히려 더 현실적이라고 생각한다.

주식시장에서 가장 위험한 것은 모르는 것을 안다고 착각하는 것이다.

위험등급이 높다고 시장이 빠질 것이라고 단정하는 것도 착각이다.
반대로 지수가 오른다고 안전하다고 믿는 것도 착각이다.

시장은 오르면서도 위험할 수 있다.
내리면서도 반등할 수 있다.
선물은 강한데 현물은 약할 수 있다.
위험등급은 높지만 평균 수익률은 플러스일 수 있다.

그래서 필요한 것은 예언이 아니라 계기판이다.

나는 이 실험을 통해 그 사실을 배웠다.

위험하다는 말은 하락한다는 뜻이 아니었다.
위험하다는 말은 크게 흔들린다는 뜻이었다.

다음 글에서는 이 예측기가 왜 실패했는지, 그리고 그럼에도 불구하고 시장 상태판으로는 왜 유용했는지 정리해보려 한다.