주식 분석 스트리밍 1

프로젝트 시작하면서

2022년이 시작하면서 21년을 돌아보는 시간을 가졌었다.

21년에는 무엇을 했는가… 보니 회사에 정신이 빠져있었다. 회사 프로젝트니 운영이니 업무 쳐내는거에 급급해서 정작 내 공부를 못했던 것 같다.

좋게 말해서 바빴던 거지 솔직히,, 게으른게 없지는 않았다. 분명 퇴근하고 시간이 있었음에도 힘들다는 핑계로 바로 누워버리고 게임하는 시간들이 은근히 많았던 것 같다.

심지어 21년 초에 프로젝트 한다고 시작했던 MSA 구축이나 앱 개발들이 절반도 못하고 중단됐으니 개인적으로 실패한 한 해라고 할 수 있다.

(고과는 잘받았으니 그걸로 퉁 쳐야하나..)

그래서~ 22년도 상반기에 크게 3가지를 진행하고자 한다.

  1. 21년도에 진행하던 MSA 프로젝트 마무리
  2. SQLD와 GCP 자격증 따기

그리고 지금 시작하려는 3. 주식 분석 스트리밍 프로젝트이다.

사실 예전부터 주식 자동매매 프로그래밍은 해보고 싶었다. 맨날 주식 그래프만 쳐다볼 수도 없는 노릇이고, 내가 감정적으로 들이닥쳐봤자 손해 뿐이니 컴퓨터에게 맡기고 싶었다.

그걸 발전시켜서 Spark와 접목시켜보고자 한다.

대신증권 Cybos / CREON에서 데이터를 실시간으로 가져오고, 그걸 Spark Streaming으로 분석하고 언제 매수하고 매도해야할지 파악하는, 그런 프로젝트이다.

왜 SPARK 인가

솔직히 주식매매보다 더 큰 목적은 바로 이 Spark 이다. 대학생때부터 하고싶던 데이터 엔지니어를 결국 못하고 SI에 다니고 있는데, 관련 직무로 이직하고 싶어도 자소서에 쓸 게 없던 것!

언젠가는 데이터 엔지니어로 일하고자 하는 내 꿈을 이루기 위해 이번년도 이 프로젝트는 성공적으로 마무리해야만 한다.

데이터 분산처리 시스템 중 Hadoop과 Spark가 있다.

Hadoop은 HBASE를 통한 DISK I/O로 데이터를 처리한다. Map / Reduce가 대표적인데 결국 Disk I/O다 보니 배치 성으로만 의미가 있고 순간순간의 빅데이터가 절실해지는 현재는 In Memory에서 처리하는 Spark가 더 대세이다.

Spark 말고도 다른 프레임워크들이 생겼다고 하는데, 일단 Spark부터 배워야 할 것이다.

전체적인 구상은 했는가

자 그럼, 프로젝트를 어떻게 만들것인가 라는 주제를 이야기해야 한다.

1월 시작하면서 이것저것 많이 알아봤는데,

우선 증권가 API부터 알아보았다.

여러 증권가에서 API를 제공하는데, 내가 가장 쉽게 접근할 수 있는 python으로 만들 수 있는 대신증권 Cybos가 최적이었다.

다만 문제점이…

  1. Windows Client OS에서만 작동할 수 있다는 점 -> Windows Server에서 못돌려서 따로 서버구성을 못한다…

  2. Wincom 모듈로만 접근 가능하다 -> 대신증권 프로그램을 사전에 실행해야 한다.

처음에는 Python 프로젝트 하나 띄워서 pyspark와 대신증권 api 호출 모듈을 같이 붙이려했는데, 그럼 처음 생각했던, Spark Streaming 중심의 프로젝트가 안될 것 같았다.

그래서, 내 데스크톱에서는 단순히 대신증권 API 호출해서 데이터를 받아오는 역할까지만 하고, 따로 서버에 상주해있는 Spark에 데이터를 실시간으로 전송하는 것이다.

다음은 Spark! 마음같아선 Cluster 모델로 여러 Worker 서버를 두고 분산처리 하면서, Kafka까지 띄우고 싶지만 Micro 서버 1개도 겨우 요금내는 주니어 개발자가 할 수 있는 범위는 아니다.

그렇기 떄문에 DB도 자체구축 Docker MYSQL로 대체하고 spark Streaming 전송도 Socket 통신으로 바로 받을 예정이다.

마지막으로 분석 모델!

거창하게 모델 이라고 얘기하니까 머신러닝 생각되지만,, 맞다. 머신러닝 할거다.

이거 하려고 작년에 ProDS라는 자격증까지 공부하며 회귀분석부터 각종 통계지표들을 공부했다.

spark 에서 분석된 DataFrame 데이터를 바탕으로 수익구조가 날 수 있는 매수/매도시점을 캐치할 것이다.

이것을 도표로 표현하면 이렇게 된다.

Project

어디까지나 초기 구상이고, 중간중간 변경될 때마다 업데이트 하겠다.

Hits

Written on January 21, 2022