Análise de sensibilidade da empresa
Agora você examinará o que aconteceria com os lucros da empresa no exercício anterior em uma variedade de valores mean_inflation
e mean_volume
. Isso ajudará a empresa a se planejar para vários níveis de inflação e volumes de vendas, já que nenhuma empresa pode ter certeza da inflação ou dos volumes de vendas que terá no futuro.
Os percentuais médios de inflação que você gostaria de explorar são 0, 1, 2, 5, 10, 15, 20, 50
, enquanto os valores de vendas para uso como valor médio de volume são 100, 200, 500, 800, 1000
. Como lembrete, aqui está a definição da função profit_next_year_mc()
, que já foi carregada para você.
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
Os seguintes pacotes foram importados: pandas
como pd
, numpy
como np
, scipy.stats
como st
, matplotlib.pyplot
como plt
, e seaborn
como sns
.
Este exercício faz parte do curso
Simulações de Monte Carlo em Python
Instruções de exercício
- Conclua a simulação Monte Carlo executando
profit_next_year_mc()
para calcular o lucro 100 vezes, cada vez percorrendo a lista de valoresinfl
e a lista de valoresvol
. - Use o site
displot
para visualizar os resultados da simulação salvos na colunaProfit
do DataFrame resultante.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
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()