Využití simulací Monte Carlo

Monte Carlo simulace v Pythonu

Izzy Weber

Curriculum Manager, DataCamp

Široká použitelnost

Simulace Monte Carlo se využívají například v oblastech...

  • Finance a podnikání
  • Inženýrství
  • Fyzikální vědy
Monte Carlo simulace v Pythonu

Predikce cen akcií

Graf znázorňující simulované ceny akcií v čase

1 https://marketxls.com/monte-carlo-simulation-excel
Monte Carlo simulace v Pythonu

Řízení rizik

Graf znázorňující interval spolehlivosti VaR

1 https://www.investopedia.com/articles/04/092904.asp https://corporatefinanceinstitute.com/course/modeling-risk-monte-carlo-simulation/
Monte Carlo simulace v Pythonu

Identifikace vazebných míst

 

grafika vazebného místa proteinu

1 https://pubs.rsc.org/en/content/articlelanding/2020/ra/d0ra01127d
Monte Carlo simulace v Pythonu

Analýza spolehlivosti v inženýrství

graf znázorňující bezpečné oblasti a oblasti selhání

1 www.researchgate.net/publication/228814883_Probabilistic_Transformation_Method_in_Reliability_Analysis
Monte Carlo simulace v Pythonu

Výhody simulací Monte Carlo

 

  • Zohledňují rozsah hodnot různých vstupů
  • Ukazují nejen možné výsledky, ale i jejich pravděpodobnost
  • Usnadňují vizualizaci rozsahu možných výsledků
  • Umožňují zkoumat, co by se stalo za jiných okolností

 

optimalizace pomocí simulací Monte Carlo

Monte Carlo simulace v Pythonu

Sáčky se zkreslenými kostkami

Hoďte dvěma kostkami ze dvou sáčků, z nichž každý obsahuje tři zkreslené kostky:

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

 

Simulace:

  • Náhodně vyberte jednu kostku z každého sáčku a hoďte oběma
  • Úspěch nastane, pokud součet hodnot je osm; jinak neúspěch
  • Cílem je vypočítat pravděpodobnost úspěchu pro každou kombinaci kostek
Monte Carlo simulace v Pythonu

Simulace se zkreslenými kostkami

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
Monte Carlo simulace v Pythonu

Výsledky se zkreslenými kostkami

dice1_dice2 probability_of_success
6_2 5.54
3_5 2.67
2_6 1.45
4_4 4
Monte Carlo simulace v Pythonu

Výsledky se zkreslenými kostkami

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

Výsledky simulace při 10 000 pokusech: sloupcový graf znázorňující pravděpodobnosti úspěchu kombinací kostek

Monte Carlo simulace v Pythonu

Výsledky se zkreslenými kostkami

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

Výsledky simulace při 10 000 pokusech: sloupcový graf znázorňující pravděpodobnosti úspěchu kombinací kostek

Monte Carlo simulace v Pythonu

Omezení simulací Monte Carlo

  • Výstup modelu závisí na kvalitě vstupních dat
  • Pravděpodobnost extrémních událostí bývá podceňována
Monte Carlo simulace v Pythonu

Vyzkoušejte si to!

Monte Carlo simulace v Pythonu

Preparing Video For Download...