feat: 소액 트랙 v2 — 유휴 현금을 CD금리 파킹 ETF로 + ETF 매도세 면제 반영#451
Merged
Conversation
알파가 없다는 결론 아래에서 수익을 더 끌어올 정직한 원천은 예측이 아니라 구조다. v1(지수 50/현금 50)은 절반이 이자 0으로 잠들어 있었고, 체결 모델은 거래세 면제인 ETF에 개별주 매도세 0.20%를 물리고 있었다. - kr_pocket v2: KODEX200 47.5 + TIGER CD금리투자KIS 47.5 + 현금 5. 위험자산 노출은 종전 절반 원칙 그대로, 무수익 절반만 이자 자산으로(연 +1%대). min_cash_ratio 바스켓별 오버라이드 신설(전역 20%는 개별주용 안전판 — 현금성 ETF 바스켓엔 과잉이라 5%). - 클램프 규칙을 effective_stock_fraction 한 곳으로 통합 — 종전 5벌 복제 (리밸런서/평가/헬스/대시보드/시뮬레이터)라 표면마다 설계 비중이 어긋날 구조. - transaction_costs.tax_exempt_symbols + calculate_transaction_costs(symbol=) — ETF 매도세 0. 체결 경로 8곳 전달, 미전달 호출부는 기존 동작. - 구조 배치 허용 오차를 보유 슬롯별 1주 가격의 합으로 교정 — 최고가 1주만 재면 다중 슬롯 정상 적립(4/9/10개월차)에 몇 주씩 거짓 ATTENTION. 단일 슬롯 동작 불변, 빈 슬롯은 실패로 그대로 경보. 검증: 스위트 1677 통과. 격리 DB E2E 3사이클(지수 1주 -> 파킹 2주 -> 정착 0주문 조용) + 시뮬레이터 실CLI 일치. 분배금 미수령은 보수적 편향으로 문서화.
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.
배경 — "최대한 이득 + 안전"의 정직한 레버
알파 부재가 정착 결론인 체제에서 수익을 더 끌어올 수 있는 원천은 예측이 아니라 구조다. kr_pocket v1(지수 50 / 현금 50)은 총자산의 절반이 이자 0의 유휴 현금으로 잠들어 있었고, 체결 모델은 ETF에 개별주 매도세 0.20%를 물리고 있었다(실제로는 국내 상장 ETF 거래세 면제). 위험을 더하지 않고 이 둘만 고치면 연 +1%대가 정직하게 나온다.
변경 1 — kr_pocket v2: 유휴 현금을 CD금리 파킹 ETF로
min_cash_ratio바스켓별 오버라이드 신설: 전역 20% 현금 하한은 개별 주식 바스켓용 안전판 — 보유분 절반이 현금성인 바스켓엔 과잉이라 5%로 낮춘다effective_stock_fraction(core/basket_deploy.py) 한 곳으로 통합. 종전엔 같은 로직이 5벌 복제돼 있었다(리밸런서·평가 귀속·헬스 + 대시보드·자본 시뮬레이터) — 오버라이드를 일부만 반영하면 대시보드는 "설계 80%", 디스코드 카드는 "설계 95%"로 표면마다 다른 숫자를 보여주게 되는 구조였고, 실제로 셀프 리뷰에서 대시보드·시뮬레이터 2곳의 미이관을 잡아 함께 옮겼다변경 2 — ETF 매도 거래세 면제를 체결 모델에 반영
transaction_costs.tax_exempt_symbols신설 (069500, 357870 등록)calculate_transaction_costs(symbol=...)— 면제 종목은 매도세 0, effective_price에서도 제외. symbol 미전달 호출부(백테스트·스크립트)는 기존 일괄 과세 그대로변경 3 — 구조 허용 오차를 다중 슬롯으로 확장 (리뷰에서 발견)
셀프 리뷰의 12개월 적립 시뮬레이션에서: 구조 허용 오차(#448)가 '최고가 1주/총액'만 재는데, v2는 슬롯이 2개라 정수 절사가 슬롯마다 동시에 쌓인다 → 적립 4·9·10개월차에 양쪽 슬롯 모두 '부족분 < 1주'(매수 불가능, 정상)인데 미달이 허용을 넘어 몇 주씩 거짓 ATTENTION이 뜰 상태였다.
structural_deployment_tolerance를 '보유 슬롯별 1주 가격의 합'으로 교정 — 단일 슬롯 동작은 불변(8/1 입금 시나리오 pin 유지), 빈 슬롯은 절사가 아니라 실패이므로 합산에서 제외돼 통째 미체결은 여전히 잡힌다.한계 고지 (정직)
검증