[리뷰] 쉽게 따라 만드는 파이썬 주식 자동매매 시스템



길벗 출판사의 "쉽게 따라 만드는 파이썬 주식 자동매매 시스템(박준성 저)"를 읽고 작성한 리뷰입니다.

표지


Python 기반의 주식 자동매매 시스템 개발 방법을 안내하는 도서로 약간의 용응을 더할 경우 다양한 용도의 프로그램으로 활용할 수 있는 확장성 높은 프로그램을 개발할 수 있도록 구성된 점이 특징이다.

Python으로 주식 자동매매 시스템을 개발하는 방법을 담은 책이다. 워렛버핏은 자면서도 돈을 벌 수 있는 시스템을 만들지 않으면 평생 일해야 한다고 말했다 한다.

자면서도 돈을 벌 수 있는 시스템으로 여러가지가 있겠지만 일반적으로 가장 접하기 쉬운 재테크 수단은 역시 주식이며 이 역시도 자동화된 프로그램의 도움을 받는다면 더욱 워렌 버핏의 말을 실현하는데 도움이 될 것이라 생각한다.

먼저 본 도서의 실습환경은 아나콘다와 파이참으로 이루어진다. 아나콘다는 수치 계산 등에 도움이 되는 Python 라이브러리를 호환성을 고려하여 묶어놓은 환경 덕분에 설치 한 번만으로도 파이썬 에코 환경을 활용하기 용이하다는 장점이 있다.

프로젝트를 개발하는 IDE로 본 도서에서는 Pycharm을 활용하고 있다. 기본적으로 파이썬에서 제공하는 IDE 툴에 비하면 Pycharm이 얼마나 편리한지는 이를 활용해 본 독자라면 모두 알고 있을 것이다. 파이참을 선택한 구성이 마음에 들었다.

개발환경을 구성하는데 있어 이 책에는 크게 2가지의 접근법이 소개되고 있다. 1장 환경구성의 경우 명령어 하나하나 따라해보며 Bottom-Up방식으로 배워나가는데 도움이 되는 환경 구성을 다룬다.

반면 부록A에 소개된 예제 코드 내려받기 및 환경구성은 Top-Down방식이다. 완성된 프로젝트를 다운로드 받아 큰 그림을 파악해보고 하나씩 이해해가며 자신만의 아이디어를 수정하고 싶다면 부록 방식의 환경 구성을 권장하고 싶다. 환경구성

둘 중 어떤 순서로 학습할지 기준을 정한 후 그에 맞는 환경 설정 방식을 택일할 것을 먼저 추천하고 싶다.

이 책에서 만들고자 하는 최종 목표는 “5장 프로젝트” 단원에서 다룬다. 프로젝트를 완성하기 위해 필요한 파이썬의 기본 지식들이 2장에 소개되고 있는데 이는 장점이자 단점이 될 수 있는 부분이다.

Python의 기초에 이미 능통한 독자라면 2장이 불필요한 부분일 수도 있어 단점이 될 수도 있는 반면, 자신이 Python의 경험이 전무하거나 프로그래밍 개발 자체가 생소하다면 크게 도움이 될 수 있는 부분이기도 하다.

읽어본 바 전체적으로 기초를 잘 설명하고 있으며 특히 아주 기초적인 문법 외에도 프로젝트를 구성에 필요한 지식인 모듈, 패키지, 클래스 및 상속 등의 지식을 알기 쉽게 전달하고 있다.

프로젝트에는 Thread 등의 기술들이 활용되고 있어 특히 상속이나 패키지 같은 이해가 필요한 데 뒷장에서 실습을 무난히 진행할 수 있도록 기초 지식을 미리 잘 설명하고 있다는 생각이 들었다.

3장에는 키움 API의 활용법이 등장한다. 키움 증권사의 KOA 스튜디오 사용법을 비롯하여 제공되는 API 하나하나를 Python과 연동하여 자세히 실습하고 있어 증권사에서 제공하는 API를 완벽에 가깝게 이해하는데 큰 도움이 되었다. 키움

로그인부터 계좌, 종목 등의 정보를 얻어오는 것은 물론 예수금을 조회한 후 주문 체결하는 API도 모두 소개되어 있어 한 증권사에서 제공하는 수준을 쉽게 파악하는데 도움이 되며 상세한 설명으로 이해하고 따라하기 좋았다.

다만 본인의 증권사가 키움이 아닌 경우에는 다소 곤란할 수 있겠는데 키움으로 증권사를 갈아타거나, 키움으로 예행 연습을 해 본 후 이용중인 증권사의 API에 적합하게 프로그램을 수정하는 방법 등을 선택해야 할 것이다.

다만 하나의 증권사 API에 통달하면 다른 증권사 API에도 쉽게 적응될 것이므로 큰 문제가 될 요소로 보이지는 않았다.

4장의 실전매매 전략은 간단한 것들만 소개된다. 유니버스 즉, 매수매도의 후보군을 선정하는 과정이 아래와 같이 소개되고 있는데 전반적으로 축약하여 설명하지 않고 머리속에 전개되는 과정을 그대로 글로 옮기는 구성 덕분에 이해가 수월했다. 실전매매

이러한 구성상 가독성의 장점은 뒷 파트에도 계속 이어지고 있어 초보자도 쉽게 이해하며 따라올 수 있을거라 생각하며 이런 점이 이 책이 가지는 가장 큰 장점이라는 생각이 들었다.

이 모든 것을 다 배우고 나면 5장에 등장하는 대망의 프로젝트를 진행하게 된다. 앞서 환경구성에서 미리 언지를 한 것처럼 본인이 큰 그림부터 파악하는 것을 선호하는 성향이거나 빠르게 프로젝트를 돌려보고 튜닝을 원하는 독자라면 Top-Down방식으로 학습하는 것도 나쁘지 않겠다는 생각이 든다.

그럴 경우 먼저 5장부터 읽을 것을 권한다. 환경구성은 앞서 언급했든 부록A부터 참조를 하는 것이 좋을것이다. 다만 Top-Down으로 학습을 할 경우 최소한 프로그래밍의 경험이 있거나 키움 등 증권사 API를 활용해 본 경험이 있는 독자에게 추천하고 싶은 방법이다.

Python의 기초가 없거나 다른 언어 프로그래밍 경험도 전무하다면 이 방식으로 진행할 경우 너무 높은 난이도 장벽에 부딪혀 시간을 낭비하게 되거나 의지가 꺽이게 될지도 모른다.

아무튼 프로젝트에는 다양한 생태계가 활용된다. DB로 SQLite를 활용하고 있고, beautiful soap 라이브러리를 활용해 네이버 주식의 특정 페이지를 크롤링하는가 하면, Line 프로그램과의 연동으로 푸시 알림 메시지를 연동하기도 한다. 프로젝트

모듈, 패키지, 프로젝트, 365일 무한 실행과 관련된 프로젝트의 구성방법에 대해 배울 수 있으며 Thread를 이용하여 다양한 작업을 동시에 수행하며 우선순위를 고려하는 방법도 익힐 수 있다.

스스로의 전략이 떠오를 경우 쉽게 확장하여 전략을 구현하여 연동할 수 있게 구성되어 있다는 것이 특징이며 굳이 주식매매 시스템이 아니더라도 자신이 필요한 프로그램이 있을 경우 이를 응용하여 변형할 수 있도록 폭넓은 라이브러리를 사용한다는 점이 가장 큰 장점이라 할수 있겠다.

그럼에도 약간이나마 아쉬운 부분도 있다. 개인적으로 미국 주식을 애용하고 있기에 키움 증권의 글로벌 API와의 연동이 소개되었으면 어땠을까 하는 아쉬움이 있었다. 하지만 국내용 API를 통해 쉽게 적응할 수 있는 부분이므로 큰 문제는 아니다.

대신 전략 파트가 너무 짧게 소개된 것은 조금 아쉬움이 남는 부분이다. 저자 본인이 취했던 방법 중 괜찮았던 방법 하나 정도는 자세히 다뤄줬다면 투자서로도 상당히 값어치 있는 책이 되었을 것 같다는 생각이 든다.

그럼에도 이 책은 자동매매 시스템을 구축하는데 훌륭한 가독성을 갖췄다는 점과 이 책의 예제를 응용하여 어떤 프로그램이든 손쉽게 만들 수 있다는 확장성을 제공한다는 점에서 같은 목적을 가진 독자에게 매우 추천하고 싶은 도서라는 점을 강조하고 싶다.







© 2019.04. by theorydb

Powered by theorydb