1.
지난 한 두해사이 트레이딩환경이 급격히 변화하였습니다. 무엇이 원인인지 결과인지 가를 필요도 없지만 트레이딩전략도 전일종가(EOD)에서 틱(Tick)데이타를 기초로 한 전략으로 변화하고 있습니다. 지금까지 Tradestation이나 Multicharts등이 제공한 백테스팅기능을 이용하면 충분했지만 틱환경의 전략을 시험하는데 불충분합니다. TradeStation과 같은 제품은 ?한달정도의 데이타로만 tick-based back-testing을 실행할 수 있다고 합니다.
틱데이타를 이용한 전략을 운용하는 분들이 어떤 절차로 시험을 하는지 대략 들어보았습니다.
먼저 전략 구현단계에서 시험입니다. 제가 만났던 몇 트레이더들은 루프백(Loop Back Mode)방식으로 시험을 하고 있다고 하였습니다. 전략이 주문 시그날을 발생하면 주문을 전송하는 프로세스가 받아서 체결전문으로 변환하여 다시 전략으로 보내는 방식입니다. 100% 전략의 시그날대로 체결이 된다는 전제하에서 이루어지는 시험이었습니다.
위의 단계를 마무리하면 코스콤이 제공하는테스트장을 이용하여 시험을 합니다. 코스콤이 제공하는 테스트장이란 실거래 시스템과 똑같은 환경으로매매체결시장을 만들어놓고 트레이더들이 접속하여 가상 거래를 할 수 있도록 하는 시장입니다. 호가도 불충분하고 가상거래를 하는 트레이어가 있더라도 전략을 시험하는데 의미가 크지 않습니다. 단지 IT적으로 데이타 흐름이 정상적으로 이루어지는지를 검증하는데 유효합니다.
이제 본격적인 실거래단계입니다. 실거래로 두 단계로 나누어집니다. 시험용 실거래입니다. 전략 자체를 검증하기 위한 과정입니다. 전략을 만들 때 가정하였던 조건들이 실거래에도 유효한지를 확인하고 틀리면 패러매터등을 조정하여 최적화를 합니다. 보통 두 달정도 하는 듯 합니다. 이상의 절차가 끝나면 본격적인 실거래를 합니다.
아주 긴 시간이 들어갑니다. 전략을 최적화하는데 시간과 비용이 많이 들어갑니다. 아마 가장 큰 문제일 듯 합니다. 어떤 트레이더의 요구사항은 이렇습니다.
“거래소 호가를 이용하여 시험을 할 수 있는 환경에 더하여 실거래할 때 체결조건을 시뮬레이션할 수 있도록 체결조건을 스크립트화할 수 있으면……”
여기서 새로운 요구가 발생합니다. 저 같이 트레이딩을 하지 않는 사람은 알 수 없는 요구사항입니다. ZeroAOS의 ZeroVE(Vritaul Exchange)를 개발한 출발점입니다. 외국은 이런 기능을 Exchange Simulator라고 하더군요.
2.
백테스팅과 관련한 자료를 찾기 위해 구글링을 하였습니다. 어떤 프로그래머가 올린 이야기중 이런 부분이 있습니다. Exchange Simulator가 필요한 이유를 설명한 부분입니다.
If you work for financial industry especially in Equity/Derivative trading area, often you may want a stock exchange simulator for your application testing. There are a few reasons for this:
The test exchange gateways provided by exchange may not be always available. e.g. some are not available after working hours or in the weekend.
The test exchange gateways provided by exchange are shared by other brokers and your testing may be interfered by other people.
An exchange simulator provides you the freedom of total controling when and how to use it since you own the simulator.
You could perform load testing on your application against the simulator where its usually prohibited on the test exchange since it might overload the system and affect testers from other brokers.
It’s extreme useful for algorithmic trading testing due to
“you own the market” such that you could generate any scenario for your testing
you can replay the market data for your back testing and even play different strategies or same strategy with different parameters against the replay market to fine tune performance.
Stock Exchange Simulator중에서
읽어보니까 코스콤이 제공하는 테스트장과 큰 차이가 없어 보입니다. 알고리즘트레이딩을 하는 트레이더들의 요구가 크게 다르지 않다는 생각을 하였습니다.
어떻게 Exchange Simulator를 구성할지 고민을 하다 2001년도에 알고리즘전략의 성과를 측정한 프로젝트때 사용하였던 Exchange Simulator의 요건을 볼 기회가 있었습니다. 읽어보니까 나름 타당하다는 생각이 들었습니다. 거래소가 제공하는 호가(Limit Orderbook)을 이용하여 Exchange Simulator를 구현하는 다른 방법은 보이지 않았습니다. 이렇게 하여 탄생한 서비스가 ZeroVE입니다.
ZeroVE는 사실상 매매체결시스템입니다. 현재 구현된 ZeroVE는 KRX 지수파생시장의 규칙에 따라 구성하였습니다. 주문유형과 주문조건에 따라 체결이 이루어지도록 하였습니다. 당연히 주문접수 및 체결데이타도 제공합니다. 다만 ZeroVE가 호가를 생성하지 않습니다. 거래소의 호가만을 유일한 호가라는 전제로 구성한 매매체결시스템이기때문입니다.
ZeroVE는 두가지 방식으로 운용할 수 있습니다.
첫째 playback Mode입니다. 시험을 하고자 하는 기간의 호가데이타(과거데이타)를 ZeroFeeder를 통해 공급하면 시험을 할 수 있습니다. ZeroFeeder에 포함된 과거데이타 전송기능을 이용합니다. 시세송신 가격도 조정할 수 있고 사용하고자 하는 데이타의 기간도 제약 없습니다. 또한 상품의 제약도 없습니다. 차익거래를 한다고 할 경우도 가능합니다. 다만 ZeroOMS/EMS가 아직 유가증권을 지원하지 않았서 주문체결데이타를 처리하지 못합니다.
둘째 Realtime Mode입니다. ZeroFeeder가 시세분배시스템의 실시간 호가데이타를 받으면 ZeroVE는 실거래장과 동일하게 움직이는 가상거래장을 만듭니다. 트레이더가 실거래장과 동일한 시간흐름으로 거래를 할 수 있습니다. 가령 똑같은 전략을 이용하여 가상거래장과 실거래를 동시에 수행하는 것도 가능합니다.
ZeroVE로 거래할 수 있는 종목의 제한은 없습니다. 트레이더는 다음과 같은 이익을 얻을 수 있습니다.
가장 먼저 실거래에 이르는 시간을 최소화하여 시간과 비용을 절약할 수 있습니다. 이를 좀더 나누면 전략을 개발하기 위한 개발비용(Development Cost)과 시험비용(Test Cost)를 절약합니다.
전략을 운영할 때 발생할 수 있는 다양한 예외사항을 검증할 수 있습니다. 이는 시험용 호가데이타를 이용하여 가능합니다. 더불어 전략의 품질을 높일 수 있습니다. 단위시간당 시험빈도를 높일 수 있기때문에 다양한 시험이 가능합니다.
3.
어떤 분이 ZeroAOS를 HFT를 위한 미들웨어로 표현하신 글을 보았습니다. 제목만으로 내용을 짐작할 수 없지만 미들웨어라는 말이 잘못하면 오해를 불러 일으킬 수 있을 듯 합니다.(^^)
ZeroAOS는 트레이더의 전략만을 제외한 트레이딩 어플리케이션입니다. 이런 그림을 연상하면 됩니다. Tradestation이나 Multicharts를 이용하려면 설치를 합니다. 그리고 Strategy Builder를 이용하여 전략을 개발하고 컴파일을 합니다. 백테스팅을 한 후 실거래를 합니다. ZeroAOS는 이런 기능을 거의 똑같이 수행합니다. 다만 Easy Language와 같은 트레이딩언어가 아니라 C/C++로 전략을 개발하여야 하는 점은 다릅니다. 또한 ZeroAOS는 Low Latency와 HFT와 같은 환경에 최적화여 개발한 제품입니다. 판매를 하지 않고 서비스방식으로 제공합니다.
ZeroAOS를 이용하려면 C/C++을 배워야 합니다. 그렇지만 전략을 개발하기 위해 필요한 공통 API는 계속 늘릴 계획이기때문에 컴퓨터언어에 대한 진입장벽이 크지 않으리라 생각합니다. 물론 저의 이야기입니다.
ZeroVE의 매매체결 규칙이 궁금합니다. 타 증권사의 경우 buy일때, 주문가격 >= 현재가 이면 호가잔량 유무와 상관없이 무조건 체결로 처리를 합니다. 주문가격이 현재가보다 크다면 상관없지만…매수1호가에서 buy가 무조건 체결로 처리하는 문제점이 있습니다. 그런데 ZeroVE의 체결 Rule(?)은 어떻게 되는지요. 지난 포스팅에서 한번 본 적이 있었던것 같았는데…. 검색해도 찾지 못하겠네요.^^;
타증권사가 어디인지 알려주시면 제가 비교해볼 수 있을텐데.
VE는 기본적으로 KRX의 매매체결시스템과 동일합니다. 시스템이 같다는 뜻은 아니고 체결규칙을 그대로 적용했다는 뜻입니다.
덧붙여 시뮬레이터이기때문에 거래소 호가를 그대로 사용합니다. VE를 사용하는 트레이더의 주문은 VE의 Order Book에 영향을 주지 않습니다. 고객이 주문을 내면 주문유형과 호가에 따라 거래소 Orderbook에서 주문조건에 맞는 주문을 찾습니다. 있으면 체결. 없으면 미체결입니다.
결론은 말씀하신 것처럼 체결하지 않습니다.. 그리고 지금 시험중입니다. ㅋㅋㅋ조만간 증권사(선물사)를 통하여 공개서비스를 할 예정입니다.
우리선물, 이트레이드, 우리투자, 하이투자 등등 대부분의 모의거래를 제공하는 증권사는 매수1호가에 buy를 하면 호가잔량이 있어도 체결로 처리를 합니다. VE도 동일한지요. 아니면, 매수1호가에 buy할 경우 어떻게 처리되는지 궁금합니다.
모의거래 말고 KRX의 경우는 어떻게 되어 있나요? 매수1호가라고 하면 거래소로 갈 때는 지정가일텐데 지정가주문 처리규정에 맞추어 하는 것이 아닌가요?
모의거래를 참고로 하지 않았고 말씀하신 증권사 시스템을 사용하려면 계좌개설을 해야 하는데 별로 할 생각이 없어서..(^^)