기록
승률 100%를 의심한 날, 검증 시스템이 한 단계 올라갔습니다
종목 필터 한 줄을 넣고 329건을 다시 채점했습니다. 100%가 7.4~36.4%로 정리됐습니다.
저는 옵션 시장의 감마 데이터를 자동으로 관찰하는 도구를 직접 만들어 쓰고 있습니다. 특정 조건이 맞으면 알람이 뜨고, 그 알람이 맞았는지 틀렸는지를 나중에 자동으로 채점합니다.
어느 날 그 채점 결과를 열어봤습니다.
신호 A 55건 중 55건 적중 — 승률 100%
신호 B 31건 중 31건 적중 — 승률 100%
신호 C 42건 중 42건 적중 — 승률 100%
신호 D 12건 중 12건 적중 — 승률 100%
오답이 하나도 없었습니다.
기뻐하는 대신, 한 번 더 확인해 보기로 했습니다.
왜 다시 확인했는가
시장에서 55번 연속으로 맞는 신호는 없습니다. 있다면 그건 신호가 아니라 정의입니다.
그리고 이상한 점이 하나 더 있었습니다. 같은 도구의 다른 신호들은 성적이 크게 달랐습니다.
| 신호 | 방향 | 승률 |
|---|---|---|
| A | 하락 | 100% |
| B | 하락 | 100% |
| C | 하락 | 100% |
| D | 하락 | 100% |
| E | 상승 | 8.6% |
| F | 상승 | 13.0% |
| G | 상승 | 26.8% |
보이시나요?
하락 신호는 전부 100%, 상승 신호는 전부 27% 미만.
승률이 실력으로 갈린 게 아니라 방향으로 갈렸습니다. 이건 시장 이야기가 아니라 코드 이야기입니다.
범인
제가 쓰는 데이터베이스에는 지수 가격을 기록하는 표가 있습니다. 그런데 그 표에 S&P 500, SPY, QQQ 세 종목이 같은 칸에 섞여 들어가 있었습니다.
S&P 500 → 7,719 ~ 7,816
SPY → 769 ~ 779
QQQ → 716 ~ 734
채점 코드는 이렇게 되어 있었습니다.
"알람이 뜬 뒤 일정 시간 안에 가격이 20포인트 이상 떨어졌으면 하락 신호는 적중"
그런데 "가격"을 가져오는 쿼리에 종목 필터가 빠져 있었습니다.
그래서 '최저가'를 찾을 때 QQQ의 716이 잡혔습니다.
716 − 7,800 = −7,084 포인트
7,084포인트 하락. 20포인트 조건을 항상 통과합니다.
모든 하락 신호가 무조건 적중 처리되고 있었습니다.
반대로 '최고가'는 S&P 500 자기 값이 잡히니 정상이었고, 그래서 상승 신호만 현실적인 (낮은) 승률이 나왔던 것입니다.
고친 뒤
종목 필터 한 줄을 넣고 329건을 다시 채점했습니다.
| 신호 | 이전 | 재채점 |
|---|---|---|
| A | 100% | 15.9% |
| B | 100% | 7.4% |
| C | 100% | 21.9% |
| D | 100% | 36.4% |
| E (상승) | 8.6% | 8.6% |
| F (상승) | 13.0% | 13.0% |
하락 신호는 무너졌고, 상승 신호는 그대로였습니다. 진단이 맞았다는 뜻입니다.
그리고 이게 진짜 결과입니다. 11개 신호 중 승격 기준(70%)에 도달한 것이 하나도 없었습니다. 최고가 36.6%였습니다.
한 가지를 더 발견했습니다
같은 점검을 하다가 다른 종류의 100%를 발견했습니다.
신호 X 1,599건 적중 / 0건 오답
신호 Y 64건 적중 / 0건 오답
이번엔 종목 필터 문제가 아니었습니다. 채점 코드를 열어보니 이렇게 되어 있었습니다.
움직임이 0.3% 이상이면 → 적중
그렇지 않으면 → 판정보류
'오답' 이라는 결과가 아예 없었습니다.
게다가 '움직임'을 절댓값으로 재고 있었습니다. 위로 가든 아래로 가든 0.3%만 움직이면 적중입니다. 방향을 예측하는 신호인데 방향을 안 보고 채점하고 있었던 겁니다.
이건 승률이 아니라 항등식입니다. 틀릴 수가 없게 짜여 있었습니다.
1,599건을 쌓는 동안 정보량은 0이었습니다. 이 신호는 그대로 삭제했습니다.
제가 배운 것
1. 너무 좋은 숫자는 실력이 아니라 버그를 의심한다
55건에 오답 0건은 시장에 존재하지 않습니다. 놀라운 결과가 나오면 축하하기 전에 코드를 여십시오.
2. 짝이 되는 두 방향의 성적이 극단으로 갈리면 코드를 본다
상승 8.6% / 하락 100%. 시장이 그렇게 친절할 리 없습니다. 비대칭은 신호가 아니라 증상입니다.
3. '오답' 조건을 먼저 쓴다
검정을 설계할 때 "어떻게 되면 이 신호가 틀린 것인가"를 먼저 적으십시오. 그게 안 써지면 그 신호는 검증할 수 없는 것입니다.
반증할 수 없는 검정은 검정이 아닙니다.
4. 한 칸에 여러 종목이 들어가는 표는 모든 조회에 필터가 필요하다
한 번만 빠뜨려도 결과가 통째로 뒤집힙니다. 그리고 에러가 안 납니다. 조용히 틀린 답을 줍니다.
AI와 함께 일하면서 느낀 것
이 버그들은 저 혼자였으면 못 찾았을 것입니다. 코드가 수만 줄이고, 채점 로직은 제가 매일 들여다보는 곳이 아니니까요.
그렇다고 AI가 알아서 찾아준 것도 아닙니다.
시작은 제 질문이었습니다.
"이 100%짜리 네 개는 정확히 무엇을 측정하는 건가요?"
AI가 먼저 "버그입니다"라고 말한 게 아닙니다. 제가 이상하다고 느껴서 물어봤고, 그 다음에 함께 데이터를 열어 확인했습니다.
요즘 AI로 글 쓰고 코드 짜는 건 누구나 합니다. 그건 기본값이지 우위가 아닙니다.
복제가 안 되는 건 "이 숫자 이상한데요"라고 묻는 쪽입니다. 그 질문은 시장을 매일 보는 사람에게서 나옵니다.
마치며
저는 이 도구의 알람을 기준에 맞춰 다시 세우기로 했습니다.
11개 신호 중 아직 기준을 통과한 것이 없다는 결과가 나왔으니, 하나씩 검증해서 통과한 것만 되살릴 생각입니다.
화면이 조용해졌습니다. 몇 달 동안 매일 울리던 알람이니까요.
그런데 다음에 울리는 알람은 전부 기준을 넘은 것이 됩니다. 그게 훨씬 기대됩니다.
※ 이 글은 제가 만든 도구의 검증 과정을 기록한 것이며, 특정 매매 기법이나 종목의 권유가 아닙니다. 모든 투자 판단과 그 결과는 투자자 본인에게 귀속됩니다.
이 글, 이해하기 어떠셨나요
어디가 막혔는지 알아야 다음 글을 고칠 수 있습니다. 이름도 메일도 받지 않습니다.
「옵션 실전 한 장 요약」 무료로 받기
강세장·약세장·횡보장 전략 선택표, 주문 전 체크리스트, 옵션 용어 한영 대조표를 보내드립니다.
이 글이 도움이 되셨다면
감마·콜월·풋월 같은 개념이 왜 그렇게 작동하는지는 결국 옵션 구조에서 나옵니다. 그 뿌리를 순서대로 정리한 책이 있습니다.
- 전략적 미국옵션트레이딩 I. 기본편 — 옵션이 처음이라면. 옵션체인 읽는 법부터
- 전략적 미국옵션트레이딩 II. 전략편 — 실제로 주문을 넣어보고 싶다면
- 전략적 미국옵션트레이딩 III. 고급전략편 — 횡보장에서 현금흐름을 만들고 싶다면
예전 글은 티스토리에 있습니다. 순차적으로 이곳으로 옮기고 있습니다. optiontrading.tistory.com
질문이 있으시면
댓글이나 방명록은 두지 않았습니다. 글에 대한 질문이나 오탈자 제보는 메일로 보내주세요. 읽고 답합니다. 다만 개별 투자 상담은 드리지 않습니다.
hello@optionphoenix.com