Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📈 Análise de Série Temporal — AAPL (2015–2026)

Projeto de exploração e modelagem de série temporal do preço de fechamento da Apple (AAPL), comparando múltiplos modelos preditivos sobre dados corretamente tratados com log-retorno e RobustScaler.

Objetivo

Entender a estrutura estatística da série e avaliar como diferentes classes de modelos — estatísticos, ML e deep learning — se comportam em um problema de previsão de retornos financeiros diários.

Métrica primária: Direction Accuracy (DA%) — % de acertos na direção do movimento (alta/baixa).


Modelos Avaliados

Modelo Tipo DA% Teste DA% Holdout
Naive (lag-1) Baseline 52.4% 65.0%
ARIMA(1,0,0) Estatístico 51.7% 40.0%
Hybrid ARIMA + LSTM Ensemble 51.6%
LSTM (melhor grid) Deep Learning 51.0% 35.0%
XGBoost ML 80.8% 90.0%

Estrutura do Projeto

.
├── aapl_series_temporal.ipynb   # Notebook principal (50 células)
├── validate_notebook_v2.py      # Pipeline completo em script Python
├── images/                      # Plots gerados durante a análise
│   ├── 01_serie_bruta.png
│   ├── 02_decomposicao.png
│   ├── 03_acf_bruto.png
│   ├── 04_log_retorno.png
│   ├── 05_acf_retorno.png
│   ├── 05_dist_retorno.png
│   ├── 07_splits.png
│   ├── 08_xgb_importance.png
│   ├── 09_lstm_learning.png
│   ├── 12_comparacao.png
│   └── 13_holdout_precos.png
├── pyproject.toml               # Dependências (uv)
├── requirements.txt             # Versões exatas
├── uv.lock                      # Lock file
└── .gitignore

Estrutura do Notebook

Seção Conteúdo
1. Setup Imports, seeds, reprodutibilidade
2. Coleta yfinance 2015–2026, 2.786 pregões
3. EDA Bruta Série temporal, decomposição multiplicativa, ACF/PACF, ADF
4. Log-Retorno Estacionarização, ADF pós-diferenciação, Q-Q plot, Jarque-Bera
5. Indicadores Volatilidade realizada, RSI-14, momentum, Bollinger width
6. Split 70% treino / 15% val / 15% teste / 20 dias holdout
7. Pré-processamento RobustScaler fitado apenas no treino
8. Métricas DA% como métrica primária; sem MAPE (inválido para log-retornos ≈ 0)
9. Baselines Naive (lag-1) + ARIMA por auto_arima com rolling 1-step
10. XGBoost 500 árvores, early stopping, feature importance
11. LSTM Grid search: 36 configs (seq_len × units × dropout × lr)
12. Hybrid ARIMA captura autocorrelação + LSTM aprende nos resíduos
13. Holdout Avaliação final nos 20 dias nunca vistos
14. Comparação Tabela consolidada + plots
15. Conclusões Achados, limitações, próximos passos

Decisões técnicas

Por que log-retorno?

O preço bruto da AAPL cresceu ~850% entre 2015 e 2026 — série altamente não-estacionária (ADF p=0.977). O log-retorno log(P_t / P_{t-1}) remove a tendência e torna a série estacionária (ADF p≈0), resolvendo o problema de escalas incompatíveis entre treino e teste.

Por que RobustScaler?

Baseado em mediana e IQR — mais robusto que MinMaxScaler para séries financeiras com picos de volatilidade (COVID, crises). Fitado exclusivamente no treino para evitar data leakage.

Por que XGBoost supera o LSTM?

Log-retornos diários têm baixa dependência temporal (ARIMA seleciona AR(1)). Features de lag explícito lag_1..lag_20 + rolling stats capturam toda a estrutura temporal que o LSTM extrairia de sequências — sem o custo de treinamento. Em séries com baixo sinal/ruído, modelos mais simples generalizam melhor.


Como reproduzir

1. Instalar dependências

# Com uv (recomendado)
uv sync

# Ou com pip
pip install -r requirements.txt

2. Registrar o kernel Jupyter

.venv/bin/python -m ipykernel install --user --name crypto_lstm --display-name "Python 3.10 (crypto_lstm)"

3. Abrir o notebook

.venv/bin/jupyter lab aapl_series_temporal.ipynb

Selecione o kernel "Python 3.10 (crypto_lstm)".


Dependências principais

Lib Uso
yfinance Download de dados históricos
tensorflow / keras Modelo LSTM
xgboost Gradient boosting
statsmodels Decomposição STL, ADF, ARIMA
pmdarima auto_arima (seleção por AIC)
scikit-learn RobustScaler, métricas
pandas / numpy Manipulação de dados
matplotlib / seaborn Visualizações

Próximos passos

  • Walk-forward validation (retreino periódico)
  • Features de sentimento (NLP sobre notícias)
  • ARIMAX com features técnicas como exógenas
  • Temporal Fusion Transformer
  • Sharpe Ratio como métrica financeira complementar

About

Análise de série temporal AAPL

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages