금융자산 knowledge 를 취업 목적으로 serving 시스템 만드는 과정
본 저장소의 docs/ 디렉터리에 Vector DB 구축을 위한 RAG 용 자산운용 관련 내용이 있습니다.
이 내용은 전공여부, 본인의 지식, 경험여부와 무관하게, 자산운용 시스템을 만들기 위한 자료 입니다.
따라서, 쉬운 기초 내용 위주로 계속 문서를 보완 추가하면서, 차후 시스템 개발의 지식 배경을 목적으로 하며,
각자 이 repo 를 fork 하고, 별도 본인 repo 를 만들어 계속 본인의 repo 에 md 포맷으로 knowledge 를 축적합니다.
본인의 경력, 실력과 상관없이 수업중 자신의 스케쥴대로 독립적인 연구를 할 수 있으며, 단, 수업에 방해되지 않게 해야합니다.
md 파일별로 각종 youtube 등의 링크가 있으므로, 헤드셋을 준비하여 개인 실습 시간에 이용 합니다.
PM : 프로젝트를 리드, 스크럼 회의 주관, 비용산정, 프로덕트 오너로서의 기획, 일정관리, slack 구성
PL : 개발 프레임웍 선정, 업무 설계, 산출물 작업(mermaid 스타일 각종 프로세스 다이어 그램)
Architect : 아키텍트 구성(local , dev , prod), on prem , aws serving 인프라 구성, LLM Ops
Pipe Liner : RAG 구성을 위한 자료수집, vector db 구성, ML Ops, No SQL RDBMS 구성
PO, PMO, QA : 전체 프로세스 검증, 테스터
개발자 : Claude , Github Agent , Codex 등 휴먼코딩 배제함 !!!
분류
엔드포인트
설명
연계 프론트
공통
GET /api/health
서버 상태 확인
—
매크로
POST /api/macro/realtime
금리·환율·유가 실시간 분석
macroRealtime.js
매크로
POST /api/macro/simulation
GBM 기반 시나리오 시뮬레이션
macroSimulation.js
산업
POST /api/industry/porter
Porter's 5 Forces 점수화
industryAnalysis.js
산업
POST /api/industry/sector
섹터 로테이션 분석
industryAnalysis.js
산업
POST /api/industry/peer
동종 기업 Peer Comparison
industryAnalysis.js
산업
POST /api/industry/lifecycle
산업 수명주기 분석
industryAnalysis.js
DART
POST /api/dart/company-search
기업 공시 검색 (DART API)
dartCompanySearch.js
퀀트
POST /api/quant/backtest
이동평균 크로스오버 백테스트
backtest.js
퀀트
POST /api/quant/portfolio
MPT 포트폴리오 최적화
portfolio.js
퀀트
POST /api/quant/risk
VaR·CVaR·MDD 리스크 분석
risk.js
퀀트
POST /api/quant/pipeline
멀티팩터 퀀트 파이프라인
pipeline.js
재무
—
재무제표 시각화 (yfinance)
financialStatement.js · valuation.js
ML
POST /api/ml/cross-validation
교차검증
crossValidation.js
ML
GET /api/ml/decision-boundary
결정 경계 시각화
decisionBoundary.js
ML
POST /api/ml/random-forest
랜덤 포레스트
randomForest.js
ML
POST /api/ml/kmeans
K-Means 클러스터링
kmeans.js
ML
POST /api/ml/svm
SVM 분류기
svm.js
ML
POST /api/ml/mlp
다층 퍼셉트론
mlp.js
ML
POST /api/ml/linear-regression
선형·다항 회귀
linearRegression.js
DL
POST /api/dl/cnn-timeseries
CNN 시계열 예측
cnnTimeseries.js
DL
POST /api/dl/lstm-predictor
LSTM 주가 예측
lstm.js
DL
POST /api/dl/transformer-timeseries
Transformer 시계열 예측
transformer.js
NLP
POST /api/nlp/text-classify
텍스트 감성 분류
textClassify.js · sentiment.js
CV
POST /api/cv/circle-animation
OpenCV 애니메이션
opencv.js
🐍 Python 라이브러리 구성 (requirements.txt)
카테고리
패키지
용도
웹 서버
fastapi, uvicorn, gunicorn
REST API 서버
데이터 처리
numpy, pandas, scipy, statsmodels
수치 계산·통계 분석
금융 데이터
yfinance, pykrx
주가·재무 데이터 수집
기술적 분석
pandas-ta, mplfinance
130+ 기술 지표, 캔들 차트
시각화
matplotlib, seaborn, plotly
정적·인터랙티브 차트
리포트 생성
reportlab, openpyxl, pyarrow
PDF·Excel·Parquet 출력
ML
scikit-learn
분류·회귀·클러스터링
딥러닝
torch, transformers, diffusers
LSTM·Transformer·이미지 생성
컴퓨터 비전
opencv-python
영상 처리
유틸리티
requests, httpx, python-dotenv, orjson, aiofiles
HTTP·환경변수·직렬화
표현
의미
Investment Analysis
투자 분석
Equity Research
주식 리서치 (증권사 리포트)
Fundamental Analysis
기본적 분석 (내재가치 중심)
Technical Analysis
기술적 분석 (차트·지표 중심)
Quantitative Analysis
계량 분석 (통계·수학 모델)
Valuation
가치 평가 (목표주가 산출)
Due Diligence
투자 전 심층 실사
Peer Analysis
동종 기업 비교 분석
Buy / Hold / Sell
매수 / 보유 / 매도 의견
Outperform / Underperform
시장 수익률 상회 / 하회
Price Target
목표 주가
Bullish / Bearish
강세 / 약세 전망
📖 용어 사전: docs/voca.md
이 레포를 실행하고 데이터를 수집하기 위해 방문해야 할 사이트 전체 목록입니다.
⚿ = API 키 발급 필요 / ✅ = 무료 공개 / 📋 = 가입·승인 필요
📊 국내 금융 데이터 API (API 키 발급 필요)
서비스
URL
API 키
.env 변수명
제공 데이터
DART 전자공시시스템
https://opendart.fss.or.kr
⚿ 필요
DART_API_KEY
사업보고서, 재무제표, 공시 전체
한국은행 ECOS
https://ecos.bok.or.kr
⚿ 필요
BOK_API_KEY
기준금리, 국고채, 환율, M1/M2, CPI
KRX Data Marketplace
https://openapi.krx.co.kr
⚿ 필요
KRX_API_KEY
주가·채권·지수·업종 공식 시계열
KOFIA OpenAPI
https://openapi.kofia.or.kr
📋 승인 필요
—
채권 시장금리, 자본시장 통계
금융감독원 금융상품한눈에
https://finlife.fss.or.kr
⚿ 필요
—
예·적금, 주담대, 신용대출 금리
공공데이터포털
https://www.data.go.kr
⚿ 필요
—
다양한 금융·경제 공공 데이터
통계청 KOSIS
https://kosis.kr
⚿ 권장
—
CPI, PPI, 고용, GDP 시계열
서비스
URL
API 키
.env 변수명
제공 데이터
FRED (St. Louis Fed)
https://fred.stlouisfed.org
⚿ 권장
FRED_API_KEY
금리, CPI, GDP, 실업률, M2
U.S. Treasury Fiscal Data
https://fiscaldata.treasury.gov
✅ 불필요
—
미국 국채 금리, 재정 데이터
BLS (미국 노동통계국)
https://www.bls.gov/developers
⚿ 권장
BLS_API_KEY
CPI, PPI, 실업률, 고용 원시 데이터
BEA (미국 경제분석국)
https://apps.bea.gov/api
⚿ 필요
BEA_API_KEY
GDP, PCE, 국민소득 데이터
EIA (미국 에너지정보청)
https://www.eia.gov/opendata
⚿ 필요
EIA_API_KEY
WTI·브렌트 유가, 천연가스, 재고
SEC EDGAR
https://www.sec.gov/developer
✅ 불필요
—
미국 기업 10-K/10-Q 재무제표
Alpha Vantage
https://www.alphavantage.co
⚿ 필요
ALPHA_VANTAGE_KEY
주가, 기술 지표, 펀더멘털
OECD Data
https://data.oecd.org
✅ 불필요
—
국가별 금리·GDP·물가 비교
World Bank Open Data
https://data.worldbank.org
✅ 불필요
—
글로벌 거시 지표 장기 시계열
IMF Data
https://www.imf.org/en/Data
✅ 불필요
—
세계경제전망(WEO), IFS 국제금융통계
우선순위
서비스
이유
⭐⭐⭐ 필수
DART (opendart.fss.or.kr)
재무제표·공시 데이터 — 대부분의 기본적 분석에 필요
⭐⭐⭐ 필수
한국은행 ECOS (ecos.bok.or.kr)
국내 금리·환율·통화량 — 매크로 분석 핵심
⭐⭐⭐ 필수
FRED (fred.stlouisfed.org)
글로벌 거시 지표 — 무료이고 데이터 품질 최고
⭐⭐ 권장
EIA (eia.gov)
유가 데이터 — 에너지 섹터 분석 시 필요
⭐⭐ 권장
KRX Data Marketplace
공식 국내 시장 데이터
⭐ 선택
BLS, BEA, Alpha Vantage
yfinance/FRED로 대부분 대체 가능
DART(전자공시시스템) API는 상장 기업의 재무제표·공시 데이터를 무료로 수집할 수 있는 공공 API입니다.
단계
내용
1. 홈페이지 접속
https://opendart.fss.or.kr
2. 회원가입
오른쪽 상단 Login → 인증키 신청 → 이용약관 동의
3. 인증키 신청
상단 메뉴 인증키 신청/관리 → 인증키 신청
4. 이메일 인증
신청 이메일로 발송된 인증 링크 클릭
5. 키 확인
인증키 신청/관리 → 오픈 API 이용현황 에서 발급된 키 복사
⚠️ 유의사항 : 무료 제공 / 개인·기업 모두 발급 가능 / 하루 호출 횟수 제한 있음
발급 후 프로젝트 루트의 app/backend/.env 파일에 DART_API_KEY=발급받은키 형식으로 입력
.
├── app
│ ├── backend
│ │ ├── main.py # FastAPI 앱 & 전체 API 라우터
│ │ └── .env.example # 환경변수 템플릿 (DART_API_KEY 등)
│ ├── frontend
│ │ ├── index.html
│ │ ├── styles.css
│ │ └── js
│ │ ├── app.js # SPA 라우터
│ │ ├── api.js # Fetch API 래퍼
│ │ └── views
│ │ ├── home.js
│ │ ├── macroRealtime.js # 매크로 실시간 분석
│ │ ├── macroSimulation.js # GBM 시뮬레이션
│ │ ├── industryAnalysis.js # 산업 분석
│ │ ├── financialStatement.js # 재무제표
│ │ ├── dartCompanySearch.js # DART 기업 검색
│ │ ├── valuation.js # 밸류에이션
│ │ ├── technicalChart.js # 기술적 분석 (7개 탭)
│ │ ├── backtest.js # 백테스트
│ │ ├── portfolio.js # 포트폴리오 최적화
│ │ ├── risk.js # 리스크 분석
│ │ ├── pipeline.js # 퀀트 파이프라인
│ │ ├── linearRegression.js # ML: 선형 회귀
│ │ ├── decisionBoundary.js # ML: 결정 경계
│ │ ├── randomForest.js # ML: 랜덤 포레스트
│ │ ├── kmeans.js # ML: K-Means
│ │ ├── svm.js # ML: SVM
│ │ ├── mlp.js # ML: MLP 신경망
│ │ ├── crossValidation.js # ML: 교차검증
│ │ ├── cnnTimeseries.js # DL: CNN 시계열
│ │ ├── lstm.js # DL: LSTM 예측
│ │ ├── transformer.js # DL: Transformer
│ │ ├── sentiment.js # NLP: 감성 분석
│ │ ├── textClassify.js # NLP: 텍스트 분류
│ │ ├── opencv.js # CV: OpenCV
│ │ └── huggingface.js # GenAI: 이미지 생성
│ └── src # 독립 실행 Python 스크립트
│ ├── QuantPipeline.py
│ ├── Backtest.py
│ ├── PortfolioOptimizer.py
│ ├── RiskManager.py
│ ├── CrossValid.py
│ ├── DecisionBoundary.py
│ ├── LinearRegression.py
│ ├── RandomForest.py
│ ├── KMeansClustering.py
│ ├── SVMClassifier.py
│ ├── NeuralNetMLP.py
│ ├── SentimentAnalysis.py
│ ├── OpenCVCPU.py
│ ├── HuggingFaceGPU.py
│ ├── CNNTimeSeries.py
│ ├── LSTMPredictor.py
│ └── TransformerTimeSeries.py
├── docs
│ ├── 27.md Day 042 — 매크로 분석 개요 및 금리 분석
│ ├── 28.md Day 043 — 경제지표 분석 (물가·유가 등)
│ ├── 29.md Day 044 — 거시경제 상황 분석 실습
│ ├── 30.md Day 045 — 산업 분석
│ ├── 31.md Day 046 — 산업 분석 실습
│ ├── 32.md Day 047 — 재무제표 분석 I
│ ├── 33.md Day 048 — 재무제표 분석 II (현금흐름표 & 기업가치)
│ ├── 34.md Day 049 — 상대가치 평가 (밸류에이션 멀티플)
│ ├── 35.md Day 050 — 기술적 분석 I (추세 & 지표)
│ ├── 36.md Day 051 — 기술적 분석 II + 통합 리포트
│ └── voca.md 투자분석 핵심 용어집
├── requirements.txt
└── readme.md
/home/ubuntu/investment-analysis/app/backend/.env.example 를 .env 로 복제 후 본인 키 입력
python3 -m venv /home/ubuntu/investment-analysis/.venv && echo " venv created"
source /home/ubuntu/investment-analysis/.venv/bin/activate
pip install -r requirements.txt 2>&1
pip install --no-cache-dir -r requirements.txt
cd app/backend
uvicorn main:app --host 0.0.0.0 --port 8000 --env-file .env
웹앱: http://localhost:8000
API 문서: http://localhost:8000/docs
기본 헬스체크: GET /api/health
🚢 GitHub Actions → ECR → EC2 배포
새로 추가된 /home/runner/work/investment-analysis/investment-analysis/.github/workflows/deploy-ecr-ec2.yml 워크플로우는 아래 순서로 동작합니다.
Dockerfile로 웹앱 이미지를 빌드해 ECR에 push
mongo:7 이미지를 ECR로 복제 push
EC2에 deploy/docker-compose.ec2.yml, deploy.env, backend.env 업로드
EC2에서 docker compose up -d로 MongoDB + 웹앱 재기동
AWS_ROLE_ARN 또는 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
EC2_HOST
EC2_USERNAME
EC2_SSH_KEY
BACKEND_ENV_FILE : app/backend/.env 전체 내용을 멀티라인 secret 으로 저장
AWS_REGION (기본값 ap-northeast-2)
WEBAPP_ECR_REPOSITORY (기본값 investment-analysis-webapp)
MONGODB_ECR_REPOSITORY (기본값 investment-analysis-mongodb)
MONGODB_SOURCE_IMAGE (기본값 mongo:7)
EC2_DEPLOY_PATH (기본값 /home/ubuntu/investment-analysis)
WEBAPP_PORT (기본값 8000)
Docker Engine 및 Docker Compose plugin 설치
EC2_USERNAME 계정이 docker 명령을 실행할 수 있어야 함
인바운드 보안그룹에서 WEBAPP_PORT 오픈
워크플로우는 main 브랜치 push 또는 수동 실행(workflow_dispatch) 시 배포됩니다.
증권사
API 방식
지원 상품
특징
한국투자증권
REST + WebSocket
국내·해외주식, 채권, 선물옵션
국내 유일 REST API, OS 제약 없음, Python 샘플 제공
키움증권
OCX (Windows 전용)
국내주식 중심
가장 오래된 API, 커뮤니티 자료 풍부
대신증권
COM (Windows 전용)
국내주식, 파생상품
CYBOS Plus 기반, 백테스트 자료 많음
메리츠증권
REST (출시 예정)
국내주식
신규 API 준비 중, 무수수료 ‘슈퍼365’ 계좌와 결합 예정
신한투자증권
자동감시주문 시스템
국내·해외주식
조건 충족 시 자동 주문, 대량 주문 처리 기능
운영체제 호환성
Windows 환경 → 키움증권, 대신증권
macOS/Linux/클라우드 서버 → 한국투자증권 REST API
상품 범위 : 해외주식까지 자동매매하려면 한국투자증권 API가 가장 범위가 넓음
개발 난이도 : REST 기반은 HTTP 요청만으로 구현 가능해 상대적으로 쉬움
커뮤니티 지원 : 키움증권은 오래된 API라 자료와 예제가 많음
보안 리스크 : API 키(App Key, Secret)는 계좌 접근 권한이므로 반드시 안전하게 관리해야 함
호출 제한 : 초당 호출 횟수 제한 존재 → 대량 주문 시 설계 필요
모의투자 환경 : 대부분 증권사에서 제공 → 실전 적용 전 백테스트 및 모의투자 권장
법적 규제 : 자동매매 자체는 합법이나, 불공정거래(시세조종 등) 행위는 제재 대상
👉 정리하면, **퀀트 시스템을 붙이려면 한국투자증권 REST API**가 가장 범용적이고 현대적인 선택지이며, Windows 환경이라면 키움증권이나 대신증권도 활용 가능합니다.