117 lines
3.9 KiB
Markdown
117 lines
3.9 KiB
Markdown
# 콴트 매니저 (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
|
|
```
|
|
|
|
## 모듈
|
|
|
|
### 데이터 수집
|
|
|
|
- `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 패키지를 사용한 백테스트 기능 구현 |