fix: 휴장일 fallback 대체공휴일·연말휴장 보강 — 60일 커버리지 분모 보호 - #416
Merged
Conversation
거래일 판정(TradingHours)이 이제 트랙레코드 커버리지 분모·NAV 스냅샷 귀속 (가격 기준일)·평가 진행일 계산의 기반인데, pykrx 실패 환경(현 운영 환경 포함) 에서 쓰이는 fallback 휴장일 셋에 대체공휴일이 전부 누락돼 있었다. 누락되면: 대체휴일(예: 2026-08-17 광복절 대체)이 거래일로 계산돼 그날 사이클이 없는 것이 커버리지 손실로 잡히고(60일 분모 부풀림), 휴일 보충 실행의 스냅샷 귀속일도 어긋난다. 증거 구간(2026-06~09)에만 9/28(추석 대체) 등 직접 영향. - holidays_updater.FALLBACK_BY_YEAR 보강(2025~2027): 대체공휴일 규정(설·추석 연휴, 3·1절, 광복절, 개천절, 한글날, 어린이날, 부처님오신날, 성탄절 — 주말 겹침 시 다음 평일; 신정·현충일 미적용) + KRX 연말 휴장(12/31) + 2025-01-27 임시공휴일. 2026: +6일(03-02, 05-25, 08-17, 09-28, 10-05, 12-31). - trading_hours.KR_HOLIDAYS_FALLBACK를 별도 하드코딩에서 FALLBACK_BY_YEAR 합집합으로 단일 소스화(한쪽만 고쳐지는 드리프트 방지). - config/holidays.yaml 재생성(29→41일). - 회귀 테스트: 2026 대체공휴일 6건 비거래일 판정 + 현충일(대체 미적용) 다음 월요일은 거래일 + 두 fallback 단일 소스 동기 검증. - 기존 target_weight 어댑터 테스트의 60영업일 만기 기대를 1영업일(5/25 반영) 조정 — 실패가 곧 수정 정당성의 증거였다. 전체 1492 passed.
easygap
added a commit
that referenced
this pull request
Jul 6, 2026
fix: 휴장일 fallback 대체공휴일·연말휴장 보강 — 60일 커버리지 분모 보호
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
문제 (트랙레코드 무결성 — 15번째 감사 라운드)
거래일 판정(
TradingHours)은 이제 커버리지 분모·NAV 스냅샷 귀속(가격 기준일)·평가 진행일의 기반이다. 그런데 pykrx 실패 환경(현 운영 환경 — 실측 확인)에서 쓰이는 fallback 휴장일 셋에 대체공휴일이 전부 누락돼 있었다.영향: 대체휴일(예: 2026-08-17 광복절 대체, 2026-09-28 추석 대체 — 증거 구간 내)이 거래일로 계산되어, 그날 사이클이 없는 것이 커버리지 손실로 잡히고(분모 부풀림 → 95% 기준 부당 하락), 휴일 보충 실행의 스냅샷 귀속일도 어긋난다.
수정
FALLBACK_BY_YEAR보강(2025~2027): 대체공휴일 규정(주말 겹침 시 다음 평일 — 신정·현충일은 미적용) + KRX 연말 휴장(12/31) + 2025-01-27 임시공휴일. 2026년 +6일trading_hours의 별도 하드코딩 fallback을 단일 소스화(updater 셋 합집합) — 한쪽만 고쳐지는 드리프트 방지config/holidays.yaml재생성(29→41일)검증
is_trading_day(2026-08-17/09-28/12-31)→ 휴장일 정확 판정