Montecarlo-simulaties benutten

Monte Carlo-simulaties in Python

Izzy Weber

Curriculum Manager, DataCamp

Brede toepasbaarheid

Montecarlo-simulaties worden gebruikt in o.a.:

  • Financiën en business
  • Techniek
  • Natuurwetenschappen
Monte Carlo-simulaties in Python

Aandelenkoersvoorspelling

Een grafiek met gesimuleerde aandelenkoersen in de tijd

1 https://marketxls.com/monte-carlo-simulation-excel
Monte Carlo-simulaties in Python

Risicobeheer

Een grafiek met de VaR-betrouwbaarheidsinterval

1 https://www.investopedia.com/articles/04/092904.asp https://corporatefinanceinstitute.com/course/modeling-risk-monte-carlo-simulation/
Monte Carlo-simulaties in Python

Identificatie van bindingsplaatsen

 

afbeelding van bindingsplaats van eiwitten

1 https://pubs.rsc.org/en/content/articlelanding/2020/ra/d0ra01127d
Monte Carlo-simulaties in Python

Betrouwbaarheidsanalyse in de techniek

een grafiek met veilige en faaldomeinen

1 www.researchgate.net/publication/228814883_Probabilistic_Transformation_Method_in_Reliability_Analysis
Monte Carlo-simulaties in Python

Voordelen van Montecarlo-simulaties

 

  • Houd rekening met een bereik aan invoerwaarden
  • Laat zien wat kan gebeuren én hoe waarschijnlijk dat is
  • Maakt de uitkomsten makkelijk te visualiseren
  • Onderzoek wat er was gebeurd onder andere omstandigheden

 

optimaliseer met Montecarlo-simulaties

Monte Carlo-simulaties in Python

Zakken met bevooroordeelde dobbelstenen

Gooi twee afzonderlijke dobbelstenen uit twee zakken met elk drie bevooroordeelde dobbelstenen:

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

 

Simulatie:

  • Kies willekeurig één steen uit elke zak; gooi beide
  • Succes als de som acht is; anders fout
  • We willen de succeskans per unieke combinatie berekenen
Monte Carlo-simulaties in Python

Simulatie van bevooroordeelde dobbelstenen

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-simulaties in Python

Resultaten bevooroordeelde dobbelstenen

dice1_dice2 probability_of_success
6_2 5.54
3_5 2.67
2_6 1.45
4_4 4
Monte Carlo-simulaties in Python

Resultaten bevooroordeelde dobbelstenen

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

Simulatieresultaten van 10.000 runs: een staafdiagram met succeskansen per dobbelsteencombinatie

Monte Carlo-simulaties in Python

Resultaten bevooroordeelde dobbelstenen

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

Simulatieresultaten van 10.000 runs: een staafdiagram met succeskansen per dobbelsteencombinatie

Monte Carlo-simulaties in Python

Beperkingen van Montecarlo-simulaties

  • Modeluitvoer is slechts zo goed als de invoer
  • Kans op extreme gebeurtenissen wordt vaak onderschat
Monte Carlo-simulaties in Python

Laten we oefenen!

Monte Carlo-simulaties in Python

Preparing Video For Download...