몬테카를로 시뮬레이션 활용

Python으로 배우는 Monte Carlo 시뮬레이션

Izzy Weber

Curriculum Manager, DataCamp

넓은 적용 범위

몬테카를로 시뮬레이션은 다음 분야에서 사용됩니다...

  • 금융 및 비즈니스
  • 공학
  • 물리과학
Python으로 배우는 Monte Carlo 시뮬레이션

주가 예측

시간에 따른 모의 주가 그래프

1 https://marketxls.com/monte-carlo-simulation-excel
Python으로 배우는 Monte Carlo 시뮬레이션

리스크 관리

VaR 신뢰구간 그래프

1 https://www.investopedia.com/articles/04/092904.asp https://corporatefinanceinstitute.com/course/modeling-risk-monte-carlo-simulation/
Python으로 배우는 Monte Carlo 시뮬레이션

결합 부위 식별

 

단백질 결합 부위 그래픽

1 https://pubs.rsc.org/en/content/articlelanding/2020/ra/d0ra01127d
Python으로 배우는 Monte Carlo 시뮬레이션

공학에서의 신뢰성 분석

안전·실패 영역을 보여 주는 그래프

1 www.researchgate.net/publication/228814883_Probabilistic_Transformation_Method_in_Reliability_Analysis
Python으로 배우는 Monte Carlo 시뮬레이션

몬테카를로 시뮬레이션의 장점

 

  • 다양한 입력의 값 범위를 고려합니다
  • 가능한 결과와 각 결과의 가능성을 함께 제시합니다
  • 결과 범위를 시각화하기 쉽습니다
  • 다른 조건에서의 가정 결과도 검토할 수 있습니다

 

몬테카를로 시뮬레이션으로 최적화

Python으로 배우는 Monte Carlo 시뮬레이션

편향된 주사위 봉투

두 개의 봉투에서 편향된 주사위를 하나씩 선택해 굴립니다:

bag1 = [[1, 2, 3, 6, 6, 6], [1, 2, 3, 4, 4, 6], [1, 2, 3, 3, 3, 5]]
bag2 = [[2, 2, 3, 4, 5, 6], [3, 3, 3, 4, 4, 5], [1, 1, 2, 4, 5, 5]]

 

시뮬레이션:

  • 각 봉투에서 무작위로 주사위 1개를 뽑아 둘 다 굴립니다
  • 두 눈의 합이 8이면 성공, 아니면 실패
  • 각 고유 주사위 조합의 성공 확률을 구합니다
Python으로 배우는 Monte Carlo 시뮬레이션

편향 주사위 시뮬레이션

def roll_biased_dice(n):
    results = {}

for i in range(n): bag_index1 = random.randint(0, 2) die_index1 = random.randint(0, 5) bag_index2 = random.randint(0, 2) die_index2 = random.randint(0, 5)
point1 = bag1[bag_index1][die_index1] point2 = bag2[bag_index2][die_index2]
key = "%s_%s" % (point1, point2)
if point1 + point2 == 8: if key not in results: results[key] = 1 else: results[key] += 1
Python으로 배우는 Monte Carlo 시뮬레이션

편향 주사위 결과

dice1_dice2 probability_of_success
6_2 5.54
3_5 2.67
2_6 1.45
4_4 4
Python으로 배우는 Monte Carlo 시뮬레이션

편향 주사위 결과

bag1 = [[1, 2, 3, 6, 6, 6], [1, 2, 3, 4, 4, 6], [1, 2, 3, 3, 3, 5]]
bag2 = [[2, 2, 3, 4, 5, 6], [3, 3, 3, 4, 4, 5], [1, 1, 2, 4, 5, 5]]

10,000회 시행 결과: 주사위 조합 성공 확률의 막대그래프

Python으로 배우는 Monte Carlo 시뮬레이션

편향 주사위 결과

bag1 = [[2, 2, 3, 4, 6, 6], [1, 2, 2, 4, 6, 6], [1, 2, 3, 3, 3, 3]]
bag2 = [[1, 2, 3, 4, 5, 6], [1, 3, 3, 4, 4, 6], [2, 2, 2, 3, 5, 5]]

10,000회 시행 결과: 주사위 조합 성공 확률의 막대그래프

Python으로 배우는 Monte Carlo 시뮬레이션

몬테카를로 시뮬레이션의 한계

  • 출력 품질은 입력 품질에 좌우됩니다
  • 극단적 사건의 확률이 과소평가되기 쉽습니다
Python으로 배우는 Monte Carlo 시뮬레이션

Vamos praticar!

Python으로 배우는 Monte Carlo 시뮬레이션

Preparing Video For Download...