본문 바로가기
주식투자

문과 출신 코알못 직장인의 미국주식 자동매매 도전기1 (feat.챗GPT)

by 비케이퀀트 2023. 9. 16.

저는 젠포트라는 무료 자동매매 플랫폼을 활용해 국내 주식에 투자하고 있습니다. 코딩을 할 줄 모르는 코알못도 기본적인 조건식만 익히면 자신만의 전략을 짜고 실전매매까지 할 수 있어서 애정하는 플랫폼이죠.

 

 

2023.04.07 - [주식투자] - 실전 퀀트투자 및 젠포트 자동매매 결과 (23년 4월)

 

실전 퀀트투자 및 젠포트 자동매매 결과 (23년 4월)

지난 1월에 실제 매매 중인 퀀트투자 결과를 공개했었는데요. 어느덧 11-4 천국의 마지막 달이 되어서 그간 진행된 내용을 공유해 보려고 합니다. 저는 젠포트 툴을 활용해 자동매매로 퀀트투자

mproject2017.tistory.com

 

젠포트는 미국 주식도 지원하긴 하지만, 증권사에서 부과하는 수수료가 어마어마해서 (매수/매도 0.35%, 즉 0.7%) 수익내기가 쉽지 않더라고요. 울며 겨자 먹기 식으로 자동매매 코드를 배워가며 작성해 보기로 했습니다.

 

낮엔 회사에 묶여있는 직장인이고, 밤엔 육아를 해야하는 아빠라서 물리적으로 시간이 부족했는데요. 주말 아기가 낮잠 자는 2시간, 다음 날 체력을 저당 잡고 밤잠을 줄인 2시간 등 틈틈이 시간을 활용했습니다. 그 결과 착수하고서 실전 매매를 돌리기까지 총 두 달 정도 걸린 것 같네요.

 

 

사실 처음에는 크몽이나 숨고에서 프로그램 개발 목적으로 전문가를 써볼까 잠깐 고민해 봤습니다.

 

근데 프로그램이란게 연관되어 있는 다른 S/W가 업데이트되거나 혹은 제가 원하는 것이 달라지면 그때 그때 수정을 해줘야 하잖아요. 이번에는 잠깐 전문가의 손을 빌려 프로그램을 만들어 낼 수 있다고 해도 제가 프로그램의 구성을 모르면 장기적으로 매번 외부로부터 도움을 받아야 하겠더라고요.

 

결국 그냥 제가 만들어 보기로 했습니다.

 

 

아직까지 구멍이 숭숭 뚫려있는 코드라 매번 막기 바쁘긴 하지만, 매수와 매도가 정상적으로 진행되긴 하니까요.

저랑 비슷한 상황에 있으신 분들께 조금이나마 도움이 되고자 기록으로 남겨봅니다. 그럼 시작해 보겠습니다.

 

'어쨌든-작동되는-코드'-라는 의미를 보여주기 위한 이미지로-새가-머리를-프로펠러처럼-돌려서-날아가고-있다
작동하기만-하면-되지

 

너무너무 친절한 나의 코딩 선생님, ChatGPT

 

코딩에 'ㅋ' 자도 모르던 제가 무턱대고 용감하게 프로그램을 짜보겠다고 뛰어든데는 그나마 믿는 구석이 있었기 때문입니다.

 

바로 ChatGPT였는데요. ChatGPT가 언어 중심의 생성형 AI이다 보니 코딩 작업에 최적의 성능을 발휘할 수 있겠더라고요. 때마침 ChatGPT 유료 버전인 GPT-4가 출시되었는데, "어떤 어떤 프로그램을 작성해 줘"라고 명령을 내리니까 자기가 알아서 코드를 짜주는 영상을 보고 "아 이거다" 싶었습니다. 

 

바로 유료 결제를 하고 GPT4, Advanced Data Analysis 모델을 사용해 봤죠.

 

코딩을-위해-ChatGPT-유료-버전에서-Advanced-Data_Analysis-선택
ChatGPT-유료버전-GPT4-Advanced Data Analysis

 

설명을 위해 제가 임의로 데이터 크롤링 프로그램 샘플코드를 작성해 달라고 요청해 봤습니다.

 

나 : 웹사이트 데이터 크롤링 프로그램을 작성하려고 해. 기본 샘플 코드를 작성해줘.

 

ChatGPT : 물론입니다! 웹사이트 데이터 크롤링을 위해 Python의 requests와 BeautifulSoup 라이브러리를 주로 사용합니다. 아래는 간단한 예제 코드입니다:


import requests
from bs4 import BeautifulSoup

# 웹사이트 URL
url = "http://example.com"

# 웹사이트 데이터 가져오기
response = requests.get(url)
response.raise_for_status()  # 오류가 발생하면 예외를 발생시킵니다.

# HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser')

# 특정 태그나 클래스, ID 등을 사용해 원하는 데이터 추출
# 예: 모든 <p> 태그의 텍스트를 가져옵니다.
paragraphs = [p.get_text() for p in soup.find_all('p')]

print(paragraphs)


이 코드는 http://example.com 웹사이트에서 모든 <p> 태그의 텍스트를 출력합니다. 실제로 웹사이트 데이터를 크롤링할 때는 해당 웹사이트의 robots.txt 파일을 확인하여 크롤링이 허용되는지 확인해야 합니다. 또한, 대량의 요청을 보내지 않도록 주의하고, 웹사이트의 서버에 부담을 주지 않도록 적절한 간격으로 요청을 보내야 합니다. 참고로, 여기서 제공된 코드는 실제 환경에서 실행하기 위해서는 필요한 라이브러리를 설치해야 합니다:

 

pip install requests beautifulsoup4

 

크롤링 대상이 되는 웹사이트의 구조에 따라 코드를 적절히 수정해야 합니다.

 

 

훌륭하죠? 근데 문제는 제가 코알못이다 보니까 저 샘플 코드를 어떻게 실제로 활용해야 할지 전혀 모르겠더라고요.

샘플코드를 주면 뭐하니..써먹을 줄을 모르는 걸 ㅠㅠ

 

그래서 제가 필요한 기능을 정의하고, 챗GPT에게 최대한 구체적으로 요구사항을 전달하기로 했습니다.

제가 필요한 기능들은 아래와 같았습니다.

 

- 젠포트에서 종목 정보 추출을 위한 데이터 크롤링

- 증권사 API 접속 토큰 발급

- 종목별 매수금액을 계산하기 위해 전체 자산 조회

- 프로그램 실행상황 및 매수매도 현황 실시간 파악을 위해 메시지 송출

- 매수 매도 주문을 위한 종목코드 조회

- 중복 주문 방지를 위한 보유 종목 조회

- 매수 매도 가격 계산을 위한 전일 주가 데이터 조회

- 매수 함수

- 매도 함수

 

처음에는 이렇게 기능이 많이 필요할지도 몰랐어요. 그냥 젠포트에서 종목 정보와 매수, 매도 가격 가져와서 그대로만 입력해야지라고 생각했는데, 하다 보니 이슈가 많아서 점점 더 기능이 늘어나게 되었습니다. 

 

시작할 때 저걸 전부 다 해야한다고 생각했으면 지레 겁먹고 힘들어서 안 했을 것 같기도 하네요. 운이 좋았습니다 ㅎ

 

그럼 다음 글부터 본격적으로, 어떻게 챗GPT와 함께 기능별 코드를 개발했는지 설명해 드리도록 하겠습니다.

많은 성원 부탁 드려요! 감사합니다.

 

댓글