ComenzarEmpieza gratis

Análisis de sensibilidad de la empresa

Ahora examinarás qué ocurriría con los beneficios de la empresa del ejercicio anterior con distintos valores de mean_inflation y mean_volume. Esto ayudará a la empresa a planificar para varios niveles de inflación y volúmenes de ventas, ya que ninguna empresa puede saber con certeza qué inflación o volúmenes de ventas tendrá en el futuro.

Los porcentajes medios de inflación que te gustaría explorar son 0, 1, 2, 5, 10, 15, 20, 50, mientras que los valores de ventas para utilizarlos como valor medio de volumen son 100, 200, 500, 800, 1000. Como recordatorio, aquí tienes la definición de la función profit_next_year_mc(), que ya se ha cargado para ti.

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

Además, se han importado los siguientes paquetes: pandas como pd, numpy como np, scipy.stats como st, matplotlib.pyplot como plt y seaborn como sns.

Este ejercicio forma parte del curso

Simulaciones Montecarlo en Python

Ver curso

Instrucciones de ejercicio

  • Completa la simulación de Montecarlo ejecutando profit_next_year_mc() para calcular el beneficio 100 veces, recorriendo cada vez la lista de valores infl y la lista de valores vol.
  • Utiliza un displot para visualizar los resultados de la simulación guardados en la columna Profit del DataFrame resultante.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

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()
Editar y ejecutar código