News & Events
알고리즘 트레이딩 (Algorithmic Trading) – 전략 (2)
시스템 트레이딩 개발툴 소개 (Development Tool)
알고리즘 트레이딩 (시스템 트레이딩)을 전략별로 시뮬레이션 해 보려면 개발툴이 필요하다. 강력한 툴이 있으면 좋겠지만 개인의 신분으로 강력한 툴을 접하기는 쉽지 않으므로, 증권사에서 제공하는 일반적인 HTS 기반의 시스템 트레이딩 API 툴을 이용해 본다.
여기서는 델타익스체인지에서 개발하고 동양증권에서 제공하는 선물/옵션 전용시스템인 고수2.0 Plus를 사용한다. 고수플러스는 선물/옵션 전용 HTS 이며, GOM (Gosu Object Module)이라는 COM (Common Object Module) 기반의 인터페이스를 제공하고 있다. GOM 기능을 사용하면 시스템 트레이딩 프로그램을 만들어 볼 수 있다.
GOM은 아래와 같은 객체들을 제공하며, 주된 기능으로는 주문관리, 시세관리, 차트관리 기능 등이 있다. 또한 GOM은 아래의 객체들을 타입 라이브러리 (Type Library)형태로 제공하고 있어 사용자가 쉽게 이용할 수 있다 (세부사항은 델타익스체인지 : www.thegosu.com 사이트 참조).
필자는 VC++/6.0을 이용하여 GOM의 객체들을 이용하고 있다. 샘플로 아래 그림은 필자가 테스트해 보고 있는 화면이다. 고수플러스 HTS 기반 위에서 필자가 제작한 자동매매 로봇 4 대가 돌아가고 있는 모습이다. 필자는 차트 분석을 잘 하지 않는 편이라서, 로봇의 화면은 주로 수치와 텍스트를 기반으로 하고 있다. 그다지 화려해 보이지는 않는다 [그러나 성능은 좋은 편입니다 :)].
그림의 좌측 화면은 고수플러스가 제공하는 행사가격 별 옵션의 시세 정보이다. 그 아래 화면은 주문 접수 및 체결 내역이고 로봇에 의해 접수된 주문이나 체결된 내역을 보여주고 있다.
자동매매 로봇의 내부 구조는 간단히 아래와 같이 구성되어 있다. 시세 정보를 이용하여 전략을 분석하고, 매매 신호가 포착되면 주문관리 및 상태관리에 들어간다. 주문이 체결되면 수익 분석을 통해 계좌 및 통계관리를 수행하고, 손실을 관리하기 위해서는 위험관리 기능이 수행된다. 코딩의 샘플 화면도 아래와 같이 첨부해 보았다. VC++/6.0으로 코딩한 모습이고, 주로 상태 관리 기능이 많은 부분을 차지하고 있다.
필자는 자동매매 로봇을 제작할 때 상태 관리 (FSM : Finite State Machine)에 공을 많이 들이고 있는 편이다. 디자인 단계부터 상태천이도 작성에 많은 시간을 할애한다. 이렇게 코딩을 해야 복잡한 전략도 구현이 가능하고, 향후 Upgrade나 유지보수성이 좋아지기 때문이다. 특히 호가창 (Order Book)을 분석하거나 호가창에 주문을 넣거나 뺄 때 상태관리가 잘 이루어 지지 않으면 주문이 꼬이는 현상 등이 가끔 발생하게 된다.
또한 필자는 시장가 주문은 하지 않는 것을 원칙으로 삼으려고 한다. 시장가 주문을 하면 기능은 매우 단순해지지만, 수익을 내기가 어려워진다. 시장가 주문은 HF-Trader 들에게 좋은 먹잇감이 되기 때문에 가능한 한 배제하려고 한다. 그러나 차익거래를 위한 롱/숏 전략 등을 테스트 하려면 동시에 포지션을 구축해야 하기 위해 어쩔 수 없이 시장가 주문을 이용하기도 한다 (HF-Trader 들이 바라는 점일 것이다).
이번 시간에는 단순히 필자가 사용하고 있는 시스템 트레이딩 툴에 대해 소개해 보았고, 다음 시간부터는 쉬운 전략부터 하나씩 시연해 보고자 한다.
[출처]2. 시스템 트레이딩 개발툴 소개|작성자아마퀀트