| name | asset-allocation-advisor |
| description | Builds a personalized strategic + tactical asset-allocation report from a risk profile and the current macro regime, sized in KRW with concrete instruments (KR-listed ETFs preferred), rebalancing bands, DCA schedule, and risk guardrails. Use when the user asks "내 돈 어떻게 분산/배분해?", "자산배분 해줘", "포트폴리오 구성", "1억 어디에 투자", "asset allocation", "how to diversify my money", "portfolio construction". Do NOT use for single-stock pre-earnings analysis (use equity-research-agent), daily trade entries (use daily-trade-plan), or reviewing an existing brokerage account's holdings (use toss-portfolio-recon / portfolio-report-generator). |
Asset Allocation Advisor
목적: 리스크 프로필 + 현재 거시 레짐 → KRW 단위 자산배분 보고서. 전략적 배분(SAA) → 택티컬 틸트 → 상품 선정 → 사이징 → 리밸런싱/리스크 가드.
면책: 일반 정보용 배분 프레임워크. 개인 맞춤 투자권유·자문 아님. 최종 결정·책임은 투자자 본인.
Input Schema (profile)
| field | type | values |
|---|
capital_krw | int | 투자 원금 (원) |
risk_profile | enum | conservative / balanced / aggressive / ultra |
horizon | enum | short(12y) / mid(35y) / long(7y+) / undefined |
asset_classes | list | us_equity,kr_equity,bonds_cash,gold,crypto,reits 중 허용분 |
fund_nature | enum | most_networth / surplus / surplus_stable / unstable_income |
Workflow (6 steps)
1. SAA baseline
references/allocation-matrix.md의 프로필별 기준 밴드 로드 (equity / bonds_cash / alt / cash_buffer).
2. Adjust (horizon × capacity)
- horizon
long → equity +510%p (bonds에서 차감), short → equity −1015%p (cash로)
unstable_income → cash_buffer +5%p, surplus_stable/most_networth 기본 유지
- 허용 자산군 필터링:
asset_classes에 없는 군의 비중은 인접 군으로 재분배 (bonds 제외 시 → cash_buffer + equity ballast). 재분배 규칙은 matrix 참조.
3. Tactical tilt (macro regime)
입력으로 받은 현재 레짐(금리/VIX/USD/유가/사이클)으로 밴드 내 조정:
- 고금리·금리고점 → 장기채 회피, 금/현금 매력↑
- 저VIX·리스크온 → equity 비중 밴드 상단
- 인플레/원자재 쇼크 → gold·실물 틸트↑
- 환율 고점 → USD 자산 신규 진입 분할(환헤지/언헤지 혼합)
레짐 데이터는
scripts/fetch_regime.py로 라이브 보강 (fallback: 사용자 제공/KB).
4. Instrument selection
references/allocation-matrix.md의 상품 유니버스에서 자산군별 코어/위성 선정. 국내상장 ETF 우선(연금/ISA 절세), 해외직투는 옵션.
5. KRW sizing
python3 .claude/skills/asset-allocation-advisor/scripts/krw_sizing.py --spec <weights.json>
weights.json = {"capital_krw": 100000000, "lines": [{"asset":"...","instrument":"...","ticker":"...","weight":0.55}, ...]}
출력: 자산군·상품·비중·금액(원)·USD노출 합산 테이블 (마크다운). 비중 합 100±0.5% 검증.
6. Report assembly
outputs/asset-allocation/{YYYY-MM-DD}/{date}-{slug}.md 작성:
- Executive Summary (프로필 + 한 줄 배분)
- 거시 레짐 스냅샷
- 전략적 배분표 (SAA)
- 택티컬 틸트 근거
- 상품·KRW 사이징 테이블
- 리밸런싱 규칙 (밴드 ±, 점검 주기, DCA)
- 리스크 가드 (최대낙폭 시나리오, 환·집중·유동성 리스크)
- 실행 체크리스트 + 면책
(옵션) pandoc → DOCX, report-to-slack-pipeline → 배포.
Rebalancing defaults
- 임계 밴드: 자산군 목표±5%p OR 라인 목표±25% 이탈 시 리밸런싱
- 점검 주기: 분기 1회 정기 + 밴드 이탈 시 수시
- 신규 투입: 변동성 큰 군(crypto/위성주)은 3~6개월 DCA 분할
- 절세: 손실 라인 연말 양도세 상계(해외직투), ISA/연금 우선 채움
Risk guardrails
- 단일 라인 ≤ 자산군의 40%, 단일 종목 ≤ 전체 10% (코어 인덱스 예외)
- crypto ≤ 전체 10% (프로필 ultra만 15%)
- cash_buffer는 0으로 만들지 않음 (리밸런싱 실탄 + 비상 유동성)
- 환노출 합계 표기, 60% 초과 시 부분 헤지 검토
Output Discipline
- 보고서 길이는 내용에 맞춤. 빈 섹션·플레이스홀더·과장 수사 금지.
- 추정·예시 수치에 실제 시세인 척 표기 금지. 모든 가격/금리/환율은 출처(스크립트 실행 시각 또는 인용) 명시.
- 자산군 추가/세분화는 사용자
asset_classes 범위 내에서만. 요청 없는 상품군 끼워넣기 금지.
Verification Protocol
보고서 출력 전 아래 실행·확인:
krw_sizing.py 실행 → 비중 합 100±0.5% & 금액 합 = capital_krw 일치 (스크립트가 불일치 시 exit 1).
fetch_regime.py 또는 인용으로 거시 수치의 출처·시각 확인. 미확보 시 해당 수치 "미확인" 표기.
- USD 환노출 % 가드(>60%) 발동 여부 확인 후 보고서에 반영.
- 라인별 가드(단일 라인 ≤ 자산군 40%, crypto ≤ 10%) 위반 0건 확인.
VERDICT: 4개 전부 통과해야 PASS. 하나라도 실패 시 수정 후 재실행.
Honest Reporting & Data Integrity
- 시세를 모르면 지어내지 않는다. 라이브 fetch 실패 시 "데이터 미확보"로 표기, 추정치는 "추정" 라벨.
- 백테스트·기대수익은 "과거 통계/시나리오"로만 제시. 미래 수익 보장 표현 금지.
- 가드 발동(환노출 초과 등)은 숨기지 않고 보고서에 그대로 노출.
- 이 스킬은 투자권유가 아니라는 면책을 모든 산출물에 포함.
Failure modes
| 실패 | 대체 |
|---|
| fetch_regime.py 실패 | 사용자 제공 레짐 또는 KB 최근 리포트 사용 |
| pandoc 없음 | MD만 생성 |
| 비중 합 ≠ 100 | 스크립트가 에러 → 재분배 후 재실행 |
상세 밴드·유니버스·재분배 규칙: references/allocation-matrix.md