알고리즘 트레이딩
알고리즘 트레이딩(Algorithmic trading)은 컴퓨터 프로그램을 이용하여 일정한 논리구조나 알고리즘, 특정 매매기법에 따라 증권, 외환, 파생상품 등의 자산을 자동으로 거래하는 매매 방식이다.[1]
목차
개요[편집]
알고리즘 트레이딩은 컴퓨터 프로그램을 이용하여 일정한 알고리즘이나 논리구조, 특정 매매기법에 따라 증권, 외환, 파생상품 등의 자산을 자동으로 거래하는 매매 방식이다. 이러한 알고리즘 트레이딩을 하는 사람을 퀀트 트레이더(Quantitative Trader)라고 부른다.
알고리즘 트레이딩을 하기 위해서는 가격, 거래량, 손익계산서, 경제지표, 수급, 거래비용, 가중평균수익률 등의 데이터를 조합해 알고리즘을 구성해야 한다. 구성된 알고리즘을 통해 시장 상황이 분석되고 매매 시점을 포착해 자동으로 주문을 넣게 된다. 트레이더가 지속적으로 시장 상황을 보고 수동으로 주문을 넣을 필요가 없어 빠른 투자 결정이 가능하고 시장상황에 따른 감정 개입을 배제할 수 있다. 그러나 잘못된 기재이나 알고리즘, 프로그램 오류 등으로 인해 큰 손실이 발생할 수 있다.[2][3]
대량 주문을 수행하기 때문에 투자기관, 연금기금, 뮤추얼 펀드와 같은 전문 기관에서 주로 사용되었으나 2000년 이후부터 알고리즘 트레이딩 소프트웨어와 프로그래밍 언어가 대중들에게 알려지며 일반 투자자의 사용층이 생겼다.[2]
정의상 프로그램 매매와 같아 프로그램 매매라고 불리기도 하는데 프로그램 매매는 선물시장과 연계한 차익거래로 선물과 현물 중 상대적으로 고평가 된 것을 팔고 동시에 가격이 낮은 쪽을 사는 알고리즘 매매를 뜻하는 자동화된 거래 시스템을 의미하는 좁은 뜻의 알고리즘 트레이딩이다. 알고리즘 트레이딩은 시장조성, 스프레드, 차익거래 등의 전통적인 투자 전략을 시행하기도 하며 초단타 거래의 대부분을 차지한다.
알고리즘 트레이딩 | |||||||
자동 | 반자동 | 수동 | |||||
프로그램 매매 | 극초단타매매(고빈도매매) | ||||||
프로그램을 이용해 15개 이상의 종목을 동시에 매매하는 것 | 1초 미만의 짧은 시간 내 대량 매매를 반복하는 것 | ||||||
차익거래 | 비차익거래 | ||||||
프로그램을 이용하여 차익거래를 하는 것 | 프로그램을 이용하여 비차익거래를 하는 것 |
특징[편집]
시장유동성[편집]
알고리즘 트레이딩은 여러 이점과 시장 유동성을 많이 증가시킨다는 장점이 있다. 시장유동성(Market liquidity)이란 유동성은 자산 가격의 급격한 변화 없이 최소한의 비용으로 시장에서 원하는 거래량의 자산을 신속하게 매수하고 매도할 수 있는 정도를 의미하는 것으로 거래비용, 가격충격, 거래량, 거래속도 등을 모두 포함한 추상적이고 복합적인 개념이다.
자동화[편집]
알고리즘 트레이딩은 컴퓨터가 정의해둔 알고리즘에 따라 자동으로 매매를 진행한다. 투자 전략에 따라서만 매매를 하며 시장의 분위기나 사람의 심리적인 요소가 개입되지 않는다.[2] 따라서 인간이 저지를 수 있는 감적적이고 심리적인 실수를 하지 않는다. 컴퓨터 프로그램에 의해 여러 시장에 대한 정보를 바로 확인할 수 있으며 조건에 대해 즉각적인 반응을 하고 정확하게 거래 주문을 넣어 최적의 가격에 거래할 수 있다.
지연시간[편집]
전자거래 특징상 거래속도가 매우 중요하다. 단방향 지연, 왕복 지연, 네트워크 유도 지연 등 알고리즘 트레이딩을 하며 생기는 모든 지연은 데이터 패킷이 한 지점에서 다른 지점으로 이동하는 데 걸리는 시간으로 정의할 수 있다. 저지연성 거래는 금융 거래를 신속하게 실행하기 위해 증권거래소 및 전자증권거래네트워크(ECN; Electronic communication network)에 연결된 금융기관에서 사용하는 알고리즘 트레이딩 시스템 및 네트워크 경로를 뜻한다. 투자자에게 정보를 전달하는 데 걸리는 시간, 거래자 알고리즘이 정보를 분석하는 데 걸리는 시간, 생성된 동작이 거래에 걸리는 시간인 세 가지 요소로 구성된다. 현대전자거래시장에서는 저지연(Low latency)은 10밀리초 미만, 초저지연(Ultra-low latency)은 1밀리초 미만으로 정의된다.[4]
진화적[편집]
매매 입찰 및 제안과 같은 정보를 경쟁사보다 마이크로초 단위로 빠르게 알고리즘에 제공하여 이익을 얻는다. 혁신적인 속도의 발전으로 인해 기업은 고빈도매매 전략을 구현할 때 이익을 얻을 수 있도록 실시간으로 정보를 제공할 수 있는 거래 플랫폼을 가질 필요성이 생겼다. 알고리즘은 시장의 미세한 변화를 반영하고 경쟁사가 작전을 역설계하여 함정에 빠트리는 위험에 대처하기 위해 끊임없이 바뀌어야 한다. 이는 알고리즘 트레이딩의 진화적인 특성으로 시장 상황과 관계없이 지능적으로 적응하여 거래할 수 있어야 하며, 광범위한 시장 변화에 견딜 수 있을 만큼 유연해야 한다. 결과적으로 증권사의 수익 중 상당한 부분이 이러한 자율 거래 시스템 연구개발에 사용된다.[4]
백테스팅[편집]
벡테스팅(Backtesting)이란 자신의 트레이딩 전략을 과거 데이터에 입혀보아 어느정도의 성과를 내는지 확인하는 과정을 말한다. 자신이 설계한 알고리즘 전략에 따른 이익이나 손실을 확인하기 위해 과거 혹은 실시간 데이터를 적용하여 알고리즘을 테스트해볼 수 있다.[5]
문제점[편집]
사이보그 금융[편집]
금융의 기술 발전, 특히 알고리즘 거래와 관련된 기술 발전은 금융 속도, 연결성, 도달 범위 및 복잡성을 증가시키면서 동시에 인간성을 감소시켰다. 복잡한 알고리즘을 기반으로 소프트웨어를 실행하는 컴퓨터는 금융 산업의 많은 부분과 기능 면에서 인간을 대체하여 기계와 인간이 지배적인 역할을 공유하게 된 일명 "사이보그 금융"이 되었다.[4]
블랙박스성[편집]
사고가 일어난 뒤에 확인할 수 있는 블랙박스처럼, 알고리즘 트레이딩을 통해 변동된 시장 상황은 어떠한 이유로 이렇게 변했는지 쉽게 알 수가 없다. 인간 투자자들은 시장 상황이 돌아가는 것을 직감적으로 느끼고 판단할 수 있다. 인간은 호재나 악재 등으로 인한 분위기나 특정 종목의 인기로 인한 과열 등을 판단할 수 있지만, 알고리즘 트레이딩은 왜 특정 데이터나 특정한 상황이 되었는지 명확하게 알 수 없다.[4]
시스템 장애[편집]
기술적인 문제 위험이 있다. 네트워크 지연, 견적 지연, 보안 문제 및 시장 붕괴 등으로 이어질 수 있는 완전한 시스템 붕괴 가능성이 있다. 이러한 기술적인 문제를 해결하기 위해 증권사는 알고리즘 트레이딩을 유지 및 보수, 개선하는데 많은 돈을 사용한다. 금융회사에서 투자자보다 엔지니어가 많아졌다는 말이 나올 정도로 시장의 성격이 크게 달라졌다.
2012년 8월 1일, 나이트 캐피탈 그룹(Knight Capital Group)은 자동화된 거래 시스템에서 기술 문제를 경험하여 4억 4천만 달러의 손실을 보았다. 나이트 캐피탈의 거래 소프트웨어에 문제가 있었고 150개 이상의 종목 주가가 요동쳤다. 뉴욕증권거래소는 6개 종목의 거래를 취소했으며 나이트 캐피탈의 주가는 이틀 사이에 63% 이상 폭락했다.[4][6]
대한민국에서는 2013년 12월 12일 한맥투자증권이 알고리즘 입력 실수로 인한 대규모 주문 실수로 462억 원의 손실을 보게 되었다. 주문 실수가 체결되는 것을 본 직원이 143초 만에 시스템의 전원을 뽑았지만 이미 463억 원의 피해를 보았고 사고 직후 고객들에게 거래를 자제하고 자산을 인출하거나 옮길 것을 부탁하여 예탁 금액 1조 9,000억 원에서 3억 원 수준으로 99.9%가 이관되면서 일반 투자자의 피해는 피하게 되었다. 그러나 거래소 회원사에 피해를 주게 되었고 2015년 2월 16일 파산했다. 이 사건 이후 한국거래소는 실시간 호가제한, 착오거래 구제제도, 사후증거금 요건 인상 등의 제도를 만들었다.[7][8]
주가조작[편집]
스푸핑, 쿼트스터핑 등의 고빈도매매를 이용한 주가조작 가능성이 있다. 허수의 매도매수 주문을 대량으로 넣고 취소하여 주가와 거래량을 왜곡시키거나 거래 시간을 지연시킨다. 2010년 5월 6일 미국 다우존스 산업평균지수 플래시 크래시를 일으킨 주범으로 단 하루 만에 1,000포인트 이상을 폭락시켰다.[4]
역사[편집]
금융시장의 전산화는 1970년대 초에 시작되었다. 뉴욕 증권거래소에서 지정주문전환시스템(DOT; Designated Order Turnaround)의 도입해 주문을 적절한 거래소에 전달했다. 개장자동보고시스템(OARS; Opening Automated Repoting Service) 도입으로 전문가들이 시장개시가격(SOR; Smart Order Routing)을 결정하는 데 도움을 주었다.
1980년대 S&P 지수와 차익거래에 프로그램 매매가 사용되었다. 뉴욕증권거래소에서 프로그램 매매를 총액 100만 달러 이상의 주식 15개 이상을 매매할 때로 정의했다. 대한민국에서 프로그램 매매는 한 계좌에서 15개 이상의 주식 종목을 동시에 주문하려는 경우 시장 본부에 프로그램 매매로 신고해야 한다는 규정이 있다.[3]
1987년 블랙 먼데이의 원인으로 알고리즘 트레이딩이 범인으로 지목받았다. 인덱스 펀드가 수익률 관리를 위해 프로그램 매매를 대량으로 이용하고 있었기 때문인데, 프로그램 매매 중심의 거래가 주식시장 붕괴에 미치는 영향이 분명하지 않아 학계에서 광범위하게 논의되고 있다.
1980년대 후반에서 1990년대 사이에 완전히 전자적으로 실행되는 전자증권거래시스템(ECN; Electronic communication network)을 갖춘 금융 시장이 개발되었다.
2001년 미국에서 주식호가단위(Tick)의 최소 단위를 주당 1/16달러(0.0625달러)에서 주당 0.01달러로 호가십진법화시켰다. 입찰가와 주문가의 차이를 적게 허용하여 시장주의 거래 우위를 떨어뜨리고 시장 유동성이 증가하도록 시장 미시구조를 바꾸었다. 이에 알고리즘 트레이딩이 증가하여 시장 유동성이 증가했고 기관거래자는 컴퓨터 알고리즘에 따라 주문을 분할하여 더 나은 평균 가격으로 주문을 실행할 수 있게 되었다. 컴퓨터가 시간 가중평균가격(TWAP) 또는 거래량 가중평균가격(VWAP)을 측정, 계산해 알고리즘에 적용한다.
2001년 IBM 연구팀이 국제 인공지능 공동회의에서 금융시장에 사용되는 전자거래를 실험한 결과 나온 두 가지 알고리즘에 관한 논문을 발표했다. 두 알고리즘은 IBM의 MGD와 휴렛팩커드의 ZIP으로 MGD는 1996~1997년 경제학자 스티븐 예르스타드(Steven Gjerstad)와 경제학자 존 딕하우트(John Dickhaut)가 발명한 GD알고리즘의 개정판이고 ZIP알고리즘은 1996년 데이브 클리프(Dave Cliff) 교수가 휴렛팩커드에서 발명한 알고리즘이다. 이 두 알고리즘은 일관적으로 사람보다 매년 수십억 달러 수준의 우위를 나타내는 것으로 측정된다고 했다.
이후 더 많은 전자 거래시장이 열리면서 다양한 알고리즘 전략이 도입되었다. 투자 전략은 사람보다 컴퓨터에 유리한데 컴퓨터가 일시적인 시장 간 가격 차이에 빠르게 반응하고 여러 시장의 가격을 동시에 확인할 수 있기 때문이다. 이 알고리즘 전략은 차익거래, 통계차익거래, 추세 추종 전략, 평균회귀, 카멜레온, 스텔스, 스나이퍼와 게릴라 등이 있다. 여기서 차익거래, 평균회귀 등은 전통적인 전략이고, 카멜레온, 스텔스, 스나이퍼와 게릴라 등은 증권사만의 투자 전략이다.
2006년 미국과 유럽 주식 거래량의 30%, 2008년 60%, 2010년 80%, 2012년 85%, 외환시장의 25%, 옵션 거래량의 20% 정도가 알고리즘 트레이딩이나 프로그램 매매로 이뤄졌다.
2010년 미국증권거래위원회(US Securities and Exchange Commission)와 상품선물거래위원회(Commodity Futures Trading Commission)의 보고서에 따르면 뮤추얼펀드 회사가 입력한 알고리즘 트레이딩과 고빈도매매가 2010년 5월 6일 미국 다우존스 산업평균지수 플래시 크래시를 만들었다고 보고되었다. 이 사건으로 다우존스 지수가 1,000포인트 이상 하락했다. 사건 5년 후 런던 거주 개인투자자 나빈더 싱 사라오(Navinder Singh Sarao)가 체포되었는데 프로그램을 이용하여 S&P500 선물시장에 허수 주문을 내고, 실제로 계약을 체결하지는 않는 방식으로 시세를 조작한 것으로 드러났다.
현재 알고리즘 트레이딩은 지연시간이 짧은 초저지연 근접 호스팅과 글로벌 교환 연결에 대한 새로운 시장을 만들고 있다. 전자거래 전략을 짤 때 지연시간이 얼마인지 확인하는 것이 필수적이다. 이 지연시간은 거래에 걸리는 모든 시간으로 이 지연시간을 줄일수록 남들보다 빠른 거래가 가능해진다.[4]
알고리즘 트레이딩 전략[편집]
알고리즘 트레이딩은 대표적으로 기술적 분석 기반 거래와 차익거래를 이용한다.[1]
기술적 분석 기반 거래[편집]
기술적 분석 기반 거래는 기술적 지표(Technical Indicator)나 일정 기간의 정보를 담고 있는 캔들을 분석하여 거래한다. 기술적 분석 기반 전략은 추세 추종 전략(Trend Following Strategy)과 역추세 전략(Counter-Trend Strategy) 두 가지로 구분할 수 있다.[1]
추세 추종 전략[편집]
추세 추종 전략(Trend Following Strategies)은 특별히 추세 예측을 하지 않고 중장기적으로 형성된 추세가 앞으로도 유지될거라 판단하고, 그 추세의 방향과 같은 방향에 포지션을 구축하는 전략이다. 추세 추종 전략에서는 이동평균선, MACD, RSI(Relative Strength Index)와 같은 기술적 지표를 이용한다. 대표적인 추세 추종 전략으로는 이동평균선 교차 전략이 있다.[1]
역추세 전략[편집]
역추세 전략은 단기적 혹은 중기적으로 추세와는 반대로 가격이 움직일거라 판단하고, 지금까지의 추세의 방향과는 반대 방향에 포지션을 구축하는 전략이다. 역추세 전략은 일정 기간 동안 주가가 형성한 스프레드를 보고 시장의 과열이나 침체를 판단한다. 여기서 일정 기간은 대체로 짧은 기간이며 거래 방식은 스캘핑이 대다수를 차지한다. 역추세 전략에서는 캔들에 내포된 저가나 고가를 이용하기도 하고 RSI 같은 기술적 지표를 이용하기도 한다.[1]
차익거래[편집]
차익거래는 두 개의 시장에서 가치가 다른 동일한 물건이 있을 때 싼 곳에서 구매하고 비싼 곳에서 파는 방식으로 무위험 이익을 내는 것을 말한다. 일물일가의 법칙이 깨진 틈을 사용해서 무위험으로 추가이익을 내는 것이다. 일반적으로 알고리즘 트레이딩을 이용해 차익거래와 비차익거래를 하는 것을 프로그램 매매라고 부른다.
통계적 차익거래[편집]
통계적 차익거래는 두 시장 혹은 두 종목 간의 가격인 스프레드를 차이를 통계적으로 분석해 통계적으로 유의미한 스프레드를 벗어났을 때 스프레드가 다시 정상 범위로 돌아오는 것을 이용하여 포지션을 구축하는 전략이다. 통계적 차익거래는 페어 트레이딩에 속한다.
페어 트레이딩[편집]
페어 트레이딩(Pair trading)은 일반적으로 두 종목 간의 스프레드를 이용한다. 시장중립적인 전략으로 스프레드가 통계적으로 유의미한 범위를 이탈했을 때 정상 범위로 돌아올 것을 기대하고 포지션을 구축한다. 여기서 포지션을 구축할 때는 서로 반대 방향의 포지션이야 하며, 이때 적절한 헤지(Hedge)를 통해 현재 스프레드 값과 정상 범위일 때의 스프레드 값만큼의 차익을 얻는다. 스프레드가 평균으로 돌아올 것을 이용하기 때문에 평균회귀 전략이라고도 불린다. 전통적인 차익거래와 달리 일물일가의 법칙은 가격 차이의 수렴을 완전히 보장할 수 없기 때문에 사실상 수렴되지 않을 수도 있다. 시장위험이 있고 큰 스프레드가 나타나며 유동성이 감소하면 장기간 수익이 나지 않을 수도 있다. 넓은 범주의 통계적 차익거래, 수렴거래, 상대적 가치 전략 등이 속한다.[1][4]
평균회귀[편집]
일반적으로 주가는 등락을 반복하는데 이 등락에는 특별한 이유가 없기도 하다. 떨어졌다가 다시 오르고, 올랐다 다시 떨어지며 제자리를 찾는 현상이 관찰되는데 주가의 높은 가격이나 낮은 가격이 모두 일시적이며 모든 주가가 시간이 지남에 따라 평균 가격을 갖는 경향이 있는 것을 평균회귀라 말한다. 대표적으로 오른스타인-울렌벡 확률 방정식을 따른다. 평균회귀는 먼저 주식의 거래 범위를 판단하고 자산, 수입 등과 관련한 분석기법을 사용해 평균 가격을 계산한다. 현시가가 평균보다 낮으면 가격이 상승할 것으로 예측되어 매수하고 높다면 가력이 하락할 것으로 예측하여 매도한다. 가장 최근 가격의 표준 편차는 매매 지표로 사용된다. 많은 거래소에서는 일반적으로 이동평균선을 제공한다. 이동평균선을 보고 높은 가격과 낮은 가격을 식별해야 한다.
인덱스 펀드 재조정 전 거래[편집]
인덱스 펀드 리밸런싱(Index Fund Rebalancing) 전략이라고도 하며 인덱스 펀드는 구성 종목을 상대적인 벤치마크 인덱스에 맞추는데 기초 증권의 새로운 가격과 시가총액에 맞추어 주기적으로 재조정하거나 포트폴리오를 조정한다. 이 때 구성 주식 수에 따라 20~80 베이시스 포인트를 얻을 수 있는 기회가 생긴다.[5] 이때 소극적인 투자자(회사 경영에 참여하지 않는 투자자)는 손해를 보고 활동적인 투자자(회사 경영에 참여하는 투자자)는 이익을 본다.[4]
델타 중립 전략[편집]
금융에서 델타중립(delta-negrative)은 관련 금융증권의 포트폴리오를 의미하는데, 이 포트폴리오의 가치는 기초적인 보안의 가치에 작은 변화로 인해 변동이 생긴다. 그러한 포트폴리오에는 일반적으로 옵션과 해당 옵션의 기초증권이 포함되며, 이 증권 조합의 거래를 통해 +델타와 -델타로 인해 델타요소가 상쇄되며, 결과적으로 포트폴리오의 가치는 기초 보안의 가치 변동에 상대적으로 둔감하게 된다.[4]
거래 비용 절감[편집]
유동성 매매라고 하는 대부분의 전략은 비용 절감을 목표로 하는 대부분의 전략에 속한다. 기본적으로 대규모 주문을 작은 주문으로 나눠 일정 간격으로 매매를 하는 것이다. 다양한 요인에 따라 알고리즘이 달라지는 데 가장 중요한 것은 주식의 유동성이다. 유동성 주식의 경우 전체 주식 주문의 일정 비율을 매매하는 것(볼륨 인라인 알고리즘)이 좋은 방법이지만, 비유동적인 주식의 경우 모든 유리한 가격(유동성 추구 알고리즘)에 주문을 넣는다. 이 알고리즘의 예로는 거래량 가중평균가격(VWAP), 시간 가중평균가격(TWAP), 거래량비율(POV), 임플리멘테이션 숏폴(Implementation Shortfall), 스텔스 등이 있다.[4]
거래량 가중평균가격[편집]
거래량 가중평균가격(VWAP; Volume Weighted Average Price)은 거대한 주문을 특정 거래량에 따라 잘게 나누어 평균치를 재는 기술적 분석이다. 차트의 전반적인 방향을 결정하는 데 쓰이며 가격이 VWAP 위이면 오르고, 아래면 내릴 것으로 예측하는 점에서 이동평균선과 비슷하다.[5]
시간 가중평균가격[편집]
시간 가중평균가격(TWAP; Time Weighted Average Price)은 거대한 주문을 시작과 종료 시점 사이에 일정하게 시간을 나누어 슬롯을 잘게 나누어 평균치를 재는 기술적 분석이다. 시작과 종료 시점 사이의 평균 가격에 가깝게 주문을 넣어 시장의 영향을 최소화하고자 하는 것이다.[5]
거래량 비율[편집]
거래량 비율(POV; Percentage of Volume)은 일정기간 주가 상승 일의 거래량과 주가 하락 일의 거래량과의 백분율로 거래 주문이 완전히 체결될 때까지 미리 정의된 비율과 거래량에 따라 부분적인 주문을 지속해서 보내어 주식의 가격이 사용자가 정의한 수준에 도달할 때까지 거래량과 참여 비율을 증가시키거나 감소시키는 주문을 보내는 방법이다.[5]
임플리멘테이션 숏폴[편집]
임플리멘테이션 숏폴(Implementation Shortfall) 전략은 주문 실행 비용을 최소화하는 데 목적을 두고 있다. 지연된 실행 기회비용을 통해 주문 비용을 절약하여 이익을 얻는다. 이 전략은 주식의 가격이 유리하게 흐르면 참여 비율을 증가시키고 가격이 불리하게 흐르면 비율을 감소시킨다.[5]
다크풀[편집]
다크풀은 주식을 장외에서 익명으로 대량 매매하는 거래 기법을 말한다. 다크풀은 장외거래이기 때문에 공개시장의 흐름과 관련이 없으나 시장에서 표시되지 않은 유동성을 제공한다. 다크풀에서는 대부분의 주문이 비공개로 진행되거나 전자적으로 거래되어 익명으로 거래가 이뤄지며 대부분은 비공개이거나 "얼음" 상태(고정상태)이다. 거래자들은 매매할 소액 주문을 핑(Ping)하여 대량 주문 스니핑(Sniffing)을 한다. 이것은 소량의 주문을 넣어 숨겨진 대량 주문을 파악하는 것이다. 반복된 소액 주문이 채워져 거대한 "빙산" 주문이 된다.[4]
스캘핑[편집]
스캘핑은 시장이 아닌 세력에 의한 유동성 공급으로 초단타거래를 의미한다. 가격 변동이 특정 스프레드보다 적은 한 이익을 얻을 수 있도록 하여 일반적으로 몇 분 이내에 신속하게 포지션을 정하고 매매를 하는 것이다. 마켓 메이커는 기본적으로 전문 스캘퍼 집단이다. 거래소가 하는 스캘핑의 양은 개인투자자의 몇 배 이상이며 더 정교한 거래 시스템과 기술을 이용한다. 그렇기에 등록된 마켓 메이커는 최소한의 견적 의무를 규정한 교환 규칙이 있다. 예를 들어 나스닥은 증권 양면시장을 유지하기 위해 적어도 하나의 입찰가와 또 하나의 일반적인 가격 수준으로 게시해야 한다.[4]
하이테크 프론트러닝[편집]
하이테크 프론트러닝(Front-Running)이라 부르는 일반적인 알고리즘이 아닌 서로 다른 알고리즘을 파악하는 특별한 종류의 알고리즘이 있다. 어떠한 낌새를 알아채는 알고리즘은 매도 포지션의 마켓메이커가 매도 포지션의 대규모 주문을 수행하는 알고리즘을 파악한다. 알고리즘을 통한 감지는 마켓메이커가 대규모 주문에 대한 기회를 파악하고 높은 가격에 해당 주문을 체결해 이익을 얻게 한다.
고빈도매매[편집]
고빈도매매(HFT; High-Frequency Trading)는 극초단타 매매라고도 불리는 초단타 매매의 일종으로 단일된 정의는 없지만, 고도로 정교한 알고리즘을 이용하여 전문화된 주문, 일관된 포지션, 초단타 매매, 높은 주문 취소율 등을 특징으로 한다. 극히 높은 빈도와 밀도를 가진 초단타매매 기법으로 알고리즘 트레이딩을 대표하는 전략이다. 미국에서 초단타 기업은 전체 기업의 2%밖에 되지 않지만, 전체 주식 거래량의 73%를 차지한다. 이러한 고빈도매매는 대부분이 마켓 메이커이며 시장에 유동성을 공급하는데, 이는 변동성을 낮추고 매도매수의 좁은 스프레드를 유지하여 다른 시장 참여자들이 더 저렴한 가격으로 투자할 수 있도록 도왔다. 고빈도매매는 미국증권거래위원회와 상품선물거래위원회가 2010년 플래시 크래시의 원인으로 지목한 이후 대중의 관심을 받게 된다.[4]
고빈도매매는 주문 흐름에 근거한 시장조성(Market making), 틱 데이터 정보에 근거한 시장조성(Market making), 이벤트 차익거래, 통계적 차익거래 네 가지의 주요 범주가 있다.
시장조성[편집]
시장조성은 매도매수 스프레드를 포착하기 위해 현재 시장 가격보다 높은 가격이나 낮은 가격에 지정가 주문을 배치하는 것을 말한다. 매도매수가 진행되면 스프레드 안에 포함되고 진행되지 않으면 스프레드 안에 포함되지 않을 것으로, 이 스프레드 사이에 알고리즘 트레이딩을 이용한 매도매수 주문을 넣어 초단타매매를 반복하는 것이다.[4]
이벤트 차익거래[편집]
이벤트는 두 개 이상의 금융상품 가격, 비율 조정이나 파산, 합병, 인수 등과 같은 기업의 사건을 말한다. 위험재정거래 중 하나인 합병차익거래를 예시로 들면, 보통 인수할 기업의 주식을 매도하여 인수 대상 기업의 주식을 매수한다. 그 이유는 인수 될 기업의 주식 가격이 낮기 때문인데, 가격이 낮은 건 다른 기업과의 인수합병이 이뤄지지 않을 가능성도 있기 때문이다. 같은 이유로 안수할 기업과 인수 될 기업의 가격 차이인 스프레드 역시 인수가 완료될 시기, 금리 수준에 따라 시시각각으로 변한다. 인수가 완료되면 스프레드가 수렴하여 0이 되고 그만큼 이익을 얻을 수 있다. 인수가 완료되지 않으면 스프레드가 확산해 큰 손실을 본다.
통계적 차익거래[편집]
가장 기본적인 차익거래 전략으로 채권, 외환, 선물 등의 가격 차이를 이용한다. 통계적으로 유의미한 관계와 편차에 기초하여 거래를 결정하기 때문에 모든 자산과 상품에 적용할 수 있다.
스푸핑[편집]
스푸핑(Spoofing)은 대량의 허위 매도매수 주문(자전거래 등)을 내서 자산을 낮은 가격에 매수하거나 높은 가격에 매도하는 행위다. 주문이 취소되거나 철회될 때 거짓 비관주의를 만들거나 거짓 제안이나 주문으로 생기는 거짓 낙관주의나 수요를 만들어 일반 투자자들이 자산의 가격이 오를 것으로 착각하게 만든 뒤 높은 가격에 자산을 팔아 넘기고 매수 주문을 취소하는 것이다. 2010년 미국 다우존스 산업평균지수 플래시 크래시를 일으킨 주범으로 대부분의 금융시장에서 금지되었다.[4][9]
쿼트스터핑[편집]
쿼트스터핑(Quote stuffing)은 대량의 허위 매도매수 주문을 내자마자 즉시 취소하는 행위로 주가와 거래량을 왜곡시켜 증시가 불안정 시키는 행위다. 컴퓨터를 이용해 대규모 주문을 한 번에 넣고 취소하는 것이 가능해져서 생긴 기법으로 대규모의 주문을 넣고 취소하는 과정에서 생기는 가격 데이터 갱신을 지연시킨다. 고빈도매매 세력은 지연시킨 시간 동안 차익거래를 하여 이익을 얻을 수 있다. 2010년 미국 다우존스 산업평균지수 플래시 크래시를 일으킨 주범으로 대부분의 금융시장에서 금지되었다.[4]
시스템 아키텍처[편집]
기존의 거래 시스템은 주로 시장 데이터를 수신하고 주문 요청을 보내는 두 개의 요소로 나뉜다. 그러나 알고리즘 트레이딩 시스템은 세 부분으로 나눌 수 있다.
- 교환기(Exchange)
- 서버(The server)
- 애플리케이션(Application)
교환기는 최신 주문서, 거래량, 종가 등의 데이터를 시스템에 제공한다. 서버는 데이터를 수신받아 기록하는 데이터베이스 저장소 역할을 하며 이 데이터를 애플리케이션에서 분석하여 거래 전략을 사용자에게 제공해 GUI로 볼 수 있게 한다. 주문이 생성되면 주문관리시스템(OMS; Order Management System)에 보내지고 주문을 교환기에 전송한다. 추가로 복합 이벤트 처리(CEP; Complex Event Processing) 엔진이 주문 라우팅과 위험 관리를 위해 사용된다.[4]
기술적 요구사항[편집]
알고리즘을 컴퓨터 프로그램으로 실행하기 위해서 필요한 기술사항은 다음과 같다.
- 트레이딩 전략(Trading Strategy)
- 전략 백테스팅(Strategy Backtesting)
- 트레이딩 소프트웨어(Trading Software)
- 위험 관리(Risk Management)
- 트레이딩 전략(Trading Strategy)
알고리즘 트레이딩을 수행하기 위해선 사용할 알고리즘을 짜기 위해 필요한 거래 전략이 필요하다. 현재 시장에는 수많은 데이터의 축적과 디지털 미디어의 등장, 인터넷 기술의 발달로 인해 다양한 알고리즘 트레이딩 전략을 쉽게 접할 수 있다. 사이트, 블로그, 웹포럼, 학술 논문, 잡지 등 다양한 미디어에서 전략을 접할 수 있다. 이러한 전략은 위에 나열한 것과 같은 차익거래, 페어 트레이딩 등의 전통적인 매매 전략과 스텔스, 스나이퍼와 게릴라와 같은 특정 증권사에서 운용하는 전략 등이 있다.
- 전략 백테스팅(Strategy Backtesting)
벡테스팅(Backtesting)이란 자신의 트레이딩 전략을 과거 데이터에 입혀보아 어느 정도의 성과를 내는지 확인하는 과정을 말한다. 자신이 설계한 알고리즘 전략에 따른 이익이나 손실을 확인하기 위해 과거 혹은 실시간 데이터를 적용하여 알고리즘을 테스트해볼 수 있다. 과거의 데이터 혹은 현재의 데이터에 입력한 알고리즘을 실행하여 성과를 보는 것이므로 앞으로도 유의미한 성과를 낸다는 보장은 없으나 백테스팅의 목적은 전략 자체의 논리적 합당성, 최적화, 오류 검출 등에 있다. 백테스팅을 하기 위해서는 과거 데이터를 수집해야 하고 파이썬이나 C++과 같은 프로그래밍 언어를 이용해 백테스팅 시뮬레이터를 구축하거나 백테스팅 소프트웨어를 사용해야 한다. 백테스팅 후에는 최대 낙폭(MDD; Maximum Draw-Down), 샤프 비율(Sharpe Ratio) 같은 계량적 지표(Quantitative Metrics)들을 이용하여 과거 성과의 수익성과 안정성을 종합적으로 고려한다. 만약 이러한 전략 백테스팅 과정에서 성과가 안정적으로 나오고 각종 편향과 오류로부터 벗어났다는 판단이 들면, 이러한 전략을 실제로 프로덕션(Production)하는 과정으로 넘어가게 된다.[10]
- 트레이딩 소프트웨어(Trading Software)
트레이딩 소프트웨어는 매매부터 현재 시장 가격을 비롯한 다양한 정보를 읽을 수 있는 프로그램을 말한다. 소프트웨어는 크게 수동(Manual), 반자동(Semi-Manual), 자동(Automated)과 같이 세 가지로 나뉜다. 저빈도매매(LFT; Low-Frequency Trading)를 하는 트레이더는 수동이나 반자동 기법을 사용하며, 고빈도매매(HFT; High-Frequency Trading)를 하는 트레이더는 대부분 자동화된 프로그램을 사용한다.[10]
프로그램에서 고려될 점은 사용자 인터페이스(User Interface) 구축, 거래 비용(Transaction Cost) 고려, 성과 괴리(Performance Divergence) 분석 등이 있다. UI를 구축할 때 어떤 언어로 매매 시스템을 구현할 것인지 고려해야 한다. 최근에는 프로그램을 구축할 수 있도록 증권사가 Open API를 제공하고 있다. 거래 비용을 고려하는 것은 매매가 진행할 때마다 거래 비용을 지불해야 하기 때문에 작은 수수료가 누적되어 큰 차이가 생기지 않도록 고려해야 한다. 성과 괴리는 백테스팅을 진행하여 얻은 성과와 실제 투자를 통해 얻은 성과 간의 괴리를 분석하는 과정으로 이러한 괴리가 발생하는 것은 다양한 시장 요인에 의해 발생한다. 알고리즘 자체에 오류가 있을 수도 있고 시장의 전반적인 분위기나 투자 심리의 변화 등으로도 괴리가 생기게 된다.[10]
이후 프로그램을 사용하여 종목에 대한 가격 정보 확인하고 이익을 얻을 수 있는 구간에서 알고리즘이 작동하여 매매를 진행했을 때 알고리즘대로 실행되었다면 이익을 얻을 수 있어야 한다.
- 위험 관리(Risk Management)
위험은 시장위험, 유동성, 변동성 위험 등의 모든 발생 가능한 위험을 의미한다. 주문실수로 인한 손실, 네트워크 연결 에러, 시간 지연 등이 있고 가장 중요한 것은 불완전한 알고리즘이 해당한다. 알고리즘이 복잡할수록 실제 매매를 하기 전에 엄격한 백테스팅이 필요하다.[5]
프로그램[편집]
대부분의 알고리즘 전략은 툴박스나 현대 프로그래밍 언어를 사용하여 알고리즘 트레이딩 프로그램으로 제작해 구현하지만, 일부는 여전히 엑셀, 구글 등의 스프레드시트로 설계된 전략을 구현한다.
직접 개발하는 방법은 C나 R을 이용하여 개발한다. 금융시장의 단위 속도를 다른 언어로 따라가는 것이 어렵기 때문이다. 대한민국에서는 개인 투자자들 사이에서 파이썬과 증권사 Open API를 활용해 프로그램을 짜는 경우가 많다. 2017년 파이썬으로 배우는 알고리즘 트레이딩이라는 책이 한국에 발간되며 개인 투자자 사이에 빠르게 보급되었다. 직접 개발하기에 난이도가 높고 백테스팅을 위한 과거 데이터를 직접 얻어야 하는 단점이 있다.[3]
툴박스를 이용한 방법은 이미 개발된 프로그램을 이용해 프로그램에서 자체적으로 제공하는 언어(스크립트)를 이용하여 프로그래밍을 하는 것으로 직접 개발하는 것에 비해 시간과 자원이 덜 소모되고 백테스팅을 위한 과거 데이터를 구하지 않아도 되는 장점이 있으나 직접 개발하는 방법에 비해 자유도가 낮다는 단점이 있다.[3]
나스닥에서는 FIX(Financial Information Exchange) 프로토콜의 등장으로 통일된 시스템 아키텍처를 가지게 되었다. 대형증권사와 자산운용사가 사용하는 알고리즘은 FIX 프로토콜의 알고리즘 거래 정의 언어(FIXatdl)를 사용해 작성되어 FIX 프로토콜을 통해 주문을 거래 시스템에서 전송할 수 있다. 새로운 거래소나 목적지, 다른 거래소끼리의 연결이 쉬워지고 지연시간이 단축되었고 제3자 공급업체의 통합이 번거롭지 않게 되었다. FIX 기본 모델은 투자에 있어서 선형 회귀 분석만큼 적게 사용할 수도 있고 복잡한 게임 이론 및 패턴 인식 또는 예측 모델을 사용하여 거래할 수도 있다. 마르코프 체인 몬테카를로(MCMC; Markov Chain Monte Carlo)와 같은 더 복잡한 방법들이 이 모델을 만드는 데 사용됐다.[4]
Open API[편집]
대형증권사들이 사용자가 직접 알고리즘 트레이딩 프로그램을 제작할 수 있는 Open API를 제공한다.[3][11]
증권사 | API 이름 | API 형식 | 개발환경 | 거래종목 |
---|---|---|---|---|
대신증권 | CybosPlus | COM | C#, C++, Python 등 | 주식, 선물옵션 등 |
이베스트투자증권 | xingAPI | COM, DLL | VB, C#, C++ 등 | 주식, 선물옵션 등 |
키움증권 | 키움 Open API+, 키움 OpenAPI-W | COM | C, C++, VB 등 | 주식, 선물옵션 등 |
신영증권 | d-EOS LINK | DLL | VB, C, C++ 등 | 선물옵션, ELW 등 |
NH선물 | NH선물 API | DLL, COX | 선물옵션 | |
NH투자증권 | QV Open API | DLL | C++ | 주식, 선물옵션 등 |
SK증권 | W-API | |||
한국투자증권 | eFriend Expert | OCX | VB, C++ 등 | 주식, 선물옵션 둥 |
미래에셋대우 | AnyLink | VC++, VB, EXCEL 등 | ||
삼성증권 | FnGate | DLL | VC++ 등 | 선물, 옵션 등 |
하나대투증권 | 1Q Pro | OCX | VB, C#, EXCEL 등 | 선물, FX마진 등 |
영향[편집]
알고리즘 트레이딩의 등장으로 사람이 수행할 작업을 컴퓨터가 수행하게 되었고 마이크로 단위의 시간으로 거래가 되어 컴퓨터 연결속도는 매우 중요해졌다.
미국 나스닥(NASDAQ), 다이렉트 에지(Direct Edge) 등의 완전 자동화 주식시장은 뉴욕증권거래소와 같은 자동화가 비교적 덜된 시장의 점유율을 뺏어왔다. 전자거래는 거래 수수료를 낮추는 데 기여했고 국제 거래시장의 통합을 촉진했다.
거래의 빠른 지연시간 처리를 위해 거래소 간 시스템 개발의 경쟁이 생겼다. 이러한 시스템 개발의 경쟁이 생기며 금융 업계에서 일하는 사람들의 유형을 변화시켰다. 많은 물리학자가 양적 분석가로서 금융 산업에 진출하였고 물리학과 경제학을 접목한 연구가 진행되어 물리경제학(Econophysics)라는 새로운 학문이 생겼다. 일부 연구자들은 알고리즘 트레이딩을 하는 사람들과 전통적인 투자자들 사이의 문화적 차이를 연구했다. 시스템을 개발하는 프로그래머와 엔지니어들의 금융 업계 진출이 많아졌으며 투자에 관해서는 데이터에 대한 중요도를 높이고 심리적인 분석의 중요도를 낮췄다.[4]
이렇게 전통적인 금융 거래 방식이 아닌 금융과 공학을 연결한 알고리즘 트레이딩을 하는 사람을 퀀트 트레이더라고 부른다.
동영상[편집]
각주[편집]
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 〈알고리즘 트레이딩〉, 《위키백과》
- ↑ 2.0 2.1 2.2 〈알고리즘 트레이딩〉, 《네이버 지식백과》
- ↑ 3.0 3.1 3.2 3.3 3.4 〈알고리즘 트레이딩〉, 《나무위키》
- ↑ 4.00 4.01 4.02 4.03 4.04 4.05 4.06 4.07 4.08 4.09 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 〈Algorithmic trading〉, 《Wikipedia》
- ↑ 5.0 5.1 5.2 5.3 5.4 5.5 5.6 Paul, Jongmin Yoo, 〈알고리즘 트레이딩의 기초: 개념과 예시〉, 《미디엄》, 2018-02-26
- ↑ 양미경 기자, 〈美 NYTE 거래중단 사태 나이트캐피털 '위기'〉, 《이데일리》, 2012-08-03
- ↑ 〈한맥투자증권〉, 《나무위키》
- ↑ 〈한맥투자증권 파산선고…462억 주문실수 432일만〉, 《뉴스1》, 2015-02-17
- ↑ 〈스푸핑〉, 《네이버 지식백과》
- ↑ 10.0 10.1 10.2 Irrational Alchemist , 〈알고리즘 트레이딩 프로세스〉, 《네이버 블로그》, 2018-02-05
- ↑ 유브갓, 〈시스템트레이딩 코딩가능한 증권사 제공모듈 - 2016년 7월 기준 API,DMA 서비스 정리.〉, 《네이버 블로그》, 2008-09-23
참고자료[편집]
- 〈알고리즘 트레이딩〉, 《네이버 지식백과》
- 〈스푸핑〉, 《네이버 지식백과》
- 유브갓, 〈시스템트레이딩 코딩가능한 증권사 제공모듈 - 2016년 7월 기준 API,DMA 서비스 정리.〉, 《네이버 블로그》, 2008-09-23
- Irrational Alchemist , 〈알고리즘 트레이딩 프로세스〉, 《네이버 블로그》, 2018-02-05
- 〈알고리즘 트레이딩〉, 《나무위키》
- 〈한맥투자증권〉, 《나무위키》
- 〈알고리즘 트레이딩〉, 《위키백과》
- 〈Algorithmic trading〉, 《Wikipedia》
- 〈한맥투자증권 파산선고…462억 주문실수 432일만〉, 《뉴스1》, 2015-02-17
- 양미경 기자, 〈美 NYTE 거래중단 사태 나이트캐피털 '위기'〉, 《이데일리》, 2012-08-03
- Paul, Jongmin Yoo, 〈알고리즘 트레이딩의 기초: 개념과 예시〉, 《미디엄》, 2018-02-26
같이 보기[편집]