Backtesting and data-processing library for financial strategy analysis.
Project description
Back-da-dev
FQ26.1-GP2
FEA.dev Backtesting Lab — Protótipos rápidos e backtesting quantitativo para estudantes e investidores curiosos.
Sumário
Sobre o Projeto
Este repositório é um projeto de estudante da FEA.dev para backtesting rápido e prototipagem de estratégias quantitativas. O código auxilia membros da liga a explorar ideias de trading, validar sinais e gerar resumos de desempenho a partir de dados históricos.
Ele combina ingestão de dados, limpeza, execução de estratégia e visualização de resultados em um fluxo simples. O objetivo é tornar a pesquisa quant inicial rápida de iterar, mantendo conexão com conceitos reais de mercado como comissão, drawdown e resultados de trades.
Construído Com
- Python
>=3.11 pandaspara manipulação de séries temporais e pipeline de dadosnumpypara operações numéricasmatplotlibpara visualização de resultadosrequestspara acesso a APIsyfinancepara download de histórico de mercadopytestpara cobertura de testes
Começando
Pré-requisitos
- Python
3.11ou superior - gerenciador de pacotes
pip - Opcionalmente, uma ferramenta de ambiente virtual:
venv,virtualenvoupipenv
Instalação
A partir da raiz do repositório:
python -m pip install -e .
Se preferir um ambiente dedicado:
python -m venv .venv
source .venv/bin/activate # Mac/Linux
.\.venv\Scripts\activate # Windows
python -m pip install -e .
Configuração
Este projeto não requer variáveis de ambiente especiais por padrão.
- Use
yfinancecomo fonte padrão de dados - Coloque arquivos locais em
./data/ao carregar do disco - Se precisar de outras fontes de dados, instale dependências opcionais manualmente
Se seu fluxo de trabalho usar API externa ou credenciais privadas, adicione esses detalhes aqui mais tarde.
Uso
API Python
Importe o ponto de entrada público do pacote:
# Example (requires data source or internet for `yfinance`):
from back_da_dev import run_standard_backtest, load_and_clean, list_strategies
result = run_standard_backtest(
strategy="buy_and_hold",
initial_capital=10000.0,
commission=0.001,
load_kwargs={"indice": "PETR4.SA", "fonte": "yfinance", "tempo": "5y"},
save_graphs=False,
save_log=False,
)
print(result.metrics)
# Runnable example (no internet). Creates a tiny sample DataFrame and runs a backtest.
from .modelos_pre_implementados import buy_and_hold
initial_capital =10000.0
symbols = ['PETR4', 'VALE5', 'ITUB4']
_config['dado_real'] = False
_config['periodos'] = 15
engine = BacktestEngine(pd.DataFrame(), symbols, initial_capital)
print('Executando backtest browniano com estratégia buy_and_hold...')
strategy = buy_and_hold(initial_capital)
engine.run(strategy)
print('\nRESULTADOS DO BACKTEST')
print('Cash final:', f'R$ {engine.cash:.2f}')
print('Portfolio value final:', f'R$ {engine.portfolio_value:.2f}')
print('Posições abertas:', engine.open_positions)
print('Trades fechados:', len(engine.closed_positions))
print('Dias simulados:', len(engine.daily_history))
Gere um relatório após um backtest:
from back_da_dev import generate_backtest_report
report = generate_backtest_report(
engine=result.engine,
output_dir="./results",
prefix="feadev_backtest",
)
print(report.graph_paths)
print(report.log_path)
Graphing and report options
The interface supports selecting which charts to export and which output formats to save. Supported chart names include: equity_curve, drawdown, cumulative_returns, volatility, bollinger, rsi, time_series.
Example (API):
from back_da_dev import generate_backtest_report
report = generate_backtest_report(
engine=result.engine,
output_dir='./results',
charts=['equity_curve','rsi','bollinger'],
formats=('png','svg'),
)
CLI
Opções de exemplo:
--indice: símbolo do ticker para carregar via yfinance--strategy:buy_and_hold,maouema--initial-capital: capital inicial--commission: taxa de corretagem por operação--output-dir: onde gráficos e logs serão salvos--no-graphs: desativa geração de gráficos--no-log: desativa geração de arquivo de log
Documentação da API
O pacote público expõe o fluxo principal de backtesting:
BacktestEngine— motor principal para executar simulações de estratégiaload_data(...)— carrega dados históricos de arquivos locais ouyfinanceclean_data(...)— limpa, normaliza e valida dados carregadosload_and_clean(...)— fluxo combinado de carregamento e limpezaresolve_strategy(...)— instancia uma estratégia embutida pelo nomerun_standard_backtest(...)— executa um backtest e retorna métricasgenerate_backtest_report(...)— salva gráficos e logs para uma execução concluídasave_backtest_log(...)— serializa métricas e histórico de trade em.loglist_strategies()— lista nomes de estratégias disponíveis
Testes
Execute a suíte de testes do repositório com:
pytest -q
Este projeto inclui testes para:
- comportamento do motor de backtest
- geração de sinais das estratégias
- imports do pacote
- fluxos da interface
- sanidade de empacotamento
Contribuindo
Membros da FEA.dev e contribuidores externos são bem-vindos.
- Faça um fork do repositório
- Crie uma branch descritiva
- Abra um pull request com sua feature ou correção
- Inclua testes e atualize a documentação quando necessário
- Reporte bugs via issues se o comportamento diferir do esperado
Licença
Este projeto é licenciado sob a Licença MIT.
Veja LICENSE para detalhes.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file back_da_dev-0.0.1.tar.gz.
File metadata
- Download URL: back_da_dev-0.0.1.tar.gz
- Upload date:
- Size: 32.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36e78222c0ee458a20bbd3cab0aecf06e8ea080b8be52ad7a7d74bd7c6015877
|
|
| MD5 |
4d5ad60f173dfbf323e232d60694d123
|
|
| BLAKE2b-256 |
001344e0864a23b8433be61214b4b68c24b6dd8c0e5038c7d106d5be1b840490
|
File details
Details for the file back_da_dev-0.0.1-py3-none-any.whl.
File metadata
- Download URL: back_da_dev-0.0.1-py3-none-any.whl
- Upload date:
- Size: 29.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2797a48551d398c247d28d3abd03ae92c2561925968be0776196d6f5dcab4c7f
|
|
| MD5 |
7546c28a72c5c0cdbd431caf2dd05eb7
|
|
| BLAKE2b-256 |
a90331674ab14ab3725157ef81cfe38d124387491b7de629673ff2278b5eefc2
|