Şirket duyarlılık analizi
Şimdi, bir önceki egzersizdeki şirketin kârlarının, farklı mean_inflation ve mean_volume değerlerinde nasıl değişeceğini inceleyeceksin. Bu, hiçbir şirket gelecekteki enflasyon ya da satış hacmini kesin olarak bilemeyeceği için, farklı enflasyon ve satış düzeylerine göre plan yapmalarına yardımcı olacak.
Keşfetmek istediğin ortalama enflasyon yüzdeleri 0, 1, 2, 5, 10, 15, 20, 50; ortalama hacim değeri olarak kullanılacak satış değerleri ise 100, 200, 500, 800, 1000. Hatırlatma olarak, senin için önceden yüklenmiş olan profit_next_year_mc() fonksiyonunun tanımı aşağıdadır.
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
Aşağıdaki paketler içe aktarıldı: pandas olarak pd, numpy olarak np, scipy.stats olarak st, matplotlib.pyplot olarak plt ve seaborn olarak sns.
Bu egzersiz, kursun bir parçasıdır
Python ile Monte Carlo Simülasyonları
Egzersiz talimatları
- Monte Carlo simülasyonunu tamamlamak için, listedeki
infldeğerleri ve listedekivoldeğerleri üzerinde döngü kurarak, her seferindeprofit_next_year_mc()çalıştırıp kârı 100 kez hesapla. - Ortaya çıkan DataFrame'in
Profitsütununda kaydedilen simülasyon sonuçlarını görselleştirmek için birdisplotkullan.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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()