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
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 metinfl-waarden en de lijst metvol-waarden loopt. - Gebruik een
displotom de simulatieresultaten te visualiseren die zijn opgeslagen in de kolomProfitvan 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()