내 모델은 공짜로 거래하는 법을 배웠다

내 초기 모델 중 하나는 안정적으로, 거의 지루할 만큼 수익이 나는 것처럼 보이는 거래들을 찾아냈다 — 작은 이익이 꾸준히 흘러나오는, 마침내 진짜를 발견했다고 믿게 만드는 그런 종류의 일관성이었다.

그것은 무언가를 찾아내긴 했다. 거래가 공짜인 세계를 찾아낸 것이다. 그 세계에서 그 모델은 정말로 훌륭했다. 문제는 나도, 그리고 다른 모든 사람도 다른 세계에서 거래해야 한다는 것이다 — 그리고 내가 거래에 실제로 드는 만큼의 비용을 매기는 순간, 그 사랑스러운 수익의 대부분은 그냥 증발해 버렸다.

비용 없는 세계에서 살던 엣지

그 전략의 특징은 작고 잦은 승리가 많다는 것이었다. 개별적으로 보면 각각의 포착은 아주 작았다. 하지만 합쳐 놓으면 매끄럽고 고무적인 곡선이 되었다. 나는 그것을 두고 조용히 뿌듯해했던 기억이 난다. 그건 요행처럼 보이지 않았다. 그건 절제처럼 보였다.

내가 미처 고려하지 못한 것은, 그 작은 승리 하나하나가 거래라는 행위가 무비용인 환경에서 측정되고 있었다는 점이다 — 원하는 만큼 자주 진입하고 청산해도 그 특권에 대한 대가를 결코 치르지 않는 환경 말이다.

내가 하고 있다는 사실조차 알아채지 못한 가정

여기에 그 조용한 결함이 있다. 모델이 학습한 데이터를 생성할 때, 나는 각 거래를 공짜인 것처럼 취급했다. 거래 행위에 대한 수수료도 없었다. 슬리피지도 없었다 — 내가 상상한 가격과 실제로 받게 될 가격 사이의 간극이 없었던 것이다. 그래서 가장 작은 유리한 깜박임을 포착한 거래조차 승리로 기록되었다 — 그 깜박임이, 현실 세계에서 그 거래를 하는 데 드는 비용보다 작았을 때조차 말이다.

나는 일부러 모델에게 거짓말을 한 게 아니었다. 나는 그저 “좋은 거래”에 대한 모델의 이해 전체를 하나의 가정 위에 쌓아 올렸을 뿐이다 — 거래가 공짜라는 가정, 즉 실제로 돈이 오가는 그 어디에서도 일반적으로 비현실적인 가정 말이다.

비용은 수익을 줄이는 게 아니라 판정을 바꾼다

본능적으로는 비용을 정액세처럼 생각하게 된다. 분석을 다 한 다음, 마지막에 어떤 고정된 통행료를 빼면 된다고 말이다. 바로 그 직관이 이 실수를 그토록 저지르기 쉽게 만드는데, 그 직관은 중요한 방식으로 틀렸다.

비용은 단지 이긴 거래가 조금 덜 이기게 만드는 데 그치지 않는다. 그것은 그 거래가 애초에 이긴 거래였는지 여부 자체를 바꿀 수 있다. 비용 차감 전에는 수익이 나는 움직임이 비용 차감 후에는 손실일 수 있다. 그리고 만약 당신의 라벨이 — 어떤 거래가 좋았는지에 대한 바로 그 정의가 — 비용이 존재하지 않는 것처럼 계산된다면, 당신은 단지 성과를 과장하고 있는 게 아니다. 당신은 일부 패자를 승자로 잘못 라벨링하고 있는 것이며, 그런 다음 모델에게 그런 거래를 더 찾아오라고 가르치고 있는 것이다.

왜 이것이 들리는 것보다 더 나쁜가

잔인한 부분은 선택 효과다. 마찰 없는 테스트는 고회전 전략을 불균형하게 편애할 수 있다 — 끊임없이 거래하며 무수히 많은 작은 엣지를 거둬들이는 전략들 말이다. 그런데 그것은 또한, 바로 현실 세계의 비용이 가장 가혹하게 처벌하는 프로필이기도 하다. 그 수많은 거래 하나하나가 통행료를 치르기 때문이다.

그래서 무비용 백테스트는 모든 전략을 똑같이 과장하지 않는다. 그것은 비용이 가장 빠르게 해칠 바로 그 전략들에게 가장 깊이 빠져드는 경향이 있다. 당신은 엣지를 찾아 나서는데, 지나치게 관대한 당신의 시뮬레이션은 비용에 취약한 무언가를, 그것이 만들어낼 수 있는 가장 매력적으로 보이는 곡선으로 감싸서 당신에게 건넨다.

해법: “좋음”의 정의 안에 비용을 넣어라

그 수리는 비용을 뒷생각으로 취급하기를 멈추고, 그것을 모델이 학습하는 진실 안으로 옮기는 것이었다. 나는 거래의 왕복 비용을 — 수수료와 슬리피지 추정치를, 이것이 여전히 모든 현실 세계 비용을 포착하지는 못한다는 것을 알면서도 — 라벨 자체에 접어 넣었다. 그래서 어떤 거래는 존재하는 데 드는 대가를 치르고도 여전히 수익이 날 때에만 좋은 거래로 셈해졌다. 그 기준을 넘지 못하는 움직임은 그것이 실제로 무엇이었는지대로 라벨링되었다. 할 가치가 없는 것이라고 말이다.

모델의 겉보기 성과는 떨어졌고, 때로는 가파르게 떨어졌다. 그 하락은 퇴보가 아니었다. 그것은 그 초기 프로토타입에서 환상이 빠져나가는 것이었고, 뒤에 남은 것은 참여에 대가를 매기는 시장으로부터 적어도 덜 동떨어진 학습 신호였다.

백테스트는 당신이 만드는 세계다

이 교훈 밑에 깔린 교훈은 수수료보다 더 크다. 모든 백테스트는 작은 시뮬레이션된 우주이며, 그것은 오직 당신이 그 안에 넣기로 선택한 규칙들만큼만 정직하다. 비용을 빼면 당신은 중립적인 테스트를 만든 게 아니다 — 당신은 현실보다 친절한 세계를 만든 것이며, 그곳에서 번성하는 법을 배운 어떤 모델이든 당신의 시뮬레이션 바깥에는 존재하지 않는 관대함 위에서 번성하는 법을 배운 것이다.

새로운 전략에게 시장이 주는 첫 번째 교훈은 거의 언제나 같은 교훈의 어떤 변주다. 행동하는 것은 당신이 가정한 것보다 더 비싸다는 것. 당신은 그 교훈을 미리, 시뮬레이션의 안전함 속에서 모델에게 가르칠 수도 있고, 아니면 나중에 진짜 돈으로, 제값을 다 치르며 시장이 가르치게 둘 수도 있다. 나라면 더 저렴한 교실에서 그 교훈의 값을 치르겠다.

거래가 공짜일 때만 수익이 나는 전략은 사실 전략이 아니다. 그것은 당신이 발견에 대해 스스로에게 청구하는 것을 잊었다는 발견일 뿐이다.

— 시그널 없음, 수익 없음, 투자 자문 아님.