Este repositório contém o desenvolvimento do projeto final para a Fase 02 do curso de Pós-Graduação em Data Analytics da FIAP POS-TECH.
A missão consistiu em atuar como cientista de dados em um fundo de investimentos brasileiro, com o desafio de criar um modelo preditivo da tendência diária do IBOVESPA.
Sendo o objetivo classificar os movimentos do índice em duas categorias:
- Alta Significativa
- Neutra/Baixa Significativa
Servindo como uma ferramenta de apoio à tomada de decisão para analistas quantitativos.
O projeto percorre todas as etapas do pipeline de Data Science:
- Aquisição e tratamento de dados
- Engenharia de atributos
- Modelagem preditiva com múltiplos algoritmos
- Seleção e validação rigorosa do modelo final
- Python 3.11.9
gitinstalado- Acesso ao terminal ou prompt de comando
💡 Recomendado: utilize um ambiente virtual (
venv) para garantir o isolamento das dependências.
git clone --branch main https://github.com/Carllux/FIAP-TC-2.git
cd FIAP-TC-2python -m venv .venv-
Windows:
.\.venv\Scripts\activate
-
Linux/macOS:
source .venv/bin/activate
pip install -r requirements.txt
⚠️ Observação: Caso encontre erros relacionados a compiladores C++ no Windows, pode ser necessário instalar o Microsoft C++ Build Tools.
- Coleta dos dados históricos diários do IBOVESPA.
- Limpeza e padronização.
- Conversão para
DatetimeIndex. - Definição da variável-alvo (target).
Criação de um conjunto diversificado de features:
- Atributos Autoregressivos: médias móveis, retornos defasados, etc.
- Volatilidade e Candlestick: variações entre máximas/mínimas e proporções de sombras.
- Atributos Exógenos: variações do Dólar (USD/BRL), S&P 500 e Petróleo Brent.
- Interações: combinações entre volatilidade e tendência.
-
Modelagem por Regimes de Mercado:
Segmentação da série temporal em períodos como:- "Boom das Commodities"
- "Pandemia"
- "Pós-Pandemia"
-
Modelos Testados:
- Regressão Logística
- XGBoost
- LSTM
-
Otimização de Hiperparâmetros:
- Utilização da biblioteca Optuna.
-
Validação Temporal Robusta:
- Divisão dos dados em conjuntos de Treino, Validação e Teste respeitando a ordem cronológica.
- Modelo: Regressão Logística
- Regime: Pós-Pandemia (Juros Altos)
- Justificativa:
- Melhor desempenho na classe de maior interesse (Alta)
- Após balanceamento com
class_weight='balanced' - Recall de 41% e F1-Score de 0.39 para a classe 'Alta'
.
├── data/ # Bases de dados originais e transformadas
├── docs/ # PDF contendo o storytelling técnico do código
├── notebooks/ # Jupyter Notebooks com experimentações
├── src/ # Código-fonte modularizado
│ └── data/ # Carregamento, transformação e limpeza
├── requirements.txt # Dependências do projeto
└── README.md # Este arquivo
Os notebooks seguem uma estrutura clara, com células organizadas em blocos funcionais e comentários explicativos.
Você pode executá-los em ambientes como:
- Jupyter Notebook
- Google Colab
- VSCode (com extensão Python ativa)
Com exceção do notebook 00_data_investigation.ipynb, é recomendada a execução de todos os notebooks de forma linear
01_Exploracao_e_Feature_Engineering.ipynb02_Modelagem_e_Validacao.ipynb
- ✅ Validação Temporal Robusta
- ✅ Modelagem por Regimes de Mercado
- ✅ Tratamento de Desbalanceamento com
class_weight - ✅ Otimização Automatizada com Optuna
- ✅ Pipeline Modular e Reutilizável
- ✅ Avaliação Holística com múltiplas métricas:
classification_reportconfusion_matrixROC AUC