티스토리 뷰

위 코드에서는 matplotlib 모듈의 plot() 함수를 사용하여 시간에 따른 주가 데이터를 그래프로 표현하였습니다. 결과는 다음과 같습니다.

주가가 무작위로 변동하는 것을 확인할 수 있습니다.

GBM 모형은 실제 주가와 비슷한 성질을 가지므로, 자산 가격의 변동성을 모델링하고 포트폴리오 최적화, 옵션 가격 계산 등의 분석에 유용하게 사용됩니다.

Geometric Brownian Motion(GBM) 모형은 확률과 통계학에서 주로 이용되며, 자산 가격을 모델링할 때 널리 사용됩니다. 이번 예제에서는 GBM 모형을 사용하여 주가 데이터를 생성하고, 이를 시각화하는 과정을 살펴보겠습니다.

GBM 모형

GBM 모형은 브라운 운동(Brownian Motion)이라는 개념에서 파생되었습니다. 브라운 운동은 입자의 무작위 운동을 묘사하는 물리학적인 모형입니다. GBM 모형은 이러한 브라운 운동에 대한 확장된 모형으로, 자산 가격의 무작위적인 변화를 모델링할 수 있습니다.

GBM 모형은 다음과 같은 수식으로 표현됩니다.

$$dS_t = \mu S_t dt + \sigma S_t dW_t$$

여기서 $S_t$는 시간 $t$에서의 자산 가격, $\mu$는 drift(등락의 평균값), $\sigma$는 변동성(volatility), $dW_t$는 브라운 운동입니다.

 

데이터 생성

GBM 모형을 사용하여 주가 데이터를 생성하기 위해서는 numpy와 matplotlib 모듈을 불러와야 합니다.

import numpy as np
import matplotlib.pyplot as plt

이제 numpy 모듈을 사용하여 GBM 모형을 구현할 수 있습니다. GBM 모형을 구현하기 위해서는 초기 주가, drift, 변동성, 시간 간격, 시뮬레이션 횟수가 필요합니다.

# 초기 주가
S0 = 100

# drift
mu = 0.1

# 변동성
sigma = 0.2

# 시간 간격
T = 1

# 시뮬레이션 횟수
n = 252

# 시간 구간
t = np.linspace(0, T, n+1)

# Brownian Motion
W = np.random.standard_normal(size=n+1)
W = np.cumsum(W)*np.sqrt(1/n)

# 주가 모형 생성
S = S0*np.exp((mu-0.5*sigma**2)*t+sigma*W)

 

위의 코드에서는 초기 주가를 100으로 설정하였으며, drift는 0.1, 변동성은 0.2로 설정하였습니다. 시간 간격은 1년으로 설정하였으며, 시뮬레이션 횟수는 252회(1년을 일일 단위로 나눈 값)로 설정하였습니다. np.linspace() 함수를 사용하여 0부터 1까지 252개의 시간 값을 생성하였습니다. 브라운 운동은 np.random.standard_normal() 함수를 사용하여 생성하였습니다. 

이제 시간과 주가 데이터를 시각화해보겠습니다.

 

# 데이터 시각화
plt.figure(figsize=(10,5))
plt.plot(t, S)
plt.xlabel('Time')
plt.ylabel('Price')
plt.title('GBM Model')
plt.show()

728x90
반응형
댓글
250x250
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함
공지사항