신호가 10개 나왔습니다. 뭘 사야 할까요
신호가 10개 나왔습니다. 뭘 사야 할까요
이 글은 그 질문에 답을 찾다가 세 번 헛짚은 기록입니다.
먼저 문제부터 말씀드리면 이렇습니다.
매수 조건에 맞는 종목이 하루에 여러 개 나옵니다. 그런데 돈은 한정돼 있습니다. 미국 500종에 규칙을 다 적용해보니 한 번에 124종을 들고 있어야 했습니다. 계좌가 1,000만원이면 한 종목에 8만원입니다.
그래서 골라야 합니다. 무엇으로 고를까요.
시스템에는 이미 점수가 있었습니다
0점부터 100점까지 매기는 점수입니다. 네 가지를 더합니다.
| 항목 | 배점 |
|---|---|
| 성적이 검증된 업종인가 | 15점 |
| 거래량이 평소보다 많은가 | 25점 |
| 조건을 몇 개 충족했는가 | 30점 |
| 손절선까지 거리가 짧은가 | 30점 |
문제는 이 점수가 맞는 점수인지 아무도 확인한 적이 없다는 것이었습니다. 만들어놓고 그냥 화면에 띄우고 있었습니다.
첫 번째 헛짚음: "점수 높은 순으로 3개만 사자"
당연해 보였습니다. 매일 신호가 나오면 점수 순으로 줄 세워서 위에서 3개만 사면 되지 않을까요.
10년치로 확인해봤습니다.
| 매일 사는 개수 | 매매 1건당 성적 |
|---|---|
| 점수 상위 3개만 | 0.127 |
| 상위 12개 | 0.129 |
| 상위 50개 | 0.148 |
| 전부 다 | 0.151 |
골라낼수록 나빠졌습니다. 예상과 정반대였습니다.
이유는 생각해보니 간단했습니다. "그날의 상위 3개"는 반에서 1등입니다. 반 전체가 못하는 날에도 1등은 나옵니다. 신호가 다 시원찮은 날에도 억지로 세 개를 채우는 셈입니다.
두 번째: 등수 말고 점수로 자르니 됐습니다
"오늘 1등"이 아니라 "70점 넘으면 산다" 로 바꿔봤습니다.
| 기준 | 해당 매매 | 1건당 성적 |
|---|---|---|
| 전부 다 삼 | 100% | 0.151 |
| 60점 이상만 | 54% | 0.207 |
| 70점 이상만 | 21% | 0.312 |
| 75점 이상만 | 10% | 0.414 |
이번엔 깨끗하게 올라갔습니다. 70점 기준으로 자르면 성적이 두 배가 됩니다.
차이는 하나였습니다.
등수로 자르면 시원찮은 날에도 억지로 삽니다. 점수로 자르면 기준에 못 미치는 날은 아무것도 안 삽니다.
"살 게 없으면 안 산다"를 허용하느냐가 갈랐습니다.
세 번째: 실제 기록을 열어보니 텅 비어 있었습니다
과거 데이터로는 확인했으니, 실제로도 그런지 봐야 합니다.
다행히 준비돼 있었습니다. 저희 시스템은 매매를 하지 않아도 모든 신호의 결과를 자동으로 따라갑니다. 888건이 쌓여 있었습니다.
70점 넘는 것만 뽑아봤습니다.
```
70점 이상 4건
70점 미만 618건
```
이상했습니다. 과거 데이터에서는 다섯 중 하나가 70점 이상이었는데, 실제 기록에서는 거의 없습니다.
점수 분포를 찍어봤습니다.
```
점수 중간값 : 0점
```
888건 중 626건의 점수가 0점이었습니다.
코드를 열어보니 한 줄이 있었습니다.
```
score: 0,
```
과거 신호를 채워 넣는 프로그램이 점수를 계산하지 않고 그냥 0을 적어 넣고 있었습니다.
즉 "점수가 실제로도 통하는가"를 확인할 자료가 애초에 없었습니다. 있는 줄 알았을 뿐입니다.
덤: 제가 숫자를 잘못 세기도 했습니다
같은 날, 손절이 얼마나 자주 실패하는지 재면서 이런 결과를 냈습니다.
손절선보다 크게 잃은 경우 52.5%
절반이 넘는다니 이상했습니다. 다시 보니 수수료 때문이었습니다. 계획대로 손절돼도 수수료가 붙어서 아주 조금 더 손해가 납니다. 그걸 전부 "손절 실패"로 세고 있었습니다.
제대로 다시 세니 이랬습니다.
| 결과 | 비율 |
|---|---|
| 계획대로 손절됨 | 60.9% |
| 조금 더 잃음 | 4.4% |
| 꽤 더 잃음 | 1.1% |
| 크게 뚫림 | 0.9% |
실제로 손절선이 크게 뚫리는 건 100번에 2번이었습니다. 52.5%가 아니라요.
오늘 배운 것 네 가지
하나. 만드는 것과 기록하는 것은 다른 일입니다.
점수 계산은 잘 돌아가고 있었습니다. 화면에도 나왔습니다. 그런데 결과를 추적하는 쪽에는 안 들어가고 있었습니다. 만들어놓고 쓰지 않으면 몇 달이 지나도 검증이 시작되지 않습니다.
둘. 결과가 이상하면 데이터부터 의심합니다.
"70점 이상이 4건뿐"이라는 게 이상해서 파고들었기 때문에 찾았습니다. 그냥 "실전에서는 잘 안 되나 보다" 하고 넘어갔으면 틀린 결론을 사실로 믿었을 것입니다.
셋. 직관은 자주 틀립니다.
"위에서 몇 개만 사면 낫겠지"는 완전히 반대였습니다. 재보기 전에는 알 수 없었습니다.
넷. 내가 낸 숫자도 의심해야 합니다.
52.5%가 나왔을 때 "이상한데" 하고 멈춘 게 다행이었습니다. 숫자가 나왔다고 맞는 게 아닙니다.
그래서 지금은
점수를 안 적던 문제는 고쳤습니다. 다만 확인해보니 또 다른 문제가 있었습니다. 스캔을 돌리는 시점에 그날 거래량 집계가 덜 끝나 있어서, 거래량 점수가 실제보다 낮게 매겨지고 있었습니다.
그래서 아직 "70점 이상만 산다"를 적용하지 않았습니다. 점수 자체가 제대로 매겨진 뒤에 적용해야 의미가 있습니다.
급하게 갖다 붙이면 틀린 기준으로 몇 달을 갑니다. 시간이 좀 걸려도 순서대로 가는 게 맞다고 봅니다.
*이 글의 수치는 실제 검증과 시스템 기록에서 나온 값입니다. 과거 성과가 미래를 보장하지 않으며, 투자 판단과 책임은 본인에게 있습니다.*