Quant Insight

오류 없이 백테스팅을 하고도 틀리는 경우, spurious relationship

monkeyholden 2021. 4. 25. 02:39

퀀트 백테스팅을 오류 없이 하기란 굉장히 까다로운 일이다. 포워드 루킹을 방지할 point in time data를 사용해야하고, 다양한 마켓 실제 상황(슬리피지, 스프레드)을 고려해야하고, 잔잔한 코드 에러도 없어야한다. 잔잔한 코드 에러의 경우 안하는 것이 당연한 것지만, 이것이 생각보다 까다로울 수 있는 것이, 사회과학은 정해진 답이 없기 때문에 코드가 일단돌아가고 어느정도 make sense하면 처음에 오류를 바로 발견하는 일이 그렇게 쉽지 않다. 하지만 이런 모든 오류가 없이 백테스팅을 했다고해도 틀린 결과를 만들어 낼 수 있다. 그에 대한 한가지 예를 소개하겠다.

 

spurious relationship

 

통계에서 인과 관계가 없는 상관 관계를 일컫는다. 시장의 리턴과 positively correlated 된 시그널을 만들었다 치자. 이 시그널이 발생하면 시장을 롱하면 된다. 벤치마크로 주식:채권 5:5로 두고, 이 시그널이 발생시 일정 기간 동안 6:4의 비중을 유지하거나, 벤치마크롤 주식 1로 두고, 이 시그널이 발생시 일정 기간 동안 +0.2 만큼 레버리지를 취한다하자. 그렇게 백테스팅을 했는데, 그 전략이 벤치마크를 상회한다면 과연 좋은 전략이라 할 수 있을까? 이는 전형적으로 spurious relationship이 나타나기 좋은 상황이다. 주식은 대부분 기간동안 우상향 했기 때문에, 고생해서 만든 시그널이 아니라 랜덤하게 레버리지를 취할 날짜를 시그널 발생 갯수만큼 동일하게 선택한다해도 벤치마크를 상회할 가능성이 크다. 시그널과 미래 주식 리턴이 양의 상관관계를 가져서가 아니라 그냥 사용하는 기간 자체가 전반적으로 불마켓이라는 사실이 driving factor일 가능성이 크다. 이런 어이없는 실수를 누가해? 하겠지만, 인지하고 노력하지 않는다면 이보다 더 subtle하게 오류에 빠질 수가 있다. 그러면서 괜찮은 전략을 만들었다 착각하는 경우가 생긴다. 시그널 발생 빈도가 잦지 않은 경우도 이에 해당할 수 있다.

 

이런 문제에 빠지지 않으려면 전략에 대한 다양한 분석을 해야하고, 시그널의 특징, 백테스팅을 진행하는 마켓의 특징을 기본적으로 파악하고 있어야한다. 그리고 벤치마크도 정말 벤치마크라고 부를 수 있는 series를 만들어내야한다. 벤치마크를 엉뚱한 것을 잡아 놓고 벤치마크를 상회한다고 말하면 틀린 것이된다. 한가지 소개할 수 있는 아주 간단하지만 유용한 방법은 시그널의 집행 시점을 뒤로 늦추었을때 과연 alpha가 어떻게 변하는가를 확인하는 것이다. 진행 시점을 아주 뒤로 늦춰도 alpha에 변화가 거의 없다면 그것은 제대로 된 시그널이 아니라 내가 간과한 어떤 구조적인 이유 때문일 수가 있는 것이다.

 

마지막으로 분석을 오래 하다보면 집중력이 흐려질수 있다. 이 때문에 전략의 분석 과정을 streamline 해놓을 필요가 있다. 하지만 또 모든 전략은 다르다. 그래서 어렵다.

 

퀀트는 데이터를 활용하는 능력을 최대한 이용해서 알고리즘이 일하게 만들어야한다. 일하는 또 다른 나를 만들어야하는 것이다. 하지만 많은 퀀트는 내가 알고리즘을 위해 일을 하고 그 마저도 알고리즘이 잘못되었거나, 집행 가능하지 않고, 실제 투자에 집중하지 못하는 경우가 많다.