Analiza de sensibilitate a companiei
Vei analiza acum ce s-ar întâmpla cu profiturile companiei din exercițiul anterior pentru diferite valori ale mean_inflation și mean_volume. Acest lucru va ajuta compania să se pregătească pentru mai multe scenarii de inflație și volume de vânzări, deoarece nicio companie nu poate ști cu certitudine ce nivel de inflație sau ce volume de vânzări va înregistra în viitor.
Procentele medii de inflație pe care dorești să le explorezi sunt 0, 1, 2, 5, 10, 15, 20, 50, iar valorile de vânzări utilizate ca volum mediu sunt 100, 200, 500, 800, 1000. Ca referință, iată definiția funcției profit_next_year_mc(), care a fost deja încărcată pentru tine.
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
Au fost importate următoarele pachete: pandas ca pd, numpy ca np, scipy.stats ca st, matplotlib.pyplot ca plt și seaborn ca sns.
Acest exercițiu face parte din cursul
Simulări Monte Carlo în Python
Instrucțiuni pentru exercițiu
- Completează simularea Monte Carlo rulând
profit_next_year_mc()pentru a calcula profitul de 100 de ori, parcurgând de fiecare dată lista valorilorinflși lista valorilorvol. - Folosește un
displotpentru a vizualiza rezultatele simulării salvate în coloanaProfita DataFrame-ului rezultat.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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()