Sfruttare le simulazioni Monte Carlo

Simulazioni Monte Carlo in Python

Izzy Weber

Curriculum Manager, DataCamp

Ampia applicabilità

Le simulazioni Monte Carlo si usano in...

  • Finanza e business
  • Ingegneria
  • Scienze fisiche
Simulazioni Monte Carlo in Python

Previsione del prezzo delle azioni

Un grafico con prezzi azionari simulati nel tempo

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

Gestione del rischio

Un grafico con l’intervallo di confidenza del VaR

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

Identificazione dei siti di legame

 

grafica del sito di legame proteico

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

Analisi di affidabilità in ingegneria

un grafico con aree di sicurezza e guasto

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

Vantaggi delle simulazioni Monte Carlo

 

  • Considera un intervallo di valori per vari input
  • Mostra non solo cosa può accadere, ma quanto è probabile
  • Facilita la visualizzazione degli esiti possibili
  • Permette di valutare scenari controfattuali

 

ottimizza con simulazioni Monte Carlo

Simulazioni Monte Carlo in Python

Sacchetti di dadi truccati

Lancia due dadi, uno per sacchetto; ogni sacchetto contiene tre dadi truccati:

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

 

Simulazione:

  • Scegli un dado a caso da ogni sacchetto; lanciali
  • Successo se la somma fa otto; altrimenti fallimento
  • Vogliamo la probabilità di successo per ogni combinazione unica di dadi
Simulazioni Monte Carlo in Python

Simulazione di dadi truccati

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
Simulazioni Monte Carlo in Python

Risultati con dadi truccati

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

Risultati con dadi truccati

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

Risultati di 10.000 prove: un grafico a barre con le probabilità di successo delle combinazioni di dadi

Simulazioni Monte Carlo in Python

Risultati con dadi truccati

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

Risultati di 10.000 prove: un grafico a barre con le probabilità di successo delle combinazioni di dadi

Simulazioni Monte Carlo in Python

Limiti delle simulazioni Monte Carlo

  • L’output del modello è buono quanto l’input
  • Gli eventi estremi sono spesso sottostimati
Simulazioni Monte Carlo in Python

Passiamo alla pratica !

Simulazioni Monte Carlo in Python

Preparing Video For Download...