시나리오 분석

결정론적 what-if 계산기. 가설 충격(주가지수 변동, 단일 종목 이벤트, 또는 둘의 조합)을 주면 종목별 베타를 거쳐 흐르는 P&L 영향을 점추정으로 반환합니다. 브리프가 "지금 무엇이 사실인가"를 진단한다면, 프로젝션은 미래 분포를, 시나리오는 "지금 X가 일어나면 어떻게 보일까"에 답합니다.

"내일 S&P가 3% 빠지면 어떻게 돼?"베타 기반 점추정. 종목별, 그리고 포트폴리오 합산 영향. 분포나 확률 없이, 조건부 결과 하나.
"TSLA가 실적 10% 미스하면 타격은?"per_ticker_pct 오버라이드로 단일 종목 이벤트 적용(베타가 아닌 종목 자체 충격). 다른 종목은 영향 없음.
"내일 bear(-3%), flat(0%), bull(+3%) 비교"한 호출에 최대 8개 시나리오. 각각 라벨이 붙은 응답이 돌아와 Claude가 나란히 보여줄 수 있습니다.
simulate_scenarioproject_net_worth는 형제, 둘 다 firma의 사고 실험 쪽에 살고 있습니다. 원칙도 같습니다: 호출자가 가정을 제공하고, firma는 결과를 계산하며, Claude는 그 가정을 답변에 그대로 노출합니다.
차이는 답의 모양에 있습니다:
project_net_worth · 확률적 분포호라이즌에 걸친 P10/P25/P50/P75/P90 경로. "어느 정도 확률로 이 일이 일어나나?"에 답함. 입력: 시나리오별 수익률 + 변동성.
simulate_scenario · 결정론적 조건부시나리오당 단일 점추정. "X가 일어나면 어떻게 보일까"에 답함. 입력: 충격 크기 + 종목별 베타.
브리프는 진단입니다. simulate_scenario는 조건부입니다. 둘은 서로를 절대 안에 품지 않습니다, Claude가 브리프에서 현재 상태(보유, 베타, daily_vol_pct)를 읽고 사용자의 가설 충격과 함께 simulate_scenario로 넘기는 식으로 다리를 놓습니다.
결정론적 조건부 계산기. 가설 충격 하나 이상을 받으면, 활성 종목을 모두 돌며 시가 × 베타 × 충격을(또는 종목별 오버라이드가 있으면 그것을) 적용하고, 합산해 포트폴리오 영향을 내며, 결과를 포트폴리오의 자연 일별 변동성과 대조해 시나리오 충격이 평소 노이즈 수준인지 아닌지 가늠할 수 있게 합니다.
이 도구는 포트폴리오의 현재 상태에 대해서는 아무것도 반환하지 않습니다. 그건 브리프의 일입니다.
req
scenarios[]
1~8개 충격 시나리오. 각각 label과, equity_pct(베타로 흐르는 광역 시장 변동) 또는 per_ticker_pct(종목별 오버라이드) 중 최소 하나를 가짐. 둘을 같이 줘도 됨, 오버라이드가 우선합니다.
opt
beta_overrides
종목별 베타 맵. 가장 정확한 결과를 원하면 get_market_briefholdings[].fundamentals.beta_5y를 그대로 전달. 오버라이드도 없고 베타 데이터도 없는 종목은 1.0으로 폴백됩니다.
opt
daily_vol_pct
포트폴리오의 측정된 1일 표준편차(%). get_market_briefrisk_summary.daily_vol_pct에서 가져옴. 주어지면 각 시나리오 응답에 one_sigma_range가 포함됩니다.
cfg
display_currency
응답의 모든 금액 단위 통화 (USD/KRW/EUR/JPY/CNY/GBP/HKD/INR/TWD). 기본값 USD.
Δ
종목별 영향
활성 종목 각각에 대해 시가 × 베타 × shock_pct. 종목별 오버라이드가 있으면 그 종목의 베타×지수 대신 오버라이드 값을 적용해 단일 종목 이벤트가 고립되도록 합니다.
Σ
포트폴리오 영향
종목별 영향의 합. amount(금액)와 pct(전체 시가 대비 %) 둘 다 반환됩니다. Claude가 헤드라인으로 쓰는 숫자입니다.
1-시그마 일변동 범위
daily_vol_pct가 주어지면 포트폴리오의 자연 일별 표준편차를 달러로 반환. 시나리오 충격이 "테일" 이벤트인지 그냥 평소 노이즈 수준인지 가늠하는 기준이 됩니다.
β
종목별 베타 출처
각 종목이 실제로 사용한 베타와, 그것이 beta_overrides에서 왔는지 1.0으로 폴백됐는지를 명시. 폴백이 한 종목이라도 있으면 beta_fallback_note가 응답에 붙습니다.
입력 충격 echo
호출자가 준 (equity_pct, per_ticker_pct)이 각 시나리오 응답에 그대로 echo되어, 정확히 무엇이 모델링됐는지 사용자가 볼 수 있습니다.
TSLA, NVDA, MSFT, AAPL을 보유한 사용자. 금요일에 PCE 인플레이션 지표가 발표됐고 화요일 개장 전, 사용자가 묻습니다: "PCE 결과별로 화요일이 어떻게 보일까?"
Claude는 브리프를 한 번만 호출해 holdings[].fundamentals.beta_5y (TSLA 1.79, NVDA 2.25, MSFT 1.09, AAPL 1.08)와 risk_summary.daily_vol_pct (1.5)를 가져온 뒤, 조건부 시나리오 셋을 짜서 simulate_scenario로 체이닝합니다:
{
"scenarios": [
  { "label": "PCE 컨센서스 부합",        "equity_pct":  0.005 },
  { "label": "PCE 상방 서프라이즈 (hot)",  "equity_pct": -0.025 },
  { "label": "PCE 하방 서프라이즈 (cool)", "equity_pct":  0.030 }
],
"beta_overrides": { "TSLA": 1.79, "NVDA": 2.25, "MSFT": 1.09, "AAPL": 1.08 },
"daily_vol_pct": 1.5,
"display_currency": "KRW"
}
응답은 시나리오별 금액 임팩트와 one_sigma_range(포트폴리오의 자연 1일 표준편차)를 함께 줍니다. Claude가 사용자에게 돌려주는 건 다음과 같이 짧은 읽기:
PCE 부합         →   +620만원  (~0.5σ 이벤트)
PCE 상방 (hot)   → -1,630만원  (~1.3σ 이벤트; TSLA -1,140만, NVDA -520만)
PCE 하방 (cool)  → +2,180만원  (~1.6σ 이벤트)

1σ 일변동 범위 = ±1,250만원
가정: S&P 변동폭은 Claude가 정한 것이지 예측 아님.
정직한 framing (Claude는 "어떤 결과가 나올지" 못 박지 않습니다) 이게 핵심입니다. 1일 방향은 알 수 없는 것이고, 조건부 민감도는 알 수 있는 것입니다. 실제 quant가 하는 view를 사용자의 실제 포트폴리오 크기에 맞춰 답해주는 것뿐입니다.
몬테카를로 아님.
호라이즌에 걸친 확률 분포(P10/P50/P90)가 필요하면 project_net_worth를 쓰세요. 시나리오는 조건부 질문에 답합니다, 분포 질문이 아닙니다.
예측 아님.
각 시나리오는 "X가 일어나면 어떻게 보일까"에 답합니다, "X가 일어난다"는 예측이 아닙니다.
추천 아님.
충격의 영향을 정량화할 뿐, 액션·헤지·트림을 권하지 않습니다.
포트폴리오 상태 아님.
현재 보유, 손익, 레짐, 추천이 필요하면 get_market_brief를 쓰세요.