이 프로젝트를 시작하게 된 계기
주식 투자를 하다 보면 누구나 한 번쯤 이런 생각을 해보셨을 거예요.
"감정만 빼면 수익이 날 텐데..."
저도 마찬가지였습니다. 급등하는 종목을 보면 뒤늦게 뛰어들고, 조금만 빠져도 공포에 팔아버리고. 매번 복기하면서 "다음엔 원칙대로 하자" 다짐하는데, 또 같은 실수를 반복하게 되더라고요.
그리고 솔직히 이런 꿈도 좀 있었습니다.
"내가 일하는 동안, 자는 동안에도 시스템이 알아서 야금야금 돈을 벌어주면 얼마나 좋을까."
차트를 계속 쳐다보고 있을 수도 없고, 그렇다고 아예 안 보자니 기회를 놓칠 것 같고요. 매매 원칙만 잘 세워놓으면, 그걸 사람 대신 시스템이 묵묵히 실행해주는 게 가장 이상적이겠다 싶었어요. 제가 신경 쓰지 않는 사이에도 조건에 맞는 종목이 있으면 사고, 목표에 도달하면 팔고, 위험하면 안 사는 — 그런 시스템이요.
그래서 아예 매매 원칙을 코드로 만들어버리자고 결심했습니다. 거기에 GPT를 붙여서 종목 선정까지 맡기면 어떨까? 하는 호기심에서 이 프로젝트가 시작됐어요.
어떤 봇인지 간단히 소개드릴게요
한마디로 정리하면 이렇습니다.
GPT가 종목을 고르고, 코드가 사고팔고, 안전장치가 돈을 지킨다.
좀 더 구체적으로 설명드리면, 매매 방식은 스윙 트레이딩(1~5일 보유)이고요, 증권사 API는 한국투자증권(KIS) Open API를 사용합니다. 종목 선정은 OpenAI GPT에게 맡기고, 매매 현황은 Slack으로 실시간 알림을 받아요. 모든 설정은 YAML 파일로 관리해서 수치를 하드코딩하지 않았습니다.
단타도 아니고 장기투자도 아닌, 중단기 스윙 전략이에요. 하루에 몇 번 종목을 스캔하고, 조건에 맞으면 매수, 목표가에 도달하면 매도하는 방식입니다.
전체 구조를 한눈에 보면
각 모듈이 역할별로 깔끔하게 분리되어 있고, 메인 봇이 이 친구들을 조율하는 구조예요.
봇이 한 바퀴 도는 과정
하나의 매매 사이클이 어떻게 흘러가는지 간단히 정리해봤어요.
- 장 운영 확인 — 지금 거래 가능한 시간인지 체크합니다
- 종목 스캔 — 거래량 상위, 등락률 등으로 후보를 수집해요
- GPT 종목 선정 — 후보 데이터를 GPT에 보내서 매수할 종목을 골라달라고 합니다
- 매수 실행 — 선정된 종목을 지정가로 매수 주문 넣어요
- 보유 종목 관리 — 손절/익절/트레일링 등 매도 조건을 체크합니다
- 매도 실행 — 조건에 해당하면 매도 주문을 넣어요
- 상태 저장 & 알림 — 포지션을 저장하고, Slack으로 현황 리포트를 보냅니다
이 사이클이 2분 간격으로 반복돼요. 장 시작부터 마감까지 하루에 약 180~200바퀴 정도 도는 셈이죠.
기술 스택을 이렇게 고른 이유
한국투자증권 KIS API를 선택한 건, 국내 증권사 중에서 Open API가 가장 잘 정리되어 있었기 때문이에요. REST 기반이라 연동도 비교적 수월했고, 모의투자 환경도 제공해줘서 실전 전에 충분히 테스트할 수 있었습니다.
GPT(OpenAI API)는 처음에 규칙 기반으로 종목을 필터링해봤는데, "이 종목이 정말 괜찮은 건지"를 판단하는 건 단순 규칙으론 한계가 있더라고요. GPT에게 기술적 지표, 수급 데이터, 시장 상황을 한꺼번에 주고 종합적으로 판단하게 하니 훨씬 나은 결과가 나왔습니다. 비용도 하루에 약 500원 내외라 부담이 없었어요.
Python은 금융 데이터 처리 라이브러리가 풍부하고, 빠른 프로토타이핑이 가능해서 선택했습니다. 초단타 HFT가 아닌 이상 Python으로 충분하거든요.
YAML 설정 파일로 모든 수치(손절 비율, 익절 비율, 필터 기준값 등)를 관리하고 있어요. 코드를 건드리지 않고도 전략 파라미터를 조정할 수 있어서 정말 편합니다.
소스 코드의 세부 구현보다는 왜 이렇게 설계했는지, 그리고 실전에서 뭘 배웠는지에 초점을 맞추려고 합니다. 비슷한 프로젝트를 계획 중이신 분들께 조금이라도 도움이 되면 좋겠어요.
다음 편에서는 한국투자증권 API를 연동하면서 겪었던 삽질기를 풀어볼게요. 🛠️