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
- Baixe e instale o Python 3.9+ (Download aqui).
- 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 arquivosegments.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