내 게시물 중 하나에서 구현을 위해 Python을 사용하여 임의 걷기 예측의 개념을 소개했습니다. 이 게시물에서는 주가 랜덤 워크의 몬테카를로 시뮬레이션을 수행하고 싶습니다. 이를 위해 다음과 같은 가상의 주가 내역을 사용합니다.
# 가상의 일일 주식 종가로 목록 선언 history_prices = [180,192,193,195,191,199,198,200,199,203,205,207,205,208,201,203,204,201,205,206,207] print(stockPrices)
[180, 192, 193, 195, 206, 211, 191, 204, 215, 190, 205, 207, 205, 211, 222, 215, 245, 201, 205, 206, 214]
다음 단계를 준비하기 위해 이제 모든 관련 Python 모듈을 가져옵니다.
# 계산을위한 가져 오기 통계 예 : 가격 이력의 표준 편차 import statistics as stat # 플로팅을 위해 pyplot 가져 오기 import matplotlib.pyplot as plt # 난수 생성을 위해 임의 가져 오기 import random as rnd
임의의 주가 변동을 가정하면 임의의 주가 변동을 모델링 할 수 있도록 가상의 가격 기록의 상대적 변화에서 표준 편차를 도출합니다.
relative_prices = [] for i in range(0,len(history_prices)): if i == 0: pass else: relative_prices.append((history_prices[i]-history_prices[i-1])/(history_prices[i-1])) std_prices = stat.stdev(relative_prices) print(std_prices)
0.021375589655016836
이제 무작위 가격의 표준 편차를 기반으로 무작위 가격 변동을 가정하여 미래 100 일 동안의 예시적인 무작위 가격 변동을 모델링합니다. 나는 무작위 정규 분포를 가정합니다. 역사상 마지막으로 알려진 가격이 시작점 역할을합니다.
# 100 일 동안 무작위 가격 변동 모델링 # -- 계산 수행, 기능 정의 def randomWalk(stdev,pastPrices): days = [i for i in range(1,101)] prices = [] price = pastPrices[-1] for i in range(1,101): price = price + price*rnd.normalvariate(0,stdev) prices.append(price) return([days,prices]) # -- 계산 수행, 기능 사용 prices = randomWalk(std_prices,history_prices) # -- 임의의 걷기를 선 플롯으로 시각화 plt.plot(prices[0],prices[1]) plt.title("random price walk") plt.xlabel("day") plt.ylabel("stock price")
Text(0, 0.5, 'stock price')
추가 랜덤 워크를 다시 계산하여 주가 변동에 대한 몬테카를로 시뮬레이션을 만들어이 프로세스를 반복 할 수 있습니다. 아래 예에서는 30 개의 개별 걷기에 대해 무작위 걷기 프로세스를 반복합니다.
plt.figure() for i in range(0,30): prices = randomWalk(std_prices,history_prices) plt.plot(prices[0],prices[1]) plt.title("monte-carlo simulation of stock price development") plt.xlabel("day") plt.ylabel("stock price")
Text(0, 0.5, 'stock price')
최적화 및 시뮬레이션을 전문으로하는 산업 엔지니어 (R, Python, SQL, VBA)
Leave a Reply