Construindo um Simulador de Elasticidade-Preço da Demanda com Python e Streamlit

Neste tutorial, vamos aprender a criar um simulador interativo de elasticidade-preço da demanda utilizando Python e Streamlit. Esse projeto é perfeito para aplicar conceitos de microeconomia e programação ao mesmo tempo.

1. Conceitos Fundamentais

Antes de começar a programar, vamos relembrar o conceito de Elasticidade-Preço da Demanda:

No nosso simulador, você poderá mudar o preço e ver como a demanda e receita se alteram para diferentes cenários.

2. Preparando o Ambiente

Instalar Python e Streamlit

  1. Baixe e instale o Python 3.9+ (Download aqui).
  2. No terminal, instale o Streamlit:
pip install streamlit plotly

3. Estrutura do Projeto

Vamos organizar o projeto em pastas para facilitar:

elasticidade-preco/
│── app.py # Aplicação principal
│── requirements.txt # Dependências
│── data/
│ └── segments.json # Dados dos cenários e segmentos
│── models/
│ ├── scenarios.py # Gerencia cenários
│ └── elasticity.py # Cálculos de elasticidade
│── utils/
│ ├── helpers.py # Funções auxiliares
│ └── plotting.py # Gráficos

4. Criando o Código

Arquivo app.py

Este será o coração do projeto. Ele irá:

  • Configurar a página Streamlit.
  • Carregar cenários e segmentos.
  • Gerar os gráficos de demanda e receita.
  • Mostrar insights automáticos.
import streamlit as st
from models.scenarios import ScenarioManager
from utils.plotting import create_demand_curve, create_revenue_curve
from utils.helpers import create_main_header, create_footer

st.set_page_config(
    page_title="Simulador de Elasticidade-Preço",
    page_icon="🎯",
    layout="wide"
)

create_main_header()

scenario_manager = ScenarioManager('data/segments.json')

# Configuração de Cenário
scenarios = scenario_manager.get_scenarios()
selected_scenario = st.selectbox("Escolha um cenário:", scenarios)

segments = scenario_manager.get_segments(selected_scenario)
selected_segment = st.selectbox("Escolha um segmento:", segments)

price = st.slider("Preço:", 0.0, 100.0, 50.0)

model = scenario_manager.get_model(selected_scenario, selected_segment)
quantity = model.calculate_quantity(price)
revenue = model.calculate_revenue(price)

st.write(f"Quantidade: {quantity}")
st.write(f"Receita: {revenue}")

create_footer()

5. Explicando os Componentes

a) Modelos (models/)

  • elasticity.py
    Contém as funções para calcular:
    • Quantidade demandada
    • Receita
    • Elasticidade no ponto
    • Preço ótimo (máxima receita)
  • scenarios.py
    Carrega os dados do arquivo segments.json e entrega para a aplicação.

b) Utilitários (utils/)

  • helpers.py
    Cria elementos visuais: cartões de métricas, cabeçalho, rodapé.
  • plotting.py
    Gera gráficos com Plotly:
    • Curva de demanda
    • Curva de receita
    • Comparações entre segmentos

6. Visualizações Interativas

O Streamlit permite criar gráficos dinâmicos.
No arquivo plotting.py, podemos criar funções com Plotly:

import plotly.graph_objects as go

def create_demand_curve(prices, quantities):
    fig = go.Figure()
    fig.add_trace(go.Scatter(x=prices, y=quantities, mode='lines', name='Demanda'))
    fig.update_layout(title="Curva de Demanda", xaxis_title="Preço", yaxis_title="Quantidade")
    return fig

7. Executando o Projeto

No terminal:

streamlit run app.py

O navegador abrirá em http://localhost:8501.

Você poderá:

  • Selecionar cenário (Streaming, Transporte, Educação).
  • Escolher segmento (Estudante, Família, Executivo…).
  • Ajustar preço e visualizar:
    • Alteração na quantidade demandada
    • Alteração na receita
    • Classificação da elasticidade
    • Estratégias de precificação sugeridas

Dica Extra para Alunos

  • Modifiquem o segments.json para criar novos cenários.
  • Alterem o modelo de demanda para simular comportamentos diferentes (ex.: curva exponencial, quebra de preços).
  • Usem o simulador para analisar empresas conhecidas (Netflix, Uber, Coursera etc.).

Como Ficou:

Esse trabalho foi desenvolvido como projeto acadêmico na faculdade.
Resolvi compartilhar aqui para que mais pessoas possam aprender e talvez até aprimorar a ideia.

O código completo está disponível no GitHub:

https://github.com/guilherme-silvam/projeto-simulador-elasticidade

Publicar comentário