Aan de slagGa gratis aan de slag

Gevoeligheidsanalyse voor het bedrijf

Je gaat nu bekijken wat er met de winst van het bedrijf uit de vorige oefening zou gebeuren bij verschillende waarden voor mean_inflation en mean_volume. Dit helpt het bedrijf plannen voor meerdere niveaus van inflatie en verkoopvolumes, omdat geen enkel bedrijf ooit zeker weet welke inflatie of verkoopvolumes ze in de toekomst zullen hebben.

De gemiddelde inflatiepercentages die je wilt verkennen zijn 0, 1, 2, 5, 10, 15, 20, 50, terwijl de verkoopwaarden die je als gemiddelde volumewaarde gebruikt 100, 200, 500, 800, 1000 zijn. Ter herinnering: hieronder staat de definitie van de functie profit_next_year_mc(), die al voor je is geladen.

def profit_next_year_mc(mean_inflation, mean_volume, n):
  profits = []
  for i in range(n):
    # Generate inputs by sampling from the multivariate normal distribution
    rate_sales_volume = st.multivariate_normal.rvs(mean=[mean_inflation,mean_volume], cov=cov_matrix,size=1000)
    # Deterministic calculation of company profit
    price = 100 * (100 + rate_sales_volume[:,0])/100
    volume = rate_sales_volume[:,1]
    loan_and_cost = 50 * volume + 45 * (100 + 3 * rate_sales_volume[:,0]) * (volume/100)
    profit = (np.mean(price * volume - loan_and_cost))
    profits.append(profit)
  return profits

De volgende pakketten zijn geïmporteerd: pandas als pd, numpy als np, scipy.stats als st, matplotlib.pyplot als plt en seaborn als sns.

Deze oefening maakt deel uit van de cursus

Monte Carlo-simulaties in Python

Cursus bekijken

Oefeninstructies

  • Maak de Monte Carlo-simulatie af door profit_next_year_mc() uit te voeren om 100 keer de winst te berekenen, waarbij je elke keer door de lijst met infl-waarden en de lijst met vol-waarden loopt.
  • Gebruik een displot om de simulatieresultaten te visualiseren die zijn opgeslagen in de kolom Profit van de resulterende DataFrame.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

x1 = []
x2 = []
y = []
for infl in [0, 1, 2, 5, 10, 15, 20, 50]:
    for vol in [100, 200, 500, 800, 1000]:
		# Run profit_next_year_mc so that it samples 100 times for each infl and vol combination
        avg_prof = np.mean(____)
        x1.append(infl)
        x2.append(vol)
        y.append(avg_prof)
df_sa = pd.concat([pd.Series(x1), pd.Series(x2), pd.Series(y)], axis=1)
df_sa.columns = ["Inflation", "Volume", "Profit"]
# Create a displot of the simulation results for "Profit"
____
plt.show()
Code bewerken en uitvoeren