1.
ZeroAOS라는 말을 사용한지 2년이 되어갑니다. 그래서 이런 말이 돌았습니다.
smallake는 말만 하고 실행력이 없다.
ZeroAOS는 실체가 없고 베이퍼웨어이다.
위키페디아를 보면 “베이퍼웨어(vaporware)란 아직 실용화가 되지 않았거나 실제 존재하지 않지만 논의되고 광고도 하는 소프트웨어 또는 하드웨어”를 말합니다. 실제로 존재하지 않는 소프트웨어라는 이야기입니다. 그동안 ZeroAOS를 설명했지만 눈에 보이는 것을 보여주지 못했습니다. 전략을 개발하는 방법을 소개하는 글도 올렸지만 의혹을 씻기에는 역부족이었습니다.
다시 출발할 때 정했던 원칙은 “위험의 최소화”였습니다. 협력 및 동업방식의 개발방식을 택한 이유입니다. 작은 자원을 가지고 큰 프로젝트를 해야 합니다. 그래서 그렸던 모양과 비슷한 제품이 나올 때까지 2년이 걸렸습니다.
ZeroAOS는 리테일 DMA 서비스용 플랫폼(Platform)입니다. 증권사가 리테일용 DMA를 도입한다고 하면 미니원장을 포함한 FEP시스템을 구축함을 뜻 합니다. 그래서 ZeroAOS를 단순히 리테일 DMA라고 하면 오해를 합니다. 많이 다릅니다.
2.
처음 DMA서비스용 시스템을 설계할 하나의 계좌를 하나의 전략을 한명의 트레이더가 사용하는 것을 전제로 하였습니다. 그런데 여러 사람들은 만나고 이런 저런 이야기를 들어보니 아니더군요. 하나의 계좌를 여러명의 트레이더가 같이 사용하는 경우도 있고 여럿의 계좌를 여럿명의 트레이더가 사용하는 경우도 있었습니다. 더구나 하나의 트레이더가 하나의 전략을 운용한다는 생각도 달랐습니다. 지수선물일 경우 근월물을 주로 하므로 하나의 전략인 경우가 많지만 유가증권이나 지수옵션일 경우 다수의 전략을 동시에 운용하는 경우도 많았습니다. 최초의 ZeroAOS에서 가장 많이 바뀐 부분입니다.
복수 전략 + 복수 계좌 혹은 단일 계좌 + 복수 트레이더를 위한 DMA서비스 = ZeroAOS
계좌와 트레이더로 ZeroAOS를 설명했다면 소프트웨어로 ZeroAOS를 설명하겠습니다. DMA서비스를 이루어지려면 다음과 같은 요소들이 필요합니다.
주문시스템 GUI + 주문시스템(Order Management System) + 미니원장 + FEP = DMA서비스
시세관리 + 주문체결관리 + 포지션관리 + 잔고관리 + 위험관리 + 전략관리 = 주문시스템
그럼 ZeroAOS는 이중에서 어느 영역까지 맡을까요?
주문시스템 GUI + 주문시스템(Order Management System) + 미니원장 = ZeroAOS
다만, 전략은 ZeroAOS가 제공하지 않는 부분입니다. 전략은 트레이더가 가진 고유한 영역으로 파악했고 트레이더가 직접 혹은 위탁하여 개발하는 영역으로 삼았습니다. 대신 전략개발을 위한 API를 트레이더에게 제공합니다. ZeroOMS API와 ZTerminal API입니다. ZeroOMS API는 서버에서 실행하는 전략을 구현하기 위한 API이고 ZTerminal API는 전략 운용을 위한 의사결정화면을 구성하기 위한 API입니다.
이제 본론입니다. ZTerminal 설명입니다. ZTerminal은 GUI입니다. 처음 유저인터페이스를 정할 때 어떤 방식으로 할지 고민을 많이 했습니다. 트레이더마다 화면을 다양하게 배치하여 매매를 하기때문에 메인프로그램은 최소화하고 화면배치는 자유롭게 할 수 있는 방법을 찾았습니다. 결론 태스크바(Task Bar)형식입니다. 메뉴 아이콘도 고민했지만 자유로운 메뉴 추가를 위해 한글명을 그대로 사용하기로 하였습니다. 다음은 화면테마였습니다. 파트너중 디자인을 맡는 사람이 없어서 가장 단순하면서 덜 촌스러운 것을 선택하였습니다. 검정색입니다.(^^) 저는 프라다테마라고 우깁니다. 이렇게 나온 메인 프로그램입니다.
시세, 주문, 주문체결, 잔고, 예수금은 매매프로그램들이 가지고 있는 공통화면입니다. 다만 DMA에 맞도록 변경하였습니다. HTS와 달리 종목코드를 자유롭게 입력하지 못하고 특정한 종목만 선택하도록 하였습니다. HTS로 말하면 관심종목을 중심으로 화면을 구성한 것과 비슷합니다.
시세화면입니다. HTS와 다르게 매매하려고 하는 종목을 보여주고 선택하는 방식입니다. 이 화면에서 보여주는 종목은 전략과 직접 관련이 있습니다. 전략에서 종목을 추가하거나 삭제하면 시세와 주문화면도 반영합니다.
주문화면입니다.
DMA는 주로 자동매매인데 수동매매화면이 이상할 수도 있습니다. 처음 설계에는 없었지만 트레이더를 만나면서 수동매매가 필요하다는 의견을 들었고 추가한 기능입니다.
앞서 시세와 마찬가지로 장중 매매종목으로 정의한 종목들만 보여줍니다. 상단은 주문입력이고 하단은 주문처리 결과입니다. HTS처럼 정정과 취소일 경우 미체결내역을 보여주고 정정 취소할 주문번호를 선택하도록 하였습니다.
에수금은 계좌잔고 조회입니다. 보통 HTS와 다르지 않습니다만 미니원장에서 조회한 결과를 보여줍니다.
다음은 포지션잔고입니다. ZTerminal이 포지션데이타를 보여주는 방법은 두가지입니다. 주문체결데이타를 받아서 만든 자체포지션테이블을 조회하거나 미니원장에 요청하는 방법이 각각 가능합니다. 첫째 자체데이타, 둘째 화면이 미니원장데이타입니다.
마지막은 주문체결입니다. 보통 전략이라는 항목만 빼면 다른 화면과 다르지 않습니다. 전략은 해당주문이 어떤 전략에 의해 나갔는지를 보여주는 보여줍니다. 아래의 0은 수동매매에 의한 주문입니다. 전략은 전략관리에서 지정한 전략ID로 나타납니다.
3.
ZTerminal을 만들면서 가장 고생하였던 부분이 남았습니다. 전략관리입니다. 구현도 구현이지만 표준화한 UI구성때문에 머리가 많이 아팠습니다. 전략은 종목과 계좌 및 매매규칙 그리고 매매규칙에 따르는 패러매터들로 구성된 프로그램입니다.
ZeroAOS의 전략개발API를 통하여 개발한 전략은 아래와 같은 특징을 가집니다.
하나이상의 상품(Tradable Product) 매매
하나이상의 규칙(Trading Rule)
장중 매매상품의 변경/삭제가 가능
전략 패러매터를 사전에 정의한 그룹에 의한 전략관리
장중 전략 패러매터 임의 변경 가능
전략 패러매터의 유형과 갯수는 매매전략을 설계하는 트레이더이 결정
하나의 전략은 하나의 프로세스(Process)이며 실시간 이벤트에 의해 멀티쓰레드(MultiThread)로 동작
전략프로세스는 최대 99개까지 가능하며 매매가능한 상품의 개수와 전략프로세스의 숫자는 같지 않음
전략은 C프로그램이기 때문에 개발자가 창의적으로 전략을 구현할 수 있으면 프로세싱과 속도들을 고려하여 다양한 변화가 가능합니다.
ZTerminal의 전략관리는 트레이더가 전략을 통제하기 위한 화면입니다.
전략관리의 기본은 전략정보입니다. 전략정보는 전략번호, 전략명,계좌번호, 기본패러매터, 전략실행,전략정지,주문실행,주문정지등으로 이루어집니다. 기본 패러매터는 트레이더가 사전에 정의한 패러매터그룹중 기본으로 정한 값입니다.
트레이더가 전략을 관리할 때 필요한 행동을 유형별로 분리하면 전략시작, 전략정지,미체결취소, 신규주문중단, 신규주문시작, 종목변경, 패러매터 변경 등입니다. 전략실행부터 주문정지는 전략의 동작을 통제하는 기능입니다.
1)전략실행 – 전략을 시작하여 자동매매 시작
2)전략중지 – 전략을 중지하여 자동매매 중지
3)주문정지 – 미체결주문을 자동 취소하고 신규주문 중단
4)주문실행 – 신규주문 중단을 해제하여 신규주문 시작
하단의 좌측은 패러매터를 관리하는 부분입니다. 사전에 지정한 조건으로 변경할 경우에는 패러매터그룹중 하나를 선택하여 [사전지정조건 변경]을 누릅니다. 반면 직접 입력하여 변경할 경우 Value에 값을 입력하고 [직접입력 변경]을 선택합니다.
하단의 우측은 전략의 종목을 변경하는 부분입니다. 전략을 선택하면 현재 등록한 종목을 보여줍니다. 하단 중앙입니다. 종목 삭제가 가능합니다. 우측은 모니터링하는 종목을 사전에 등록해 놓고 특정한 전략에 종목을 추가할 때 사용하는 화면입니다.
전략과 관련한 기능중 전략프로세스관리도 있습니다. 동작중인 프로세스를 Start/Stop하도록 하는 기능입니다. 마지막은 계좌단위의 위험관리입니다. 앞서 전략관리의 ‘주문정지’,’전략중지’는 전략단위의 위험관리기능이기도 합니다. 어떤 계좌를 여러명의 트레이더가 같이 사용할 경우 계좌단위의 위험관리도 필요합니다. 계좌관리중 [정지]는 미체결주문을 전체 취소하고 신규주문을 막는 역할을 합니다.
4.
이상이 트레이더가 매매를 할 때 필요한 모든 기능이라고 생각하지 않습니다. 가장 중요한 패러매터등을 결정하기 위한 의사결정지원화면이 빠져있습니다. 그런데 의사결정을 위한 화면은 딱 하나로 만들 수 없습니다. 트레이더마다 판단의 기준이 다르기때문입니다. 그래서 ZTerminal API를 따로 제공합니다. 이를 이용하면 전략관리와 의사결정지원을 결합한 자체 화면을 개발하여 메인메뉴에 추가할 수 있습니다.
향후 추가하려고 하는 부분은 호가시세(누적데이타)와 주문체결데이타를 결합한 Trading Replayer입니다. 또한 Latency Report도 고민하고 있습니다. SQLite로 주문체결데이타를 그대로 관리하기 때문에 구간별 레이터시보고서를 구현할 수 있습니다.만약 ZTerminal을 이용하여 손매매만 하겠다고 하더라도 가능합니다. 혹은 ZTerminal API를 이용하여 증권사 API처럼 자동매매시스템을 구성할 수 있습니다.
ZeroAOS나 ZTerminal을 플랫폼이라고 불렀습니다. 사용방법은 전적으로 트레이더의 상상에 달렸습니다. ZeroAOS는 상상력을 뒷받침하기 위한 플랫폼으로 계속 발전하려고 합니다.
(*)현재 ELW만 제공합니다. 지수파생은 진행중이며 주식은 가장 마지막에 마무리하려고 합니다.
Wooooooooooooooooooow!!!!!
멋집니닷!!!!!!!!!!!!!!!!!!!!
정말 고생하셨어요. ^^
감사합니다. 이제 1.0입니다. 상품을 추가하고 기능도 늘여야 합니다.
더 큰 일은 매출이죠. ㅋㅋ세상에서 제일 힘든 일.
고생 많으셨습니다. 그리고 축하 드립니다.
감사합니다. 이제 제가 빚은 진 것을 해결해드려야 할 때네요.
수고많으셨습니다. 땀흘린 만큼 매출이 따라올 겁니다.
Bottoms up~! ^^
말로만?(^^) 감사합니다…