Använda Monte Carlo-simuleringar

Monte Carlo-simuleringar i Python

Izzy Weber

Curriculum Manager, DataCamp

Bred tillämpbarhet

Monte Carlo-simuleringar används inom bland annat...

  • Finans och näringsliv
  • Teknik och ingenjörsvetenskap
  • Naturvetenskap
Monte Carlo-simuleringar i Python

Förutsägelse av aktiekurser

Ett diagram som visar simulerade aktiekurser över tid

1 https://marketxls.com/monte-carlo-simulation-excel
Monte Carlo-simuleringar i Python

Riskhantering

Ett diagram som visar konfidensintervall för VaR

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

Identifiering av bindningsplatser

 

grafik över proteinbindningsplats

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

Tillförlitlighetsanalys inom teknik

ett diagram som visar säkra och kritiska domäner

1 www.researchgate.net/publication/228814883_Probabilistic_Transformation_Method_in_Reliability_Analysis
Monte Carlo-simuleringar i Python

Fördelar med Monte Carlo-simuleringar

 

  • Tar hänsyn till ett intervall av värden för olika indata
  • Visar inte bara vad som kan hända, utan hur sannolikt varje utfall är
  • Gör det enkelt att visualisera spannet av möjliga utfall
  • Kan undersöka vad som hade hänt under andra förutsättningar

 

optimera med Monte Carlo-simuleringar

Monte Carlo-simuleringar i Python

Påsar med viktade tärningar

Slå två separata tärningar från två påsar, var och en innehållande tre viktade tärningar:

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

 

Simulering:

  • Välj slumpmässigt en tärning från varje påse och slå båda
  • Lyckat om summan av tärningarna är åtta, annars misslyckat
  • Vi vill beräkna sannolikheten för framgång för varje unik kombination av tärningar
Monte Carlo-simuleringar i Python

Simulering med viktade tärningar

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-simuleringar i Python

Resultat med viktade tärningar

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

Resultat med viktade tärningar

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

Simuleringsresultat av 10 000 körningar: ett stapeldiagram som visar sannolikheter för framgång per tärningskombination

Monte Carlo-simuleringar i Python

Resultat med viktade tärningar

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

Simuleringsresultat av 10 000 körningar: ett stapeldiagram som visar sannolikheter för framgång per tärningskombination

Monte Carlo-simuleringar i Python

Begränsningar med Monte Carlo-simuleringar

  • Modellens resultat är bara så bra som dess indata
  • Sannolikheten för extrema händelser underskattas ofta
Monte Carlo-simuleringar i Python

Nu kör vi en övning!

Monte Carlo-simuleringar i Python

Preparing Video For Download...