# 콴트 매니저 (Quant Manager) 한국 주식 시장을 위한 퀀트 투자 도구입니다. ## 프로젝트 구조 ``` make-quant-py/ ├── data/ # 데이터 수집 관련 코드 │ ├── krx.py # 한국거래소 데이터 수집 │ ├── prices.py # 가격 데이터 수집 │ ├── financial.py # 재무제표 데이터 수집 │ └── crawling.py # 웹 크롤링 유틸리티 ├── db/ # 데이터베이스 유틸리티 │ └── common.py # DB 연결 및 쿼리 공통 기능 ├── strategies/ # 전략 구현 │ ├── factors/ # 개별 요소 모듈 │ │ ├── value.py # 가치 전략 │ │ ├── quality.py # 퀄리티 전략 │ │ ├── momentum.py # 모멘텀 전략 │ │ ├── f_score.py # F-Score 전략 │ │ └── all_value.py # 종합 가치 전략 │ ├── composite/ # 복합 전략 구현 │ │ ├── magic_formula.py # 마법공식 전략 │ │ ├── multi_factor.py # 멀티팩터 전략 │ │ ├── super_quality.py # 슈퍼 퀄리티 전략 │ │ └── super_value_momentum.py # 슈퍼 밸류 모멘텀 전략 │ └── utils.py # 전략 공통 유틸리티 ├── backtest/ # 백테스트 도구 │ └── engine.py # 백테스트 구현 └── streamlit/ # Streamlit 웹 앱 ├── app.py # 메인 앱 ├── pages/ # 개별 페이지 │ ├── data_page.py # 데이터 수집 페이지 │ ├── quality_page.py # 슈퍼 퀄리티 전략 페이지 │ └── value_momentum_page.py # 밸류 모멘텀 전략 페이지 └── components/ # 재사용 가능한 UI 컴포넌트 └── charts.py # 시각화 컴포넌트 ``` ## 설치 및 설정 ### 필수 요구사항 - Python 3.8 이상 - MySQL 또는 MariaDB Windows에서 필요한 빌드 도구: - Visual Studio Build Tools 2017 이상 - Desktop development with C++ 워크로드 선택 - (선택사항) Python development 워크로드 선택 ### 가상환경 설정 가상환경 생성: ``` python -m venv .venv ``` 가상환경 활성화: - Windows: `.venv\Scripts\activate` - Linux/Mac: `. .venv/bin/activate` 패키지 설치: ``` pip install -r requirements.txt ``` 가상환경 종료: ``` deactivate ``` ### 환경 변수 설정 프로젝트 루트에 `.env` 파일을 생성하고 다음 환경 변수를 설정하세요: ``` DB_USER=your_db_user DB_PW=your_db_password DB_HOST=localhost DB_PORT=3306 DB_DB=your_db_name ``` ## 실행 방법 Streamlit 앱 실행: ``` streamlit run src/app.py --server.port=20000 ``` ### 인증 설정 애플리케이션은 streamlit-authenticator를 사용하여 로그인 기능을 제공합니다. 기본 계정은 다음과 같습니다: - 관리자: 아이디 `admin`, 비밀번호 `adminpass` - 일반 사용자: 아이디 `user`, 비밀번호 `userpass` 비밀번호 변경 또는 계정 추가를 위한 steps: 1. `src/config/generate_credentials.py` 파일을 수정하여 원하는 계정 정보 입력 2. 아래 명령어 실행: ``` cd src/config python generate_credentials.py ``` 3. 생성된 `credentials.yaml` 파일을 확인하여 적용 ## 모듈 ### 데이터 수집 - `data/krx.py`: 한국거래소(KRX)에서 주식 데이터를 수집합니다. - `data/prices.py`: 네이버 금융에서 주가 데이터를 수집합니다. - `data/financial.py`: FnGuide에서 재무제표 데이터를 수집합니다. ### 투자 전략 #### 개별 요소 전략 - `strategies/factors/value.py`: PER, PBR 등 가치 지표 기반 전략 - `strategies/factors/quality.py`: ROE, GPA 등 퀄리티 지표 기반 전략 - `strategies/factors/momentum.py`: 주가 모멘텀 기반 전략 - `strategies/factors/f_score.py`: Piotroski의 F-Score 계산 전략 #### 복합 전략 - `strategies/composite/magic_formula.py`: Joel Greenblatt의 마법공식 전략 - `strategies/composite/multi_factor.py`: 다중 요소 통합 전략 - `strategies/composite/super_quality.py`: F-Score와 GP/A를 결합한 슈퍼 퀄리티 전략 - `strategies/composite/super_value_momentum.py`: 가치와 모멘텀을 결합한 전략 ### 백테스트 - `backtest/engine.py`: bt 패키지를 사용한 백테스트 기능 구현