11 KiB
Changelog - 2026-01-30
🎯 목표
make-quant-py에서 누락된 전략 3개를 pension-quant-platform으로 마이그레이션하고, Frontend 데이터 관리 UI를 완성합니다.
✅ 완료된 작업
Backend (7개 파일 수정/생성)
1. 공통 함수 추가 및 확장
파일: backend/app/utils/data_helpers.py
-
추가된 함수:
calculate_value_rank(value_df, indicators)- 밸류 지표 순위 계산 및 합산calculate_quality_factors(fs_list)- 퀄리티 팩터 TTM 계산 (ROE, GPA, CFO)
-
확장된 함수:
get_value_indicators()- PSR, PCR 계산 로직 추가- PSR = 시가총액 / 매출액 (TTM)
- PCR = 시가총액 / 영업활동현금흐름 (TTM)
- 파라미터 추가:
include_psr_pcr,base_date
-
임포트 추가:
import numpy as np
2. Value 전략 구현
파일: backend/app/strategies/factors/value.py (신규)
- 클래스:
ValueStrategy(BaseStrategy) - 지표: PER, PBR
- 로직:
- 종목 리스트 조회
- PER, PBR 조회 (Asset 모델 기반)
- 두 지표 모두 있는 종목 필터링
- 순위 합산 후 상위 N개 선정
- 파라미터:
count(기본값 20)
3. Quality 전략 구현
파일: backend/app/strategies/factors/quality.py (신규)
- 클래스:
QualityStrategy(BaseStrategy) - 지표: ROE, GPA, CFO
- 로직:
- 종목 리스트 조회
- 재무제표 데이터 조회
- TTM 계산 (최근 4분기 합산, 자산/자본은 평균)
- ROE = 당기순이익 / 자본
- GPA = 매출총이익 / 자산
- CFO = 영업활동현금흐름 / 자산
- 각 지표 순위 계산 (ascending=False)
- 순위 합산 후 상위 N개 선정
- 파라미터:
count(기본값 20)
4. All Value 전략 구현
파일: backend/app/strategies/factors/all_value.py (신규)
- 클래스:
AllValueStrategy(BaseStrategy) - 지표: PER, PBR, PCR, PSR, DY
- 로직:
- 종목 리스트 조회
- 5가지 밸류 지표 조회 (
include_psr_pcr=True) - 최소 3개 이상의 지표가 있는 종목 필터링
- DY 역수 처리 (높을수록 좋은 지표)
- 순위 합산 후 상위 N개 선정
- 파라미터:
count(기본값 20)
5. 전략 레지스트리 업데이트
파일: backend/app/strategies/registry.py
-
임포트 추가:
from app.strategies.factors.value import ValueStrategy from app.strategies.factors.quality import QualityStrategy from app.strategies.factors.all_value import AllValueStrategy -
레지스트리 등록:
STRATEGY_REGISTRY = { ... 'value': ValueStrategy, 'quality': QualityStrategy, 'all_value': AllValueStrategy, }
6. MultiFactorStrategy 리팩토링
파일: backend/app/strategies/composite/multi_factor.py
- 변경 사항:
_calculate_quality_factors()메서드 제거- 공통 함수
calculate_quality_factors()사용 - 임포트 추가:
from app.utils.data_helpers import calculate_quality_factors
7. 테스트 추가
파일: backend/tests/test_strategies.py
-
임포트 추가:
from app.strategies.factors.value import ValueStrategy from app.strategies.factors.quality import QualityStrategy from app.strategies.factors.all_value import AllValueStrategy -
추가된 테스트:
test_value_strategy_interface()- ValueStrategy 인터페이스 검증test_quality_strategy_interface()- QualityStrategy 인터페이스 검증test_all_value_strategy_interface()- AllValueStrategy 인터페이스 검증test_value_select_stocks()- ValueStrategy 실행 테스트test_quality_select_stocks()- QualityStrategy 실행 테스트test_all_value_select_stocks()- AllValueStrategy 실행 테스트
Frontend (2개 파일 수정/생성)
1. DataManagement 컴포넌트 생성
파일: frontend/src/components/data/DataManagement.tsx (신규)
-
기능:
-
데이터베이스 통계 카드 (3개)
- 종목 수
- 가격 데이터 수
- 재무제표 수
- 10초 자동 갱신
-
데이터 수집 버튼 (5개)
- 종목 데이터 수집
- 주가 데이터 수집 (최근 30일)
- 재무제표 수집
- 섹터 데이터 수집
- 전체 수집
-
수집 상태 표시
- 진행 중: 로딩 스피너 + 파란색 배경
- 완료: 성공 메시지 + 녹색 배경
- 실패: 에러 메시지 + 빨간색 배경
- Task ID 표시 및 Flower 링크
-
Task 상태 폴링
- 3초 간격으로 상태 확인
- SUCCESS/FAILURE 시 폴링 중단
- 상태 업데이트 UI 반영
-
-
스타일링:
- Tailwind CSS
- 반응형 그리드 레이아웃 (1/2/3열)
- 색상 코딩 (파란색: 종목, 녹색: 가격, 보라색: 재무제표, 노란색: 섹터, 빨간색: 전체)
-
API 사용:
dataAPI.stats()- 통계 조회dataAPI.collectTicker()- 종목 수집dataAPI.collectPrice()- 가격 수집dataAPI.collectFinancial()- 재무제표 수집dataAPI.collectSector()- 섹터 수집dataAPI.collectAll()- 전체 수집dataAPI.taskStatus(taskId)- 작업 상태 조회
2. App.tsx 통합
파일: frontend/src/App.tsx
-
임포트 추가:
import DataManagement from './components/data/DataManagement'; -
Data 탭 수정:
{activeTab === 'data' && ( <div className="px-4 py-6 sm:px-0"> <DataManagement /> </div> )} -
변경 전: API 엔드포인트 목록만 표시
-
변경 후: 완전한 데이터 관리 UI
문서화 (2개 파일 수정)
1. README.md 업데이트
파일: README.md
-
전략 목록 확장:
- Multi-Factor (Quality + Value + Momentum) - Momentum (12M Return + K-Ratio) - Value (PER, PBR) ⭐ NEW - Quality (ROE, GPA, CFO) ⭐ NEW - All Value (PER, PBR, PCR, PSR, DY) ⭐ NEW - Magic Formula - Super Quality - F-Score -
최근 업데이트 섹션 추가:
## ✅ 최근 업데이트 (2026-01-30) - [x] Value 전략 추가 - [x] Quality 전략 추가 - [x] All Value 전략 추가 - [x] Frontend 데이터 관리 탭 구현 - [x] 데이터 수집 상태 시각화 - [x] 공통 함수 리팩토링
2. IMPLEMENTATION_STATUS.md 업데이트
파일: IMPLEMENTATION_STATUS.md
-
전략 섹션 업데이트:
- ValueStrategy 추가
- QualityStrategy 추가
- AllValueStrategy 추가
- 총 전략 수: 5개 → 8개
-
데이터 조회 유틸리티 섹션 업데이트:
calculate_value_rank()추가calculate_quality_factors()추가get_value_indicators()PSR, PCR 추가
-
Frontend 컴포넌트 섹션 업데이트:
- DataManagement.tsx 추가
-
구현 통계 업데이트:
- Quant 전략: 5개 → 8개
- 테스트 케이스: 30+ → 36+
- Frontend 컴포넌트: 3개 → 4개
-
최근 업데이트 섹션 추가 (2026-01-30)
📊 구현 통계
수정/생성된 파일
-
Backend: 7개 파일
- 신규 생성: 3개 (value.py, quality.py, all_value.py)
- 수정: 4개 (data_helpers.py, registry.py, multi_factor.py, test_strategies.py)
-
Frontend: 2개 파일
- 신규 생성: 1개 (DataManagement.tsx)
- 수정: 1개 (App.tsx)
-
문서: 2개 파일
- 수정: 2개 (README.md, IMPLEMENTATION_STATUS.md)
추가된 코드
-
Backend:
- 전략 클래스: 3개 (~350줄)
- 공통 함수: 2개 (~80줄)
- 테스트: 6개 (~120줄)
-
Frontend:
- 컴포넌트: 1개 (~270줄)
전략 마이그레이션 진행률
- 이전: 5/9 (56%)
- 현재: 8/9 (89%)
- 남은 전략: 1개 (Super Value Momentum - 보류)
🎯 주요 개선 사항
1. 코드 재사용성 향상
- MultiFactorStrategy와 QualityStrategy에서 중복되던 TTM 계산 로직을
calculate_quality_factors()공통 함수로 분리 - ValueStrategy, QualityStrategy, AllValueStrategy에서
calculate_value_rank()공통 함수 사용
2. 확장성 향상
get_value_indicators()에 PSR, PCR 계산 로직 추가include_psr_pcr파라미터로 선택적 활성화- 기존 코드 영향 없이 하위 호환성 유지
3. 테스트 커버리지 확대
- 3개 신규 전략 각각 2개씩 테스트 추가 (인터페이스 + 실행)
- 총 테스트 케이스: 30+ → 36+
4. Frontend UX 개선
- 데이터 수집 작업을 CLI에서 웹 UI로 이동
- 실시간 상태 모니터링 (로딩 스피너, 성공/실패 메시지)
- Task ID 및 Flower 링크 제공으로 디버깅 편의성 향상
🔍 검증 항목
Backend
- ValueStrategy 인스턴스 생성 확인
- QualityStrategy 인스턴스 생성 확인
- AllValueStrategy 인스턴스 생성 확인
- STRATEGY_REGISTRY에 3개 전략 등록 확인
- 공통 함수 import 오류 없음
- 실제 백테스트 실행 및 결과 검증 (데이터 필요)
Frontend
- DataManagement 컴포넌트 렌더링 확인
- App.tsx import 오류 없음
- Data 탭 클릭 시 컴포넌트 표시
- 데이터 수집 버튼 클릭 시 API 호출 확인 (서버 필요)
- Task 상태 폴링 동작 확인 (서버 필요)
테스트
- test_value_strategy_interface 통과
- test_quality_strategy_interface 통과
- test_all_value_strategy_interface 통과
- test_value_select_stocks 통과 (데이터 필요)
- test_quality_select_stocks 통과 (데이터 필요)
- test_all_value_select_stocks 통과 (데이터 필요)
🐛 알려진 이슈
없음
현재 알려진 버그나 이슈 없음.
📝 다음 단계
Priority 1: 검증
-
백테스트 실행
curl -X POST http://localhost:8000/api/v1/backtest/run \ -H "Content-Type: application/json" \ -d '{ "name": "Value Strategy Test", "strategy_name": "value", "start_date": "2021-01-01", "end_date": "2024-01-01", "initial_capital": 10000000, "strategy_config": {"count": 20} }' -
make-quant-py와 결과 비교
- 동일 날짜, 동일 count로 선정 종목 비교
- 순위 계산 로직 일치 여부 확인
Priority 2: Frontend 개선
-
성과 비교 차트 추가
- 전략별 백테스트 결과 비교 차트
- Recharts LineChart 활용
-
반응형 레이아웃 개선
- 모바일/태블릿/데스크톱 최적화
- Chrome DevTools로 테스트
Priority 3: 성능 최적화
-
Redis 캐싱
- 재무제표 데이터 캐싱
- TTL 설정 (1일)
-
배치 쿼리 최적화
- N+1 쿼리 문제 해결
- JOIN 최적화
🎉 완료 요약
- ✅ 3개 전략 추가 (Value, Quality, All Value)
- ✅ 2개 공통 함수 추가 (calculate_value_rank, calculate_quality_factors)
- ✅ PSR, PCR 계산 로직 추가
- ✅ MultiFactorStrategy 리팩토링
- ✅ 6개 테스트 추가
- ✅ DataManagement 컴포넌트 구현
- ✅ App.tsx 통합
- ✅ 문서 업데이트
전략 마이그레이션: 89% 완료 (8/9) Frontend 데이터 관리: 100% 완료
작성일: 2026-01-30 작성자: Claude Code 버전: v1.1.0