Analyse de sensibilité de l'entreprise
Vous allez maintenant examiner ce qui arriverait aux profits de l'entreprise de l'exercice précédent pour diverses valeurs de mean_inflation et de mean_volume. Cela aidera l'entreprise à planifier en fonction de plusieurs niveaux d'inflation et de volumes de ventes, puisqu'aucune entreprise ne peut jamais savoir avec certitude quelle inflation ou quels volumes de ventes elle aura à l'avenir.
Les pourcentages d'inflation moyens que vous souhaitez explorer sont 0, 1, 2, 5, 10, 15, 20, 50, tandis que les valeurs de ventes à utiliser comme volume moyen sont 100, 200, 500, 800, 1000. Pour rappel, voici la définition de la fonction profit_next_year_mc(), qui a déjà été chargée pour vous.
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
Les modules suivants ont été importés : pandas sous le nom pd, numpy sous le nom np, scipy.stats sous le nom st, matplotlib.pyplot sous le nom plt, et seaborn sous le nom sns.
Cette activité fait partie du cours
Simulations de Monte-Carlo en Python
Instructions de l’exercice
- Terminez la simulation Monte Carlo en exécutant
profit_next_year_mc()pour calculer le profit 100 fois, chaque fois en itérant sur la liste des valeursinflet la liste des valeursvol. - Utilisez un
displotpour visualiser les résultats de la simulation enregistrés dans la colonneProfitdu DataFrame obtenu.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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()