O PyBroker é um framework de código aberto desenvolvido em Python, projetado para a criação de estratégias de trading algorítmico que incorproam técnicas de aprendizado de máquina. Ele equipa os usuários com um motor de backtest de alto desempenho para definir e avaliar regras de negociação e modelos, além de suportar a ingestão de dados históricos de múltiplas fontes.
Dúvidas Comuns de Usuários Novatos
1. Configurando o Ambiente de Desenvolvimento
Problema: Usuários novatos podem enfrentar dificuldades ao preparar o ambiente para utilizar o PyBroker, incluindo conflitos de dependência.
Solução:
- Certifique-se de que o Python 3.9+ está instalado. Recomenda-se o uso de um ambiente virtual.
- Instale o pacote principal e suas dependências via pip:
python -m venv .venv
source .venv/bin/activate # No Windows: .venv\Scripts\activate
pip install pybroker
Para confirmar a instalação, inicie um interpretador Python e execute:
import pybroker as pb
print(f"Versão do PyBroker: {pb.__version__}")
2. Configurando o Acesso a Dados de Mercado
Problema: Integrar fontes de dados de mercado confiáveis não é imediato para iniciantes.
Solução:
O PyBroker oferece adaptadores para diversas APIs. Para este exemplo, vamos configurar o acesso via Yahoo Finance. Primeiro, instale a biblioteca de suporte:
pip install yfinance
Em seguida, utilize o módulo de dados para carregar séries históricas:
from pybroker.data import YFinance
fonte_dados = YFinance()
# Obtém dados para o ativo PETR4.SA desde 2020
cotacoes = fonte_dados.get(symbol='PETR4.SA', start_date='2020-01-01', end_date='2023-12-31')
print(cotacoes.head())
3. Implementando e Avaliando uma Estratégia Básica
Problema: A estrutura para definir a lógica de negociação e executar um backtest pode parecer abstrata.
Solução:
A estratégia é definida criando uma subclsase de uma classe base do framework. Veja um exemplo simplificado de uma estratégia baseada em média móvel:
from pybroker.strategy import StrategyBase
from pybroker.data import YFinance
import pandas as pd
class EstrategiaCruzamentoMedia(StrategyBase):
def configurar(self):
# Define a janela da média rápida e lenta
self.janela_rapida = 10
self.janela_lenta = 30
def sinais(self, dados: pd.DataFrame):
# Calcula as médias móveis dentro do DataFrame de sinais
dados['ma_rapida'] = dados['close'].rolling(self.janela_rapida).mean()
dados['ma_lenta'] = dados['close'].rolling(self.janela_lenta).mean()
# Gera sinais de compra/venda
dados.loc[dados['ma_rapida'] > dados['ma_lenta'], 'sinal'] = 1 # Compra
dados.loc[dados['ma_rapida'] <= dados['ma_lenta'], 'sinal'] = 0 # Vende/Permanece em caixa
return dados
# Instancia a fonte de dados e a estratégia
provedor = YFinance()
minha_estrategia = EstrategiaCruzamentoMedia(
symbols='PETR4.SA',
start_date='2022-01-01',
end_date='2022-12-31',
data_provider=provedor
)
# Executa o backtest
resultados = minha_estrategia.run_backtest()
print(resultados.summary())
Após a execução, o objeto resultados contém métricas detalhadas como retorno total, drawdown máximo e índice de Sharpe, permitindo uma avaliação completa do desempenho da estratégia no período histórico.