dcy-026 confirm-discovery + REQ-018 change-req(CHG-20260612-01)→구현→ confirm-req-implemented(CHG-20260612-02) 전체 delivery. - broker_port.py: calculate_tax(side, amount) 신규 + fee/tax 율 env 상수화 (TREX_KIS_FEE_BPS=1.5, TREX_KRX_TAX_SELL_BPS=20.0). 매도 0.2%/매수 0. - paper.py / kis.py: tax=0.0 하드코딩 3곳 제거 → 정책 함수 호출. KIS daily-ccld 응답에 fee/tax 필드 부재 → 정책 폴백(향후 정본 우선 훅). - runtime-flows.md: 체결→ledger fee/tax 산출 흐름 갱신. - tests: fee/tax 정책 단위 + issue #24 4건 회귀(fee+tax=1,376.9원). 429 passed (+6), ruff clean. REQ-018 Approved→Implemented, BAT-038 release-candidate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.6 KiB
2.6 KiB
BAT-038: 매도 증권거래세 누락 정정 + fee/tax 단일 정책 지점 (CHG-20260612-01)
- Status: release-candidate
- Profile: standard
- Source Discovery: dcy-026 (issue #24)
- Included REQ: REQ-018 (CHG-20260612-01)
- Excluded REQ: 없음
Summary
- 매도 체결의 증권거래세가 전 체결에서
tax=0.0으로 하드코딩되어 실현 손익·일일 수익률이 과대 계산되던 운영 버그(issue #24)를 닫는다.FillStatus.tax가 매도 정책 세율(0.2%)로 계산되도록 정정하고, 수수료율·세율을 단일 정책 지점(calculate_fee/calculate_tax)에서 env 설정으로 관리한다. KIS 어댑터는 브로커 응답 fee/tax 가 있으면 정본 우선, 없으면 정책 폴백.
Scope
- In Scope:
trex_core/application/broker_port.py—calculate_tax(side, amount)신규 + 세율/수수료율 env 상수(TREX_KIS_FEE_BPS=1.5,TREX_KRX_TAX_SELL_BPS=20.0).FillStatus.tax의미 정정(주석 갱신).trex_core/adapters/broker/paper.py—tax=0.0→calculate_tax(...)(line 90)trex_core/adapters/broker/kis.py—tax=0.0→ 브로커 응답 fee/tax 파싱 + 정책 폴백 (line 213·230)docs/runtime-flows.md— 체결→ledger fee/tax 산출·저장 흐름 갱신- 테스트: 매수/매도 fee·tax 단위, issue #24 4건 회귀(1,376.9원), paper·KIS 동일 정책, KIS 응답 우선 경로
- Out of Scope:
- 과거 잘못 저장된 ledger 행 소급 보정 (dcy-026 OQ-3 Closed — 보정 안 함)
- portfolio-hub 측 손익 재계산 로직 (수신측 저장소 책임)
- REQ-011 (BrokerPort 포트 계약) 변경 — fee/tax 는 REQ-018 영역, REQ-011 무영향
- 세율 동적 설정 UI/운영 도구
Documents
- Planning: planning.md
- Design: design.md
- Implementation: implementation.md
- Verification: verification.md
Notes
- 인터페이스/계약 의미 변경(
FillStatus.tax0 고정 → 매도 정책 계산) + KIS 응답 파싱(신규 동작, R-2) + env 설정 + baseline 문서(runtime-flows) 정렬을 함께 포함하므로 standard profile. - 회귀 기준값: issue #24 4건
fee+tax합계 1,376.9원(fee 177.9 + tax 1,199). 이슈 기재 1,357원은 원작성자 추정 오차(~20원), baseline 아님. TREX_KIS_FEE_BPS/TREX_KRX_TAX_SELL_BPS변수명에 도메인 라벨이 있으나 단일 정책 지점으로 paper·KIS 가 동일 공유.- 핵심 리스크: R-1(세율 산식 오류 → 손익 역왜곡, 완화: 1,376.9원 회귀 고정), R-2(KIS 응답 필드명/단위 오파싱 → 라이브 전용 오류, 완화: raw 필드 확인 + 폴백 + 로그).