- 매크로 분석: 경제지표 분석(금리, 물가, 유가 등 주요 지표 보는 법 ), 거시경제상황 분석 실습
- 산업 분석: 산업 경쟁력 분석(산업경쟁력 개념/분석모형, 산업별 분석방법), 산업 분석 실습
- 기본적 분석: 재무제표분석 (손익계산서/대차대조표/현금흐름표), 기업가치분석(상대가치평가 밸류에이션(멀티플), 절대가치평가 밸류에이션 (DCF, EVA, FCF 등)), 분석기업선정 및 밸류에이션 실습
- 기술적 분석: 추세 분석(지지선과 저항선, 이동평균선, 갭 반전, 되돌림 분석 등), 패턴 분석, 캔들 차트 분석, 지표 분석, 앨리어트파동이론, 분석기업선정 및 기술적 분석 실습
80 시간
- 금융상품 이해: 주식/ETF 상품(주식/ETF 개요 및 운용 전략), 채권 상품(채권 개요 및 운용 전략), 파생상품(파생상품 개요 및 운용 전략)
- 자산배분방법론: 포트폴리오 이론(개요 및 성과분석, 리스크 지표), 자산배분 모델(평균분산, 블랙리터만, Risk-Parity 모델 설명), 사례 분석 실습
40 시간
- 백테스트로 나오는 성과 지표 분석(MDD, Sharp ratio 등) 및 개선방향 논의
- 주식 시장의 계절성 분석(연말 랠리, 월별 효과, 요일 효과)
- 알고리즘 트레이딩 & 자동매매 기초(트레이딩뷰 PineScript)
40 시간
- AI 기반의 자동화 로보 어드바이저 모델 개발
- 패턴 인식 기법을 활용한 주식 시장 예측 프로젝트
- 자산배분모델을 활용한 포트폴리오 최적화, 주식 스크리닝을 통한 종목 선정 등 직접 수행
- 구축한 퀀트 모델의 결과를 해석해보고 자체적으로 모의 투자 의사결정 진행
100 시간
- 기본적인 인디케이터(MA, RSI등)로 전략 설계
- 커스텀 인디케이터 개발
- 트레이딩뷰 플랫폼으로 성과 확인 및 코딩 실습(PineScript)
- 파이썬 프로그래밍을 통한 성과 검증
- 증권사 연동(API 활용)을 통한 자동화 모델 구현
120 시간
로컬 PC에서 실행하는 학습용 웹앱입니다. 가장 간단한 방법은 Docker Compose를 사용하는 것입니다.
- Docker Desktop(Windows·macOS) 또는 Docker Engine + Docker Compose 플러그인(Linux)
- 사용 가능한 포트:
8000,27017,6333,6334
저장소 최상위 폴더에서 실행합니다.
# 최초 실행: 앱·MongoDB·Qdrant·Ollama를 시작하고 퀴즈 데이터를 적재합니다.
docker compose --profile init up --build -d
# 최초 한 번: 로컬 답변 모델과 임베딩 모델을 받습니다.
docker compose --profile ollama-init run --rm ollama-init
# 모델을 받은 뒤 문서를 Ollama 임베딩으로 색인합니다.
docker compose --profile tools run --rm docs-index
# 이후 실행
docker compose up -d브라우저에서 http://localhost:8000을 엽니다.
정상 실행 여부는 다음 주소에서 확인합니다.
http://localhost:8000/api/health
웹앱과 독립적으로 QuantConnect LEAN 기반 삼성전자(005930.KS) 일봉 예제를
실행할 수 있습니다. 실행 이미지에는 전략 모듈이 포함되며, 컨테이너가 시작할 때
공개 가격 데이터를 받은 뒤 한 번의 백테스트를 수행합니다.
docker compose -f docker-compose.lean.yml run --rm samsung-backtest결과 파일과 orders.csv는 lean-results/에 생성됩니다. 기본 기간은 2024년이며,
다른 기간을 지정하려면 다음처럼 실행합니다.
SAMSUNG_START_DATE=2023-01-01 SAMSUNG_END_DATE=2024-01-01 \
docker compose -f docker-compose.lean.yml run --rm samsung-backtest전략과 Dockerfile은 lean-samsung/에 있습니다. 이 구성은 Custom Data 기반의 동작 예제이므로 KRX 수수료·배당·거래일·환율 모델을 포함하지 않습니다.
현대자동차 보통주(005380.KS)의 Yahoo Finance 일봉 Custom Data로 2026년 상반기
추세 신호를 검증할 수 있습니다. 2022~2025년 데이터로 이동평균을 준비한 뒤,
SMA20 > SMA60일 때 롱 신호를 내고 그 외에는 현금 보유하는 전략입니다.
docker compose -f docker-compose.hd.yaml run --build --rm hyundai-backtest기본 데이터 기간은 2022-01-01부터 2026-06-30까지이며, 검증 기간은 2026년 상반기입니다. 다른 기간을 지정하려면 다음 환경 변수를 설정합니다.
HYUNDAI_DATA_START_DATE=2022-01-01 HYUNDAI_DATA_END_DATE=2026-07-01 \
HYUNDAI_TEST_START_DATE=2026-01-01 HYUNDAI_TEST_END_DATE=2026-07-01 \
docker compose -f docker-compose.hd.yaml run --build --rm hyundai-backtest실행 결과는 hyundai-results/에 저장되며,
hyundai-2026-h1-report.html에서 월별 다음 거래일 방향 적중률, 신호 전략과
단순 보유의 누적 수익률, 주문 수·순수익·낙폭·Sharpe Ratio를 확인할 수 있습니다.
전략과 상세 사용법은 lean-hyundai/에서 확인하세요. 이 검증은
과거 가격 기반 신호 예제이며 KRX 수수료·세금·배당·액면분할·환율은 반영하지 않습니다.
이미 같은 포트를 사용 중이면 저장소 루트에 .env 파일을 만들고 값을 바꿉니다.
APP_PORT=8080
MONGO_PORT=27018
QDRANT_PORT=6335
QDRANT_GRPC_PORT=6336
# 선택 사항: 공시·통계 API 기능
DART_API_KEY=APP_PORT를 바꿨다면 접속 주소도 예를 들어 http://localhost:8080으로 바뀝니다.
docs/의 Markdown 문서를 바꾼 뒤에는 아래 명령으로 Qdrant 검색 색인을 다시 만듭니다.
docker compose --profile tools run --rm docs-index문서 검색은 Markdown의 제목 계층을 보존해 청크를 만들고, Ollama의 embeddinggemma로
문서와 질문을 같은 벡터 공간에 임베딩합니다. 질의 시에는 넓게 찾은 벡터 후보를 문서 제목·핵심어
일치로 한 번 더 정렬하며, 선택 시 로컬 Ollama 채팅 모델이 검색 원문만 근거로 답변을 생성합니다. 기본 모델은
embeddinggemma(임베딩)와 qwen3:8b(답변)이며, 저장소 루트 .env에서
RAG_EMBEDDING_MODEL, RAG_LLM_MODEL로 바꿀 수 있습니다. 모델을 바꿨다면 반드시
문서 색인을 다시 만드세요.
docker-compose.prod.yml은 AWS용 구성으로 Ollama를 포함하지 않습니다. 이 구성에서는
RAG_EMBEDDING_PROVIDER=hash로 동작하므로, AWS에서 Ollama 이미지·모델·포트를 설치하거나
노출하지 않습니다. AWS용 문서 색인은 RAG_EMBEDDING_PROVIDER=hash로 다시 만들어야 하며,
화면의 로컬 AI 답변 생성 선택지는 비활성화됩니다.
# 컨테이너 상태
docker compose ps
# 앱 로그
docker compose logs -f backend
# 컨테이너 종료 (데이터는 유지)
docker compose down아래 명령은 MongoDB 퀴즈 데이터와 Qdrant 검색 색인까지 삭제합니다.
docker compose down -vDocker를 쓰지 않는 경우에는 Python과 MongoDB를 직접 준비합니다.
- Python 3.12 이상
- MongoDB (퀴즈 기능 사용 시)
mongosh(아래 퀴즈 초기화 스크립트 사용 시)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt백엔드는 실행할 때 app/backend/.env를 읽습니다. 먼저 저장소에 포함된 예시 파일을
복사해 개인별 설정 파일을 만드세요. .env는 API 키처럼 민감한 값을 담을 수 있으므로
Git에 추가하지 않습니다.
macOS·Linux에서는 다음을 실행합니다.
cp app/backend/.env.example app/backend/.envWindows PowerShell에서는 다음 명령을 사용합니다.
Copy-Item app/backend/.env.example app/backend/.env복사한 app/backend/.env를 열어 필요한 값만 수정합니다.
# 퀴즈 기능용 MongoDB. 로컬 기본 설치를 사용하면 그대로 둡니다.
MONGODB_URL=mongodb://localhost:27017
MONGODB_DB=investment_db
# 문서 검색(RAG)용 Qdrant. 검색 기능을 쓰지 않으면 Qdrant가 없어도 앱의 다른 기능은 실행됩니다.
QDRANT_URL=http://localhost:6333
QDRANT_COLLECTION=investment_docs
# 로컬 Ollama 기반 전체 RAG. 색인과 질의에 같은 임베딩 모델을 사용합니다.
RAG_EMBEDDING_PROVIDER=ollama
RAG_EMBEDDING_URL=http://localhost:11434/api/embed
RAG_EMBEDDING_MODEL=embeddinggemma
RAG_LLM_BASE_URL=http://localhost:11434/v1
RAG_LLM_API_KEY=ollama
RAG_LLM_MODEL=qwen3:8b
RAG_LLM_TIMEOUT_SECONDS=180
# 선택 사항: 우측 AI 투자 도우미를 Amazon Lex V2에 연결합니다.
# 장기 자격 증명 대신 EC2/ECS 등의 IAM 역할 사용을 권장합니다.
# AWS_REGION=ap-northeast-2
# LEX_BOT_ID=
# LEX_BOT_ALIAS_ID=
# LEX_LOCALE_ID=ko_KR
# OpenDART 기업 검색·재무 분석 기능을 사용할 때만 발급받은 인증키를 입력합니다.
# 비워 두면 DART 관련 API는 503 응답을 반환합니다.
DART_API_KEY=
# 선택 사항: GPU 환경에서 텍스트-이미지 생성에 다른 Diffusers 모델을 쓸 때만 설정합니다.
# DIFFUSERS_MODEL_ID=runwayml/stable-diffusion-v1-5Lex 봇은 배포한 버전의 별칭을 사용하세요. 애플리케이션을 실행하는 EC2/ECS 역할에는 해당 별칭 ARN(arn:aws:lex:<리전>:<계정>:bot-alias/<봇ID>/<별칭ID>)에 대한 lex:RecognizeText 권한만 부여하면 됩니다. 브라우저나 저장소에 AWS 액세스 키를 넣지 마세요.
설정 항목은 다음과 같습니다.
| 변수 | 필요한 기능 | 설명 |
|---|---|---|
MONGODB_URL |
퀴즈 | MongoDB 접속 주소입니다. MongoDB를 쓰지 않는 화면은 이 값 없이도 열 수 있지만, 퀴즈 조회·저장은 동작하지 않습니다. |
MONGODB_DB |
퀴즈 | 사용할 데이터베이스 이름입니다. 로컬 기본값은 investment_db입니다. |
QDRANT_URL |
문서 검색 | Qdrant HTTP 주소입니다. Qdrant가 실행되지 않으면 RAG 검색 API는 503을 반환합니다. |
QDRANT_COLLECTION |
문서 검색 | 색인할 Qdrant 컬렉션 이름입니다. 색인 명령과 같은 값으로 유지하세요. |
RAG_EMBEDDING_PROVIDER |
문서 검색 | 로컬은 ollama, Ollama를 설치하지 않는 AWS 구성은 hash를 사용합니다. 두 방식의 색인은 서로 호환되지 않습니다. |
RAG_EMBEDDING_URL |
문서 검색 | Ollama의 /api/embed 주소입니다. 색인과 질의가 같은 주소·모델을 사용해야 합니다. |
RAG_EMBEDDING_MODEL |
문서 검색 | 문서·질문을 벡터화할 Ollama 임베딩 모델입니다. 모델을 바꾸면 색인을 다시 만듭니다. |
RAG_DENSE_CANDIDATES |
문서 검색 | 하이브리드 재정렬 전 벡터 후보 수입니다. 기본값은 40이며, 큰 값은 검색 품질 후보를 넓히는 대신 응답 처리량이 조금 늘어납니다. |
RAG_LLM_BASE_URL |
문서 검색 답변 생성 | Ollama OpenAI 호환 API의 기본 주소입니다. 기본값은 http://localhost:11434/v1입니다. |
RAG_LLM_API_KEY |
문서 검색 답변 생성 | Ollama 로컬 API에서는 무시되지만, 앱의 OpenAI 호환 호출을 위해 비어 있지 않은 값을 사용합니다. |
RAG_LLM_MODEL |
문서 검색 답변 생성 | 검색 원문만 바탕으로 답변을 만들 Ollama 채팅 모델입니다. |
RAG_LLM_TIMEOUT_SECONDS |
문서 검색 답변 생성 | 로컬 모델 응답을 기다리는 최대 시간(초)입니다. CPU 환경에서는 첫 요청이 느릴 수 있습니다. |
AWS_REGION |
AI 투자 도우미 | Amazon Lex V2 봇이 배포된 AWS 리전입니다. |
LEX_BOT_ID |
AI 투자 도우미 | Amazon Lex V2 봇 ID입니다. |
LEX_BOT_ALIAS_ID |
AI 투자 도우미 | 배포한 Amazon Lex V2 별칭 ID입니다. |
LEX_LOCALE_ID |
AI 투자 도우미 | Lex 로캘입니다. 기본값은 ko_KR입니다. |
DART_API_KEY |
기업·공시 분석 | OpenDART 인증키입니다. 키를 공개 저장소나 화면 캡처에 포함하지 마세요. |
DIFFUSERS_MODEL_ID |
텍스트-이미지 생성 | 선택 설정입니다. 기본 모델을 바꾸려는 GPU 환경에서만 사용합니다. |
MongoDB·Qdrant·Ollama를 모두 로컬에 설치하지 않았다면, Docker Compose로 세 서비스를 실행한 뒤 Python 백엔드를 직접 실행할 수도 있습니다.
docker compose up -d mongo qdrant ollama
docker compose --profile ollama-init run --rm ollama-init문서 검색을 처음 사용하거나 docs/의 Markdown을 변경한 뒤에는 Qdrant에 문서를 색인합니다.
QDRANT_URL=http://localhost:6333 \
QDRANT_COLLECTION=investment_docs \
RAG_EMBEDDING_PROVIDER=ollama \
RAG_EMBEDDING_URL=http://localhost:11434/api/embed \
RAG_EMBEDDING_MODEL=embeddinggemma \
./scripts/upload_docs_to_qdrant.sh앱을 시작합니다.
uvicorn app.backend.main:app --host 0.0.0.0 --port 8000브라우저에서 http://localhost:8000을 열고, API 명세와 요청 예시는 http://localhost:8000/docs에서 확인할 수 있습니다. 다음 명령으로도 서버 상태를 확인합니다.
curl http://localhost:8000/api/health퀴즈 데이터를 MongoDB에 넣으려면 별도 터미널에서 실행합니다.
./scripts/init_quiz_mongodb.sh --replace--replace는 기존 퀴즈 문항을 삭제하고 현재 시드 문항으로 교체합니다.
학습 문서의 제목이나 파일을 수정했다면 다음 명령을 실행합니다.
python3 scripts/sync_learning_menu.py- 페이지에 접속할 수 없으면
docker compose ps또는 터미널의 Uvicorn 로그를 확인하세요. - 퀴즈가 저장되지 않으면 MongoDB가 실행 중인지와
MONGODB_URL을 확인하세요. - 문서 검색이 비어 있으면 Qdrant가 실행 중인지 확인한 뒤
docs-index를 다시 실행하세요. DART_API_KEY등 선택 API 키가 비어 있으면 해당 외부 데이터 기능이 제한될 수 있습니다.
다음의 실습을 https://st.edumgt.co.kr/analysis.html 사이트를 통해 진행 합니다.(국비과정에 명기된 내용)
- 매크로 분석: 경제지표 분석(금리, 물가, 유가 등 주요 지표 보는 법 ), 거시경제상황 분석 실습
- 산업 분석: 산업 경쟁력 분석(산업경쟁력 개념/분석모형, 산업별 분석방법), 산업 분석 실습
- 기본적 분석: 재무제표분석 (손익계산서/대차대조표/현금흐름표), 기업가치분석(상대가치평가 밸류에이션(멀티플), 절대가치평가 밸류에이션 (DCF, EVA, FCF 등)), 분석기업선정 및 밸류에이션 실습
- 기술적 분석: 추세 분석(지지선과 저항선, 이동평균선, 갭 반전, 되돌림 분석 등), 패턴 분석, 캔들 차트 분석, 지표 분석, 앨리어트파동이론, 분석기업선정 및 기술적 분석 실습
