본문 바로가기

interest/Others

주식 자동 거래 시스템 구축 후기

저는 주식은 매도, 매수 빼고 아무것도 모르는 주린이었습니다. 지금도 거의 아는게 없는 주린이입니다. 

하지만 인터넷에서 AI 자동 투자 봇을 만드는 클래스를 보고 호기심이 생겼는데, 클래스가 아직 안 열려서 고민하다가, 저는 코딩을 할 줄 아니까 그냥 책 한 권 들고 주식 자동 거래 프로그램을 만들어봤습니다.

나만의 수익 머신이 되었으면 하는 바램으로 시작하긴 했지만, 아주 편한 마음으로 코딩을 했습니다.

오늘이 딱 1주일째인데, 그동안 남는 시간에 이 프로젝트에만 매달려서 주식 트레이딩, 간단한 백테스팅까지 구현했습니다. 이번 포스팅에서는 제가 주식 거래 봇을 만든 방법, 어려웠던 점을 간단히 적어보려고 합니다.

 

1. 주식 거래 봇 만든 방법

저는 책을 보고 만들었는데요, "파이썬과 리액트를 활용한 주식 자동 거래 시스템 구축"이라는 책을 먼저 보고, WikiDoc에서 무료로 볼 수 있는 "파이썬으로 배우는 알고리즘 트레이딩"을 참고했습니다.

두 책 모두 이베스트 투자증권사의 xingAPI를 사용한 방법을 알려줘서 저도 xingAPI를 사용해서 봇을 만들었습니다.

 

첫 번째 책이 진짜 주식 매매 프로그램을 만들 때 필요한 핵심적인 내용만 담고 있어서, 사실 이 책 하나만 봐도 핵심 기능은 다 구현할 수 있습니다.

그냥 책보고 ☛ 코드짜고 실행 하고 성공하면 OK, 에러 나면 고치기

현업에 계신 전문가가 짠 코드기 때문에 굉장히 알아보기 쉽고, 뭐 file path 에러나 Module 에러 제외하고는 난 에러도 거의 없습니다.

깃헙에 소스코드가 공개되어 있기 때문에, 제가 타이핑하다가 난 실수는 금방금방 체크가 가능했습니다.

소스코드 위키북스/stock-trading

 

wikibook/stock-trading

『파이썬과 리액트를 활용한 주식 자동 시스템』 예제 코드. Contribute to wikibook/stock-trading development by creating an account on GitHub.

github.com

 

2. 어려웠던 점

일단 제가 주식에 대해서 아무것도 모른다는 점이 코딩할 때 제일 힘들었습니다.

저는 이번에 주식시장이 열리고 닫힐 때만 사고팔 수 있다는 걸 처음 알았습니다. 그래서 초반에 xingAPI를 사용해서 주식을 사고 파는 기능까지 구현하고 test 할 때, 알 수 없는 에러 메시지가 계속 났습니다.

가격을 잘 못 입력했다는 문구만 계속 봐서 짜증 날 때쯤 주식은 정해진 시간에만 사고팔 수 있다는 걸 알게 됐습니다.

이때 진짜 허무했습니다.. 게다가 삽질한 다음날이 총선이어서 이틀 동안 테스트 못해봤습니다ㅠㅠ

 

그리고 시가, 종가, 호가 유형 등등등 일단 코딩하는 시간보다 그런 용어를 이해하는데 더 오래 걸렸습니다.

아니 주식이 어렵다고 생각은 했는데 트레이드 알고리즘 짜기 전에 일단 용어부터 너무 어려워서 많이 헤맸습니다.

특히 위랑 똑같은데, 테스트할 때 호가 유형에서 삽질 많이 했습니다..

 

또 주식 전략을 아무것도 모르는 사람은 괜찮은 트레이드 알고리즘을 짜기 어렵습니다.

저는 주식의 트레이드 전략, 공식 이런 걸 하나도 모릅니다. 그냥 싸게 사서 조금 얹어서 팔면 되지 않나라는 가벼운 생각으로 뛰어들었는데 만만치 않았습니다.

뭐 하나 참고할만한 코드라도 있었으면 좋겠는데, 제가 참고한 책에서는 "내가 선택한 종목을 보유하고 있지 않으면 매수, 종목을 보유하고 있으면 매도"라는 정말 간단한 알고리즘만 적혀있었습니다.

이런 트레이딩 코드 자체가 자신만의 전략이기 때문에, 공개하면 제로섬 게임이 되어버리기 때문에 아무도 공개하지 않고 그냥 말로만 대충 이런 전략을 썼어~라고 얘기하더라고요.

전략도 모르고 이론도 모르는 데다 인터넷에서 이런 전략을 썼어~라고 얘기해줘도 용어를 이해 못해서ㅠ 저만의 트레이딩 알고리즘을 짜는데 큰 난관에 부딪혔습니다.

백테스팅 캡쳐

위는 제가 짠 트레이딩 코드를 백테스팅한 결과인데요, 그냥 저가에 사고 고가에 파는 굉장히 간단한 코드를 짜고 30초에 한번, 총 30분 동안 트레이딩 하도록 해봤는데 30분동안 수만 하고 매도를 못했습니다.

파는 가격을 너무 고점으로 잡아서 생긴 문제인 것 같습니다.

맨 처음에는 사기만 하고 팔리지가 않는 알고리즘을 짜서ㅋㅋ 30분 백테스팅에 -200,000원 손해 보기도 했습니다.

그것보단 낫지만, 여기서 더 고쳐나가야 하는데 그 방향을 어떻게 잡아야 할지, 아직은 막막합니다. '

제가 참고한 책에는 퀀트 전략 중 NCAV나 신마법공식에 대해서 간단하게 이론과 정말 간단한 코드 몇 줄로 알려주긴 하는데요, 이론을 공부해서 코드를 짜려면 조금 걸릴 것 같습니다.

 

또 개발하면서 어려웠던 점은 이베스트의 xingAPI를 사용하다 에러가 나면 그 해결방법을 찾기가 어렵다는 점이었습니다. 사실 개발하다 보면 사소한 것도 에러가 잘 나는데, 보통은 구글링 하면 10에 8은 그 해결방법을 아주 잘 알려주는데, xingAPI는 한국인 중에서도 굉장히 소수의 사람만 사용하기 때문에ㅠ 에러 해결방법이 잘 안 나와있습니다.

그리고 xingAPI에서 반환하는 오류코드가 뭘 의미하는 건지 자세히 알려주질 않습니다.

저처럼 주식시장 열리는 시간 몰라서 헤매도, 구글에 나와있지 않기 때문에, 겁나 헤맬 수도 있다는 점 꼭 참고하세요.

 

+ 여담

진짜 시스템 트레이딩은 함부로 뛰어들면 안 되는 분야인 것 같습니다.

주식에 대해서 안다 or 프로그래밍을 할 줄 안다 둘 중에 하나라도 해당되지 않으면, 어렵습니다.

일단 제가 위에서 참고했다는 두 개의 책만 해도, 코딩에 대해서는 불친절합니다. 특히 첫 번째 책은 프로그래밍 문법은 아예 다루지 않기 때문에, 저도 처음 보는 건 파이썬 프로그래밍 책을 뒤져가면서 코딩했습니다.

정말 인내심이 있어야 하고, 바로 수익이 났으면 하는 마음으로 시작하면 오래가지 않을 거라는 말을 꼭 해드리고 싶습니다. 

 

대면 강의가 시작하면 주식을 아는 학생과 스터디를 구성해서 트레이딩 알고리즘을 좀 짜 볼 계획이었는데요,

학교가 아예 1학기 전면 온라인을 선언해버려서, 계획이 물거품이 되었습니다.

바로 그제 부산에서 추가 확진자가 나와서 걱정이 이만저만이 아닙니다..

같은 관심사를 가진 지인이 있다는 게 정말 축복받은 거란 걸 요새 깨닫고 있는데요,

해커톤도 없고, 공모전도 없고, 취업 각도 안 서고, 한동안은 주식 분석+트레이딩 알고리즘 구현에 매진하려고 합니다.

어느정도 이론도 공부하고 간단하게 구현했을 때 관련 포스팅으로 돌아오도록 하겠습니다.

 

+ 여담2

그리고 아래는 제가 막 검색하다가 알게 된 유튜브 동영상인데요.

현업에 종사하고 계신 트레이더 분께서 코딩을 할줄 알고, 금융을 모르는 사람이 100개의 로직을 짰다고 하면 거기서 수익이 날 로직이 좋게 말해서 한두개라고 말씀하시는데요, 하루에 한개씩 짠다고 해도 100일은 걸립니다..

1000개 짜면 15개 정도라고 말할정도면 괜찮은 알고리즘을 짜는게 얼마나 어려운지 알 수 있습니다.

1000개면 하루에 한개 짜도 3년이네요ㅋㅋㅋㅠㅠ 하지만 포기는 배추셀때나 쓰는 표현이라고 생각합니다!!

하루에 한개씩 로직을 짤 그날까지 노력해보겠습니다.


잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.

이 포스팅이 도움이 되었다면 공감 부탁드립니다.

궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다:D