Dashboard interativo de análise de ações construído com Python, Streamlit e Plotly.
| Módulo | Recursos |
|---|---|
| Análise de Ativo | Gráfico de preço + MM20, candlestick, volume, KPIs de retorno, fundamentos, risco |
| Comparação de Carteira | Evolução normalizada (base 100), tabela comparativa, matriz de correlação |
stock_dashboard/
│
├── main.py # Entry point e roteamento de páginas
│
├── models/
│ └── stock.py # Dataclasses: StockInfo, StockMetrics, PortfolioPosition
│
├── services/
│ ├── market_data.py # I/O com yfinance (cache de 10 min)
│ └── metrics.py # Cálculos financeiros puros (sem I/O)
│
├── ui/
│ ├── stock_view.py # Página de análise individual
│ └── portfolio_view.py # Página de comparação de carteira
│
└── utils/
└── formatting.py # Formatação de moeda, %, números grandes
Princípios de design:
- Separação de responsabilidades: I/O, cálculo e UI em camadas distintas
- Tipagem com dataclasses: modelos explícitos em vez de dicionários soltos
- Cache inteligente:
@st.cache_data(ttl=600)evita requisições repetidas - Funções puras em
metrics.py: fáceis de testar e reutilizar
# 1. Clone ou baixe o projeto
cd stock_dashboard
# 2. Crie um ambiente virtual
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# .venv\Scripts\activate # Windows
# 3. Instale as dependências
pip install -r requirements.txt
# 4. Execute
streamlit run main.pyO dashboard abrirá automaticamente em http://localhost:8501.
- Ações EUA:
AAPL,MSFT,GOOGL,TSLA… - Ações BR:
PETR4.SA,VALE3.SA,ITUB4.SA… - Cripto:
BTC-USD,ETH-USD,SOL-USD… - ETFs:
SPY,QQQ,BOVA11.SA…
- Autenticação com login
- Persistência de carteiras no banco de dados
- Alertas de preço por e-mail
- Previsão de preços com ML (Prophet / LSTM)
- Deploy no Streamlit Cloud
| Lib | Uso |
|---|---|
streamlit |
Interface web interativa |
yfinance |
Dados de mercado (Yahoo Finance) |
plotly |
Gráficos interativos |
pandas |
Manipulação de séries temporais |
numpy |
Cálculos numéricos |
Disclaimer: Este projeto é apenas educacional e não constitui recomendação de investimento.