Analyse de sensibilité de l’entreprise
Vous allez maintenant examiner l’impact sur les bénéfices de l’entreprise de l’exercice précédent pour différentes valeurs de mean_inflation et de mean_volume. Cela aidera l’entreprise à planifier plusieurs niveaux d’inflation et de volumes de vente, car aucune entreprise ne peut être certaine de l’inflation ou des volumes à venir.
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(), déjà 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 packages 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.
Cet exercice fait partie du cours
Simulations de Monte Carlo en Python
Instructions
- Terminez la simulation de Monte Carlo en exécutant
profit_next_year_mc()pour calculer le bénéfice 100 fois, en parcourant à chaque fois 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 cet exemple de code.
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()