[2026-07-16 정정 안내] 이 글의 최초 버전은 실전 부진의 범인으로 세 가지를 지목했습니다. 개발 기록을 처음부터 다시 대조한 결과, 셋 다 사실과 달랐습니다. ①”데이터 창고 불일치”는 다른 전략의 진단을 가져다 붙인 것이고 ②”과최적화”는 그럴듯해서 지목했을 뿐 확인한 적이 없었고(기록의 결론은 “설정값 문제가 아니다”였습니다) ③”배관 문제”는 방향이 반대거나 시점이 맞지 않았습니다. 그리고 더 중요한 것 — 기록은 원인을 단정하지 말라고 명시했는데, 저는 그걸 지나치고 범인을 셋이나 지목했습니다. 조용히 고치지 않고 무엇이 틀렸는지 남깁니다.

이 글은 특정 종목의 매수·매도를 권유하는 글이 아니라, 개인이 만든 시스템의 개발 과정을 솔직하게 공유하는 정보·교육·참고용 글입니다. 투자 판단과 책임은 본인에게 있습니다.

첫 글에 이어, 오늘은 부끄러운 이야기입니다. 그런데 이 글을 정정하면서 부끄러움이 두 배가 됐습니다. 실전이 안 됐던 것도 부끄러운데, 왜 안 됐는지에 대한 제 설명까지 틀렸기 때문입니다.

모의고사는 좋았고, 실전은 나빴습니다

백테스트는 과거 데이터로 내 전략을 미리 돌려보는 모의고사입니다. 제 전략의 모의고사 성적표는 아주 좋았습니다. 그런데 실제 시세로 돌리는 모의투자(진짜 시세, 가상의 돈)를 켜자 결과는 정반대였습니다.

여기까지는 사실입니다. 문제는 그다음입니다. 저는 범인 세 명을 자신 있게 지목했습니다. 그리고 그게 전부 틀렸습니다.

지목한 범인 3명의 알리바이
머니노트 · 정보·교육·참고용

무죄 ① “데이터 창고가 달랐다” — 다른 전략 얘기였습니다

최초 버전에서 저는 이렇게 썼습니다. 백테스트는 A 창고 주가로 채점하고 실전은 B 창고 주가로 매매해서, 같은 날 같은 종목인데 숫자가 미세하게 달라 신호가 어긋났다고요.

이 현상 자체는 실재합니다. 다만 다른 전략에서 벌어진 일이었습니다. 제 시스템엔 성격이 다른 전략이 여럿 있는데, 창고 불일치가 진짜 문제였던 건 그중 하나였고, 이 글이 다룬 전략은 아니었습니다.

더 결정적인 건, 나중에 직접 검사를 해봤다는 사실입니다. 이 전략의 국내 주식 거래 82건을 두 창고 숫자로 각각 다시 돌려 신호가 뒤집히는지 봤습니다. 결과는 82건 중 뒤집힌 것 0건. 창고를 바꿔도 판단이 그대로였습니다. 명백한 알리바이입니다.

창고 검사 결과
머니노트 · 정보·교육·참고용

왜 이런 차이가 났냐면, 이 전략은 신호를 넉넉한 폭으로 잡습니다. 몇 십 원 차이로는 결론이 안 바뀌게 설계돼 있었던 거죠. 저는 옆 전략의 진단서를 이 전략의 진단서인 양 가져다 썼습니다.

무죄 ② “과거를 외운 규칙이었다” — 그럴듯해서 지목했을 뿐입니다

두 번째로 지목한 건 과최적화입니다. 지나간 시험지 정답에만 딱 맞게 규칙을 다듬는 것이죠. 이 개념 설명은 지금도 유효합니다.

문제는 이 전략의 부진은 그것 때문이 아니었다는 겁니다.

기록을 다시 보니 결론이 분명히 남아 있었습니다. 이 전략의 실전 부진은 “설정값을 잘못 맞춘 문제가 아니다”라고요. 즉 규칙을 과거에 억지로 맞춰서 생긴 일이 아니었습니다.

그런데 저는 왜 과최적화를 범인으로 지목했을까요? 그럴듯했기 때문입니다. “백테는 만점인데 실전은 낙제”라는 말을 들으면 누구나 과최적화를 떠올립니다. 저도 그 반사신경을 따랐고, 확인은 하지 않았습니다.

가장 유력해 보이는 용의자가, 가장 확인을 안 하게 되는 용의자였습니다.

과거 데이터와 미래
Photo: Arturo Añez. / Pexels

무죄 ③ “현실의 배관” — 방향이 반대이거나, 시점이 안 맞았습니다

세 번째로 배관 문제 셋을 들었습니다. 하나씩 보겠습니다.

그럼 진범은 누구인가 — 아직도 모릅니다

여기가 이 정정에서 제일 중요한 부분입니다. 그리고 최초 버전의 가장 큰 거짓말이기도 합니다.

저는 진범을 모릅니다. 기록에도 모른다고 적혀 있었습니다.

기록은 이 격차를 여러 원인이 겹친 결과로 보고 후보만 늘어놓았을 뿐, “이게 범인이다”라고 순위를 매기지 않았습니다. ①백테스트가 미래를 훔쳐본 것 ②데이터 차이 ③산 직후에 급락한 것 ④백테스트가 실전의 청산 방식을 그대로 흉내 내지 못한 것. 오히려 나중 기록은 이 중 ③(산 직후 급락)을 더 눈여겨봤고, ④는 다시 따져보니 오히려 성적을 개선하는 쪽이라 범인이 아니었습니다. 어느 하나로 딱 좁혀지지 않았다는 뜻입니다.

그리고 기록 한가운데에 이렇게 못박혀 있었습니다 — “관찰만 할 것. 인과를 단정하지 말 것.”

저는 그 문장을 그냥 지나쳤습니다. 그리고 범인 셋을 지목하는 글을 썼습니다.

그래도 하나는 소개하고 싶습니다 — 미래 훔쳐보기

후보 중 하나만 설명드리겠습니다. 확정된 범인이라서가 아니라, 투자자라면 알아둘 값어치가 있어서입니다. 어려운 말로 look-ahead(룩어헤드)라고 합니다.

모의고사를 채점할 때, “이 날 샀어야 했나?”를 판단하면서 그 날 이후의 데이터를 슬쩍 참고하고 있었던 겁니다. 신호를 찾을 때 앞뒤 며칠을 함께 봤는데, 그 “뒤 며칠”이 당시엔 알 수 없는 미래였습니다. 회사 실적 지표도 오늘 시점의 값을 과거 전체에 적용하고 있었습니다.

시험 중에 뒷장의 정답을 보면서 문제를 푼 셈입니다. 당연히 만점이 나옵니다. 그리고 진짜 시험엔 뒷장이 없습니다.

백테스트가 만점이던 이유
머니노트 · 정보·교육·참고용

다만 다시 강조합니다 — 이것도 후보일 뿐, 범인으로 확정된 게 아닙니다. 이번엔 같은 실수를 반복하지 않겠습니다.

그런데 여기서 더 중요한 것 — 그 숫자는 겨우 18건짜리였습니다

마지막이 오늘 제가 가장 크게 배운 부분입니다.

“실전 성적이 처참했다”는 그 숫자는 거래 18건에서 나온 것이었습니다. 열여덟 건.

모든 판단의 근거가 딱 18건이었습니다
머니노트 · 정보·교육·참고용

오해는 마세요. 성적이 나빴던 것은 사실입니다. 열여덟 번이라도 결과가 그 정도로 처참하면 “이거 잘 안 됐다”는 건 분명히 알 수 있습니다. 문제는 그다음이었습니다. 저는 거기서 멈추지 않고 “왜 안 됐는지”까지 열여덟 건으로 단정했습니다. 범인을 셋이나 지목하고, 글까지 썼죠.

“안 됐다”를 아는 것과 “왜 안 됐는지”를 아는 것은 전혀 다른 문제입니다. 앞은 열여덟 번으로도 보이지만, 뒤는 열여덟 번으로는 어림도 없습니다. 원인을 하나로 가려내려면 훨씬 더 많은 사례가 필요한데, 저에겐 열여덟 건밖에 없었습니다.

기록에도 정직하게 남아 있었습니다 — 이 원인 분석은 “해석일 뿐, 인과를 단정하지 말 것”이라고요. 저는 그 단서를 무시하고 원인을 단정했습니다.

일반 투자자에게 드리는 참고

어디선가 “이 전략, 과거 수익률 몇백 %!” 같은 광고를 보신다면 오늘 이야기를 떠올려 주세요. 물어볼 것은 두 가지입니다.

첫째, 그 성적은 미래를 훔쳐보지 않고 나온 건가요? 과거 데이터로 채점할 때 그 시점에 알 수 없던 정보가 섞이면, 성적표는 얼마든지 아름다워집니다. 둘째, 그거 몇 건짜리인가요? 결과가 좋아 보여도 사례가 몇 건뿐이면, 그게 실력인지 운인지 가릴 수 없습니다. 저는 열여덟 건을 두고 원인까지 단정했다가 이렇게 정정문을 쓰고 있습니다.

백테스트 성적표는 참고 자료일 뿐, 미래의 약속이 아닙니다.

정리 — 첫 실패가 남긴 것 (정정판)

부끄러운 실패였는데, 정정하면서 더 부끄러워졌습니다. 하지만 하나는 확실히 배웠습니다. 틀린 답보다 위험한 건, 틀린 이유를 확신하는 것입니다. 다음 글에서는 이 배관들을 실제로 어떻게 손봤는지, 그리고 제가 자랑하던 안전장치 셋이 알고 보니 어땠는지를 풀어보겠습니다.

▶ 다음 편 예고
있다고 믿었던 안전장치 — 배관을 고치고 안전장치를 다시 배우다
주문은 됐는데 봇은 실패라 우겼습니다. 제가 자랑하던 안전장치 셋의 진짜 정체.

다음 글 읽기 →


근거: StockBot_개발_개요 · 백테스트 · 과최적화 · 슬리피지 — 본 글은 개발 과정의 경험 공유이며 투자 자문이 아닙니다.