Awesome Systematic Trading: 퀀트 트레이딩을 위한 라이브러리 및 전략 논문 모음

Awesome Systematic Trading 소개

Awesome Systematic Trading은 체계적 트레이딩(Systematic Trading), 즉 퀀트 트레이딩 전략을 찾고 개발하고 운용하는 데 필요한 자료를 한 저장소에 모아 분류한 큐레이션 목록입니다. 시장 데이터를 받아오는 라이브러리, 전략을 과거 데이터로 검증하는 백테스팅(Backtesting) 프레임워크, 학술 논문으로 발표된 전략, 관련 도서와 강의가 각각의 표로 정리되어 있습니다. 금융 데이터를 다루는 코드를 처음 쓸 때 가장 많은 시간이 드는 일이 "이 작업에 이미 만들어진 도구가 무엇인지" 찾는 것인데, 이 저장소는 그 탐색 단계를 대신하는 목적으로 만들어졌습니다.

이 저장소가 다루는 범위는 순수한 금융 공학에 머무르지 않습니다. 목록의 상당 부분이 머신러닝과 맞닿아 있어서, 데이터 사이언스 항목에는 PyTorch와 TensorFlow, scikit-learn이 그대로 올라가 있고, 별도의 머신러닝 항목에는 금융에 특화된 강화학습 프레임워크와 학습 환경이 모여 있습니다. 시계열 예측, 특징 추출, 포트폴리오 최적화처럼 일반적인 머신러닝 문제로 환원되는 주제도 각각의 표에 배치되어 있습니다.

Awesome Systematic Trading은 스스로를 소개하는 첫 문단에서 라이브러리와 패키지 97개, 학술·기관 자료로 설명된 전략 40여 편, 도서 55권, 영상과 인터뷰 23편을 모았다고 밝히고 있습니다. 저장소 자체는 마크다운 문서와 전략 구현 코드로만 이루어져 있어 설치할 것이 없고, 표에서 필요한 항목을 골라 원 저장소나 논문으로 이동하는 방식으로 사용합니다. 본 게시물에서는 목록의 구성, 머신러닝 관련 항목, 전략 표를 읽는 방법, 그리고 함께 제공되는 전략 구현 코드를 정리합니다.

:warning: 본 게시물은 퀀트 트레이딩을 위한 여러가지 라이브러리와 전략 논문들을 소개하는 글로, PyTorchKR은 이번 글을 통해 인공지능 기술이 금융 분야에서 어떻게 활용될 수 있는지 가능성과 그 방법에 대한 소개를 하는 것을 목적으로 합니다. 즉, 어떠한 경우에도 PyTorchKR 및 이 게시물은 투자를 권유, 제안, 또는 추천하려는 목적으로 작성한 것이 아님을 알려드리며, 투자에 대한 조언을 구성하지 않습니다.

Awesome Systematic Trading이 모아 둔 자료의 구성

목록은 크게 다섯 갈래로 나뉩니다. 라이브러리와 패키지는 코드를 바로 가져다 쓸 수 있는 오픈소스 저장소를 모은 부분이고, 전략은 논문으로 발표된 트레이딩 전략을 자산군별로 정리한 표입니다. 나머지 세 갈래인 도서, 영상, 블로그와 강의는 코드 대신 배경 지식을 얻는 자료입니다. 각 표의 행에는 프로젝트나 자료의 링크, 한 줄 설명, 그리고 별 수·평점 같은 참고 지표가 배지 형태로 붙어 있습니다.

목록 전체의 목차는 README 상단의 접힌 블록(Click here to see the full table of content)에 들어 있어, 저장소를 열면 어떤 분류가 있는지부터 확인할 수 있습니다. 표의 항목마다 원 저장소로 가는 링크가 붙어 있으므로 목록 자체가 최종 목적지가 아니라 경유지 역할을 합니다.

Awesome Systematic Trading의 라이브러리 분류

라이브러리와 패키지 항목은 하는 일에 따라 다시 열한 개의 소분류로 갈라지고, 각 표는 별 수가 많은 순서로 정렬되며 구현 언어가 함께 표시됩니다. 가장 앞에 놓인 것은 백테스팅과 실거래(Backtesting and Live Trading)이며, 이 안에서 다시 이벤트 기반(Event Driven) 프레임워크와 벡터 기반(Vector Based) 프레임워크, 암호화폐로 나뉩니다. 이벤트 기반에는 backtrader, nautilus_trader, hftbacktest 같은 프로젝트가, 벡터 기반에는 pandas와 NumPy 위에서 동작하며 Numba로 가속하는 vectorbt, 그리고 Rob Carver의 저서를 코드로 옮긴 pysystemtrade가 올라가 있습니다.

그다음 소분류들은 전략을 만들고 운용하는 과정의 단계에 대응합니다.

  • 분석(Analytics): 지표 계산(ta-lib, pandas-ta), 성과 지표 산출(quantstats, ffn), 포트폴리오 최적화(PyPortfolioOpt, Riskfolio-Lib), 파생상품 가격 결정(tf-quant-finance, FinancePy), 위험 분석(pyfolio) 라이브러리를 각각의 표로 나눠 정리합니다.
  • 브로커 API와 데이터 소스: 거래소·증권사 연결(ccxt, ib_insync)과 시장 데이터 수집(OpenBB Terminal, yfinance, AkShare, pandas-datareader)을 담당하는 라이브러리입니다.
  • 데이터베이스와 그래프 연산: 틱·시계열 데이터를 저장하는 ArcticDB, tectonicdb, 계산 그래프를 분산 실행하는 RayDask가 포함됩니다.
  • 시계열 분석과 시각화: 예측용 Prophet, statsmodels, pmdarima, 특징 자동 추출용 tsfresh, 그리고 금융 차트를 그리는 mplfinance가 정리되어 있습니다.

머신러닝 항목은 별도의 표로 분리되어 있는데, 이 항목의 구성이 PyTorch 사용자에게 가장 직접적으로 닿습니다. Microsoft가 공개한 QLib은 스스로를 AI 지향 퀀트 투자 플랫폼으로 소개하며 최신 연구를 재현하는 코드를 함께 제공하고, FinRL은 심층 강화학습(Deep Reinforcement Learning)을 퀀트 금융에 적용한 첫 오픈소스 프레임워크라고 자신을 설명합니다. 학습 환경 쪽에서는 강화학습 에이전트나 규칙 기반 알고리즘을 학습·검증할 수 있는 TradingGym이, 구체적인 구현 예시로는 Deep Q-Learning으로 주식 매매를 학습시킨 trading-bot이 올라가 있습니다. 특징 공학과 재현성에 초점을 둔 MlFinLab도 같은 표에 함께 놓여 있습니다.

Awesome Systematic Trading의 전략 표 읽는 방법

전략 항목은 논문으로 발표된 트레이딩 전략을 자산군별로 나누고, 각 표 안에서 샤프 지수(Sharpe Ratio)가 높은 순서로 정렬해 둔 부분입니다. 표의 열은 전략 제목, 샤프 지수, 변동성(Volatility), 리밸런싱 주기(Rebalancing), 구현 코드, 출처 논문으로 고정되어 있습니다. 자산군은 채권·상품·통화·주식을 함께 다루는 조합부터 상품, 암호화폐, 통화, 주식 단독까지로 갈라집니다.

전략 샤프 지수 변동성 리밸런싱
Overnight Seasonality in Bitcoin 0.892 20.8% Intraday
Asset Growth Effect 0.835 10.2% Yearly
Short Term Reversal Effect in Stocks 0.816 21.4% Weekly
Paired Switching 0.691 9.5% Quarterly
Time Series Momentum Effect 0.576 20.5% Monthly

(위 수치는 저장소 전략 표에 기재된 값을 자산군별 표에서 발췌한 것입니다.)

표에서 눈여겨볼 부분은 샤프 지수가 음수인 전략도 삭제하지 않고 그대로 남겨 두었다는 점입니다. 예를 들어 통화 자산군의 Currency Momentum Factor는 -0.01, 상품 자산군의 Trading WTI/BRENT Spread는 -0.199로 기재되어 있습니다. 논문으로 발표된 전략이 재현 환경에서 어떤 결과를 내는지를 그대로 보여 주는 구성이라, 전략을 고르는 목록보다는 재현 결과를 비교하는 목록에 가깝습니다.

현재 전략 목록의 최신 버전은 저장소가 아니라 별도 사이트인 paperswithbacktest.com으로 옮겨졌고, README에는 이전 목록이 남아 있습니다. 저장소 안의 표를 볼 때는 이 점을 감안해야 합니다.

Awesome Systematic Trading의 전략 구현 코드

각 전략 행의 구현 링크는 저장소의 static/strategies/ 디렉토리에 있는 Python 파일을 가리킵니다. 이 디렉토리에는 61개의 전략 파일이 들어 있고, 각 파일은 QuantConnect 플랫폼의 QCAlgorithm을 상속한 클래스로 작성되어 있습니다. 파일 상단 주석에는 전략의 투자 대상과 규칙, 그리고 원 논문과 달라진 구현 부분이 함께 적혀 있습니다.

time-series-momentum-effect.py의 시작 부분은 다음과 같습니다.

from math import sqrt
from AlgorithmImports import *
import numpy as np
import pandas as pd


class TimeSeriesMomentum(QCAlgorithm):
    def Initialize(self):
        self.SetStartDate(2000, 1, 1)
        self.SetCash(10000000)

같은 파일의 주석에는 투자 대상이 상품 선물 24종, 교차 통화쌍 12종, 선진국 주식 지수 9종, 국채 선물 13종이며, 매월 각 자산의 지난 12개월 초과 수익률 부호에 따라 매수·매도 방향을 정하고 변동성의 역수로 포지션 크기를 정한다는 규칙이 정리되어 있습니다. 원 논문은 변동성 추정에 GARCH 모형을 썼지만 이 구현에서는 과거 변동성을 그대로 사용했다는 차이도 같은 주석에 명시되어 있습니다. 전략을 논문에서 코드로 옮길 때 어떤 부분이 단순화되는지 확인할 수 있는 자료입니다.

Awesome Systematic Trading의 도서와 강의 목록

도서 항목은 입문, 전기, 코딩, 암호화폐, 일반, 고빈도 매매(HFT, High Frequency Trading), 머신러닝의 일곱 개 소분류로 나뉘어 있고, 각 행에는 리뷰 수와 평점이 배지로 붙어 있습니다. 머신러닝 소분류에는 Marcos López de Prado의 "Advances in Financial Machine Learning", Stefan Jansen의 "Machine Learning for Algorithmic Trading", Yves Hilpisch의 "Artificial Intelligence in Finance" 등이 올라가 있습니다.

영상 항목은 웨비나와 트레이더 인터뷰가 섞여 있으며, 상당수가 트레이딩에 머신러닝을 적용하는 주제를 다룹니다. 강의 항목에는 뉴욕 대학교(NYU)가 Coursera에 올린 금융 머신러닝·강화학습 강의 네 편과 Udacity의 트레이딩 인공지능 과정, Georgia Tech의 트레이딩 머신러닝 과정이 포함되어 있습니다.

:house: Awesome Systematic Trading 관련 프로젝트 홈페이지

:github: Awesome Systematic Trading 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: