Algorithmic Trading Overview
알고리즘 트레이딩의 개요
- System Trading, Algo Trading, Blockbox Trading이라고도 불린다.
- 사람이 아닌, 프로그램에 의해 진행되는 거래를 의미한다.
- 일반적으로, 증권시장에서 거래하는 "외국인"은 외국 사람이 아닌,
기관이나 헤지펀드에서 사용하는 알고리즘 트레이딩 프로그램인 경우가 대부분이다.
- 2012년 미국에서는 알고리즘 트레이딩 프로그램에 의한 거래가 `전체 거래의 85%를 차지할 정도로 일반화되었다.
- William M. Grove와 David H. Zald등이 작성한 <Clinical versus Mechanical Prediction; a meta-analysis>에 의하면,
증권시장에서 수학적 모델이 사람과 비슷하거나, 사람보다 더 좋은 결과를 도출할 확률이 94%임을 확인했다.
- 알고리즘 트레이딩의 최강점으로 빠른 속도와 무감정이 있다.
- 주가 변화에 빠르게 대처하여 HFT(High Frequency Trading; 고빈도 매매)를 통해 수익을 창출할 수 있고,
사람과 달리 감정이 없어 합리적 판단을 통한 투자가 가능하다.
- 알고리즘 트레이딩으로 인해 비정상적인 많은 거래가 발생되어 시장의 교란이 발생되는 등 부정적인 면도 존재한다.
(Momentum을 이용한 모델들이 동시에 매도를 결정하게 되면, 해당 종목의 주가가 폭락하는 일이 발생한다.)
- 주식시장은 쉽게 데이터를 얻을 수 있고, 데이터들의 신뢰도가 높으며, 예측이 어렵다는 특징으로 인해
머신러닝 기술의 전체 흐름을 경험할 수 있게 하는 최적의 도메인 중 하나라 할 수 있다.
History of Algorithmic Trading (알고리즘 트레이딩의 역사)
- 아래는, 알고리즘 트레이딩의 발전의 중심에 있었던 인물들이다.
Edward Thorp (에드워드 소프)
- 알고리즘 트레이딩의 1세대
- 월스트리트에서 최초로 수학과 IT 시스템을 이용해 펀드를 운영했다.
- 1970년부터 1998년까지 투자회사 Princeton Newport Partners를 운영하며
단 한 번의 손실 없이 연평균 20% 수익률을 냈다.
- Kelly Criterion (켈리 방정식)의 신봉자로, 켈리 방정식로 인해 성공적인 펀드 운영이 가능했다 주장하고 있다.
- Statistical Arbitrage(통계적 차익거래)에 기반을 둔 알고리즘 트레이딩 시스템을 주로 활용했다.
* Spread (스프레드; 차이)
- 은행) 대출 시, 덧붙여지는 금리 (스프레드 = 가산금리)
- 채권) 잔존 만기의 차이에 따른 채권 수익률의 차이
- 주식) 매도·매수 가격의 차이, 특정기간중 특정주식의 최저가·최고가의 차이
- 주식인수) 증권 발행자가 받는 금액과 투자자가 지불하는 가격의 차이
* Arbitrage (차익거래)
- 동일 상품이 지역에 따라 가격이 다를 때, 이를 매매하여 차익을 얻으려는 방법이다.
* Statistical Arbitrage (통계적 차익거래)
- 상관관계가 깊은 주식을 선택하고, Spread(매매가 차이)를 통계적으로 분석해
적절한 Hedge(헤지) 전략을 수립하여 주식을 매매하는 방법이다.
- Pairs Trading(페어트레이딩)이 대표적인 통계적 차익거래에 속한다.
James Harris Simons (제임스 해리스 사이먼스)
- 헤지펀드사 Renaissance Technologies의 설립자
- 금융지식보다 수학과 IT기술을 중시하였다.
- Trend Following(추세 추종) 기반 알고리즘 트레이딩 모델을 사용한 것으로 알려져 있다.
* Trend Following (추세 추종)
- 긴 흐름의 추세가 시작되면 이를 파악하여 상승 흐름에 올라타는 것을 목표로 한다.
- 오랜기간 사용된 모델로, 수학적 이론이 잘 정리되어 있어 널리 사용되고 있다.
Kenneth C. Griffin (케네스 그리핀)
- 전환사채에 대한 아이디어를 얻어, 합자회사 Convertible Hedge Fund #1를 시작했다.
- 또한, 헤지펀드 Citadel의 설립자이기도 한데, Citadel은 가장 성공한 헤지펀드라 평가받고 있다.
- Citadel은 IT 기술을 적극적으로 활용하여,
모델의 개발, 검증, 실제 거래에 까지 많은 과정을 자동화했고, HFT 영역을 개척했다는 평을 받고 있다.
EDA (Explonatory Data Analysis; 데이터 탐색 분석)
- 데이터에 대한 이해와 특성을 파악하는 작업을 지칭한다.
- 일반적으로, 머신러닝 기술을 이용해 프로그램을 작성하는 데,
머신러닝 알고리즘이 차지하는 비중보다는 EDA가 훨씬 중요한 포지션을 차지한다.
- 확률과 통계에 대한 수학적 지식을 기반으로 한다.
Algorithmic Trading Models (알고리즘 트레이딩 모델)
- 알고리즘 트레이딩에 사용되는 모델은 매우 다양하며 지금도 계속 개발되고 있다.
(Mean Reversion, Interday Momentum, Trend Following, Index Fund Rebalancing 등)
- Alpha Model(알파 모델)은 시장에서 평균보다 월등히 높은 수익을 내는 모델을 의미하고,
Beta Model(베타 모델)은 시장 평균 전후를 웃도는 수익을 내는 모델을 의미한다.
- 알고리즘 트레이딩에서 "모델"은 통상 알파 모델을 지칭하는 것이며,
이에 대한 접근 방법으로는 Theory Driven과 Data Driven 방식이 있다.
Theory-Driven Approach = Top-Down Approach
- 어떤 트레이딩 모델을 가정하고, 해당 모델의 맞고 틀림을 검증하여 알파 모델로 완성해 나가는 방법이다.
- Mean Reversion(평균 회귀)은 대표적인 Theory-Driven Approach의 모델이다.
* Mean Reversion Model (평균 회귀 모델) (URL)
Data-Driven Approach = Bottom-Up Approach
- 데이터 분석을 통해 패턴을 찾아 이를 알파 모델로 구현해 나가는 방법이다.
- 가설, 이론적 배경 없이 데이터를 분석하며 지식을 쌓아나가는 방법이다.
- 인간 게놈 프로젝트가 데이터 중심 접근법으로 진행되었다.
Time Decay Effect (시간가치 감소 효과)
- 시간이 지날수록 알파 모델이 처음에 가졌던 Edge(우위)가 퇴색되어가는 효과를 지칭한다.
- 높은 수익을 창출하는 알파 모델 개발에 성공했더라도, 지속적인 수익 창출을 위해서는
주기적인 테스트와 튜닝이 필수적이다.
시간가치 감소 효과의 발생 원인
1. 알고리즘 트레이딩의 일반화
- 많은 금융기관, 헤지펀드에서 알고리즘 트레이딩을 사용함으로써
나의 알파모델이 다른 알고리즘 트레이딩 시스템에 희석되거나,
Edge(우위)를 지속해서 선점하기 어려워졌다.
- HFT(High-Frequency Trading; 고빈도매매, 극초단타매매)가 인기를 얻고 있는 이유도 여기에 있다.
2. 표류하는 랜덤워크 모델을 따르는 주가
- 주가는 변동성이 일정하지 않은 모델이기 때문에
알파 모델을 적용한 초기에는 예측력이 높을지언정,
시간이 지날수록 변동성이 커져 해당 알파모델의 예측력은 당연히 낮아질 수 밖에 없다.
Python Libraries (파이썬 라이브러리)
NumPy
- 고차원 수학적 기능을 제공하는 오픈소스 파이썬 라이브러리이다.
- 벡터와 스칼라를 활용할 수 있고, DB와 연동하여 사용할 수 있다.
- ndarray 클래스를 통해, 다차원배열에 대한 빠른 처리 기능을 제공한다.
SCIPY
- 과학 연산에 필요한 기능을 제공하는 라이브러리이다.
- 최적화, 선형대수, 적분, FFT(Fast Fourier Transform, 고속 푸리에 변환) 등의 기능을 제공한다.
Pandas
- 금융 데이터 처리용 라이브러리이다.
- DataFrame 클래스를 통해 시계열 금융 데이터 처리에 필요한 각종 기능을 제공한다.
Matplotlib
- 그래프 작도, 데이터 시각화에 필요한 각종 기능을 제공하는 라이브러리이다.
- 그래프를 저장하거나 확대·축소하는 간단한 UI도 제공한다.
scikit-learn (sklearn)
- 파이썬 머신러닝 라이브러리이다.
- 딥러닝을 제외한 현존하는 거의 모든 머신러닝 알고리즘이 구현되어 있고,
데이터 처리와 머신러닝 학습결과를 분석하는 기능들도 제공하고 있다.
- 알고리즘에 관계없이, 사용법이 일관되어 직관적으로 이용할 수 있다.
Statsmodels
- 파이썬 통계 라이브러리이다.
- 데이터 탐색, 통계적 모델 추정, 통계 테스트 등 다양한 통계 관련 기능을 제공한다.
Reference: 머신러닝을 이용한 알고리즘 트레이딩 시스템 개발
(안명호, 류미현 저, 한빛미디어, 2016)