통계적 차익거래와 Python

1.
ZeroAOS는 독립된 시스템입니다. 트레이더가 자신의 전략을 구현한 오브젝트를 탑재하면 설정한 규칙에 따라 매매가 이루어지는 컨테이너(Container)입니다. 더불어 플랫폼이기도 합니다. 플랫폼이 무엇일까요?

A platform is a group of technologies that are used as a base upon which other applications, processes or technologies are developed 혹은 “다양한 용도에 공통적으로 활용할 목적으로 설계된 유무형의 구조물”

ZeroAOS는 트레이딩을 위한 플랫폼입니다. 매매를 위해 필요한 기능들인 시세, 주문, 체결, 잔고, 위험관리, 계좌와 관련한 서비스들은 API를 통해 제공하기 때문입니다. 속도와 자동매매에 특화한 플랫폼입니다. 처음 ZeroAOS를 구상할 때 DMA를 기반으로 하였지만 실제 업무에 적용하면서 여러가지로 확장할 수 있다는 생각을 했습니다. 그중 하나가 개인HTS입니다.

최초 HTS는 화면으로 보여지는 정보를 가지고 투자자가 판단하여 매매를 하도록 하기 위한 시스템이었습니다. HTS는 투자자의 요구에 따라 계속 발전해왔습니다. HTS도 자동매매를 지원합니다. 대표적인 서비스가 Stop-Loss입니다. 고객의 데스크탑 환경에서 지원하였지만 몇 년전부터 증권사의 HTS서버에 지원하는 서비스가 늘어나고 있습니다. 자동매매로 지원하는 내용도 점점 다양화지고 있습니다. 다양한 기술적 지표와 자동매매를 결합한 서비스를 제공하기도 합니다.이 지점에서 또 ZeroAOS와 HTS가 만납니다.

2013년 여름 다양한 알고리즘을 제품화하여 서비스로 제공하는 구상을 하였습니다. 다양한 전략들을 살펴보았고 인터넷을 검색을 해보았습니다. 여러가지 조사끝에 도전(^^)을 하기로 했던 전략이 통계적 차익거래이고 페어트레이딩(Pair Trading)이었습니다. 예를 들면 아래와 같은 화면으로 나타나는 서비스입니다.

PairsTrading

참, 아마추어 퀀트님이 시험삼아 만든 프로그램도 있습니다.

statisticalstrategy

2.
堂狗三年吠風月. “서당개 삼 년에 풍월을 읊는다”고 했습니다.통계적 차익거래나 페어 트레이딩과 같은 단어는 아마추어 퀀트님과 알고리즘 교육을 할 때 접했습니다. 그렇지만 여전히 수학이 머리를 아프게 하는 한 어렵습니다. 오히려 아래와 같은 수준에서만 이해하는 것이 저에게 도움을 줍니다.(^^)

Liquidity Base Arbitrage: every trade has their respective key metric valuation and for fix income arbitrage, treasury bills specifically are their liquidity.

Valuation Base Arbitrage: when dealing with equities the key metric to preform statistical arbitrage is by the arithmetic calculation of their relative value between dividend yields or PE ratios.

Price Action “Momentum” Base Arbitrage: price action base is my favorite of all statistical arbitrage tactics I know; because it involves a naturally hedge position.

수식을 최소화하고 약간 더 나간 자료가 아래입니다. 다른 글에 비해 수식이 좀 적었습니다. 1장과 2장에서 정리해놓았습니다.

그래도 영어 보다는 한글로 된 자료가 좋습니다. 실거래를 하신다고 들었는데 요즘도 아마추어 퀀트님이 글을 계속 쓰시더군요. 최근에 페어트레이딩과 관련한 추가글도 올리셨습니다.

아마추어 퀀트님의 페어 트레이딩

3.
통계적 차익거래를 소개하려고 시작한 글은 아닙니다. 통계적 차익거래에 관심이 있는 분이 어떻게 모형화하고 구현하여 시험할지를 소개하기 위함입니다. 사실 이전에 쓴 글이 있습니다. 약간의 소스파일도 올려놓았습니다만 일반적으로 사용하는 언어는 아니었습니다.

통계적 차익거래와 관련한 논문을 쓴 어떤 분

그래서 다른 언어로 된 것을 소개합니다. R과 경쟁을 하고 있는 Python으로 개발된 프로젝트입니다. 핀란드에서 이론물리학을 공부하는 Heikki Arponen이라는 사람이 있습니다. Arponen은 자신의 블로그에 통계적 차익거래와 관련한 프로그램을 올려놓았습니다.

Statistical arbitrage with Python

여기에 올려놓은 프로그램이 Python으로 개발한 PyArb입니다.

PyArb – Statistical arbitrage simulation, modeling and backtesting with Python.

PyArb의 사용을 위한 입문도 잘 정리해놓았습니다.

Statistical arbitrage with Python

페어트레이딩 전략과 관련한 한글 논문에서 소개한 논문을 보면 “이를 위해 매매 신호 추출 시 칼만필터(Kalman Filter)를 이용하여 시변(Time-adaptive) 회귀상수를 계산한 뒤 종목 간 스프레드를 계산하였다”고 합니다. 칼만필터가 전략 구현에서 중요한가 봅니다. LinkedIn에서도 Kalman Filter와 관련한 질문이 올라와서 많은 토론이 있었습니다.

We are trying stat. arb pair trading. Implementation of Kalman Filter ?
Automated / algorithm / HFT trading programmer, quant developer, backtesting Co-Founder @Tvisi Algo Systems www.tvisi.in

To get beta coeff. we look for kalman filter. Any one can share matlab approach to kalman filter with what data should be used as input to Kalman Filter.

이에 대한 토론은 We are trying stat. arb pair trading. Implementation of Kalman Filter?을 클릭하세요.

그런데 칼만 필터가 무엇이죠? 번역을 잘 해놓은 글입니다.

칼만 필터(Kalman Filter) – Part 1 : Linear Systems
칼만 필터(Kalman Filter) – Part 2 : Kalman Filter & Algorithm

작년 가을 금융공학을 맡은 파트너에게 여러가지 자료를 주어서 국내주식과 파생상품을 위한 설계를 맡겼습니다. 다사다난한 세상이다 보니 아직도 진행중입니다. 그런데 끝을 낼 수 있을지 궁금하네요.(^^) 지금 누군가 제품화를 하려고 하는 회사도 있겠죠?

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.