본문 바로가기

IT이야기/파이썬

파이썬으로 배우는 알고리즘 트레이딩! 파이썬 시작하기!

파이썬이던 c++이던 제일 도움이 되는 것은 무언가를 직접 만들어 봄이다.

 

마침 시중에 발매된 책중 웹상에 올라온것이 있어서 그 내용들을 보며 올리겠다.

 

나도 공부하고 막 시작하는 사람들에게 도움이 될런지 모르겠지만 화이팅.

 

 

1.  파이썬 시작하기

 

1) 파이썬과 알고리즘 트레이딩

이 책을 보시는 분들 중 대부분은 이미 한 번쯤 주식투자를 해보신 분들일 것입니다. 그리고 열에 아홉 은 투자금의 손실을 보신 분들이겠죠. 이 책을 쓰고 있는 저자 역시 재테크의 한 방편으로 몇 년 동안 주식투자를 해봤는데, 수익은커녕 적지 않은 금액의 손실을 봤습니다.

한마디로 저자는 주식 초보입니다. 혹시나 저자가 돈 버는 비법을 이 책에 적었기를 바라며 이 책을 구 매하신 분들이 있다면 지금이라도 늦지 않았으니 빨리 이 책을 환불하시기 바랍니다. 상식적으로 생각 해보십시오. 주식투자를 통해 쉽게 돈 버는 비법을 아는 저자가 무엇 때문에 3만 원 정도 하는 책에 그 런 비법을 공개하겠습니까? 저뿐만 아니라 서점에 즐비한 수많은 주식 책들의 저자들이 돈 버는 비법 을 알고 있었다면 왜 힘들게 머리를 쓰면서 책을 쓰고 있겠습니까? 그 시간에 투자해서 더 많은 돈을 버는 것이 수지 타산이 맞을 텐데요.

‘그렇다면 도대체 이 책의 정체는 뭔가?’ 하고 궁금하신 분들이 있을 겁니다. 앞서 말씀 드린 것처럼 제 가 여러분께 돈 버는 비법을 알려드릴 수는 없습니다. 그러나 여러분이 컴퓨터를 통해 자동으로 주식을 매수/매도하거나 주식 시장을 분석해서 유용한 정보를 제공하는 컴퓨터 프로그램을 만드는 방법에 대 해서는 알려드릴 수 있습니다.

이를 통해 여러분은 여러분만의 투자 기법을 더 쉽게 개발할 수 있으며, 이를 잘 응용한다면 돈을 많이 벌게 될 수도 있습니다. 이 책을 통해 배운 내용을 바탕으로 뭘 할 수 있을지 잘 이해되지 않으신다고 요? 다음과 같이 더 구체적인 시나리오를 생각해봅시다.

1) 내가 자는 새벽 동안 컴퓨터가 미국 증시의 패턴을 분석해 아침에 카카오톡으로 국내 주식 시장에 대한 투자 방향을 알려준다. 2) 최근 유가증권시장/코스닥시장에서 거래량이 60일 평균치에 비해 1,000%(10배) 이상 급등한 종목을 나에게 알려준다. 3) 내가 지정해둔 종목의 주식을 알아서 적정 매수가격에 도달하면 사고, 설정한 매도가격에 오면 다시 팔아준다. 4) 유가증권시장/코스닥시장의 전 종목을 실시간으로 분석해 급등할 것 같은 종목들을 나에게 알려준다. 5) 주식 종목 추천 사이트의 무료 종목 추천을 매일매일 검색해 중복으로 추천된 종목을 나에게 미리 알려주고, 며칠 후에는 해당 종목들을 가상 투자했을 때의 수익률을 리포팅해준다.

이 책을 통해 알고리즘 트레이딩을 위한 프로그래밍 기초를 배우고 조금 더 공부하신다면 위의 시나리 오뿐 아니라 여러분이 생각해둔 아이디어를 그대로 컴퓨터가 실행할 수 있게 만들 수 있습니다. 그렇다 면 이렇게 하기 위해서는 무엇을 공부해야 할까요?

 

 

1) 프로그래밍과 프로그래밍 언어

몇 년 동안 주식 투자를 해오신 분들은 나름대로 주식 투자를 위한 자신만의 노하우가 있을 겁니다. 예 를 들어, 속칭 ‘상한가 따라잡기’ 등과 같은 매수 기법도 일종의 노하우라고 할 수 있습니다. 컴퓨터와 관련된 학문에서는 노하우를 다른 말로 ‘알고리즘’이라고 합니다. 그리고 이러한 알고리즘을 컴퓨터가 알아들을 수 있도록 일련의 명령문으로 작성하는 것을 프로그래밍이라고 합니다.

아직 잘 이해가 안 가시죠? 누군가에게 여러분을 대신해 마트에서 물건을 사 오도록 지시하는 상황을 생각해 봅시다. 먼저 그 사람에게 가까운 마트에 어떻게 가는지(여러분만이 알고 있는 지름길이 있으시 죠? 이게 바로 노하우, 즉 알고리즘입니다), 그리고 어떤 물건을 사서, 결제는 어떻게 하는지에 대해 알 려줄 것입니다. 예를 들어, 다음과 같이 말이죠.

1) 일단 마을버스 777번을 타세요. 2) 3개의 정거장을 지난 후 하차하세요. 3) 정거장 우측으로 100m를 직진한 후 A 마트로 가세요. 4) 마트의 2층 식품 판매대에서 B를 사세요. 5) 1층 결제 코너에서 C 카드를 통해 결제하세요. 6) 길을 건너서 맞은편 버스 정류장에서 777 버스를 타세요. 7) 세 개의 정거장을 지난 후 하차하세요.

컴퓨터에게 어떤 일을 시킬 때도 위와 같은 형태로 지시 내용을 나열해야 합니다. 이처럼 명령어가 나 열된 것을 프로그램이라고 하며, 프로그램을 작성하는 행위를 프로그래밍이라고 합니다. 어떤가요? 프 로그래밍이라는 것이 여러분의 삶과 동떨어진 이야기가 아니죠? 이미 여러분은 일상생활에서 프로그 래밍을 해왔던 것입니다. 다만 이러한 지시 사항을 컴퓨터에게 이야기하는 것이 아니라 여러분의 가족 이나 동료, 즉 사람에게 지시하거나 부탁해왔던 것이죠.

위와 같은 부탁이나 지시를 사람에게 할 때는 여러분과 지시를 받는 사람이 모두 알아들을 수 있는 한 국어를 이용하면 되겠죠? 프로그램을 작성할 때도 명령을 내리는 여러분과 지시를 받는 컴퓨터가 모두 알아들을 수 있는 언어가 필요한데, 이를 프로그래밍 언어라고 합니다. 위의 예처럼 마트에 가서 물건 사는 법을 여러분의 친구에게 말했다면 그것이 바로 프로그램이고, 여러분이 한국어로 말했다면 한국 어가 바로 프로그래밍 언어가 되는 것입니다

그림 1.1 프로그래밍 언어의 역할

그런데 사람이 아닌 컴퓨터에게 명령을 내리려면 어떻게 해야 할까요? 일단 앞에서 배운 것처럼 지시 사항을 순서대로 나열해야 합니다. 보통 이러한 작업을 명령어를 기술한다고 표현합니다. 이때 중요한 것은 명령어를 기술할 때 여러분과 컴퓨터가 서로 알아들을 수 있는 언어를 사용해야 한다는 점입니다.

우리가 사는 지구에 한국어, 영어, 중국어, 일본어 등 다양한 언어가 존재하는 것처럼 컴퓨터가 알아들 을 수 있는 컴퓨터 프로그래밍 언어도 다양합니다. 이 책에서는 그중에서 파이썬(Python)이라는 언어 를 배울 것입니다

갑자기 프로그래밍 언어 이야기를 하니 벌써 걱정이 되고 머리가 아프죠? 걱정하지 마세요. 파이썬은 프로그래밍 언어 중 가장 배우기가 쉬워서 프로그래밍을 전공하지 않는 분들도 쉽게 배울 수 있답니다. 프로그래밍을 배우지 않은 분들이 알고리즘 트레이딩(Algorithmic Trading)을 하고자 한다면 저는 다른 어떤 언어보다 파이썬 을 추천해 드립니다. 파이썬은 엑셀을 기반으로 하는 VBA보다 배우기 쉽고, C/C++와 같은 언어와는 비교할 수 없을 만큼 쉽습니다.

 

 

 

2) 주식투자

주식투자의 목적은 사람마다 다르겠지만 아마도 대부분의 사람은 그림 1.2와 같이 돈을 벌기 위해서일 것입니다. 쉽게 말하면 재테크 수단의 하나라는 것입니다.

부동산 투자를 통한 재테크는 집값 상승을 일으켜 사회적 약자에게 상실감을 주거나 경제를 심하게 왜곡할 수 있습니다. 이와 달리 주식투자는 여러분이 주식투자를 통해 이익을 보거나 손해를 본다고 해서 주변 사람에게 피해가 가는 것은 거의 없답니다. 물론 가족의 생활비를 주식투자로 모두 탕진해 버린다 면 이야기가 달라집니다. 다시 말해, 주식투자는 사람들이 생각하는 것보다 상당히 건전하며, 주위 사 람에게 피해를 주지 않는 건전한 재테크의 한 방법이라고 할 수 있습니다.

또한 사람들이 잘 보지도 않던 경제 뉴스를 챙겨 읽게 하고, 사회에서 일어나는 여러 가지 일들에 대 해서도 좀 더 관심 있게 지켜보게 하는 좋은 역할도 합니다. 그러나 문제는 개인 투자자들이 주식시장 에서 돈을 벌기가 생각만큼 쉽지 않다는 것이죠. 왜 개인투자자들은 주식시장에서 돈을 벌기가 어려 울까요?

그림 1.2 주식과 부동산 투자의 목적

여기에는 여러 요인이 있겠지만 우선 개인 투자자들은 기관 투자자나 외국인보다 얻을 수 있는 정보가 한정적이라는 것이 첫 번째 이유입니다. 아시는 분도 있겠지만 일부 회사는 회사의 정보를 미리 기관 투자자나 외국인에게 불법적으로 제공하기도 합니다. 이따금 증권방송에서 일부 애널리스트들이 특정 주식 종목을 추천하지만 정작 자신들은 이미 매수를 해놓고 기다리다가 일반 투자자들이 매수를 시작 하면 바로 해당 주식을 매도해서 수익을 올리기도 합니다. 이러한 요인은 모두 개인 투자자의 역량과는 상관없이 환경적으로 발생하는 외적 요인이라 할 수 있습니다.

개인 투자자들이 주식투자에 실패하는 또 다른 이유는 개인 투자자들은 주식을 생업으로 삼고 투자하 는 경우가 많지 않아 실제로 주식 투자에 대해 공부하기보다는 무작정 ‘특정 종목이 오를 것 같다’, ‘이 종목은 충분히 저점이다’라고 판단하거나, 또는 주변의 누군가로부터 추천받은 종목을 아무런 사전 조 사 없이 사는 경향이 강하다는 점입니다. 이러한 것들은 모두 개인과 관련된 내적 요인이라 할 수 있습 니다.

이 같은 내적 요인과 외적 요인을 극복하고 ‘용돈 벌이’, ‘재테크’를 목적으로 주식 투자를 하는 개인 투 자자들은 어떻게 해야 거대 기관 투자자나 외국인 사이에서 주식투자에 성공할 수 있을까요?

이 질문의 답은 여러 가지가 있겠지만 저자는 이 책에서 다룰 ‘알고리즘 트레이딩’이 하나의 답이 될 수 있다고 생각합니다. 개미들이 시장에서 성공할 수 없는 이유를 다음과 같은 두 가지로 요약했을 때 알 고리즘 트레이딩을 이용하면 이러한 문제를 어느 정도 해결할 수 있기 때문입니다.

  • 정보의 부족
  • 시간의 부족

 

 

3) 알고리즘 트레이딩

그렇다면 ‘알고리즘 트레이딩(Algorithmic Trading)’이란 무엇일까요? 일단 트레이딩은 한국어로 ‘거래’를 의미하고, 알고리즘 은 주로 컴퓨터 분야에서 많이 사용하는 용어로서 ‘어떤 문제를 해결하기 위한 절차나 방법’을 의미합니 다. 즉, 알고리즘 트레이딩이란 ‘컴퓨터를 이용해 어떤 일정한 알고리즘에 따라 자동으로 거래하는 매 매 방식’을 의미합니다.

앞에서도 간단히 예를 들어 설명했지만 알고리즘 트레이딩의 구체적인 시나리오에 대해 한 번 더 생각 해 봅시다. 먼저 컴퓨터가 주식 시장이 개장되기 전에 전날의 거래 패턴(거래량, 종가, 시가, 주식 가격 의 변동 폭)을 분석하고 이를 통해 여러분에게 투자 유망 종목을 자동으로 추천해 줄 수 있습니다. 또는 더 나아가 여러분이 낮에 일하는 동안 컴퓨터가 자동으로 주식을 매수하고, 매도하면서 수익을 낼 수도 있습니다.

최근 정기적금의 은행이자가 연 2% 이하임을 고려했을 때 여러분이 잘 만든 시스템은 하루에 15% 이 상의 수익을 낼 수도 있는 것입니다. 물론 온종일 사고팔고를 잘한다면 그 이상의 수익률도 이론적으로 불가능하지는 않습니다.

알고리즘 트레이딩의 개념을 알아봤으니 그럼 이번에는 어떻게 해야 컴퓨터로 이런 것들을 만들 수 있 을지 알아봅시다.

효율적인 ‘프로그램 매매’를 위해서는 무엇보다도 여러분만의 알고리즘(투자 노하우)이 있어야 합니다. 예를 들어, 여러 주식 책을 보면 거래량 분석을 통해 다수의 세력이 장기간에 걸쳐 매집하는 종목을 찾 는 알고리즘이 있습니다. 이 알고리즘은 몇 개월 동안 거래량을 분석하고 있다가 특정 종목의 일일 거 래량이 최근의 평균 거래량보다 1,000% 이상 급등하는 종목을 찾습니다. 이처럼 단기간의 거래량이 평균 거래량보다 폭발적으로 늘어나는 종목은 단기간에 급등할 수 있다는 것이 주요 아이디어입니다.

문제는 국내 주식 시장(유가증권시장, 코스닥시장)의 주식 종목이 2,000개 정도 되기 때문에 매일 퇴 근한 후 이런 종목들을 자세히 조사하고 투자 계획을 세우기가 어렵다는 것입니다. 회사에서 이런 일을 한다면 아마 여러분은 당장 해고될 것입니다.

이 문제의 간단한 해결책은 그런 일들은 컴퓨터가 대신 하게끔 시키면 된다는 것이죠. 사실 컴퓨터는 스스로 생각하거나 판단하는 것은 사람보다 못하지만(물론 아직은 그렇다는 얘깁니다) 다수의 데이터 를 반복적으로 처리하는 것은 사람보다 월등히 잘합니다. 그리고 여러분의 인건비에 비하면 컴퓨터를 사용하는 데 드는 비용은 구매 비용과 전기세 정도밖에 안 됩니다.

알고리즘이 준비되면 다음 단계는 프로그래밍 언어를 이용해 여러분의 ‘알고리즘’을 컴퓨터가 알아들을 수 있게 프로그래밍하는 것입니다.

 

 

 

4) 파이썬이란?

파이썬은 프로그래밍 언어 중 하나라고 앞에서 간단히 설명했습니다. 파이썬이 프로그래밍 언어라는 사실을 아는 걸로도 충분하겠지만 다른 누군가에게 파이썬에 대해 좀 더 자세히 설명해줄 수 있다면 좋 겠죠? 이를 위해 조금 지루할 수 있겠지만 파이썬이라는 프로그래밍 언어의 역사와 특징을 좀 더 알아 보겠습니다.

파이썬은 1991년 귀도 반 로섬(Guido van Rossum)이 만든 배우기 쉽고 강력한 프로그래밍 언어입 니다. 곧 알게 되겠지만 파이썬은 C, C++, 자바(Java) 같은 프로그래밍 언어보다 훨씬 배우기 쉽고 문법도 간단합니다.

또한 파이썬은 C, C++, 자바보다 약 1/3 또는 1/5 정도의 코드만으로도 같은 기능을 수행할 수 있어 개발 생산성이 매우 높습니다. 쉽게 말해서 컴퓨터에게 대충 명령을 내려도 컴퓨터가 알아서 일을 잘 처리하기 때문에 C, C++, 자바보다 프로그래밍하는 시간이 줄어든다는 것입니다. 같은 알고리즘을 C, C++ 프로그래머가 구현해서 트레이딩 시스템을 구축하는 것보다 파이썬을 이용했을 때 개발 시간을 크게 단축할 수 있다는 뜻입니다.

파이썬이라는 이름은 귀도 반 로섬이 좋아하는 코미디 프로그램인 “Monty Python’s Flying Circus” 에서 따온 것이라고 합니다. 하지만 파이썬이라는 이름의 뱀도 있어서 실제로 파이썬 프로그래밍 책을 보면 표지에 뱀이 그려진 것이 많습니다. 그리고 파이썬과 관련된 프로그램의 아이콘에도 뱀이 자주 등 장하는 것을 볼 수 있습니다. 그렇다면 파이썬을 개발한 귀도 반 로섬은 요즘 무슨 일을 하고 있을까요?

https://www.python.org/~guido/

위의 URL로 들어가 보면 파이썬 공식 홈페이지에 귀도를 위한 페이지가 있는 것을 볼 수 있습니다. 뭔 가 창시자에 대한 예우처럼 보이지 않습니까? 귀도는 파이썬 언어의 발전에 크게 기여해오고 있는데, 구글(Google)과 드롭박스(Dropbox)에서 일했고 2019년 11월부터는 은퇴 후 개인 프로젝트를 진행하고 있습니다. 재미있는 점은 구글과 드롭박스에서 약 50%의 시간에는 회사를 위해 일하고, 나머지 50%는 파이썬을 개발하 는 데 시간을 보내고 있다고 합니다. 그만큼 세계 최고 수준의 프로그래머에 대한 회사 차원의 배려가 아닌가 합니다. 물론 구글과 드롭박스의 많은 부분이 파이썬으로 개발되고 있어서 파이썬 자체의 발전 을 위한 투자로도 생각해볼 수 있습니다.

마지막 편집일시 : 2019년 11월 22일 8:56 오후