Análise de sensibilidade da empresa
Agora você vai analisar o que aconteceria com os lucros da empresa do exercício anterior para diferentes valores de mean_inflation e mean_volume. Isso vai 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 sobre a inflação ou o volume de vendas que terá no futuro.
As porcentagens médias de inflação que você quer explorar são 0, 1, 2, 5, 10, 15, 20, 50, enquanto os valores de vendas para usar como volume médio são 100, 200, 500, 800, 1000. Para relembrar, 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 do exercício
- Complete a simulação de Monte Carlo executando
profit_next_year_mc()para calcular o lucro 100 vezes, percorrendo a lista de valoresinfle a lista de valoresvola cada vez. - Use um
displotpara visualizar os resultados da simulação salvos na colunaProfitdo DataFrame resultante.
Exercício interativo prático
Experimente este exercício completando 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()