투자 판단을 감이 아니라 데이터 상태판으로 바꾸기
1편에서는 코스피를 볼 때 단순히 주가만 봐서는 부족하다고 썼다.
현물 가격은 결과에 가깝고, 선물 수급은 압력이며, 프로그램매매는 그 압력이 현물시장으로 전달되는 경로에 가깝다. 옵션과 VKOSPI는 시장이 앞으로 얼마나 크게 흔들릴 수 있는지에 대한 기대를 보여준다.
그렇다면 다음 질문은 자연스럽다.
“그걸 장중에 사람이 계속 볼 수 있을까?”
답은 거의 불가능에 가깝다.
장중에 KOSPI200, KOSPI200 선물, 베이시스, 프로그램매매, 외국인 선물 수급, 옵션 IV, VKOSPI, 삼성전자, SK하이닉스까지 계속 확인하려면 모니터를 여러 개 띄워놓고 있어야 한다.
그것도 단순히 숫자만 보는 것이 아니라, 숫자들 사이의 관계까지 해석해야 한다.
예를 들면 이런 질문들이다.
- 지수는 오르는데 외국인이 선물을 사고 있는가
- 외국인 현물도 같이 들어오는가, 아니면 선물만 사는가
- 비차익 프로그램은 대형주 바스켓을 사고 있는가, 팔고 있는가
- 베이시스는 이론 베이시스보다 과하게 벌어졌는가
- VKOSPI가 높은데 지수도 오르는가
- 삼성전자와 SK하이닉스가 지수를 끌고 가는가
- 옵션 시장은 콜 쪽을 더 비싸게 보는가, 풋 쪽을 더 비싸게 보는가
이걸 장중에 사람이 계속 판단하는 것은 피곤하다.
그래서 Codex를 이용해 선물·옵션 시장위험 리포트를 만들기 시작했다.
목표는 단순했다.
“매수·매도 신호를 자동으로 만들자”가 아니었다.
“지금 시장이 어떤 상태인지 30분마다 텔레그램으로 받아보자”였다.
내가 만들고 싶었던 것은 예측기가 아니라 상태판이었다
처음부터 완벽한 예측 모델을 만들 수 있다고 생각하지는 않았다.
주식시장의 단기 예측은 어렵다.
특히 한국 시장은 더 복잡하다. 외국인 선물, 프로그램매매, 대형주 쏠림, 환율, 글로벌 증시, 반도체 사이클까지 동시에 작동한다.
그래서 내가 만들고 싶었던 것은 예측기가 아니었다.
상태판이었다.
자동화 리포트가 대답해야 하는 질문은 다음과 같았다.
- 지금 시장은 상승장인가, 하락장인가
- 상승이라면 건강한 상승인가, 위험한 상승인가
- 외국인 선물과 현물 수급이 같은 방향인가
- 프로그램 비차익 매도 압력이 큰가
- VKOSPI와 옵션 IV는 어느 정도인가
- 삼성전자와 SK하이닉스가 지수를 버티는가, 끌어내리는가
- 장중 급등·급락이 반복되는 왕복장인가
즉 이 리포트의 목적은 “내일 오른다, 내린다”를 맞히는 것이 아니었다.
지금 시장의 체력과 위험 상태를 구조화하는 것이었다.
투자 판단에서 가장 위험한 것은 감정적으로 움직이는 것이다.
시장이 급등하면 뒤늦게 따라 사고 싶고, 시장이 급락하면 이유도 모른 채 무서워진다. 특히 요즘처럼 오전에 폭등했다가 점심에 급락하고, 다시 오후에 반등하는 장에서는 감정이 더 쉽게 흔들린다.
나는 적어도 그 순간에 이렇게 묻고 싶었다.
“이 급등은 무엇이 끌고 가는가?”
“이 급락은 무엇이 무너진 것인가?”
“지금 위험은 방향성 위험인가, 변동성 위험인가?”
이 질문에 답하기 위해 자동화 리포트를 만들었다.
데이터는 여러 곳에서 모았다
이번 자동화에서 사용한 데이터는 한 곳에서만 나오지 않았다.
처음에는 KIS Open API만으로 해결하려 했다.
하지만 실제로 만들어보니 모든 데이터가 한 번에 나오지는 않았다. 실시간 가격, 수급, 옵션 체인, 변동성, 환율, 장기 백테스트 데이터는 각각 다른 소스와 구조를 갖고 있었다.
그래서 여러 소스를 조합했다.
실시간 리포트에는 대략 다음 데이터가 들어갔다.
- KIS API: KOSPI200, KOSPI200 선물, 선물 상세시세, 프로그램매매, 대형주 가격, 옵션 ATM·그릭스
- KB증권 모바일 페이지: 투자자별 현물·선물·옵션 수급
- Stockplus: VKOSPI
- 한경 옵션 체인: 옵션 가격 fallback
- 네이버 환율: USD/KRW
- KRX API: 장기 백테스트용 일별 선물·옵션·주식 데이터
처음에는 실시간 리포트만 만들 생각이었다.
그런데 리포트가 만들어지기 시작하자 더 중요한 문제가 생겼다.
“이 해석이 맞는가?”
예를 들어 외국인 선물이 +5,000억이면 좋은가.
비차익 프로그램이 -1조면 무조건 나쁜가.
VKOSPI가 높으면 무조건 하락 신호인가.
이런 질문에 답하려면 과거 데이터가 필요했다.
그래서 KRX API를 이용해 10년치 데이터를 쌓기 시작했다.
최종적으로 KRX historical pipeline은 2016년 6월 20일부터 2026년 6월 12일까지 2,448개의 일별 feature row를 만들었다. 전체 cache manifest는 29,213 rows였고, cache 총량은 약 3.04GB였다. 다운로드에는 약 6시간 33분이 걸렸다.
Endpoint별로는 선물 일별, 옵션 일별, 파생상품지수, KOSPI 주식 일별, KOSDAQ 주식 일별, 주식선물 일별 등을 수집했다. 주요 endpoint는 실패 없이 완료됐다.
이 과정에서 깨달은 점이 있다.
데이터 자동화에서 가장 어려운 것은 코드를 짜는 것이 아니다.
데이터가 무엇을 의미하는지 끝까지 확인하는 것이다.
숫자는 쉽게 가져올 수 있다.
하지만 그 숫자가 시장을 설명하는지, 아니면 오히려 착시를 만드는지는 따로 검증해야 한다.
리포트는 30분마다 텔레그램으로 받게 했다
실시간 파일럿은 2026년 6월 18일과 6월 19일, 이틀 동안 돌렸다.
한국 시장 정규장 기준으로 오전 9시부터 오후 3시 30분까지 30분 간격으로 총 28개 slot을 만들었다.
구조는 단순하다.
- 정해진 시간에 main.py 실행
- 각 데이터 소스에서 현재 데이터 수집
- snapshot 생성
- 위험점수 계산
- 리포트 문장 생성
- Telegram 전송
- latest_snapshot.json과 latest_report.md 저장
실제로 생성된 리포트는 이런 구조였다.
- 시장 요약
- 투자자별 수급
- 프로그램매매
- 옵션 체인·변동성
- 대형주
- 종합 판단
- 해석 메모
시장 요약에는 KOSPI200, KOSPI200 선물, 베이시스, 이론 베이시스, VKOSPI, USD/KRW가 들어갔다.
투자자별 수급에는 KOSPI 현물, KOSPI200 선물, KOSPI200 콜옵션, KOSPI200 풋옵션의 외국인·개인·기관 수급이 들어갔다.
옵션 체인에는 ATM 행사가, ATM 콜·풋 가격, ATM IV, 콜·풋 IV, 감마, 베가, 세타, 풋 스큐, 감마 집중 구간이 들어갔다.
대형주에는 삼성전자와 SK하이닉스 가격, 그리고 프로그램 순매수 수량이 들어갔다.
이렇게 구성하니 단순히 “지수가 올랐다”가 아니라, “무엇이 지수를 올리고 있는가”를 보기 시작했다.
6월 18일: 강한 상승장이지만 편안한 상승장은 아니었다
첫 번째 파일럿 날인 6월 18일은 시장이 강하게 올랐다.
15시 30분 마감 리포트 기준으로 보면 숫자는 굉장히 좋았다.
- KOSPI200: +3.34%
- KOSPI200 선물: +3.17%
- 외국인 KOSPI 현물: +1조 5,203억 원
- 삼성전자: +4.62%
- SK하이닉스: +7.02%
이 정도면 겉으로는 완벽한 상승장이다.
하지만 리포트는 동시에 불편한 숫자도 보여줬다.
- 외국인 KOSPI200 선물: -853억 원
- 비차익 프로그램: -1조 4,807억 원
- 전체 프로그램: -1조 466억 원
- VKOSPI: 80.67
- ATM IV: 75.08%
즉 현물 외국인 매수와 대형주 상승은 매우 강했지만, 선물은 마감에 순매도로 돌아섰고, 비차익 프로그램은 하루 종일 대규모 매도였다. VKOSPI와 ATM IV도 극단적으로 높았다.
이 장을 보면서 나는 이렇게 정리했다.
“강한 장은 맞다.
하지만 편안한 장은 아니다.”
지수가 +3% 이상 올랐는데 변동성 지표가 80대에 머문다는 것은 시장이 상승을 안정적으로 받아들이고 있다는 뜻이 아니다. 오히려 위아래로 크게 흔들릴 수 있는 고변동성 상승장에 가깝다.
이런 해석은 주가만 봤다면 어려웠을 것이다.
주가만 보면 강한 상승장이다.
상태판으로 보면 고변동성 상승장이다.
두 문장은 비슷해 보이지만, 투자 판단에서는 완전히 다르다.
6월 19일: 선물 주도 급등, 급락, 재반등
두 번째 파일럿 날인 6월 19일은 더 극단적이었다.
10시 30분 기준으로 시장은 폭등하고 있었다.
- KOSPI200: +3.92%
- KOSPI200 선물: +4.29%
- 외국인 KOSPI200 선물: +9,292억 원
- 삼성전자: +2.76%
- SK하이닉스: +7.26%
- VKOSPI: 82.89
가격만 보면 전날보다 더 강했다.
그런데 수급을 보면 조심해야 할 부분이 있었다.
- 외국인 KOSPI 현물: -2,415억 원
- 비차익 프로그램: -1조 1,606억 원
- 삼성전자 프로그램 순매수 수량: -2,057,712주
즉 시장은 폭등했지만 외국인은 현물을 팔고 있었고, 비차익 프로그램도 대규모 매도였다. 삼성전자 프로그램 수급도 좋지 않았다.
시장을 끌어올린 핵심은 외국인 선물과 SK하이닉스 중심의 반도체 강세였다.
그리고 실제로 장은 크게 흔들렸다.
12시에는 KOSPI200 상승률이 +2.77%로 줄었다.
12시 30분에는 +0.67%까지 밀렸다.
13시에는 -1.07%로 마이너스 전환했다.
특히 13시 리포트는 인상적이었다.
- KOSPI200: -1.07%
- KOSPI200 선물: -0.50%
- 외국인 KOSPI 현물: +3,066억 원
- 외국인 KOSPI200 선물: +1조 4,947억 원
- 기관 KOSPI 현물: -6,405억 원
- 비차익 프로그램: -1조 1,700억 원
- 삼성전자: -2.62%
- SK하이닉스: +1.64%
이 숫자는 이상했다.
외국인은 선물을 1조 5천억 원 가까이 사고 있었다.
그런데 지수는 마이너스였다.
그 말은 외국인 선물 매수만으로는 현물 대형주와 기관·비차익 매도를 이기지 못했다는 뜻이다.
이런 장에서 “외국인 선물이 강하니까 괜찮다”고 단순화하면 위험하다.
오히려 그 정도의 선물 매수가 있는데도 지수가 빠진다는 점이 더 중요한 신호였다.
이후 15시에는 다시 반등했다.
- KOSPI200: +0.24%
- KOSPI200 선물: +0.58%
- 외국인 KOSPI200 선물: +1조 5,603억 원
- 기관 KOSPI 현물: -1조 4,696억 원
- 비차익 프로그램: -1조 5,161억 원
- VKOSPI: 83.87
- 삼성전자: -1.38%
- SK하이닉스: +3.54%
이날 장은 한마디로 “왕복장”이었다.
오전 급등,
점심 급락,
오후 재반등.
이런 날에는 단순한 가격 판단보다 시장 상태판이 훨씬 유용했다.
처음 만든 리포트의 한계도 보였다
물론 이틀간 돌려보니 문제점도 분명히 보였다.
첫 번째 문제는 방향성 신호가 너무 자주 “중립”으로 나왔다는 점이다.
실제로 6월 19일 시장은 장중 급등, 급락, 재반등을 반복했다.
그런데 리포트 상단의 방향성 신호는 대부분 중립이었다.
숫자를 보면서 사람은 급격한 변화를 느끼는데, 리포트의 상단 요약은 그 변화를 충분히 표현하지 못했다.
그래서 다음 버전에서는 단순 방향성보다 “시장 상태”를 따로 표시해야 한다고 생각했다.
예를 들면 이런 식이다.
- 선물 주도 고변동성 랠리
- 급등 후 급락 조정
- 급락 후 반등
- 반등 실패
- 고변동성 왕복장
- 선물-현물 괴리
- 반도체 쏠림 장세
두 번째 문제는 위험등급이 매도 신호처럼 보일 수 있다는 점이었다.
처음 리포트에는 “초소형비중”, “신규 진입 제한”, “레버리지 주의” 같은 문구가 들어갔다.
그런데 이후 백테스트를 돌려보니 위험등급이 높다는 것은 하락 신호가 아니라 변동성 확대 신호에 가까웠다.
따라서 문구를 바꿔야 했다.
“위험하니 팔아라”가 아니라,
“위아래 변동폭이 커진 상태이니 추격·레버리지·과대비중을 조심하라”가 맞다.
세 번째 문제는 위험점수의 근거가 부족했다는 점이다.
위험점수가 7점, 9점, 12점으로 바뀌어도 사용자가 왜 그 점수가 나왔는지 바로 이해하기 어려웠다. 그래서 다음 버전에서는 위험점수 기여도를 넣는 것이 맞다고 판단했다.
예를 들면 이런 식이다.
- 변동성: +3점 — VKOSPI 80 이상, ATM IV 70% 이상
- 비차익 프로그램: +2점 — 비차익 순매도 -1조 원 초과
- 선물-현물 괴리: +1점 — 외국인 선물 순매수에도 대형주 약세
- 장중 급변동: +2점 — 급등 후 급락과 재반등 반복
- 완화요인: -1점 — 외국인 KOSPI200 선물 순매수 우위
이렇게 해야 리포트가 단순 경고장이 아니라 설명 가능한 상태판이 된다.
백테스트를 해보니 더 조심스러워졌다
처음에는 위험점수가 높으면 포지션을 줄이는 전략도 가능하지 않을까 생각했다.
하지만 10년치 데이터로 백테스트를 돌려보니 결과는 좋지 않았다.
위험등급에 따라 비중을 줄이는 전략은 수익률을 크게 훼손했고, MDD는 거의 줄이지 못했다.
- 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%
결론은 명확했다.
위험등급은 매도 신호가 아니다.
비중축소 신호도 아니다.
위험등급은 변동성 확대 신호다.
고변동성 상승장도 따로 봤다.
고변동성 상승일 이후 5거래일 평균 수익률은 오히려 플러스였다.
- event_high_vol_up_v1: 133건, 이후 5거래일 평균 수익률 +1.69%
- event_high_vol_up_v2: 79건, 이후 5거래일 평균 수익률 +1.89%
하지만 동시에 변동성과 left-tail 위험도 커졌다.
즉 고변동성 상승장은 “곧 떨어진다”가 아니라, “더 오를 수도 있지만 크게 흔들린다”에 가까웠다.
이 결론은 리포트의 방향을 바꿨다.
내가 만들어야 할 것은 매수·매도 지시기가 아니었다.
시장 상태를 더 정직하게 보여주는 계기판이었다.
공격적으로 보면, 자동화는 기회를 더 빨리 보게 해준다
공격적인 관점에서 보면 이런 상태판은 분명 장점이 있다.
특히 고변동성 장세에서는 단순히 무서워서 팔거나, 단순히 강해 보여서 추격하는 판단이 자주 나온다. 그런데 선물, 현물, 프로그램, 옵션, 대형주 수급을 같이 보면 “위험하지만 강한 장”과 “강해 보이지만 내부가 무너지는 장”을 구분할 수 있다.
예를 들어 6월 19일 오전처럼 외국인 선물과 SK하이닉스가 시장을 강하게 끌어올리는 장에서는 단기적으로 상승 에너지가 존재한다. 이런 장을 무조건 위험하다고만 보면 기회를 놓칠 수 있다.
자동화 리포트는 이런 순간에 적어도 질문을 던져준다.
“이 상승은 어디서 오는가?”
“아직 그 힘이 유지되고 있는가?”
“위험은 커졌지만, 추세도 살아 있는가?”
공격적으로 시장을 보는 투자자라면 이 상태판은 진입 타이밍을 찾는 데 도움을 줄 수 있다.
보수적으로 보면, 자동화는 손실을 줄이는 브레이크다
반대로 보수적인 관점에서 보면 자동화의 가치는 더 분명하다.
이 리포트는 매수 신호를 주는 도구가 아니다.
오히려 무리한 진입을 막는 브레이크에 가깝다.
외국인 선물이 강해도 현물과 비차익 프로그램이 따라오지 않으면 시장은 쉽게 흔들릴 수 있다. VKOSPI와 ATM IV가 높은 상태에서는 방향이 맞아도 진입 타이밍이 나쁘면 손실이 커질 수 있다.
특히 레버리지나 인버스 상품을 쓰는 투자자라면 이런 상태판이 더 필요하다.
방향을 맞히는 것보다 중요한 것은 내가 지금 어떤 변동성 구간에 들어가 있는지를 아는 것이다.
고변동성 구간에서는 맞는 판단도 손실로 시작할 수 있고, 틀린 판단은 빠르게 커질 수 있다.
보수적으로 보면 이 리포트의 핵심은 수익률 극대화가 아니라 의사결정 품질 개선이다.
감정적으로 따라 사지 않기.
공포에 급히 팔지 않기.
레버리지를 무리하게 키우지 않기.
시장 상태가 나빠졌을 때 포지션 크기를 다시 생각하기.
이 정도만 해도 자동화의 가치는 충분하다.
자동화의 진짜 장점
이번 Telegram 리포트 자동화의 가장 큰 장점은 예측이 아니었다.
진짜 장점은 내가 시장을 감정적으로 보지 않게 해준다는 점이었다.
시장이 급등하면 흥분한다.
시장이 급락하면 겁이 난다.
특히 하루에 +4%에서 -1%로 갔다가 다시 반등하는 장에서는 판단이 흔들릴 수밖에 없다.
그런데 30분마다 구조화된 리포트를 받으니, 감정 대신 질문을 하게 된다.
- 외국인 선물은 유지되고 있나
- 현물도 같이 따라오나
- 비차익 프로그램은 계속 파는가
- 삼성전자가 지수를 누르는가
- VKOSPI가 높은데 지수도 오르는가
- 이건 상승장인가, 왕복장인가
이 질문들이 생긴다는 것만으로도 자동화의 의미는 충분했다.
두 번째 결론
이번 자동화 실험의 결론은 이렇다.
첫째, 주가만 보는 것보다 선물·옵션·프로그램 수급을 같이 보는 것이 훨씬 낫다.
둘째, Telegram 자동화는 시장을 예측하기보다 시장을 구조화하는 데 더 유용했다.
셋째, 위험등급은 매도 신호가 아니라 변동성 상태를 보여주는 지표로 써야 한다.
넷째, 외국인 선물 수급이 강해도 현물·비차익·대형주가 따라오지 못하면 시장은 급격히 흔들릴 수 있다.
다섯째, 한국 시장에서는 삼성전자와 SK하이닉스가 단순한 대형주가 아니라 지수의 엔진처럼 작동한다.
결국 내가 만든 것은 예측기가 아니다.
시장 계기판에 가깝다.
자동차를 운전할 때 계기판이 목적지에 도착할지 예언해주지는 않는다.
하지만 속도, 연료, 엔진 온도, 경고등을 보여준다.
투자에서도 마찬가지다.
미래를 맞히는 것보다 지금 내가 어떤 속도로, 어떤 위험 속에서 달리고 있는지 아는 것이 먼저다.
다음 글에서는 이 상태판을 10년 데이터로 백테스트했을 때 나온 의외의 결론을 정리해보려 한다.
특히 “위험등급이 높으면 팔아야 할까?”라는 질문에 대해, 생각보다 단순하지 않은 답이 나왔다.
'시장과 투자 > 시장 구조와 수급' 카테고리의 다른 글
| 흔들리는 시장속에서, 선옵향이 느껴진거야_4 (0) | 2026.06.21 |
|---|---|
| 흔들리는 시장속에서, 선옵향이 느껴진거야_3 (0) | 2026.06.21 |
| 흔들리는 시장 속에서, 선옵향이 느껴진거야_1 (0) | 2026.06.21 |