기획서(포트폴리오_리밸런싱_기획서.md)를 명세로 삼아, 각 단계를 Cowork에 던지는 독립 작업 단위로 쪼갰다. 각 단계는 끝나면 "완료 기준"으로 확인한다.
준비물 (본인이 직접 발급·입력)
- 텔레그램 봇 토큰 + chat id (BotFather로 발급)
- 토큰은 로컬
.env(gitignore 처리)와 배포 시 Streamlit secrets로만 관리. 코드나 공개 레포에 절대 하드코딩/커밋 금지.
FMP API 키 — 불필요. 펀더멘털·점수 모두 yfinance로 수집.
Phase 0 — 프로젝트 셋업 & 설정
- 목표: 파이썬 프로젝트 골격 + 설정 파일.
- 산출물: 버킷·종목·목표 비중·5/25 밴드 규칙·가중치(가치 0.5/퀄리티 0.5)·F-score 컷오프(≤4)를 담은
config.
- 완료 기준: config를 불러오면 버킷 4개와 직접투자 10종목(각 3%), 지수 QQQ/VOO 25%씩, 미래 BOTZ 5%·우주 5% 현금, 금 10%가 정확히 나온다.
Phase 1 — 데이터 수집 모듈
- 목표: 가격(yfinance) + 펀더멘털·점수(FMP).
- 산출물: 10종목·ETF·금의 가격, 52주 고저, 이동평균(yfinance)과 6개 멀티플(PER·PBR·EV/EBITDA·FCF수익률·EV/Sales·PEG) + Piotroski F-score(9항목 직접 계산)·Altman Z-score(공식 직접 계산)를 yfinance 재무제표에서 산출하는 모듈. 펀더멘털·점수는 분기 캐시, 가격만 매일 갱신.
- 완료 기준: 한 번 실행하면 모든 종목의 데이터가 캐시되고, 두 번째 실행은 가격만 새로 받는다.
Phase 2 — 저평가 점수 엔진 (직접투자 버킷)
- 목표: 가치 + 퀄리티 + 추세 점수.
- 산출물: ① 6개 멀티플을 자기 과거(3~5년) z-score로 표준화해 평균(가치), ② F-score ≤ 4 탈락(퀄리티 게이트), ③ 신저가 갱신 중 보류(추세 게이트), ④ 가치 0.5/퀄리티 0.5 합산 랭킹.
- 완료 기준: 직접투자 10종목에 대해 점수·순위가 나오고, 게이트 탈락 종목이 이유와 함께 표시된다.
Phase 3 — 리밸런싱 로직