|
제이펍 출반사의 “파이썬을 이용한 알고리즘 트레이딩”을 소개합니다.
요새같이 주식 낙폭 상황에서 상당한 멘탈의 흔들림을 겪기도 했지만 반면에 트레이딩 봇에 의한 투자가 수익율이 좋은 것에 놀라기도 했습니다. 개발을 하고 있는 입장에서 트레이딩 봇까지는 아니더라도 나만의 트레이딩 원칙과 스케줄링을 만들 수 있지는 않을까란 바램으로 관심을 가지게 되었죠. 실제로 주식 열풍이다 보니 주식 투자에 대한 도서들도 많아지고 있고, 특히 개발 도서군에서도 파이썬이나 R을 이용한 주식 투자나 투자 자동화를 주제로 강좌나 도서들이 나오고 있습니다. 그래서 금융 공학을 다루는 도서의 경우 폭넓은 금융 지식을 일반인이 이해하기란 쉽기 않기 때문에, 주식이라는 주제에 한정적으로, 그리고 엔지니어 관점으로 자동 트레이딩이란 주제에 포커스된 도서는 없을까라 개인적인 관심이 있는 차에 제이펍 출반사의 “파이썬을 이용한 알고리즘 트레이딩” 발간으로 리뷰를 신청하였습니다.
내용을 들어가기 앞서 서문에 나와있는 구절이 인상적입니다. IT 자동화가 금융 분야로 이어지고 있고, 이것은 피할 수 없는 흐름인 듯 합니다. 도서 초반에 나오는 아래 계층 구조를 보는 것이 좋습니다. 흐름도가 도서 구성과 방향을 나타내기 때문이고 정확히 아래 주제로 서술되고 있습니다.
목차를 살펴보면 “주식 & 파이썬” 주제를 삼고 있는 다른 도서와 마찬가지로 파이썬 설치와 환경설정을 시작으로 금융 데이터를 다루기 위한 Pandas, DataFrame이 이어집니다. 허나 책의 전체 지면에서 이에 대한 비중은 3장 이내로 상당히 적습니다. 파이썬 문법에 지면 할애는 지양하고 있고 주식 트레이딩에 관한 이론과 실습에 집중된 내용 배분이 좋습니다.
4장부터는 백테스트 클래스를 다루고 있고 벡터화 백테스트를 소개하고 있습니다. 백테스트(Backtest)가 무엇을 의미하는지 몰랐는데, 굳이 용어 서술을 하지 않아도 도서를 읽어보면 쉽게 알 수 있습니다. 관심있는 분은 Backtest Trading Strategies with Pandas - Vectorized Backtesting (https://towardsdatascience.com/backtest-trading-strategies-with-pandas-vectorized-backtesting-26001b0ba3a5) 를 참고로...
백테스트(Backtest)는 거래 전략, 예측 모델 또는 분석 방법을 기록 데이터에 적용하여 정확성과 성능을 평가하는 프로세스를 의미합니다. 5장은 “시장 이동 예측을 위한 머신러닝 기술”로 과거의 데이터를 기반으로 미래를 예측하기에 회귀와 머신러닝이 이어집니다. 머신러닝 모델에서 과거 데이터를 기반으로 얼마나 잘 수행되었는지 확인하기 위해서 백테스트가 필요합니다. 머신러닝은 선형회귀와 로지스틱 회귀를 이용한 “시장 방향 예측”를 수행합니다. 머신러닝/딥러닝을 학습한 이들에게는 어려운 내용은 아닐 것으로 보이나 혹여 이를 처음 접하는 이들에게는 회귀, 사이킷런(scikit-learn), MLP 등의 내용이 다소 이해가 쉽지는 않겠다는 생각이 듭니다. 이에 대해서는 참고 문헌이나 인터넷 링크를 소개하면 어떨까란 아쉬움이 듭니다.
6장부터는 이벤트 기반 백테스트(Backtest) 클래스를 다루고 있습니다. 6장은 벡터화 백테스트와의 비교로 시작하고 있으며, 자연스레 데이터 검색과 준비, 주문과 청산에 대한 클래스 작성을 하는데, 롱 전용 백테스트 클래스와 롱-숏 백테스트 클래스로 구분하여 배우게 됩니다.
후반부에는 8장 Oanda와 9장 FXCM을 통해서 API를 통한 해외주식 데이터 검색과 주문 개설을 하는 방법을 다루고, 거래 운영 자동화를 하는 방법으로 마무리 하고 있습니다. 10장은 지수에 대한 켈리기준과 S&P 500 지수를 통해 최적 케리 계수, 이에 따라 레버리지 비율, 그리고 이어지는 머신러닝을 이용한 최적 레버리지 도출과 클라우드 배포에 대해서 배우게 됩니다. 10장 초반에 나오는 켈리 기준 및 최적 레버리지 비율을 설명하는 수식들은 개인적으로 이해하기가 쉽지는 않았으나 이후 이를 시뮬레이션하는 실습 코드이 그나마 가독성으로 커버할 수 있었습니다. 마지막으로는 FXCM과 Oanda 플랫폼을 이용하여 실시간 모니터링을 가능하게 구성하는 방법을 다루고 있는데 이는 어찌보면 누락될 수 있는 부분이었으나 트레이딩 플랫폼을 기반으로 트레이딩 자동화라는 주제에 맞춰서 “기술 구현”의 마무리로 좋은 내용이었습니다.
도서의 장점은... 1. 트레이딩 자동화에 집중된 내용 보편적이고 광범위한 금융 공학을 다루는 도서는 아니고 주식 트레이딩을 위한 최적 레버리지 도출과 트레이딩 자동화에 포커스된 내용을 다루고 있습니다. 10장을 읽게 되면 이전 9장까지의 내용을 왜 다루는지를 알 수 있고 step-by-step 이었구나 라는 생각을 가지게 됩니다.
2. 파이썬 문법은 최소로 파이썬을 다루는 도서의 상당수가 파이썬 문법에 대한 지면 할애가 많습니다. 가령 본 도서의 내용에 비춰보면 파이썬 기초 뿐만 아니라 넘파이와 판다스, 그리고 matplotlib 시각화도 포함하고 있기 때문에 자칫하면 파이썬 문법이 과하게 덧붙여질 수도 있었으나, 오히려 지면 할애를 최소화한 느낌이 듭니다. 따라서 파이썬 지식을 전제로 주식 매매 프로그램의 원리, 특히 포트폴리오 투자에 대한 학습을 원하는 독자에게 접합한 도서라고 보입니다.
3. 다양한 API 연동 실습 공공 데이터를 통한 금융 데이터와 FXCM, Oanda 플랫폼과 같은 외부 API 연동하는 실습으로 이론뿐만 아니라 실습에 대한 내용 분배도 적절했습니다. 또한 API 연동뿐만 아니라 머신 러닝 활용도 다루고 있어서 이점에 무엇보다 괜찮았습니다.
4. 모니터링과 배포 자동화로 주제 완성도를 높임 10장까지의 내용을 읽어보면 트레이딩 자동화라는 주제의 완성이라고 할 수 있는 모니터링과 배포 자동화를 다루고 있습니다. 벡터화 백테스트와 이벤트 기반 백테스트, 그리고 Oanda와 FXCM API 활용, 마지막으로는 거래 운영 자동화로 이어지는 내용이지요. 도서 타이틀에 대해서 내용의 완성도가 높다고 생각합니다.
반면에 아쉬운 점은 두가지 정도 있습니다. 이론이 등장할 때 수학 수식들이 나오는데 이에 대한 설명은 부족해 보이더군요. 머신러닝이나 딥러닝 도서들도 마찬가지 상황이고 자칫 도서 두께가 꽤 늘어날 수도 있는 부분인데 차라리 외부 링크를 두는 것으로 대신하면 어떨까 싶습니다. 그리고 S&P 500 지수와 같은 국외 주식만을 다룬다는 것이 또다른 아쉬움입니다. 아무래도 번역서이다 보니 어쩔 수 없는 부분이겠지요. 제이펍 출반사의 “파이썬을 이용한 알고리즘 트레이딩”은 10장의 내용 블록을 차곡차곡 쌓아 올린다면 최적 레버리지 도출을 위한 이론과 자동 트레이딩 실습을 경험해볼 수 있는 도서입니다. 같은 주제로 강의들이 생겨나고 있는데 강의를 들어보기 전에 우선 본 도서를 읽어보는 것은 어떠할까요? "제이펍 리뷰 활동을 위해서 책을 제공받아 작성된 서평입니다.” |