News & Events
이번 포스팅에서는 엔드 투 엔드 퀀트 트레이딩 시스템에 수반되는 몇 가지 기본 개념을 소개할 것이다. 이 포스팅은 희망컨대 두 종류의 독자에게 도움이 될 것이다. 첫번째는 퀀트 트레이더로서 펀드에 일자리를 얻으려는 사람들이 될 것이다. 두 번째는 자신만의 “리테일” 알고리즘 트레이딩 비즈니스를 설립하고자 하는 사람들이 될 것이다.
퀀트 트레이딩은 퀀트 금융에서 매우 정교한 분야이다. 면접을 통과하거나 트레이딩 전략을 수립하는 데 필요한 지식을 습득하는 데 상당한 시간이 걸릴 수 있다. 뿐만 아니라, 적어도 MATLAB, R 또는 Python과 같은 언어로 된 광범위한 프로그래밍 전문 지식이 필요하다. 그러나 전략의 거래 빈도가 증가할수록 기술적 측면은 훨씬 더 관련성이 높아진다. 따라서 C/C++에 익숙해지는 것이 가장 중요하다.
퀀트 트레이딩 시스템은 다음과 같은 4가지 주요 요소로 구성된다.
- 전략 식별 – 전략 찾기, 경쟁 우위 활용 및 거래 빈도 결정
- 전략 백테스트 – 데이터 수집, 전략 성과 분석 및 바이어스 제거
- 실행 시스템 – 중개업과 연계하여 거래 자동화 및 거래 비용 최소화
- 리스크 관리 – 최적의 자본배분, “베트 사이즈”/켈리 기준 및 거래심리
먼저 거래 전략을 파악하는 방법을 살펴보자.
전략 식별
모든 퀀트 트레이딩 과정은 초기 연구 기간에서 시작된다. 이 조사 과정에는 전략을 찾는 것, 실행 중인 다른 전략 포트폴리오에 적합한지 확인하는 것, 전략을 테스트하는 데 필요한 모든 데이터를 얻는 것, 그리고 수익 또는 위험 감소를 위해 전략을 최적화하는 것 등이 포함된다. 전략을 “리테일” 거래자로 운영하는 경우 거래 비용이 전략에 어떤 영향을 미칠지 고려해야 한다.
대중의 생각과는 달리, 다양한 공공 자원을 통해 수익성 있는 전략을 찾는 것은 실제로 꽤 간단하다. 학계는 이론적인 거래 결과를 정기적으로 발표한다(대부분 거래 비용의 총합). 퀀트 금융 블로그는 전략을 자세히 논의할 것이다. 트레이딩 잡지는 펀드에 사용되는 전략 중 일부를 개략적으로 다룰 것이다.
여러분들은 개인과 기업들이 왜 수익성 있는 전략을 논의하고 싶어하는지 의문을 가질 수 있다. 특히 다른 사람들이 “거래 혼잡”으로 인해 장기적으로 전략이 효과가 없을 수 있다는 것을 알고 있을 때 그렇다. 그 이유는 고객이 수행한 정확한 매개 변수와 튜닝 방법에 대해 자주 논의하지 않기 때문이다. 이러한 최적화는 비교적 평범한 전략을 수익성 높은 전략으로 전환하는 것이 핵심이다. 실제로 고유한 전략을 수립하는 가장 좋은 방법 중 하나는 유사한 방법을 찾아 자체 최적화 절차를 수행하는 것이다.
다음은 전략 아이디어를 찾을 수 있는 곳이다:
- Social Science Research Network – www.ssrn.com
- arXiv Quantitative Finance – arxiv.org/archive/q-fin
- Seeking Alpha – www.seekingalpha.com
- Elite Trader – www.elitetrader.com
- Nuclear Phynance – www.nuclearphynance.com
- Quantivity – quantivity.wordpress.com
여러분이 살펴볼 많은 전략들은 평균-회귀와 유행을 따르는 모멘텀의 범주에 속할 것이다. 평균 회귀 전략은 “가격 시리즈”(상관된 두 자산 사이의 확산 등)에 대한 장기 평균이 존재하고 이 평균으로부터의 단기 편차가 결국 되돌아가게 된다는 사실을 이용하려는 전략이다. 모멘텀 전략은 한 방향으로 모멘텀을 모을 수 있는 시장 흐름에 편승해 투자심리와 대형 펀드 구조를 모두 활용하려는 전략이다.
퀀트 트레이딩의 또 다른 매우 중요한 측면은 거래 전략의 빈도이다. 저빈도 트레이딩(LFT)은 일반적으로 자산을 거래일보다 오래 보유하는 전략을 말한다. 이에 따라 고빈도 트레이딩(HFT)은 일반적으로 자산을 하루 동안 보관하는 전략을 말한다. 초고빈도 트레이딩(UHFT)이란 자산을 초, 밀리초 단위로 고정하는 전략을 말한다. 소매업자로서 HFT와 UHFT는 확실히 가능하지만, 거래 “기술 스택”과 주문장 역학 관계에 대한 상세한 지식이 있어야만 가능하다. 우리는 이번 포스팅에서는 이러한 측면에 대해 크게 논의하지 않을 것이다.
전략 또는 전략 집합이 확인되면 이제 기간별 데이터에 대한 수익성을 테스트해야 한다. 그것은 백테스팅의 영역이다.
전략 백테스트
백테스팅의 목적은 상기 과정을 통해 파악된 전략이 과거 데이터와 표본 외 데이터 모두에 적용될 때 수익성이 있다는 증거를 제공하는 것이다. 이를 통해 “실제 세계”에서 전략이 어떻게 수행될지에 대한 기대를 설정할 수 있다. 그러나 여러 가지 이유로 백테스트를 한다고 해서 성공을 보장받는 것은 아니다. 백테스팅은 많은 편향을 수반하기 때문에 아마도 퀀트 트레이딩에서 가장 미묘한 영역일 것이다. 그것은 신중히 고려하고 가능한 많이 제거되어야 한다. 우리는 예견 편향, 생존 편향 및 최적화 편향(“데이터 스누핑” 편향이라고도 함)을 포함한 일반적인 편향 유형에 대해 논의할 것이다. 과거 데이터의 가용성과 청결성, 현실적인 거래 비용 고려, 강력한 백테스트 플랫폼 결정 등이 백테스트에서 중요한 영역이다. 아래의 실행 시스템 섹션에서 거래 비용에 대해 자세히 알아볼 것이다.
전략이 확인된 후에는 테스트를 수행할 과거 데이터를 확보해야 한다. 모든 자산 클래스에 상당수의 데이터 공급업체가 있다. 비용은 일반적으로 데이터의 품질, 깊이 및 적시성에 따라 커진다. (적어도 소매 수준에서) 퀀트 트레이더를 시작하는 전통적인 출발점은 야후 파이낸스의 무료 데이터 세트를 사용하는 것이다. 여기서는 공급업체에 너무 집착하지 않고, 과거 데이터 세트를 다룰 때 일반적인 문제에 집중하고 싶다.
과거 데이터와 관련된 주요 관심사는 정확성/청결성, 생존 편향성 및 배당금 및 주식 분할과 같은 기업 활동에 대한 조정이다.
- 정확도는 오류 포함 여부와 상관없이 데이터의 전반적인 품질과 관련이 있다. 오류는 때때로 식별하기 쉬울 수 있다. 예를 들어, 스파이크 필터를 사용하면 시계열 데이터에서 잘못된 “스파이크”를 찾아 오류를 수정할 수 있다. 때로는 발견하기가 매우 어려울 수 있다. 종종 둘 이상의 공급자를 두고 모든 데이터를 서로 대조하여 확인해야 한다.
- 생존 편향은 종종 무료 또는 저렴한 데이터셋의 특징이다. 생존 편향이 있는 데이터셋은 더 이상 거래되지 않는 자산을 포함하지 않는다는 것을 의미한다. 주식의 경우 이는 상장폐지/파산주식을 의미한다. 이러한 편향은 이러한 데이터셋에서 테스트된 주식 거래 전략이 과거 “우승자”가 이미 선택했기 때문에 “실제”보다 더 잘 수행될 가능성이 크다는 것을 의미한다.
- 기업의 조치에는 일반적으로 원가에 단계적 기능 변경을 초래하는 회사가 수행하는 “물리적” 활동이 포함되며, 이는 가격 수익률 계산에 포함되지 않는다. 배당금과 주식 분할에 대한 조정이 일반적인 원인이다. 이러한 각 조치마다 백 조정이라는 프로세스를 수행해야 한다. 주식 분할과 진정한 수익 조정을 혼동하지 않도록 매우 주의해야 한다. 많은 트레이더들이 기업 행동에 의해 적발되었다!
백테스트 절차를 수행하려면 소프트웨어 플랫폼을 사용해야 한다. 사용자는 Tradestation과 같은 전용 백테스트 소프트웨어, Excel 또는 MATLAB와 같은 숫자 플랫폼 또는 Python 또는 C++와 같은 프로그래밍 언어로 전체 사용자 지정 구현 중에서 선택할 수 있다. 우리는 Tradestation(또는 이와 유사한 제품), Excel 또는 MATLAB에 너무 많은 시간을 할애하지 않을 것이다. 필자는 완전한 사내 기술 스택을 구축해야 한다고 생각한다(아래 설명된 이유). 이를 통해 얻을 수 있는 이점 중 하나는 매우 발전된 통계 전략으로도 백테스트 소프트웨어와 실행 시스템을 긴밀하게 통합할 수 있다는 것이다. 특히 HFT 전략의 경우 맞춤형 구현을 사용하는 것이 중요하다.
시스템을 백테스트할 때 얼마나 잘 작동하는지 정량화할 수 있어야 한다. 정량적 전략에 대한 “업계 표준” 지표는 MDD와 Sharpe Ratio이다. MDD는 특정 기간(일반적으로 연간)에 걸쳐 계좌 지분 곡선에서 가장 큰 피크 투 트러프 하락을 나타낸다. 이 값은 백분율로 가장 자주 인용된다. LFT 전략은 여러 가지 통계적 요인으로 인해 HFT 전략보다 더 큰 단점이 있는 경향이 있다. 과거 백테스트에서는 과거의 최대 감소량을 보여 주므로 향후의 감소 성능에 대한 좋은 지침이 된다. 두 번째 측정은 Sharpe Ratio로, 경험적으로 초과 수익의 평균을 초과 수익의 표준 편차로 나눈 값이다. 여기서 초과 수익이란 S&P500이나 3개월 만기 증권과 같이 미리 정해진 기준치를 상회하는 전략을 말한다. 연간 수익률은 전략의 변동성을 고려하지 않기 때문에 일반적으로 사용되는 척도가 아니다(샤프 비율과 달리).
전략을 백테스트하고 선명한 샤프와 최소화된 단점이 있는 편향이 없는 것으로 판단되면, 실행 시스템을 구축해야 할 때이다.
실행 시스템
실행 시스템은 전략에 의해 생성된 거래 목록을 브로커가 보내고 실행하는 수단이다. 거래 생성은 반자동화 또는 완전 자동화될 수 있지만 실행 메커니즘은 수동, 반수동 또는 완전 자동화일 수 있다. LFT 전략의 경우 수동 및 반수동 기법이 일반적이다. HFT 전략의 경우 완전 자동화된 실행 메커니즘을 만들어야 하며, 이는 종종 (전략과 기술의 상호의존성 때문에) 트레이드 제너레이터와 밀접하게 결합될 것이다.
실행 시스템을 만들 때 고려해야 할 핵심 사항은 중개업자에 대한 인터페이스, 거래 비용의 최소화, 백테스트를 거친 성능과 라이브 시스템의 성능 차이이다.
중개업자와 접촉하는 많은 방법들이 있다. 브로커에게 바로 전화를 거는 것에서부터 완전히 자동화된 API(고성능 애플리케이션 프로그래밍 인터페이스)에 이르기까지 다양한 서비스를 제공한다. 거래의 실행을 최대한 자동화하는 것이 이상적이다. 따라서 추가 연구에 집중할 수 있을 뿐 아니라 여러 가지 전략이나 더 높은 빈도의 전략도 실행할 수 있다(실제로 자동 실행 없이는 HFT가 기본적으로 불가능하다). 위에서 설명한 MATLAB, Excel 및 Tradestation과 같은 일반적인 백테스팅 소프트웨어는 더 낮은 빈도와 더 단순한 전략에 적합하다. 그러나 실제 HFT를 수행하려면 C++와 같은 고성능 언어로 작성된 사내 실행 시스템을 구축해야 한다. 필자가 예전에 고용된 펀드에서는 10분마다 새로운 시장 데이터를 다운로드하고 동일한 기간 내에 해당 정보를 기반으로 거래를 실행하는 “트레이딩 루프”가 있었다. 이것은 최적화된 Python 스크립트를 사용하고 있었다. 분 또는 초 주파수 데이터에 접근하는 경우 C/C++가 더 이상적이라고 생각한다.
대규모 펀드에서 실행을 최적화하는 것은 퀀트 트레이더의 영역이 아닌 경우가 많다. 그러나 소규모 상점이나 HFT 회사에서는 트레이더가 실행자이므로 훨씬 더 넓은 기술을 사용하는 것이 바람직하다. 펀드에 고용되고 싶다면 그것을 명심해라. 여러분의 프로그래밍 기술은 통계학이나 계량경제학 실력보다 더 중요할 것이다!
실행의 기치를 이루는 또 다른 주요 이슈는 거래 비용 최소화이다. 일반적으로 거래 비용에는 세 가지 요소가 있다. 중개업자, 거래소 및 SEC(또는 유사한 정부 규제 기관)가 부과하는 수수료인 수수료(또는 세금), 유출액, 즉 주문이 실제로 채워지려고 했던 금액과 실제 채워진 금액 사이의 차이, 스프레드(거래되는 유가증권의 입찰/매입 가격) 차이. 스프레드는 일정하지 않으며 현재 시장의 유동성(즉, 구매/판매 주문의 가용성)에 따라 달라진다.
거래 비용은 샤프 비율이 우수한 수익성이 높은 전략과 샤프 비율이 낮은 수익성이 없는 전략 사이에 차이를 만들 수 있다. 백테스트를 통해 트랜잭션 비용을 정확하게 예측하는 것은 어려울 수 있다. 전략의 빈도에 따라 입찰/매수 가격에 대한 데이터가 포함된 과거 교환 데이터에 액세스해야 한다. 전체 퀀트 팀은 이러한 이유로 더 큰 자금에서 실행을 최적화하는 데 전념한다. 펀드가 상당한 양의 거래를 오프로드해야 하는 시나리오를 고려해 보자(이러한 이유는 많고 다양하다!). 너무 많은 주식을 시장에 “덤핑”함으로써, 그들은 가격을 빠르게 하락시키고 최적의 실행을 얻지 못할 수 있다. 따라서 주문이 시중에 “공급”되는 알고리즘이 존재하지만 펀드가 하락할 위험이 있다. 그뿐만 아니라, 다른 전략들은 이러한 필요성에 편승하고 비효율성을 이용할 수 있다. 이것은 자금구조 차익거래의 영역이다.
실행 시스템의 마지막 주요 이슈는 백테스트된 성과와 전략 성과의 분리에 관한 것이다. 이 문제는 여러 가지 이유로 발생할 수 있다. 우리는 이미 백테스트를 고려할 때 예견 편향과 최적화 편향에 대해 심도 있게 논의했었다. 그러나 일부 전략에서는 전개 전에 이러한 편향을 테스트하기가 쉽지 않다. 이것은 대부분 HFT에서 발생한다. 실행 시스템과 거래 전략 자체에 백테스트에는 나타나지 않지만 실제 거래에는 버그가 나타날 수 있다. 시장은 전략 전개 이후에 정권 교체의 영향을 받았을 수 있다. 새로운 규제 환경, 변화하는 투자 심리와 거시 경제 현상 모두 시장의 행동 방식 및 전략의 수익성에 있어 차이로 이어질 수 있다.
리스크 관리
퀀트 트레이드 퍼즐의 마지막 부분은 리스크 관리 과정이다. “위험”은 앞서 논의한 모든 편향을 포함한다. 여기에는 거래소에 배치된 서버가 갑자기 하드 디스크 오작동을 일으키는 등의 기술 위험도 포함된다. 중개업자가 파산하는 등의 중개업 위험도 포함된다(최근 MF Global에 대한 공포로 볼 때 그렇게 미친 것 같지는 않음). 간단히 말해서, 거래 이행에 방해가 될 수 있는 거의 모든 것을 다루고 있으며, 여기에는 많은 원인이 있다. 모든 책들은 퀀트 전략을 위한 위험 관리에 전념하고 있기 때문에 필자는 여기서 모든 가능한 위험의 원인에 대해 설명하려고 하지 않을 것이다.
리스크 관리에는 포트폴리오 이론의 한 분야인 최적 자본 할당도 포함된다. 이것은 자본이 일련의 다른 전략과 그 전략 내의 거래에 할당되는 수단이다. 그것은 복잡한 영역이고 몇몇 하찮은 수학에 의존한다. 전략의 최적 자본 배분과 레버리지가 관련된 산업 표준을 켈리 기준이라고 한다. 이 포스팅은 입문 단계이므로 계산에 연연하지 않을 것이다. 켈리 기준은 수익률의 통계적 특성에 대해 일부 가정을 하는데, 이는 금융 시장에서 종종 적용되지 않기 때문에, 트레이더들은 이행에 있어서 종종 보수적이다.
위험 관리의 또 다른 핵심 요소는 자신의 심리적 프로파일을 다루는 것이다. 거래로 몰래 들어갈 수 있는 많은 인지적 편향들이 있다. 전략을 그대로 두면 알고리즘 거래의 문제가 적다는 것은 인정한다. 일반적인 편향은 손실을 깨달아야 하는 고통으로 인해 손실 위치가 폐쇄되지 않는 손실 회피의 편향이다. 비슷하게, 이미 얻은 이익을 잃는 것에 대한 두려움이 너무 클 수 있기 때문에 이익은 너무 일찍 취해질 수 있다. 또 다른 일반적인 편향은 최신 편향으로 알려져 있다. 이것은 트레이더들이 장기적이 아니라 최근 사건들에 너무 많은 중점을 둘 때 나타난다. 물론 감정적 편향의 전형적인 쌍인 두려움과 탐욕도 있다. 이는 종종 과소 활용 또는 과다 활용으로 이어질 수 있으며, 이로 인해 폭발 또는 수익 감소가 발생할 수 있다.
결론
보다시피, 퀀트 트레이딩은 매우 흥미롭지만 매우 복잡한 퀀트 금융 분야입니다. 필자는 말 그대로 이 포스팅의 주제를 긁어냈는데 상당히 길어지고 있다. 모든 책과 신문들은 필2자가 한 두 문장밖에 하지 못한 문제들에 대해 쓰여졌다. 따라서 퀀트 트레이딩직에 지원하기 전에 상당한 기초조사를 실시할 필요가 있다. 적어도 통계 및 경제 메트릭에 대한 폭넓은 배경과 MATLAB, Python 또는 R과 같은 프로그래밍 언어를 통한 구현 경험이 있어야 한다.
자신만의 알고리즘 거래 전략을 세우는 데 관심이 있다면, 첫 번째 제안은 프로그래밍을 잘하는 것이다. 필자는 가능한 한 많은 데이터 수집기, 전략 백테스터 및 실행 시스템을 직접 구축하는 것을 선호한다. 자본을 투자하고 있다면 시스템을 완전히 테스트하고 시스템의 위험 요소 및 특정 문제를 알고 있기 때문에 밤에 잠을 더 잘 자지 않겠는가? 이를 공급업체에 아웃소싱하는 것은 단기적으로는 시간을 절약하는 동시에 장기적으로 매우 많은 비용이 들 수 있다.
번역 – 핀인사이트 인턴연구원 강지윤(shety0427@gmail.com)
원문 보러가기>
https://www.quantstart.com/articles/Beginners-Guide-to-Quantitative-Trading/