[투자] Python으로 주가 시뮬레이션하기

 

📊 Python으로 주가 시뮬레이션하기: 정규분포 vs 로그정규분포

주식의 미래 가격을 예측하거나 은퇴 자금의 시나리오 분석을 하려면,
주가의 움직임을 수학적으로 모델링하는 것이 중요합니다.

그런데 단순히 평균 수익률만으로 계산하는 **직선형 예측(straight-line projection)**은 현실을 반영하지 못하죠.
이럴 때 사용하는 도구가 바로 **몬테카를로 시뮬레이션(Monte Carlo Simulation)**입니다.

이 글에서는 Python으로 주가를 시뮬레이션하는 방법과 함께
**왜 로그정규분포(lognormal distribution)**가 정규분포보다 더 적절한지를 비교해보겠습니다.


📌 왜 로그정규분포인가?

일반적으로 수익률은 **정규분포(normal distribution)**를 따른다고 가정하지만,
주가 자체는 **로그정규분포(lognormal distribution)**를 따른다고 보는 것이 더 현실적입니다.

이유는?

  • 정규분포는 덧셈: 가격 변화(±단위)를 단순히 더함

  • 로그정규분포는 곱셈: 수익률(%)을 누적해서 곱함

👉 수익률을 계속 곱하면 음수가 될 수 없습니다.
👉 즉, 로그정규분포는 주가가 0보다 작아지는 비현실적인 상황을 방지해 줍니다.


🧪 시뮬레이션 조건

두 가지 모델을 비교해봅니다:

항목정규분포 모델로그정규분포 모델
시작 주가100100
평균 수익연 $8 증가연 8% 수익률
표준편차연 $20연 20% 변동성
기간10년10년
시드(seed) 고정

시드(seed)를 고정하면 동일한 난수를 사용해 두 모델을 비교할 수 있습니다.


📈 정규분포 기반 시뮬레이션 결과

import numpy as np import matplotlib.pyplot as plt np.random.seed(42) years = 10 n_paths = 4 start_price = 100 drift = 8 volatility = 20 paths = [] for _ in range(n_paths): changes = np.random.normal(drift, volatility, years) prices = [start_price] for change in changes: prices.append(prices[-1] + change) paths.append(prices) for path in paths: plt.plot(path) plt.title("정규분포 기반 주가 시뮬레이션") plt.xlabel("연도") plt.ylabel("주가(₩)") plt.grid(True) plt.show()

🧾 해석

  • 각 해마다 일정 평균과 분산을 가진 변화폭을 더해가는 방식

  • 어떤 경로에서는 주가가 음수가 될 수도 있음 → 현실적이지 않음


📊 로그정규분포 기반 시뮬레이션 결과

np.random.seed(42) mu = 0.08 # 평균 수익률 (8%) sigma = 0.20 # 변동성 (20%) paths = [] for _ in range(n_paths): returns = np.random.normal(mu, sigma, years) prices = [start_price] for r in returns: prices.append(prices[-1] * np.exp(r)) paths.append(prices) for path in paths: plt.plot(path) plt.title("로그정규분포 기반 주가 시뮬레이션") plt.xlabel("연도") plt.ylabel("주가(₩)") plt.grid(True) plt.show()

🧾 해석

  • 연속복리 기반 수익률을 누적해서 곱함

  • 주가가 음수가 되지 않고, 복리 효과가 반영됨

  • 실제 주가의 움직임과 유사함


✅ 결론: 주가 시뮬레이션에는 로그정규분포가 필수

항목정규분포로그정규분포
가격이 음수로 갈 수 있음
현실성낮음매우 높음
수익률 반영 방식덧셈곱셈 (복리)
사용 예시단기 예측, 교육용장기 투자, 포트폴리오 분석, 은퇴 시뮬레이션 등

댓글

이 블로그의 인기 게시물

공압 속도 제어: 미터인 vs 미터아웃

NPN, PNP 트랜지스터 차이점

[PLC] 센서 NPN, PNP 출력 타입별 결선방법 (OMRON E2E-X 시리즈 3선식 배선)

[주식] 한국거래소(KRX) 데이터 API 입문 가이드

[PLC] PLC 아날로그 입출력 기본

[투자] ETF 투자 가이드 : 카테고리별 ETF 선택 전략

[PLC] 릴레이와 전자 접촉기 (MC)

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

[농사] 천연 식물성 살충제 종류 및 제조법

[PLC] 릴레이 자기유지 (Realy Latch or Sealing)