AI Trading System

Luuuuucy·2025년 6월 22일

TOY PROJECTS

목록 보기
11/11

기획

1. 개요

NVIDIA ACADEMY에서 맞은 첫 번째 팀 프로젝트이다.
지금까지는 토이프로젝트를 진행했었다면 이제는 2명 이상 팀을 이루어 LLM 관련 프로젝트를 진행해야 한다.

(1) 주제

주제 고민이 많았다.

팀 프로젝트이다 보니, 단순한 챗봇을 만드는 것이 조금 아쉬웠다.

그래서 LLM으로 할 수 있는 챗봇이 아닌 다른 것은 뭐 없을까? 고민하던 중, LLM을 활용한 주식예측을 하는게 어떨까? 하는 마음으로 AI 트레이딩 시스템을 구축해보기로 했다.

(2) 기간

2025년 02월 2주 ~ 2025년 03월 1주 (약 3주)

(3) 팀원

항상 같이 해왔던 ㄷㅇ님과 함께 팀을 이루었다.

팀명은 '지그재그' 이다. (옷 가게 이름 아님!! 😂)

'지그재그'는 주식이 상승,하락하는 그래프 모양을 생각하면 만든 이름이고, 시스템 이름도 'zigzag'로 하기로 했다.

(4) 계획

프로젝트 일정은 아래와 같이 진행한다.

2. 도구

(1) chatGPT, gemini

이번에는 허깅페이스에서 모델을 직접 가져와서 사용하기 보다는 API를 사용해서 트레이딩이 가능한 지가 궁금했기 때문에 유료인 chatGPT와 일부 무료인 gemini를 섞어서 사용할 계획이다.

(2) Docker

사실 초기 계획할 때부터 ㄷㅇ님과 대화를 했었지만, 완벽한 AI트레이딩 서비스를 만들 수는 없을 것 같았다. 약 3주동안 최적화 시키기란 쉽지 않을 테니 말이다. 그래서 이 프로젝트가 끝나도 ㄷㅇ님과는 계속 개발이 가능했기 때문에 '나중'을 위한 개발을 하자는 얘기가 나왔다.

그래서 선택한 건 MSA기반 SaaS 프로그램이었다.
MSA를 구현하기 위해서는 Docker가 필요하다.

(3) Golang, PostgreSQL

나의 주언어이다~ 너무 오랜만인 Go.. !! 이번 프로젝트는 어차피 API를 이용할 예정이어서 바이너리 파일로 빌드가 가능한 Golang을 선택했다. 그리고 DB는 PostgreSQL을 선택했다. 아무래도 이번에는 백서버가 할 일이 많을 것 같다 😏

(3) NEXT.JS, node.JS

ㄷㅇ님의 주언어는 Java와 JS이다. 프론트를 주로 맡아주기로 했다. 백도 많이 만져보셨기 때문에 거의 모든 부분을 같이 할 예정이다.

(4) NGINX

MSA의 꽃! 각 요청을 알맞은 컨테이너로 요청을 보내기 위해서는 GW가 필수이다.

설계

1. 구조

MSA를 지향했기 때문에 아래와 같은 구조를 가진다.

이번 프로젝트에는 핵심 기능을 중심으로 만들 계획이다.
log-in, core, billing, chat-bot 이 4개의 모듈이 목표이다.

시스템 로그 관리는 프로젝트 이후에 만들 예정이다.
크로스사이트 플랫폼을 지향하지만, 우선 윈도우 시스템 빌드를 목표로 한다.

2. 와이어프레임

홈(대시보드)

설정

기타

시간이 되면 chatZ 모듈에 챗봇이 가능하게 하면 좋겠다는 생각을 했다. 하지만, 추후 진행하는 걸로 하고, 이번에는 코어기능을 목표로 진행한다.

구현

1. OAuth 2.0

OAuth 2.0 기반 인증 과정에서 JWT 토큰을 사용해 로그인을 구현했다.

아래는 OAuth2.0 프로세스이다.

2. 테이블

(1) user

pw는 해시 암호화를 통해 저장된다.

(2) token

JWT 토큰 관리하는 테이블이다.

(3) trade_log

코어 프로세스에서 tade_log에서 사용자의 거래이력을 추출한다

(4) api_key

gemini, chatGPT, 주식 거래 API 등 사용자가 사용할 API가 다수인 관계로 api_key 테이블을 구성했다.

3. 코어 프로세스

음.. 원래는 주식으로 시작하였지만, 주식 시장의 경우 특정 시간에만 거래가 이루어지므로 테스트가 원활하지 않았다. API까지 모두 연결하였지만 주말 작업이 어려워서 코인으로 대체했다.

한국투자증권 API에서 업비트 API로 변경하였다.

그리고 코인 특정종목은 '비트코인'으로 변경하여 작업했다.

[1] DB에서 chatbot API Key 받기

api_key 테이블에서 API key 가져오기

[2] 종목 탐색 X (미리 정해서 진행, 우선 1개)

비트코인으로 지정했다.

[3] 특정 종목에 대한 기사 탐색 (네이버 API or 구글 뉴스)

비트코인에 대한 기사를 네이버 API를 활용해서 가져오기

[4] 기사 내용 요약 및 정제 (Gemini API 활용)

Gemini API를 활용해서 기사 내용을 요약

[5] DB에서 한국투자증권 API 요청에 필요한 데이터 받기

api_key 테이블에서 key, secret, account 가져오기

[6] 특정 종목에 대한 실시간 데이터 받기 (웹소켓 이용, 한국투자증권)

실시간 주가, 거래량 받아오기

[7] 기사 내용 요약본 + 거래이력 + 공탐지수 + 주식 데이터 기반으로 매수, 매도 가격 판단 (Open API)

Open API를 활용해서 기사 내용 요약본과 주가 데이터를 기반으로 매수가, 매도가를 판단하여 db에 저장

[8] 이상적인 매수가, 매도가 기준으로 업비트 주문

4. 예측 결과

{
  "buy_strength_score": 1,
  "ideal_buy_price": 121100000.00,
  "ideal_sell_price": 124650000.00
}

buy_strength_score

buy_strength_score는 매수 강도를 수치화한 지표로,
OpenAI가 뉴스 데이터 및 공시 탐지 지수를 분석하여 생성한 신호값이다.
값은 1에서 5까지로 구성되며, 5에 가까울수록 매수 강도가 강한 신호를 의미한다.

ideal_buy_price

가장 이상적인 매수가를 제시하며, 이상 매수가로 매수 주문을 건다.

ideal_sell_price

가장 이상적인 매도가를 제시한다.

평가

로그인

프로그램 만들 때 항상 가장 많이 신경 쓰는 곳은 바로 '유저 관리'이다.
개인정보보호법, 해시 암호화 등등 정말 신경 쓸 게 많다.

회원가입, 아이디찾기, 비밀번호 재설정, 아이디 기억 모두 가능한 페이지이다.

비밀번호 재설정과 회원가입 시 사용자 이메일 인증이 완료된 후 서비스가 진행된다.

이럴수가.. 아직 더 시간이 필요한걸까? -3.37% 라니 ..😭
이 프로젝트에서'매도가 +- 2% 시점에서 Open API_개체2가 매도 시점의 뉴스 내용과 차트를 기반으로 매도할 지, 보류할 지 판단' 이 기능을 넣지 못했다. 추후에 작업할 때는 꼬옥 넣어야지!! 😉

설정

프로그램에서 사용하는 API는 사용자 별로 발급 받아서 입력할 수 있다.

마무리

음.. 우선 다른 사람들과는 달리 LLM의 판단 기능을 극대화해서 사용해보고 싶어서 시도해 본 AI 트레이딩 프로그램은 아직 많이 부족한 듯 싶다. 아무래도 현재는 뉴스, 거래이력, 공탐지수를 기반으로 예측한다.

회고

첫 프로젝트를 AI 트레이딩을 선택하다니..
ㄷㅇ님과 나는 장기 프로젝트로 생각을 하다 보니, 막상 발표할 때는 보여드릴만한 게 별로 없었다.
그래서 조금 아쉬웠다...

하지만, 돈과 관련되어 있어서 그런지 프로젝트 몰입도는 정말 좋았다.
마지막 3일은 거의 밤을 지새우면서 코드를 짰다.

예측 결과가 안좋으면 아예 프로세스를 갈아엎기도 했다.
이렇게까지 집중을 해본 지가 오래된지라, 첫 번째 프로젝트는 몰입도에서는 ⭐️ ⭐️ ⭐️ ⭐️ ⭐️ 이었다!

아, 방송국 다니던 시절 역사 다큐멘터리 만들면서 파이널까지 정말 계속 밤을 지새웠던 게 떠오를 정도였다. 근데 그 때보다 이 프로젝트 할 때가 더 좋았다~ 😳

profile
Hi, I am Lucy. Welcome to Moon in the Room. 🌝

0개의 댓글