미래 시뮬레이션
다중 시나리오 몬테카를로 시뮬레이션을 내 실제 포트폴리오에 적용합니다. 다음 달부터 FIRE 계획까지, 어떤 호라이즌이든 하나의 도구로. 가정은 Claude가 답변에 그대로 노출합니다. 브리프가 "지금 무엇이 사실인가"를 진단한다면, 프로젝션은 "이런 가정 하에 어떻게 펼쳐지는가"를 탐색합니다. 둘은 절대 섞이지 않습니다.
Claude에게 물어보기
"제 시간에 은퇴할 수 있을까?"Claude가 프로필의 목표값, 현재 순자산, 그리고 브리프의 90일 실현 변동성을 가져와 bear/base/bull 시나리오를 돌리고 각 시나리오별 도달 확률을 보고합니다
"변동성이 올라간다면 다음 달은 어떨까?"단기 호라이즌(horizon_months=1) 실행. 과거 실현 시나리오 위에 "stressed" 시나리오를 얹어 비교
"24개월 뒤 집 살 때 $50k 빼면 어떻게 돼?"life_event를 프로젝션에 추가. 결과 경로가 목표 달성 확률에 미치는 영향을 보여줌
두 갈래, 한 줄로진단 vs 사고 실험
firma의 도구는 인식론적으로 두 갈래로 나뉘며, Claude는 둘을 같은 문장에 섞지 않도록 지시받습니다.
진단 쪽,
get_market_brief, get_wealth_brief,
모든 show_*, 은 지금 사실인 정보를 반환합니다. 결정론적, 룰 기반, 미래 확률 분포 없음.
브리프는 미래의 숫자를 절대 만들어내지 않습니다.사고 실험 쪽 (
project_*) 이 미래 확률이 사는 곳입니다.
호출자가 가정을 제공해야 하며, Claude는 그 가정을 그대로 사용자에게 노출하도록 요구됩니다.
firma는 default 수익률/변동성을 절대 박아두지 않습니다.이 분리가
goal_tracking.projected_net_worth가 브리프에서 제거된 이유 자체입니다.
"미래는 어떻게 보일까" 같은 질문은 가정이 명시되는 project_net_worth로 라우팅됩니다.브리프의
risk_summary(annualized_return_pct, annualized_vol_pct)는
지난 90일에 대한 측정치입니다. historical이라는 레이블의
프로젝션 시나리오에 자연스러운 입력이지만, 예측은 아닙니다.
지난 90일이 앞으로도 이어진다는 것은 그 시나리오를 선택함으로써 사용자가
스스로 만든 가정입니다.project_net_worthMCP 전용
순자산에 대한 몬테카를로(기하 브라운 운동, 기본 시나리오당 1000 iteration).
한 호출에 다중 시나리오. 1개월부터 60년까지 어떤 호라이즌이든. 같은 엔진이
"다음 달은 어떨까?"와 "FIRE 목표 달성 확률은?" 모두에 답합니다,
horizon_months만 바뀝니다.이 도구는 포트폴리오의 현재 상태에 대해서는 아무것도 반환하지 않습니다. 그건 브리프의 일입니다.
입력
initial_value시작 순자산 (
currency 기준).monthly_contribution월별 순 유입 (소득 − 지출). 음수 가능.
horizon_months1 ~ 720. 한 도구, 어떤 호라이즌이든.
scenarios[]최대 8개. 각 시나리오는 자신의
label, expected_annual_return, annual_volatility를 가짐. 기본값 없음, Claude가 명시하고 노출해야 함.target_value주어지면 응답에
probability_of_reaching_target와 median_months_to_target이 포함. 생략하면 호라이즌 시점의 순수 분포만.life_events[]호라이즌에 걸친 일회성 현금흐름:
{ month_offset, amount, label }.currency, iterations, seed, include_paths, path_resolution합리적인 기본값. 시각화/재현성 위해 조정 가능.
합리적인 가정 앵커
S&P 500 장기수익률 ≈ 0.10 / 변동성 ≈ 0.18
60/40 포트폴리오수익률 ≈ 0.07 / 변동성 ≈ 0.12
현금수익률 ≈ 0.04 / 변동성 ≈ 0.005
세 시나리오 패턴bear=(0.04, 0.16) / base=(0.08, 0.22) / bull=(0.12, 0.30)
과거 실현 앵커 시나리오사용자의 측정치 (브리프의
risk_summary.annualized_return_pct와 annualized_vol_pct) 가 의견 시나리오와 함께 둘 수 있는 자연스러운 baseline앵커는 출발점이지 추천이 아닙니다. 사용자의 실제 자산 구성과 위험 성향에 맞춰
틸트하세요. 무엇을 고르든 (수익률, 변동성) 쌍은 응답에 그대로 echo되어
사용자가 정확히 무엇이 모델링됐는지 보게 됩니다.
응답에 담기는 것
최종값 분위수 밴드
호라이즌 시점 순자산의 P10 / P25 / P50 / P75 / P90을 시나리오별로 반환. 팬 차트는 분포이지 단일 점이 아닙니다. 통화 단위로 반올림되며 풀 정밀도는 엔진 내부에 유지됩니다.
목표 도달 확률
target_value를 주면 경로 중 한 번이라도 목표에 도달한 iteration의 비율. target_value를 생략하면 호라이즌 시점의 순수 분포만 반환.목표 도달까지의 중앙값 개월
절반 이상의 iteration이 목표에 도달한 경우, 처음으로 목표를 넘는 중앙값 개월. "언제, 얼마의 확률로?" 질문에 유용.
분위수 시계열
호라이즌에 걸친 시나리오별 P10/25/50/75/90 순자산 시계열. 기본은 연간 샘플링(≈10배 작은 페이로드, 팬 차트에는 충분). 월별 정밀 시각화가 필요하면 monthly 선택 가능.
Life events
호라이즌에 걸친 일회성 현금흐름 옵션 (집 계약금, 상속, RSU vest). 각 이벤트는 모든 iteration의 동일한 month index에 적용.
공유 시드 충격
한 호출 안의 모든 시나리오는 시드된 RNG에서 같은 충격 시퀀스를 뽑습니다. 시나리오 간 차이는 순수히 (수익률, 변동성) 차이, 랜덤 노이즈가 아님. 사과 대 사과 비교.
짧은 예시
현재 순자산 $200k, 월 $3k 적립, 35세 사용자가 묻습니다.
"60세에 $2M으로 은퇴 가능?"
Claude는 브리프에서
retirement_target_year, target_net_worth,
current_net_worth를 읽고 300개월에 걸쳐 세 시나리오를 돌립니다.
historical 앵커는 사용자의 측정된 90일 수익률/변동성. bear와 bull은 의견 오버레이:{
"scenarios": [
{ "label": "historical (90일 실현)", "expected_annual_return": 0.092, "annual_volatility": 0.21 },
{ "label": "stressed bear", "expected_annual_return": 0.04, "annual_volatility": 0.25 },
{ "label": "trend-extension bull", "expected_annual_return": 0.12, "annual_volatility": 0.30 }
],
"initial_value": 200000,
"monthly_contribution": 3000,
"target_value": 2000000,
"horizon_months": 300,
"currency": "USD"
}응답은 시나리오별 $2M 도달 확률, 각 P50 경로, 사용된 (수익률, 변동성)을 보여줍니다.
Claude는 배열을 읽고 가정을 먼저 명시한 뒤 답변에 녹입니다, 사용자는 어떤
(수익률, 변동성)에든 이의를 제기하고 Claude에게 다시 돌려보게 할 수 있습니다.
이것은 무엇이 아닌지
추천 엔진 아님.
브리프가 현재 상태에 대한 룰 기반 추천을 반환합니다. 프로젝션은 주어진 가정 하에서의 분포만 모델링합니다.
확정 예측 아님.
GBM은 1차 근사, fat tail과 regime break는 포착되지 않습니다. (수익률, 변동성)의 disclosure로 모델의 한계를 사용자에게 명시합니다.
브리프에 포함되지 않음.
브리프는 진단 전용입니다. 미래 확률 분포는 별도 도구, 명시적 가정과 함께 여기 살아 있습니다.
통화에 묶이지 않음.
수학은 unit-agnostic.
currency는 메타데이터.