[투자] Python으로 주가 시뮬레이션하기
📊 Python으로 주가 시뮬레이션하기: 정규분포 vs 로그정규분포
주식의 미래 가격을 예측하거나 은퇴 자금의 시나리오 분석을 하려면,
주가의 움직임을 수학적으로 모델링하는 것이 중요합니다.
그런데 단순히 평균 수익률만으로 계산하는 **직선형 예측(straight-line projection)**은 현실을 반영하지 못하죠.
이럴 때 사용하는 도구가 바로 **몬테카를로 시뮬레이션(Monte Carlo Simulation)**입니다.
이 글에서는 Python으로 주가를 시뮬레이션하는 방법과 함께
**왜 로그정규분포(lognormal distribution)**가 정규분포보다 더 적절한지를 비교해보겠습니다.
📌 왜 로그정규분포인가?
일반적으로 수익률은 **정규분포(normal distribution)**를 따른다고 가정하지만,
주가 자체는 **로그정규분포(lognormal distribution)**를 따른다고 보는 것이 더 현실적입니다.
이유는?
-
정규분포는 덧셈: 가격 변화(±단위)를 단순히 더함
-
로그정규분포는 곱셈: 수익률(%)을 누적해서 곱함
👉 수익률을 계속 곱하면 음수가 될 수 없습니다.
👉 즉, 로그정규분포는 주가가 0보다 작아지는 비현실적인 상황을 방지해 줍니다.
🧪 시뮬레이션 조건
두 가지 모델을 비교해봅니다:
| 항목 | 정규분포 모델 | 로그정규분포 모델 |
|---|---|---|
| 시작 주가 | 100 | 100 |
| 평균 수익 | 연 $8 증가 | 연 8% 수익률 |
| 표준편차 | 연 $20 | 연 20% 변동성 |
| 기간 | 10년 | 10년 |
| 시드(seed) 고정 | ✅ | ✅ |
시드(seed)를 고정하면 동일한 난수를 사용해 두 모델을 비교할 수 있습니다.
📈 정규분포 기반 시뮬레이션 결과
🧾 해석
-
각 해마다 일정 평균과 분산을 가진 변화폭을 더해가는 방식
-
어떤 경로에서는 주가가 음수가 될 수도 있음 → 현실적이지 않음
📊 로그정규분포 기반 시뮬레이션 결과
🧾 해석
-
연속복리 기반 수익률을 누적해서 곱함
-
주가가 음수가 되지 않고, 복리 효과가 반영됨
-
실제 주가의 움직임과 유사함
✅ 결론: 주가 시뮬레이션에는 로그정규분포가 필수
| 항목 | 정규분포 | 로그정규분포 |
|---|---|---|
| 가격이 음수로 갈 수 있음 | ✅ | ❌ |
| 현실성 | 낮음 | 매우 높음 |
| 수익률 반영 방식 | 덧셈 | 곱셈 (복리) |
| 사용 예시 | 단기 예측, 교육용 | 장기 투자, 포트폴리오 분석, 은퇴 시뮬레이션 등 |
댓글
댓글 쓰기