DOCUMENT No. 00
Alchemetric 프로젝트 개발 명세서
통합문서 (Master Specification)
| 프로젝트명 | Alchemetric — AI 기반 퀀트 트레이딩 플랫폼 |
| 문서 버전 | v3.1 |
| 작성일 | 2026-03-13 |
| 기술 스택 | FastAPI · PostgreSQL · Streamlit · scikit-learn · PyTorch · Stable-Baselines3 · KR-FinBert-SC · Docker |
Alchemetric은 Alchemy(연금술)와 Metric(지표)의 합성어로, 시장 데이터를 가치 있는 투자 시그널로 변환한다는 의미를 담고 있습니다.
한국·미국 주식 시장의 가격 데이터, 재무제표, 거시경제 지표, 뉴스 센티먼트, DART 공시, KRX 수급까지 — 다양한 원재료를 수집하고, 전통 퀀트부터 머신러닝·NLP·딥러닝까지 여러 분석 기법을 거쳐 최종 매매 시그널을 만들어내는 개인 프로젝트입니다.
수집·분석된 데이터와 LLM을 결합한 시장 리포트를 자동 생성하여 구독자에게 발송하며, 모의투자 및 실매매 기능을 지원합니다.
이 문서는 Alchemetric의 전체 설계와 구현 현황을 정리한 통합 명세서입니다.
1. 프로젝트 개요
| 프로젝트명 | Alchemetric |
| 목적 | 한국/미국 주식 시장을 대상으로 데이터 수집 → 분석 → 예측 → 매매까지 전 과정을 자동화하는 AI 기반 퀀트 트레이딩 플랫폼 구축 |
| 대상 시장 | KOSPI, KOSDAQ, NYSE, NASDAQ |
| 핵심 전략 | 머신러닝 + 딥러닝 + 강화학습 + 뉴스 센티먼트 복합 전략 |
| 배포 방식 | Docker Compose (4개 서비스: API · DB · User Dashboard · Admin Dashboard) |
| 모듈 수 | 총 10개 모듈 (Module 0 ~ Module 9) |
2. 시스템 아키텍처
┌───────────────────────────────────────────────────────────────────────────────┐
│ EXTERNAL DATA SOURCES │
├─────────┬────────┬─────────┬─────────┬─────────┬─────────┬─────────┬──────────┤
│yfinance │ FDR │ KIS API │DART API │ FRED │ Naver │KIS API │ KRX │
│(주가+ │ (KR3Y │(펀더멘털) │(재무+공시)│(기준금리 │ News API│(수급 │ (섹터 │
│ 거시7) │ 국채) │ │ │ DXY,CPI)│ (NLP분석) │ 데이터) │ 데이터) │
└────┬────┴───┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴─────┬────┘
│ │ │ │ │ │ │ │
└────────┴─────────┴─────────┴─────────┴─────────┴─────────┴──────────┘
│
┌───────────────────┼───────────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌────────────────┐ ┌────────────────┐
│ M0: 데이터 수집 │ │ M1: 데이터 │ │ M2: 피처 │
│ (원시 데이터) │ │ 분석 (NLP) │ │ 엔지니어링 │
└────────┬────────┘ └───────┬────────┘ └───────┬────────┘
└──────────────────┴──────────────────┘
│
┌─────────▼─────────┐
│ PostgreSQL 15 │ :5432
│ feature_store │
└─────────┬─────────┘
│
┌─────────▼─────────┐
│ M3: ML / M4: DL+RL │
│ (학습/예측) │
└─────────┬─────────┘
│
┌─────────▼─────────┐
│ M5: 백테스팅* │
│ (전략 검증) │
└─────────┬─────────┘
│
┌─────────────┬────────┴───────┬─────────────┐
▼ ▼ ▼ ▼
┌────────────────┐ ┌───────────┐ ┌───────────┐ ┌──────────────┐
│ M6: 매매* │ │ M7: User │ │ M8: Admin │ │ M9: 리포트* │
│ (모의+실매매) │ │ Dash │ │ Dash │ │ (구독 서비스) │
└────────────────┘ │ :8501 │ │ :8502 │ └──────────────┘
└───────────┘ └───────────┘
■ 완료 ■ 부분 ■ 개발 예정 (*)
예정 데이터 소스: Google Trends (검색량), Naver 커뮤니티 (토론방)
3. 기술 스택
| 계층 |
기술 |
용도 |
| Backend API | FastAPI, Uvicorn | REST API 서버, 비동기 처리 |
| Database | PostgreSQL 15, SQLite | 운영 DB(PostgreSQL), 개발용(SQLite) |
| ORM | SQLAlchemy 2.0+ | DB 추상화, 모델 정의 |
| 데이터 수집 | yfinance, FDR, opendartreader, FRED API, Naver News API | 주가, 거시지표, 재무제표, 뉴스, 공시, 수급 수집 |
| ML / DL | scikit-learn, XGBoost, LightGBM, Optuna, PyTorch | 분류 모델, 딥러닝 시계열 분류, 하이퍼파라미터 튜닝 |
| DL / RL | PyTorch, Stable-Baselines3, Gymnasium | LSTM, Transformer 시계열 분류, DQN/PPO 강화학습 매매 에이전트 |
| NLP | KR-FinBert-SC, transformers | 뉴스 센티먼트 분석 (한국어 금융 특화) |
| 스케줄링 | APScheduler | Step 기반 파이프라인 자동화 (10단계 핸들러 레지스트리) |
| 대시보드 | Streamlit, Plotly | 사용자/관리자 UI |
| 매매 API (계획) | KIS API, Alpaca API | 한국/미국 주식 실매매 |
| 배포 | Docker, docker-compose | 컨테이너 기반 배포 |
4. 모듈 구성 총괄
| No. |
모듈명 |
목적 |
상태 |
| 0 | 데이터 수집 | 주가, 펀더멘털, 거시경제, 뉴스, 공시, 수급 데이터 수집 | 완료 |
| 1 | 데이터 분석 | 뉴스 NLP (KR-FinBert-SC), DART 공시 센티먼트, 대안 데이터 | 완료 |
| 2 | 피처 엔지니어링 | 7-Phase 피처 생성 (75개, 2-Pass 아키텍처) | 완료 |
| 3 | 머신러닝 | RF/XGB/LGBM 모델, Optuna 하이퍼파라미터 튜닝 | 완료 |
| 4 | 딥러닝 | LSTM/Transformer 시계열 분류, DQN/PPO 강화학습 | 완료 |
| 5 | 백테스팅 및 포트폴리오 | 전략 검증, 포트폴리오 최적화 | 예정 |
| 6 | 매매 시스템 | 모의투자 + 실매매 (KIS/Alpaca) | 예정 |
| 7 | 사용자 대시보드 | 시장 현황, 투자 인사이트 시각화 | 완료 |
| 8 | 관리자 대시보드 | 시스템 모니터링, ML 관리 (12페이지) | 완료 |
| 9 | 리포트 + 구독 | 시장 리포트 자동 생성, LLM 요약, 3채널 구독 발송 | 예정 |
5. Module 0 — 데이터 수집
수집
→
분석
→
피처
→
ML
→
DL
→
백테스트
→
매매
→
대시보드
목적: 한국/미국 주식 데이터, 거시경제, 뉴스, 공시, 수급 자동 수집
상태: 구현 완료
5.1 수집 데이터 범위
| 카테고리 | 소스 | 항목 | 상태 |
| 주가 | yfinance, FDR | KOSPI/KOSDAQ/NYSE/NASDAQ 일별 OHLCV | 완료 |
| 펀더멘털 | KIS API | PER, PBR, EPS, 시가총액, 외국인비율 | 완료 |
| 재무제표 | DART API | ROE, 부채비율, 매출액 (분기) | 완료 |
| 거시경제 | yfinance, FDR, FRED API | KRW/USD, VIX, KOSPI, S&P500, WTI, Gold, US10Y, KR3Y, 기준금리, 달러인덱스, CPI (11개) | 완료 |
| 뉴스 | Naver News API | 종목별 뉴스 수집 + KR-FinBert-SC 센티먼트 분석 | 완료 |
| 공시 | DART API | 공시 목록 수집, 공시 유형 분류, 센티먼트 분석 | 완료 |
| 수급 | KIS API (KRX) | 공매도 거래량/비율, 프로그램매매 순매수 | 완료 |
| 섹터 | KRX 등 | 업종 수익률, 업종 내 상대강도 | 완료 |
| Google Trends | Google Trends API | 검색량 트렌드 수집 | 완료 |
| 커뮤니티 | 네이버 종목토론방 | 게시글/댓글 활성도 수집 | 완료 |
5.2 API 엔드포인트
| Method | Endpoint | 설명 |
| POST | /stocks/collect | 데이터 수집 실행 |
| GET | /stocks/prices/code/{code} | 종목별 주가 조회 |
| GET | /stocks/prices/sector/{sector} | 섹터별 주가 조회 |
| POST | /macro/collect | 거시경제 지표 수집 |
| GET | /macro/latest | 최신 거시지표 조회 |
| GET | /macro/{indicator_name} | 개별 거시지표 조회 |
| POST | /news/collect | 뉴스 수집 + 센티먼트 분석 |
| GET | /news/sentiment/{market}/{code} | 종목별 센티먼트 조회 |
| POST | /disclosure/collect | DART 공시 수집 |
| GET | /disclosure/list | 종목별 공시 목록 조회 |
| POST | /disclosure/supply/collect | KRX 수급 데이터 수집 |
| GET | /disclosure/supply/{market}/{code} | 종목별 수급 시계열 조회 |
5.3 데이터 모델
CREATE TABLE stock_price (
id SERIAL PRIMARY KEY,
market VARCHAR(10) NOT NULL, -- KOSPI, KOSDAQ, NYSE, NASDAQ
code VARCHAR(20) NOT NULL,
date DATE NOT NULL,
open/high/low/close DECIMAL(15,2),
volume BIGINT,
UNIQUE(market, code, date)
);
CREATE TABLE macro_indicator (
id SERIAL PRIMARY KEY,
date DATE NOT NULL,
indicator_name VARCHAR(50) NOT NULL, -- krw_usd, vix, fed_rate, dxy, cpi ...
value DECIMAL(20,6),
UNIQUE(date, indicator_name)
);
CREATE TABLE news_article (
id, market, code, title, description,
source, published_at, url,
sentiment_score, sentiment_label, -- KR-FinBert-SC 분석 결과
UNIQUE(market, code, url)
);
CREATE TABLE dart_disclosure (
id, market, code, report_nm, rcept_no,
rcept_dt, disclosure_type, sentiment,
UNIQUE(market, code, rcept_no)
);
CREATE TABLE krx_supply_demand (
id, market, code, date,
short_selling_volume, short_selling_ratio,
program_buy_volume, program_sell_volume, program_net_volume,
UNIQUE(market, code, date)
);
CREATE TABLE alternative_data (
id, market, code, date,
source, -- google_trends, naver_community
google_trend_score, google_trend_momentum,
community_post_volume, community_comment_volume,
community_engagement_ratio,
UNIQUE(market, code, date, source)
);
CREATE TABLE job_step (
id, job_id, -- FK → schedule_job
step_type, -- price|fundamental|...|ml (10종)
step_order, -- 1~10 실행 순서
enabled, -- 개별 스텝 활성화
config, -- JSON (ML 설정 등)
UNIQUE(job_id, step_type)
);
5.4 사용 라이브러리
FinanceDataReader yfinance opendartreader fredapi pandas SQLAlchemy APScheduler transformers KR-FinBert-SC
6. Module 1 — 데이터 분석
수집
→
분석
→
피처
→
ML
→
DL
→
백테스트
→
매매
→
대시보드
목적: 뉴스/공시/대안 데이터 NLP 기반 분석
상태: 구현 완료 — 뉴스 NLP + DART 공시 센티먼트 + 대안 데이터
6.1 분석 대상 데이터
| 데이터 | 소스 | 분석 방법 | 상태 |
| 뉴스 센티먼트 | Naver News API | KR-FinBert-SC 기반 감성 점수 산출 (긍정/부정/중립) | 완료 |
| DART 공시 이벤트 | DART API | 공시 유형 분류, 센티먼트 분석, 주가 영향 이벤트 탐지 | 완료 |
| 대안 데이터 | Google Trends 등 | Google Trends 검색량, 네이버 커뮤니티 활성도 수집 + 피처 생성 | 완료 |
6.2 주요 기능
| 기능 | 설명 | 상태 |
| 뉴스 수집 파이프라인 | Naver News API 기반 종목별 뉴스 자동 수집 및 저장 | 완료 |
| 센티먼트 분석 | KR-FinBert-SC 한국어 금융 특화 모델 기반 감성 점수 산출 | 완료 |
| 공시 이벤트 탐지 | DART 공시 수집, 유형 분류 및 센티먼트 분석 | 완료 |
| ML 피처 통합 | Phase 4(뉴스 5개) + Phase 5(공시+수급 10개) 피처를 feature_store에 병합 | 완료 |
| 대안 데이터 수집 | 검색 트렌드, 커뮤니티 활성도 수집 | 완료 |
6.3 사용 라이브러리
requests transformers KR-FinBert-SC opendartreader
7. Module 2 — 피처 엔지니어링
수집
→
분석
→
피처
→
ML
→
DL
→
백테스트
→
매매
→
대시보드
목적: 수집·분석 데이터를 ML/DL 학습용 피처로 변환
상태: 구현 완료 — Phase 1~7 (75개) 완료, 2-Pass 아키텍처
7.1 기술적 지표
| 카테고리 | 지표 | API |
| 이동평균 | SMA(5,20,60), EMA(12,26) | /indicators/sma, /indicators/ema |
| 모멘텀 | RSI(14), MACD(12,26,9) | /indicators/rsi, /indicators/macd |
| 변동성 | Bollinger Bands(20,2), ATR | /indicators/bollinger |
| 거래량 | OBV, Volume Ratio | /indicators/obv |
7.2 피처 Phase 구성 (7-Phase, 75개)
| Phase | 수량 | 피처 목록 | 상태 |
Phase 1 기술적 지표 | 24개 | close, return_1d/5d/20d, volatility_20d, volume_ratio, sma_5/20/60, ema_12/26, rsi_14, macd, macd_signal, macd_histogram, bb_upper/middle/lower/width/pctb, obv, price_to_sma20/60, golden_cross, rsi_zone | 완료 |
Phase 2 펀더멘털 | +9개 | per, pbr, eps, market_cap, foreign_ratio, inst_net_buy, foreign_net_buy, roe, debt_ratio | 완료 |
Phase 3 거시경제 | +11개 | krw_usd, vix, kospi_index, us_10y, kr_3y, sp500, wti, gold, fed_rate, dxy, cpi | 완료 |
Phase 4 뉴스 센티먼트 | +5개 | news_sentiment_avg, news_sentiment_std, news_positive_ratio, news_count_7d, news_sentiment_momentum | 완료 |
Phase 5 DART 공시 + 수급 | +10개 | disclosure_count_30d, days_since_disclosure, disclosure_sentiment, disclosure_type_score, disclosure_volume_change, short_selling_volume, short_selling_ratio, program_buy_volume, program_sell_volume, program_net_volume | 완료 |
Phase 6 섹터/상대강도 | +10개 | sector_return_1d/5d, relative_strength_1d/5d/20d, sector_momentum_rank, sector_breadth, news_relevance_ratio, news_sentiment_filtered, sector_news_sentiment | 완료 |
Phase 7 대안 데이터 | +6개 | google_trend_score, google_trend_momentum, community_post_volume, community_comment_volume, community_engagement_ratio, alternative_activity_index | 완료 |
7.3 feature_store 데이터 모델
CREATE TABLE feature_store (
market, code, date, -- PK: UNIQUE(market, code, date)
-- Phase 1 (24): close, return_1d, ..., rsi_zone
-- Phase 2 (+9): per, pbr, eps, market_cap, foreign_ratio, ...
-- Phase 3 (+11): krw_usd, vix, kospi_index, ..., fed_rate, dxy, cpi
-- Phase 4 (+5): news_sentiment_avg/std, positive_ratio, count_7d, momentum
-- Phase 5 (+10): disclosure_count/days/sentiment/type/volume, short_selling, program_*
-- Phase 6 (+10): sector_return_*, relative_strength_*, sector_momentum_rank, sector_breadth, news_*_filtered/ratio, sector_news_sentiment
-- Phase 7 (+6): google_trend_*, community_*, alternative_activity_index
-- Targets: target_class_1d/5d, target_return_1d/5d
-- 현재 총 75개 피처
);
7.4 사용 라이브러리
pandas numpy scipy
8. Module 3 — 머신러닝
수집
→
분석
→
피처
→
ML
→
DL
→
백테스트
→
매매
→
대시보드
목적: 머신러닝 모델을 활용한 주가 예측 및 시그널 생성
상태: 구현 완료 — 5개 알고리즘 (ML 3종 + DL 2종), Optuna 튜닝
8.1 ML 파이프라인 (10-Step)
1. 가격 수집
→
2. KIS 수집
→
3. DART 수집
→
4. 거시 수집
→
5. 뉴스 수집
→
6. 공시 수집
→
7. 수급 수집
→
8. 대안 수집
→
9. 피처 계산
→
10. 학습/예측
8.2 알고리즘 및 학습 설정
| 알고리즘 | 주요 하이퍼파라미터 | 최적화 |
| Random Forest | n_estimators, max_depth, min_samples_split, class_weight | Optuna F1 |
| XGBoost | learning_rate, max_depth, subsample, colsample_bytree | Optuna F1 |
| LightGBM | num_leaves, learning_rate, feature_fraction, bagging_fraction | Optuna F1 |
Train/Val Split: 시계열 분할 (train 85% / val 15%) · Scaler: RobustScaler · Optuna 기본 50 trials
8.3 시그널 생성 로직
# Classification (target_class_1d / target_class_5d)
probability_up >= 0.6 → BUY
probability_up <= 0.4 → SELL
0.4 < probability_up < 0.6 → HOLD
# Confidence = max(prob_up, 1 - prob_up)
8.4 API 엔드포인트
| Method | Endpoint | 설명 |
| POST | /ml/features/compute | 피처 계산 (Module 2 연동) |
| POST | /ml/train | 모델 학습 |
| GET | /ml/models | 모델 목록 조회 |
| POST | /ml/predict/{code} | 종목 예측 |
| GET | /ml/predictions | 예측 결과 목록 |
| GET | /ml/feature-importance/{model_id} | 피처 중요도 |
8.5 데이터 모델
CREATE TABLE ml_model (
id, model_name, model_type, algorithm, market,
target_column, hyperparameters, feature_columns,
accuracy, precision, recall, f1, auc_roc,
model_path, is_active, version,
UNIQUE(model_name, version)
);
CREATE TABLE ml_prediction (
id, model_id, market, code,
prediction_date, target_date,
predicted_class, probability_up, probability_down,
signal, confidence, -- BUY/SELL/HOLD
UNIQUE(model_id, market, code, prediction_date)
);
CREATE TABLE ml_training_log (
id, model_id, algorithm, status, -- running/success/failed
metrics_json, feature_importance_json,
optuna_trials, best_trial_value
);
8.6 사용 라이브러리
scikit-learn XGBoost LightGBM Optuna joblib
9. Module 4 — 딥러닝
수집
→
분석
→
피처
→
ML
→
DL
→
백테스트
→
매매
→
대시보드
목적: 딥러닝 모델을 활용한 시계열 분류 예측
상태: Phase 8A + 8B 완료 — LSTM + Transformer 시계열 분류, DQN/PPO 강화학습 매매 에이전트, Optuna DL/RL 튜닝
9.1 구현 현황
| 기능 | 설명 | 상태 |
| Bidirectional LSTM | 2-layer BiLSTM → FC head → 이진 분류 (상승/하락) | 완료 |
| Transformer Encoder | Multi-head Attention + Positional Encoding → Mean Pooling → 이진 분류 | 완료 |
| Optuna DL 튜닝 | seq_len, hidden_size, d_model, nhead, lr, dropout 등 아키텍처별 탐색 | 완료 |
| 시퀀스 파이프라인 | FeatureStore → 종목별 슬라이딩 윈도우 → (N, seq_len, 75) 텐서 변환 | 완료 |
| 강화학습 | DQN, PPO 기반 매매 에이전트 (Phase 8B) — Gymnasium 환경, SB3, Optuna RL 튜닝 | 완료 |
| 멀티모달 입력 | 가격 시계열 + 뉴스 임베딩 통합 | 예정 |
9.2 사용 라이브러리
PyTorch Stable-Baselines3 Gymnasium Optuna scikit-learn (Scaler, Imputer)
10. Module 5 — 백테스팅 및 포트폴리오 최적화
수집
→
분석
→
피처
→
ML
→
DL
→
백테스트
→
매매
→
대시보드
목적: ML/DL 전략의 과거 성과 검증 및 최적 포트폴리오 구성
상태: 개발 예정
10.1 계획된 주요 기능
| 기능 | 설명 |
| 백테스팅 엔진 | 과거 데이터 기반 전략 시뮬레이션 및 성과 분석 |
| 성과 지표 | 수익률, 샤프비율, MDD, 승률 등 |
| 포트폴리오 최적화 | 효율적 프론티어, 리스크 패리티 |
| 벤치마크 비교 | KOSPI/S&P500 대비 초과 수익률 |
10.2 사용 라이브러리 (예정)
backtrader vectorbt scipy cvxpy
11. Module 6 — 매매 시스템
수집
→
분석
→
피처
→
ML
→
DL
→
백테스트
→
매매
→
대시보드
목적: 모의투자 및 실매매
상태: 개발 예정 — KIS API 인프라(데이터 수집용)만 구축 완료
11.1 계획된 주요 기능
| 기능 | 설명 |
| 모의투자 | KIS 모의키(KIS_MOCK_*), Alpaca Paper Trading |
| 한국 주식 실매매 | 한국투자증권 KIS API (실전/모의 키 분리 완료) |
| 미국 주식 실매매 | Alpaca API (Paper/Live Trading) |
| 주문 관리 | 시장가/지정가 주문, 주문 취소/수정 |
| 포지션/리스크 관리 | 최대 포지션 비율, 손절/익절 로직 |
| 주문 체결 알림 | Slack 연동 (인프라 구축 완료) |
11.2 사용 라이브러리 (예정)
한국투자증권 API pykis Alpaca API
12. Module 7 — 사용자 대시보드
수집
→
분석
→
피처
→
ML
→
DL
→
백테스트
→
매매
→
대시보드
목적: 실시간 시장 현황 및 투자 인사이트 시각화
상태: 구현 완료 (4페이지)
12.1 페이지 구성 (Port 8501)
| 페이지 | 기능 |
| Stock Analysis | 개별 종목 차트, 기술적 지표, 펀더멘털 분석 |
| Market Overview | 시장 전체 트렌드, 주요 지수 현황 |
| Sector View | 섹터별 성과 비교, 분석 |
| News Sentiment | 종목별 뉴스 센티먼트 추이, 긍정/부정 비율, 최근 뉴스 목록 |
12.2 향후 확장 계획
- 수익률 레이스 차트 (Bar Chart Race)
- 추천 종목 및 급등 섹터 표시
- 포트폴리오 보유 종목, 수익률 추이
- 금/비트코인/환율 실시간 모니터링
13. Module 8 — 관리자 대시보드
수집
→
분석
→
피처
→
ML
→
DL
→
백테스트
→
매매
→
대시보드
목적: 시스템 설정 관리 및 모니터링
상태: 구현 완료 (12페이지)
13.1 페이지 구성 (Port 8502)
| No. | 페이지 | 기능 |
| 1 | Server Status | 서버 가동시간, 버전, 헬스체크 |
| 2 | DB Status | 테이블별 행 수, 날짜 범위, 마켓 커버리지 |
| 3 | Log Viewer | 파일 선택, 레벨 필터, 텍스트 검색 |
| 4 | Config Viewer | 설정값 확인 (시크릿 마스킹) |
| 5 | Scheduler Manager | Step 기반 파이프라인 CRUD, 수동 실행, 프리셋 |
| 6 | Fundamental Manager | KIS/DART 데이터 수집 UI |
| 7 | Macro Manager | 거시경제 지표 수집 (yfinance + FRED) |
| 8 | News Manager | 뉴스 수집 + NLP 센티먼트 분석 관리 |
| 9 | Disclosure Manager | DART 공시 수집 + KRX 수급 관리 |
| 10 | ML Train Manager | 알고리즘 선택, 학습 실행, 진행률 |
| 11 | ML Models | 모델 목록, 성능 지표, 피처 중요도 |
| 12 | ML Predictions | 예측 결과 조회, 시그널 평가 |
13.2 향후 확장 계획
- 수익률 레이스 차트 (Bar Chart Race)
- 모의투자 성과 모니터링
- 백테스팅 결과 시각화
13.3 Admin API 엔드포인트
| Method | Endpoint | 설명 |
| GET | /admin/health | 헬스체크 + 가동시간 |
| GET | /admin/db | DB 상태 + 테이블 통계 |
| GET | /admin/logs | 로그 조회 |
| POST | /admin/scheduler/jobs | 잡 생성 |
| GET | /admin/scheduler/jobs | 잡 목록 |
| POST | /admin/scheduler/jobs/{job_id}/run | 즉시 실행 |
14. Module 9 — 리포트 생성 + 구독 서비스
수집
→
분석
→
피처
→
ML
→
DL
→
백테스트
→
매매
→
대시보드
→
리포트
목적: 시장 리포트 자동 생성 및 구독 서비스 (이메일/카카오톡/Slack)
상태: 개발 예정
14.1 리포트 생성 방식
| 영역 | 방식 | 상세 |
| 구조/레이아웃 | Jinja2 HTML 템플릿 | 섹션 배치, 표, 인라인 CSS 스타일 |
| 차트/그래프 | matplotlib → PNG | 이메일 인라인 이미지, 메신저 첨부 |
| 핵심 요약/코멘트 | GPT-4o-mini (LLM) | 시장 개황, 섹터 분석, 센티먼트 해석, ML 시그널 해석 |
14.2 시장 리포트 구성
┌─ 시장 개황 요약 (LLM) ─────────────────────────┐
├─ 주요 지수 현황 (표 + 차트) ─────────────────────┤
├─ 거시경제 지표 (표 + 차트) ──────────────────────┤
├─ 상승/하락 TOP 10 (표) ────────────────────────┤
├─ 섹터 퍼포먼스 (차트 + LLM 코멘트) ───────────────┤
├─ 뉴스 센티먼트 (차트 + LLM 코멘트) ───────────────┤
├─ ML 시그널 요약 (파이차트 + 표 + LLM 해석) ───────┤
├─ 종합 전망 (LLM) ─────────────────────────────┤
└─ 면책 조항 / 구독 해지 링크 ─────────────────────┘
14.3 구독 발송 채널
| 채널 | 방식 | 형식 |
| 이메일 | SMTP (stdlib smtplib) | HTML multipart/related + CID 인라인 이미지 |
| Slack | slack_sdk Block Kit | 구조화 메시지 + 차트 이미지 업로드 |
| 카카오톡 | 나에게 보내기 REST API | Feed 템플릿 (제목 + 요약 + 차트 + 링크) |
14.4 데이터 모델
CREATE TABLE report_subscriber (
id, name, email, slack_user_id,
kakao_enabled, report_types, -- ["market"]
channels, enabled -- ["email","slack","kakao"]
);
CREATE TABLE generated_report (
id, report_type, report_date,
title, html_content, summary_text,
data_snapshot, chart_paths, status -- generated/sent/failed
);
CREATE TABLE report_delivery_log (
id, report_id, subscriber_id,
channel, status, error_message, -- pending/sent/failed
sent_at
);
14.5 파이프라인 흐름
스케줄러 (19:00 KST, 평일)
│
▼
① data_aggregator — 기존 Repo에서 데이터 집계
▼
② chart_generator — matplotlib 정적 차트 5종 (PNG)
▼
③ llm_summarizer — GPT-4o-mini 시장 요약 (실패 시 템플릿 only)
▼
④ template_renderer — Jinja2 HTML 렌더링 (차트 base64 인라인)
▼
⑤ DB 저장 (generated_report)
▼
⑥ 구독자별 채널 발송 → report_delivery_log
14.6 사용 라이브러리 (예정)
jinja2 openai matplotlib smtplib slack_sdk
15. 데이터 흐름도
[ 외부 데이터 소스 ]
yfinance ──┬─ 주가 (KR/US)
├─ 거시지표 7개 (환율,VIX,KOSPI,S&P500,WTI,Gold,US10Y)
FDR ───────┤─ KR 3Y 국채금리
FRED API ──┤─ 기준금리, 달러인덱스(DXY), CPI
KIS API ───┤─ 일별 펀더멘털 (PER,PBR,EPS,외국인비율)
├─ KRX 수급 (공매도, 프로그램매매)
DART API ──┤─ 분기 재무제표 (ROE,부채비율,매출)
├─ 공시 목록 + 센티먼트
Naver ─────┤─ 뉴스 수집 + KR-FinBert-SC NLP 분석
Google ────┤─ Trends 검색량
Naver ─────┤─ 종목토론방 활성도
│
▼
[ Module 0: 데이터 수집 ]
DataPipeline + MacroFetcher + KISFetcher + DARTFetcher
+ NewsFetcher + DisclosureFetcher + KRXFetcher
+ GoogleTrendsFetcher + NaverCommunityFetcher
│
▼
[ PostgreSQL Database ]
stock_price · stock_info · stock_fundamental
financial_statement · macro_indicator
news_article · dart_disclosure · krx_supply_demand · alternative_data
│
▼
[ Module 1: 데이터 분석 ]
뉴스 NLP (KR-FinBert-SC) · DART 공시 분류 · 대안 데이터*
│
▼
[ Module 2: 피처 엔지니어링 ]
Phase1~7(75) Features — 2-Pass 아키텍처
│
▼
[ feature_store Table ]
│
┌──────┴──────┐
▼ ▼
[ Module 3 ] [ Module 4 ]
RF/XGB/LGBM LSTM/Transformer
Optuna 튜닝 강화학습*
│ │
└──────┬───────────┘
▼
[ ml_prediction: BUY / SELL / HOLD ]
│
▼
[ Module 5: 백테스팅/포트폴리오* ]
전략 검증 · 포트폴리오 최적화
│
┌──────┼──────┬──────────────┐
▼ ▼ ▼ ▼
[ M6* ] [ M7 ] [ M8 ] [ M9* ]
모의투자 User Admin 리포트 생성
실매매 Dash Dash 구독 발송
* = 개발 예정
16. 개발 로드맵 및 진행 현황
| Phase |
내용 |
관련 모듈 |
상태 |
| 1 |
데이터 수집 인프라 + 기술적 지표 + ML 분류 (Phase1 24피처) |
Module 0, 2, 3 |
완료 |
| 2 |
펀더멘털 통합 (KIS+DART) + ML Phase2 (33피처) + 관리자 대시보드 |
Module 0, 2, 3, 8 |
완료 |
| 3 |
거시경제 지표 11개 (yfinance 8 + FRED 3) + ML Phase3 (44피처) + 영업일 캘린더 |
Module 0, 2, 3 |
완료 |
| 4 |
뉴스 센티먼트 수집/분석 (Naver API + KR-FinBert-SC) + ML Phase4 (49피처) |
Module 0, 1, 2 |
완료 |
| 5 |
DART 공시 + KRX 수급 (KIS API) + ML Phase5 (69피처) + 어드민 대시보드 확장 |
Module 0, 1, 2, 8 |
완료 |
| 6 |
데이터 개선: 섹터/상대강도 + 뉴스 센티먼트 정제 (ML Phase 6 피처 통합) |
Module 0, 1, 2 |
완료 |
| 7 |
대안 데이터 (Google Trends, 커뮤니티 활성도) + ML Phase 7 피처 통합 |
Module 0, 1, 2 |
완료 |
| 8 |
리포트 생성 + 구독 서비스 (LLM 요약 + 이메일/카카오톡/Slack 발송) |
Module 9 |
예정 |
| 9 |
백테스팅 엔진 + 포트폴리오 최적화 |
Module 5 |
예정 |
| 8A |
딥러닝 시계열 분류 (LSTM, Transformer, Optuna DL 튜닝) |
Module 3, 4 |
완료 |
| 8B |
강화학습 매매 에이전트 (DQN, PPO, Gymnasium, SB3, Optuna RL 튜닝) |
Module 4 |
완료 |
| 11 |
매매 시스템 (모의투자 + 실매매) + 대시보드 고도화 |
Module 6, 7, 8 |
예정 |