Sensitivitätsanalyse für das Unternehmen
Du untersuchst jetzt, was mit den Gewinnen des Unternehmens aus der vorherigen Übung bei verschiedenen Werten von mean_inflation und mean_volume passieren würde. Das hilft dem Unternehmen, für unterschiedliche Niveaus von Inflation und Verkaufsvolumen zu planen, denn niemand kann sicher wissen, wie sich Inflation oder Verkaufsvolumen in Zukunft entwickeln.
Die mittleren Inflationsraten, die du prüfen möchtest, sind 0, 1, 2, 5, 10, 15, 20, 50; die Verkaufswerte, die du als mittlere Volumina verwenden willst, sind 100, 200, 500, 800, 1000. Zur Erinnerung hier die Definition der Funktion profit_next_year_mc(), die bereits für dich geladen wurde.
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
Die folgenden Pakete wurden importiert: pandas als pd, numpy als np, scipy.stats als st, matplotlib.pyplot als plt und seaborn als sns.
Diese Übung ist Teil des Kurses
Monte-Carlo-Simulationen in Python
Anleitung zur Übung
- Schließe die Monte-Carlo-Simulation ab, indem du
profit_next_year_mc()ausführst, um den Gewinn 100-mal zu berechnen, wobei du jedes Mal durch die Liste derinfl-Werte und die Liste dervol-Werte iterierst. - Verwende ein
displot, um die Simulationsergebnisse zu visualisieren, die in der SpalteProfitdes resultierenden DataFrames gespeichert sind.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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()