← 프로젝트 목록으로
2026.01 ~ 진행 중

FinanceManage_Agent — AI 주식 자동매매 시스템

데이터 분석 기반 AI 에이전트로 주식 자동매매를 실행하는 풀스택 프로젝트.

Spring BootFastAPIVue 3PostgreSQLTimescaleDBKafkaRedisDockerAI AgentAlgo TradingMSA
GitHub Repository →

매 거래일 KOSPI 100 종목을 다축으로 분석해 11개 피처를 산출하고, 생성형 AI(Gemini)의 유연한 판단과 룰 기반 안전망의 안정성을 결합한 이중 검증 구조로 매수/매도를 결정해 KIS 모의투자 API로 자동 주문하는 시스템이다.

Overview

왜 만들었나

사람이 매일 반복하는 주식 분석·매매 루틴을, 감정을 배제한 데이터 기반 자동 파이프라인으로 옮기는 것이 목표다.

AS-IS — 사람의 수동 매매 TO-BE — 데이터 기반 자동 파이프라인
시간 점검 항목이 많아 시간 소모 사람 개입 없이 동일 루틴 반복
범위 대상 종목 수가 곧 분석의 한계 대상을 좁히고 다축으로 동시 분석
일관성 동일 상황에도 판단이 흔들림 감정 없이 일관된 기준으로 실행
재현성 의사결정 근거를 재현하기 어려움 근거가 구조화된 매수/매도 후보 산출

단일 지표보다 여러 신호를 종합할 때 투자 판단이 효율적이라는 선행연구(Lopez-Lira & Tang, 2023 · JP Morgan LOXM)에 근거해 “종합 판단” 구조를 채택했다.

시스템 구조

수집·분석·판단 / 매매 실행 / 표시 / 저장을 분리한 서비스들을 하나의 모노레포(Docker Compose)로 운영한다.

모듈 역할 기술 스택 포트
ai-agent 수집 · 3축 분석 · Gemini 판단 · 안전망 (파이프라인 코어) Python, FastAPI, APScheduler, scikit-learn, Prophet, KR-FinBERT 8000
api-server 인증 · 매매 실행(KIS) · 거래내역 · 시장분석 조회 API Spring Boot 4.1, JPA, Spring Security + JWT, Jasypt, Liquibase 7070
web-app 대시보드 · AI 분석 4탭 · 시각화 (PWA) Vue 3, Vite, Tailwind CSS, Pinia 5173 (dev)
database 분석 결과 · 예측 · 판단 · 거래 이력 영속 저장 PostgreSQL 16 (17 tables + 4 views) 5432
flowchart LR
    KIS["KIS API"] & DART["DART API"] & NEWS["뉴스 RSS·네이버"] --> AI
    AI["ai-agent :8000<br/>수집·분석·Gemini 판단·안전망"] -->|분석 결과 저장| DB[("PostgreSQL :5432")]
    AI -.->|매매 실행 요청| API["api-server :7070<br/>인증·매매 실행·조회 API"]
    AI --> GEM["Gemini API"]
    API -->|주문·잔고·시세| KIS
    API -->|JPA| DB
    WEB["web-app :5173<br/>대시보드·AI 분석 화면"] -->|REST| API
    USER([사용자]) --> WEB

매 거래일(평일) 08:50 KST에 전체 분석 파이프라인(Stage 1~6)이 자동 실행된다. web-app은 ai-agent를 직접 호출하지 않으며, ai-agent가 DB에 적재한 분석 결과를 api-server를 통해 조회한다.

분석 프로세스

코스피 100 스캔부터 자동 주문까지 한 거래일의 전체 흐름이다.

flowchart TD
    A["① TOP 30 필터링<br/>코스피 100 · 4지표 · StandardScaler · 가중합산"] --> B

    subgraph B ["② 3축 분석 11개 피처"]
        direction LR
        B1["정량 7<br/>KIS 4 + DART 3"]
        B2["감성 1<br/>KR-FinBERT"]
        B3["시계열 3<br/>Prophet"]
    end

    B --> C["③ 생성형 AI 판단 (Gemini)<br/>11피처 + 보유여부 → 매수·매도 TOP3 (JSON)"]
    C --> D{"④ 룰 기반 안전망 필터<br/>수급·감성·추세 조건 재검증"}
    D -->|조건 충족| E["⑤ KIS 모의투자 자동 주문"]
    D -->|조건 미충족| F["주문 보류 (당일 스킵)"]

단계별 요약

단계 핵심 산출
① TOP 30 필터링 코스피 100 풀 고정 → 4개 지표(외국인·기관 순매수, 거래량 배율, 가격 변동성)를 StandardScaler로 매일 새로 정규화 → 가중합산(|외국인|·0.3 + |기관|·0.3 + 거래량·0.3 + 변동성·0.1) 상위 30종목 (보유 종목 강제 포함)
② 정량분석 (KIS 4 + DART 3) KIS 시세·수급(morning_return, close_position, 외국인·기관 순매수) + DART 분기 재무(PER·ROE·영업이익률, 분기 1회 갱신·매일 DB 조회) 7개 피처
② 감성분석 (KR-FinBERT) 2트랙 분리 — 시장 전반(RSS 3개사 → 대시보드) / 종목별(네이버 금융 5건 → 시간 가중 평균). 제목+본문 200자, P(긍)−P(부) sentiment_score 1개
② 시계열 예측 (Prophet) 종목별 120거래일 독립 학습 → D+1~D+5 예측 → 선형회귀 기울기로 추세 방향·강도 수치화 가격 추세·거래량 추세·불확실성 3개
③ AI 판단 (Gemini) “AI 트레이딩 어드바이저” 페르소나, 6가지 판단 기준(수급·모멘텀·펀더멘탈·뉴스·추세·불확실성), JSON 출력 강제 매수·매도 각 TOP3 + 근거
④ 안전망 필터 수급·감성·추세 조건을 룰로 재검증해 Gemini 자유도를 제어. 미충족 시 자동 보류 실행/보류 결정
⑤ 매매 실행 is_active=true일 때 api-server를 통해 KIS 모의투자 주문 주문 체결

이중 검증 구조: 1차로 생성형 AI(Gemini)가 수치로 표현하기 어려운 맥락까지 유연하게 종합 판단하고, 2차로 룰 기반 안전망이 수급·감성·추세 조건을 다시 검증해 과도한 판단을 차단한다. 리뷰어 LLM을 두는 방식 대비 비용은 낮고 신뢰성은 높다.