변동성이 낮은 종목을 사고 있었다
8월 성적이 계속 마이너스였다. 매매 기록을 보다가 한 가지가 눈에 걸렸다. 진입한 종목들이 잘 움직이지 않았다. 하루에 2%도 안 움직이는 종목을 사서 손절선에 닿기를 기다리는 셈이었다.
가설은 단순했다. 움직이지 않는 종목은 이익도 손실도 못 만들고 비용만 남긴다.
사실 이 가설로 이미 한 번 손을 댄 뒤였다. 몇 주 전에 직전 며칠의 고저폭을 기준으로 후보를 거르는 필터를 넣어뒀다. 그런데도 성적이 그대로라, 이번에는 기준을 바꿔 진입 당일의 변동폭으로 다시 재보기로 했다. 임계 아래면 후보에서 빼고 과거 페어를 전부 다시 계산했다.
세후 손익이 -54,072원에서 -16,742원으로 줄었다. 3분의 1이 됐다.
임계를 올릴수록 좋아졌다
의심스러울 정도로 깨끗한 결과라 임계값을 여러 개로 바꿔봤다. 4%, 5%, 6%, 7%, 8%. 올릴수록 손실이 줄었고 중간에 꺾이는 구간이 없었다.
단조 개선은 보통 좋은 신호로 읽힌다. 임계를 하나 우연히 잘 골라서 좋아진 게 아니라 방향 자체가 맞다는 뜻이니까. 이 시점에 나는 이걸 채택 후보로 올릴 준비를 하고 있었다.
분할 검증도 통과했다
과적합이 걱정됐다. 같은 데이터로 임계를 고르고 같은 데이터로 성적을 재면, 그건 답을 보고 문제를 푼 것이다.
그래서 기간을 반으로 갈랐다. 전반부로 임계를 고르고, 후반부로 검증했다. 방향을 뒤집어 후반부로 고르고 전반부로도 검증했다.
양쪽 다 개선됐다. +8,435원과 +13,950원.
여기까지가 보통 "검증 끝"이라고 부르는 지점이다. 실측했고, 단조성을 확인했고, 표본 밖에서도 성립했다. 세 가지를 다 했다.
무작위로 빼봤다
마지막으로 하나를 더 했다. 필터가 배제한 것과 같은 건수를 날짜 무작위로 빼서 성적을 재는 것이다. 이걸 2만 번 돌려 분포를 만들었다.
내 필터의 성적은 그 분포의 44에서 59퍼센타일 사이였다. 한가운데다.
무작위로 뽑은 조합의 절반 정도가 내 필터보다 좋은 성적을 냈다는 뜻이다. 변동성이라는 기준은 아무 역할도 하지 않았다.
손실 구간에서는 무엇을 빼든 합이 줄어든다
이유는 계산해보면 자명하다. 전체가 마이너스인 구간에서 거래를 N건 제거하면 그중 손실 거래가 섞여 나가면서 손실 합이 준다. 제거 기준이 무엇이든 상관없다. 심지어 종목명 가나다순으로 뒤에서 빼도 줄어든다.
내가 본 -54,072에서 -16,742은 필터의 효과가 아니라 표본이 작아진 효과였다. 기준은 장식이었고 실제로 일한 건 "건수를 줄였다"는 사실뿐이었다.
먼저 넣어둔 필터도 재봤다
이 김에 몇 주 전에 넣어둔 고저폭 필터도 다시 봤다. 그쪽은 지금도 돌고 있다.
도입 전후로 진입 종목의 당일 변동폭 중앙값이 0.57%에서 0.57%로 그대로였다. 0.5%를 밑도는 종목의 비율도 38%에서 38%로 움직이지 않았다. 표본 134건에 3거래일치라 확정하기는 이르지만, 방향이 보이지 않는다는 것은 분명하다.
거르겠다고 넣은 기준이 실제로는 아무것도 거르지 않고 있었다. 배제 로그는 매일 찍히니 돌고 있다는 것은 알았다. 다만 돌고 있다는 것과 일하고 있다는 것은 다른 문제였다. 넣을 때 무작위 대조를 하지 않았으니 이쪽도 확인된 적이 없다.
💡 분할 검증과 무작위 대조는 다른 것을 본다. 분할 검증은 "이 기준이 이 기간에만 맞는 것인가"를 묻고, 무작위 대조는 "이 기준이 아무 기준보다 나은가"를 묻는다. 전자를 통과했다고 후자가 따라오지 않는다. 특히 제거형 개선(무엇을 빼서 성적을 올리는 형태)은 표본 축소 효과를 함께 받으므로 무작위 대조가 없으면 판정이 불가능하다. 개선 폭이 클수록 오히려 이 검사를 먼저 해야 한다.
통과 조합이 많다고 믿을 만한 게 아니었다
이 일을 겪고 나서 판정 절차를 도구로 고정했다. 새 규칙을 채택하기 전에 양방향 분할 검증과 무작위 대조를 자동으로 돌리게 만든 것이다.
완성 직후 도구를 시험하려고 이미 거짓으로 판명된 규칙을 넣어봤다. 도구는 "채택 후보"라고 답했다.
그 규칙은 전체 기간 중 상위 3일이 총합의 156퍼센트를 만들어낸 것이었다. 나머지 날들의 합은 마이너스였다. 성적이 사실상 3일에 매달려 있는데도 양방향 분할 검증과 무작위 대조를 멀쩡히 통과했다.
틀린 답을 넣어 틀렸다고 하는지 봐야 도구를 믿을 수 있다. 통과 조건을 여러 개 쌓는 것으로는 이 확인을 대신할 수 없었다. 조건이 늘어나면 통과가 더 어려워지는 게 아니라, 통과했을 때 안심할 이유가 늘어난 것처럼 느껴진다.
결국 다른 축으로 갔다
당일 변동폭 배제안은 채택하지 않았다. 대신 같은 데이터를 시각 축으로 다시 봤고, 거기서는 무작위 대조를 통과하는 신호가 나왔다. 진입 시각을 늦춘 것이 상승과 하락의 비대칭을 거꾸로 만들고 있었다는 쪽이다.
그쪽 이야기는 아직 결말이 없어서 다음에 쓴다. 다만 이 라운드에서 남은 것은 숫자 하나가 아니라 개선 판정에 무작위 대조를 상설로 넣었다는 절차 변경이다. 3분의 1로 줄었다는 결과를 그대로 채택했다면, 아무 일도 하지 않는 필터를 매매 로직에 넣고 몇 달을 관찰했을 것이다.