"Devil's in the detail."
악마는 디테일에 있다.
중요한 것은 세부사항, 즉 디테일에 숨어있다는 의미이며, 또한 겉보기에는 쉬워 보이지만 사실 이것을 제대로 해내기 위해서는 생각했던 것보다 훨씬 더 많은 시간과 노력이 필요하다는 의미이다.
단순한 규칙에 의해 돈을 벌고자 하는 퀀트가 언뜻 보기엔 쉬워 보이지만 사실 이를 까보면 그리 녹록지 않은 이유는 바로 앞서 말한 디테일에 있다. 여기서 말하는 퀀트 트레이딩의 디테일은 바로 구현의 디테일을 의미한다. 사실 실제로 금융시장에 판돈을 걸고 직접 플레이를 하기 전까지는 퀀트를 한 것이 아니라고 말할 수 있을 만큼 생각보다 이 디테일이 주는 영향력은 엄청나다.
우리가 백날 천날 수행하는 백테스팅은 사실 현실이 아닌 가상의 것이다. 왜냐하면 백테스팅은 말 그대로 모의고사일뿐이기 때문이다. 우리가 모의고사 점수로 대학에 가는 것이 아니듯이 현실 세계에서 나의 손익을 결정하는 것은 실제 트레이딩의 결과이다. 즉, 실제 손익이 나오기 전까지는 퀀트를 해본 것이 아닌 셈이다.
만약 디테일이 결여되어 있다면 내가 기대했던 것만큼 성과가 그렇게 뚝딱하고 만들어지지는 않는다. 여기서 말하는 퀀트 트레이딩의 디테일에 대한 몇 가지 예를 들어보자면 이런 것들이 있을 수 있다. 트레이딩 시그널을 산출하는 시간은 몇 시인가? 그 산출된 시그널을 토대로 몇 시에 주문을 던질 것인가? 시그널 생성 시간과 주문 시간 간의 간격은 어느 정도인가? 나의 주문량을 소화하기 위해서는 어느 정도의 유동성이 필요한가? 내가 주문을 내는 시간대에 시장의 유동성은 과도한 슬리피지가 발생하지 않을 정도로 충분한가? TWAP이나 VWAP 혹은 자체적으로 설계한 주문 알고리즘이 필요할 정도의 사이즈인가? 선물 롤오버를 한다면 만기 며칠 전에 할 것인가? 혹은 몇 시에 할 것인가? 옵션의 델타는 몇 시에 또 얼마나 자주 헤징을 하도록 알고리즘을 설계할 것인가?
진정한 의미의 백테스팅이란 이러한 실제 트레이딩 상황의 모든 디테일들을 녹여낸 백테스팅을 의미한다. 다시 말해, 제대로 된 백테스팅이란 '내가 앞으로 할 플레이와 관련된 모든 구현 요소들을 최대한 반영해 실제 트레이딩 상황에 가깝도록 과거 시뮬레이션을 돌려보는 것'이다. 월간 혹은 주간 단위로 플레이를 하는 장기 투자자의 경우에야 사실 이러한 디테일이 엄청 중요하다고 볼 수는 없지만, 일간 혹은 그보다 더 짧게 장중에서 플레이를 하는 퀀트 트레이딩의 영역에서 이러한 디테일을 놓친다는 것은 시장에 내 돈을 그냥 기부하겠다는 말과 같다. 결국 이는 제대로 된 백테스팅을 할 때 틱데이터의 수집과 관리가 필요한 이유이며, 백테스팅도 중요하지만 포워드 테스트 또한 필수적인 이유다.
여기서 말하는 포워드 테스트는 실제 트레이딩에 들어가고 나서 일정 기간 동안 나의 손익이 해당 기간의 백테스팅 결과와 인라인하게 가는지 확인하는 작업이다. 만약 실제 성과와 백테스팅 결과의 모양이 비슷하지 않고 엄청난 괴리가 발생한다면 해당 전략은 운용을 즉시 멈추고 재점검해 보는 것이 신상에 이로울 것이다. 왜냐하면 현재 내가 실제 운용하고 있는 전략과 백테스팅을 돌린 전략은 아예 다른 전략일 가능성이 굉장히 농후하기 때문이다.
백테스팅 엔진을 만들 때나 매매체결 엔진을 만들 때 디테일에 대한 수많은 고민과 토론 그리고 협업이 필요한 이유는 바로 이 때문이다. 이 디테일은 우리에게 성과라는 달콤한 과실을 쥐여줄 수도 있지만, 또 반대로 순식간에 깡통계좌를 만들어버릴 수도 있다. 정말이지 악마는 디테일에 있는 법이다.