피드로 돌아가기
Rebalancing a portfolio with only your next deposit (no selling)
Dev.toDev.to
Backend

세금 최소화 및 자산 최적화를 위한 증분 기반 포트폴리오 Rebalancing 알고리즘 설계

Rebalancing a portfolio with only your next deposit (no selling)

Diego2026년 6월 23일6intermediate

Context

기존의 Rebalancing 방식인 Overweight 자산 매도는 세금 발생 및 거래 수수료 비용을 수반함. 특히 브라질 세법 등 국가별 과세 체계에 따른 매도 비용 부담이 시스템 설계의 주요 제약 사항으로 작용함.

Technical Solution

  • New Deposit만을 활용하여 Underweight 자산에 집중 투자함으로써 매도 없이 Target Allocation에 수렴하는 Convergence 구조 설계
  • Current Value 대비 Target Value의 차이인 Gap을 산출하고, 이를 기반으로 신규 자금을 비례 배분하는 Proportional Distribution 로직 구현
  • max(0, target - current) 함수를 통한 Overweight 자산의 배분 대상 자동 제외 처리로 계산 복잡도 감소
  • Asset Class별 구매 단위 차이(Stock의 정수 단위 vs Crypto의 소수점 8자리 단위)를 처리하는 Market Branching 전략 채택
  • 정수 단위 구매 후 발생하는 잔액(Leftover)을 가장 큰 Gap을 가진 자산에 우선 할당하는 Greedy Algorithm 기반의 2nd Pass 최적화
  • 브라질 세법의 면세 범위(월 R$20k) 및 과세 자산(ETF/REITs) 특성을 반영한 Tax-aware Filtering 조건 추가

- 도메인 특화 제약 사항(세법, 거래 단위)을 비즈니스 로직의 분기점으로 설계하여 유연성 확보 - 부동 소수점 오차 방지를 위해 금융 계산 시 `Decimal` 타입 사용 및 정밀도(Quantize) 정의 - 단순 알고리즘 구현보다 실제 사용자 경험의 마찰(Friction)을 제거하는 도메인 중심 설계 우선 고려

원문 읽기