Utilizarea simulărilor Monte Carlo

Simulări Monte Carlo în Python

Izzy Weber

Curriculum Manager, DataCamp

Aplicabilitate largă

Simulările Monte Carlo sunt utilizate în domenii precum...

  • Finanțe și afaceri
  • Inginerie
  • Științe exacte
Simulări Monte Carlo în Python

Predicția prețului acțiunilor

Grafic care arată prețurile simulate ale acțiunilor în timp

1 https://marketxls.com/monte-carlo-simulation-excel
Simulări Monte Carlo în Python

Managementul riscului

Grafic care arată intervalul de încredere VaR

1 https://www.investopedia.com/articles/04/092904.asp https://corporatefinanceinstitute.com/course/modeling-risk-monte-carlo-simulation/
Simulări Monte Carlo în Python

Identificarea siturilor de legare

 

grafic al sitului de legare a proteinelor

1 https://pubs.rsc.org/en/content/articlelanding/2020/ra/d0ra01127d
Simulări Monte Carlo în Python

Analiza fiabilității în inginerie

grafic care arată domeniile de siguranță și eșec

1 www.researchgate.net/publication/228814883_Probabilistic_Transformation_Method_in_Reliability_Analysis
Simulări Monte Carlo în Python

Beneficiile simulărilor Monte Carlo

 

  • Iau în considerare un interval de valori pentru diverse intrări
  • Arată nu doar ce s-ar putea întâmpla, ci și probabilitatea fiecărui rezultat
  • Facilitează vizualizarea gamei de rezultate posibile
  • Pot examina ce s-ar fi întâmplat în condiții diferite

 

optimizare cu simulări Monte Carlo

Simulări Monte Carlo în Python

Pungi cu zaruri trucate

Se aruncă câte un zar din două pungi, fiecare conținând trei zaruri trucate:

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]]

 

Simulare:

  • Se alege aleatoriu câte un zar din fiecare pungă; se aruncă ambele zaruri
  • Succes dacă suma rezultatelor este opt; altfel, eșec
  • Se calculează probabilitatea de succes pentru fiecare combinație unică de zaruri
Simulări Monte Carlo în Python

Simularea zarurilor trucate

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
Simulări Monte Carlo în Python

Rezultatele zarurilor trucate

dice1_dice2 probability_of_success
6_2 5.54
3_5 2.67
2_6 1.45
4_4 4
Simulări Monte Carlo în Python

Rezultatele zarurilor trucate

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]]

Rezultatele simulării pentru 10.000 de iterații: diagramă cu bare care arată probabilitățile de succes ale combinațiilor de zaruri

Simulări Monte Carlo în Python

Rezultatele zarurilor trucate

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]]

Rezultatele simulării pentru 10.000 de iterații: diagramă cu bare care arată probabilitățile de succes ale combinațiilor de zaruri

Simulări Monte Carlo în Python

Limitele simulărilor Monte Carlo

  • Calitatea rezultatelor depinde de calitatea datelor de intrare
  • Probabilitatea evenimentelor extreme este adesea subestimată
Simulări Monte Carlo în Python

Să exersăm!

Simulări Monte Carlo în Python

Preparing Video For Download...