2000년부터 2030년까지의 금(Gold), 원유(Crude Oil), 증시(Stock Market), 달러(USD Index), 원화(KRW/USD)
주요 결과
성과 순위 (2000년 1월 기준 누적 수익률): 🥇 금: +1,754% (압도적 1위) 🥈 S&P 500: +383% 🥉 원유: +175% 원/달러: +25% (원화 약세) 달러인덱스: -6% 10년물 채권: -38% (금리 하으로 인한 수익률 감소)
미국, 이스라엘과 이란의 전쟁이 장기전으로 예상된다. 이에 따른 2026년 ~2036년까지 예상 변화 그래프
핵심 예측 결과 (Base Case 시나리오)
자산
2026년
2036년
변화율
금
$5,158
$25,000
+385% 🥇
S&P 500
6,740
16,000
+137% 🥈
원/달러
1,482
2,200
+48%
원유
$90
$65
-28%
달러인덱스
99
70
-29%
10년물 채권
4.13%
3.30%
-20%
3가지 시나리오
시나리오
전쟁 기간
금(2036)
S&P 500(2036)
확률
Conservative
1-2년 종전
$16,000
9,000
25%
Base ⭐
3-5년 지속
$25,000
16,000
50%
Aggressive
5년+ 장기화
$60,000
36,000
25%
💡 투자 전략 요약 Base Case 대응 포트폴리오: 🥇 금 30% - 안전자산 핵심 📈 주식 30% - 방산, AI, 반도체 🛢️ 에너지 15% - 단기 트레이딩 📜 채권 15% - 단기물 위주 💵 현금 10% - 유동성 확보
예측 모델 함수 완성
미국-이스라엘-이란 전쟁 장기전 시나리오 예측 모델을 완성했습니다.
📦 핵심 클래스 및 함수
Python
from enum import Enum from dataclasses import dataclass
class WarScenario(Enum): CONSERVATIVE = "conservative" # 1-2년 종전 BASE = "base" # 3-5년 지속 (가장 가능성 높음) AGGRESSIVE = "aggressive" # 5년+ 장기화
class AssetClass(Enum): GOLD = "gold" # 금 OIL = "oil" # 원유 SP500 = "sp500" # S&P 500 BOND = "bond" # 10년물 채권 DOLLAR = "dollar" # 달러인덱스 KRW = "krw" # 원/달러
@dataclass class PredictionResult: years: List[int] # 예측 연도 values: List[float] # 예측 가격 normalized_returns: List[float] # 2000년 기준 수익률(%) confidence_interval_low: List[float] # 하한 신뢰구간 confidence_interval_high: List[float] # 상한 신뢰구간
메서드
설명
반환값
predict(asset, random_seed)
단일 예측 경로
PredictionResult
monte_carlo(asset, n_simulations)
몬테카를로 시뮬레이션
Dict[str, np.ndarray]
predict_all_assets()
모든 자산 예측
Dict[AssetClass, PredictionResult]
📊 시나리오별 파라미터
시나리오
금(성장, 변동)
원유
S&P 500
채권
달러
원화
Conservative
12%, 15%
-5%, 25%
6%, 18%
-3%, 12%
-2%, 8%
3%, 10%
Base
17%, 20%
-3%, 30%
9%, 22%
-2%, 15%
-3%, 10%
4%, 12%
Aggressive
25%, 28%
-1%, 40%
12%, 30%
-1%, 20%
-5%, 15%
6%, 18%
💻 사용 예시
Python
# 1. 예측기 생성 predictor = WarScenarioPredictor(scenario=WarScenario.BASE)
# 2. 금 가격 예측 gold_pred = predictor.predict(AssetClass.GOLD) print(f"2036년 예상: ${gold_pred.values[-1]:,.2f}")
# 3. 몬테카를로 시뮬레이션 mc = predictor.monte_carlo(AssetClass.GOLD, n_simulations=10000) print(f"중간값: ${mc['p50'][-1]:,.0f}") print(f"90% 신뢰구간: ${mc['p5'][-1]:,.0f} ~ ${mc['p95'][-1]:,.0f}")
# 4. 시나리오 비교 for scenario in WarScenario: pred = WarScenarioPredictor(scenario=scenario) result = pred.predict(AssetClass.GOLD) print(f"{scenario.value}: ${result.values[-1]:,.0f}")
자산
2026년
2036년 (P50)90%
신뢰구간
금
$5,159
$21,673
$8,256 ~ $51,436
원유
$91
$41
$5 ~ $214
S&P 500
6,740
13,180
4,075 ~ 36,979
채권
4.13%
3.0%
1% ~ 7%
달러
99
69
40 ~ 117
원/달러
1,483
2,064
1,102 ~ 3,706
몬테카를로 시뮬레이션
핵심 특징 및 원리
무작위성(Randomness): 난수를 생성하여 다양한 시나리오를 가상으로 시뮬레이션합니다.
반복(Iteration): 수천, 수만 번의 반복을 통해 결과의 정확도를 높입니다.
확률 분포: 단순 평균값이 아닌, 결과가 발생할 확률 분포(위험도)를 파악합니다.
주요 활용 분야
간단한 예시 (원주율
구하기) 정사각형 안에 원을 그리고, 무작위로 점을 찍습니다. (원 내부에 들어간 점의 수 / 전체 점의 수) 비율을 통해 원의 면적을 구하고, 이를 이용해
값을 추정할 수 있습니다.
Wikipedia +1
장단점
장점: 복잡하고 불확실한 시스템을 모델링할 수 있으며, 데이터가 부족한 초기 단계에서 유용합니다.
단점: 시뮬레이션 횟수가 많아야 정확도가 높아지므로 계산 시간이 오래 걸릴 수 있습니다.
몬테카를로 시뮬레이션은 알려지지 않은 수치를 추정하기 위해 반복적인 무작위 샘플링(Random Sampling)을 사용하는 수학적 기법입니다. 수식이 너무 복잡하거나 변수가 많아 정확한 해를 구하기 어려울 때, 컴퓨터를 이용해 수천~수만 번의 가상 실험을 수행하여 통계적인 근삿값을 찾아냅니다.
Wikipedia +3
핵심 특징
난수 기반: 주사위를 던지는 것처럼 무작위 숫자(난수)를 발생시켜 실험의 입력값으로 사용합니다.
불확실성 모델링: 입력 변수의 확률 분포를 알고 있다면, 이를 통해 결과값의 확률 분포를 예측할 수 있습니다.
반복의 힘: 실험 횟수가 많아질수록 대수의 법칙에 의해 실제값에 가까운 정확한 결과를 얻게 됩니다.