Kom igångKom igång gratis

Känslighetsanalys för ett företag

Nu ska du undersöka hur företagets vinst från föregående övning påverkas vid olika värden på mean_inflation och mean_volume. Det hjälper företaget att planera för olika nivåer av inflation och försäljningsvolymer – inget företag kan ju med säkerhet veta vad inflationen eller försäljningen kommer att bli.

De genomsnittliga inflationsprocentsatser du vill utforska är 0, 1, 2, 5, 10, 15, 20, 50, och försäljningsvärdena som används som genomsnittlig volym är 100, 200, 500, 800, 1000. Som påminnelse finns här definitionen av funktionen profit_next_year_mc(), som redan är inläst åt dig.

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

Följande paket har importerats: pandas som pd, numpy som np, scipy.stats som st, matplotlib.pyplot som plt och seaborn som sns.

Den här övningen är en del av kursen

Monte Carlo-simuleringar i Python

Visa kurs

Övningsinstruktioner

  • Slutför Monte Carlo-simuleringen genom att köra profit_next_year_mc() för att beräkna vinsten 100 gånger, och loopa varje gång igenom listan med infl-värden och listan med vol-värden.
  • Använd ett displot för att visualisera simuleringsresultaten sparade i kolumnen Profit i den resulterande DataFrame:n.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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()
Redigera och kör kod