brunch

You can make anything
by writing

C.S.Lewis

by 퀀트대디 Nov 13. 2023

옵션 백테스팅 프레임워크 101

# 자산의 성질과 백테스팅 구현

백테스팅, 퀀트에게 있어 없어서는 안 될 필수적인 요소다. 비록 가능한 수만 가지 역사적 경로들 중 오직 한 가지 경로일 뿐이지만 그럼에도 불구하고 백테스팅을 해야 하는 이유는 데이터 상으로 검증을 해봐야만 전략이 가지고 있는 손익 분포에 대한 직관이 생기고 어느 정도 룸과 위험 예산을 가지고 플레이를 할지 감을 잡을 수 있기 때문이다.


이러한 백테스팅은 그 대상 자산이 무엇이냐에 따라 난이도가 사뭇 달라진다. 우선 비교를 위해 주식을 예로 들어 보자. 일단 주식이라는 상품은 그 종목이 상장폐지가 되지 않는 한 특정 만기 없이 오직 한 줄의 가격 시리즈를 가지고 있다. 그렇기 때문에 주식을 백테스팅 하기 위해서는 단지 트레이딩 시그널만 있다면 그 시그널의 변화에 따라 포지션을 변경해 주기만 하면 된다. 굉장히 심플하다. (물론 실무적으로는 배당이나 액면분할 같은 이슈들을 살뜰히 챙겨야 한다.)

선물 같은 경우는 주식의 백테스팅에서 하나의 요소를 더 고려 해야 하는데, 그것은 바로 만기(Maturity)다. 만기라는 것은 결국 주식과는 달리 해당 상품의 소멸 시점이 존재한다는 것을 의미한다. 따라서 선물을 백테스팅하기 위해서는 트레이딩 시그널의 변화뿐만이 아니라 만기가 되면 그다음 월물로 포지션을 갈아끼워줘야 하는 이른바 롤오버(Rollover)를 신경 써줘야 한다. 이를 위해서는 결국 지금은 소멸되어 사라진 과거 모든 월물들의 가격 데이터가 필요하며 이 월물들을 하나로 이어붙이고 롤오버 비용을 반영하여 연결선물(Continuous Contracts)로 데이터를 다시 전처리한 후 백테스팅을 수행해야 한다.



# 옵션 체인, 다차원의 가격 경로

그렇다면 과연 옵션의 백테스팅 프레임워크는 어떻게 설계해야 할까? 옵션은 주식, 선물과는 또 다른 특이한 성질을 가지고 있는데, 그것은 바로 행사가격(Strike Price)이다. 옵션이라는 상품은 각 시점마다 다양한 행사가를 가지고 있는 여러 옵션들이 동시에 상장되어 거래되기 시작한다. 결국 한 시점에 하나의 자산만을 신경 쓰기만 하면 됐던 주식 혹은 선물과 다르게 옵션은 옵션들의 묶음인 옵션 체인(Option Chain)을 고려해 백테스팅 엔진을 설계해야 한다.


백테스팅 상에서 이러한 옵션 체인을 고려하는 것이 더욱더 골 때리는 이유는 상품의 행사가격, 즉 절대적인 기준은 바뀌지 않지만 스팟 가격의 변화에 따른 머니니스(Moneyness), 즉 상대적 기준은 시장이 움직임에 따라 계속 바뀌기 때문이다. 가령 주식시장이 급격히 하락하게 되면 OTM이었던 풋 옵션이 ATM 혹은 ITM의 영역으로 들어올 수도 있고 또는 그 반대의 상황이 발생하기도 한다. 아래의 그림을 보면 기초자산의 움직임에 따라 특정 옵션이 ATM이 되기도 혹은 ITM, OTM이 되기도 하는 것을 확인할 수 있다.(ATM 부근일 경우 적색으로 표시를 하였다.) 일반적으로 옵션은 '경로의존적(Path-Dependent)이다'라고 하는데, 이렇게 말하는 이유는 기초자산의 경로에 따라 그 페이오프가 순식간에 바뀔 수 있기 때문이다.

옵션이 기초자산 가격의 향후 레인지에 의해 그 페이오프가 결정되는 상품임을 감안한다면, 이러한 옵션의 고유한 속성은 이를 거래하거나 백테스팅을 할 때 여러 변수들을 함께 고려해야 함을 암시한다. 결국 정리하자면, 옵션 트레이딩 전략을 백테스팅할 때에는 거래하고자 하는 특정 시점에 타깃 머니니스나 타깃 델타를 가진 옵션이 어떤 건지, 이를 만기까지 캐리할건지 혹은 도중에 시장이 바뀌었으므로 다른 행사가로 갈아탈 건지 등의 여러 디테일들을 일일이 신경 써줘야 한다.


그래서 옵션 백테스팅 엔진을 만들고 싶다면 더욱더 필요한 것이 데이터베이스다. 옵션 백테스팅을 위해서는 동일한 시점에 함께 거래되는 옵션 다발들의 가격 데이터까지를 전부 가지고 있어야 한다. 주식, 선물보다 훨씬 더 큰 데이터 용량이 필요한 이유는 바로 이 때문이다. (주니어 퀀트를 꿈꾼다면 자신의 스킬셋에 SQL을 추가해놓기를 추천한다. 대용량의 데이터를 다룸에 있어 극강의 업무 효율성을 선사할 것이다. 각 잡고 2,3주만 투자한다면 전반적인 내용은 다 숙지할 수 있을 만큼 엄청나게 가성비가 좋은 도구임에는 틀림이 없다.)


행사가격과 만기라는 두 가지 조건을 고려하다 보면 어느새 옵션의 데이터 구조는 3차원의 입체적인 형태를 띠게 된다. 시간 축을 가로로 길게 늘어뜨리면 이는 마치 기다란 직육면체 모양의 롤케이크를 연상케 하는데, 이 중 한 시점을 뽑아내 그 한 단면의 내재 변동성만을 뽑아내면 그것이 바로 옵션 트레이더가 흔히 모니터링하는 내재 변동성 곡면(Implied Volatility Surface)이 된다.

옵션 체인 시계열 데이터와 내재 변동성 곡면


# 아주 단순한 옵션 백테스팅 예시

옵션 체인에 대한 시계열 데이터베이스를 구축해놓았다면, 이제 옵션 백테스팅은 사용할 전략과 타깃 머니니스 같은 몇 가지 트레이딩 사양들을 선택한 후 주어진 조건에 따라 시뮬레이션을 진행해나가면 된다. 아래의 결과는 코스피 200 위클리 옵션에서 95 풋을 매도한 후 만기까지 캐리하는 다소 심플한 전략의 백테스팅 결과다. 테일 리스크 발생에 굉장히 취약한 전략이므로 이를 그대로 사용하기엔 실무적 활용 가능성이 높지는 않다. 하지만 변동성을 매도해 세타(Theta)를 수취하는 이러한 전형적인 변동성 위험 프리미엄(VRP, Volatility Risk Premium) 전략은 옵션 트레이딩 영역에서의 플레인 바닐라 전략이라고 할 수 있으며, 옵션 트레이딩 전략의 스킴은 여기서부터 계속해서 발전해나간다.

위와 같은 백테스팅을 수행하기 위해서는 매주 돌아오는 목요일마다의 95 풋을 반복적으로 찾아 거래해야 한다. 또한 심지어 코스피 옵션 시장의 특성상 두 번째 목요일은 위클리 옵션이 아닌 만기가 일주일 남은 한 달짜리 코스피 200 옵션을 찾아 따로 결합해 주어야 한다. 세상에서 제일 하기 싫은 일 중 하나가 데이터 전처리인데, 옵션 백테스팅에서는 아주 그냥 전처리의 대환장 파티가 펼쳐진다. 처음엔 멀티버스에서 길을 잃은 고아가 된 느낌일 것이다. 그래도 어쩌겠는가. 그냥 인생의 좋은 경험이다 생각하고 열심히 해야지. 방법이 없다.



매거진의 이전글 내재 변동성을 활용한 마켓 타이밍 전략
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari