Interprete o resultado do backtest
Confira a estratégia operação por operação e compare os efeitos dos custos.
A primeira estratégia foi executada. Agora você vai verificar se as operações simuladas realmente decorrem das regras definidas e entender o significado dos resultados exibidos.
Os dados de demonstração do livro são uma série artificial de preços. Os resultados servem para conferir o funcionamento do programa. Eles não determinam o retorno esperado de um mercado real.
Comece por uma operação
Execute crossover_strategy.py com os comprimentos 5 e 20. Aguarde o fim e escolha a aba Trades no painel abaixo do gráfico. Se o painel estiver fechado, abra-o pela seta à direita.
A tabela mostra os dados de entrada e saída de uma operação. Em uma operação long, a entrada é uma compra e a saída é uma venda.
| Coluna | O que mostra? |
|---|---|
Trade | O número da operação e o identificador da entrada |
Entry time | O instante de execução da entrada |
Entry price | O preço de execução da entrada |
Exit time | O instante de execução da saída |
Exit price | O preço de execução da saída |
Qty | A quantidade da operação |
Profit | O resultado monetário da operação encerrada |
Profit % | O resultado percentual da operação |

Clique na linha de uma operação. Você pode encontrar o intervalo correspondente no gráfico. Examine tanto o cruzamento anterior à entrada quanto aquele que provocou o encerramento.
O programa original não definiu commission_value nem slippage, por isso a execução básica não inclui os custos que vamos acrescentar em seguida. Primeiro, confira a direção, o instante e a quantidade nessa execução simples.
Calcule o resultado de uma operação simples
Se você comprou uma unidade por 100 e a vendeu por 103, a diferença de preços é 3. Com valor por ponto unitário e sem custos, esse também é o resultado monetário.
De forma mais geral, o resultado de preço de uma operação long é:
(preço de saída − preço de entrada) × quantidade × valor por pontoO valor por ponto faz parte dos metadados de mercado. Ele descreve o valor monetário de uma variação de uma unidade no preço, para uma posição de uma unidade. Nos dados DEMO do livro, o valor por ponto é 1.
As comissões reduzem o resultado líquido da operação. A derrapagem, ou slippage, altera o preço de execução e, por isso, já está incluída na diferença de preços. Você não precisa subtrair novamente a mesma derrapagem dos preços já ajustados.
A tela Performance
A aba Performance mostra a evolução do patrimônio ao longo de toda a execução. Nela, você encontra estes campos:
- Cumulative P&L: a variação do patrimônio em relação ao capital inicial;
- Max drawdown: a maior queda da curva de patrimônio em relação a um pico anterior;
- Final equity: o patrimônio no último candle processado;
- Max run-up: a maior alta do patrimônio em relação a um fundo anterior.

O patrimônio, ou equity, também pode levar em conta o valor variável de uma posição aberta. Por isso, o patrimônio final pode ser diferente da soma dos lucros das operações encerradas com o capital inicial. Confira também se ficou uma posição aberta no fim dos dados.
Além do ponto final da curva, examine os trechos intermediários. O mesmo resultado final pode ser alcançado com quedas diferentes e longos períodos de perdas.
A tela Stats
A aba Stats mostra as estatísticas detalhadas obtidas ao fim da execução. Total Trades ajuda a conferir o número de operações encerradas; Net Profit, seu resultado líquido total.
Profit Factor é a razão entre os resultados acumulados das operações lucrativas e das perdedoras: a soma dos ganhos dividida pelo valor absoluto da soma das perdas. Quando não há operações perdedoras, essa razão não é um número finito comum para comparação.
A taxa de acerto informa qual proporção das operações encerradas foi lucrativa. Sozinha, ela não determina o lucro total. Poucas perdas grandes podem superar muitos ganhos pequenos.
É fácil obter um resumo enganoso com poucas operações. Considere sempre o número total de operações junto com as outras métricas e examine também operações perdedoras individuais.
Custos na tela Properties
Abra as configurações da estratégia pela engrenagem Strategy properties, no painel inferior do gráfico, e selecione a aba Properties. Nela, você pode alterar o capital inicial, a quantidade e os custos.
As duas próximas execuções são um exercício de comparação. Os custos definidos fazem parte do exemplo; os de um mercado real precisam ser informados separadamente.
- Confira o valor 10000 em Initial capital e a configuração 1 Contracts em Order size.
- Em Commission, defina 0,1 e escolha a unidade % of order value. Você também pode digitar o valor como
0.1no campo. - Defina Slippage como 2 ticks.
- Salve com Save, inicie Run Pyne code e aguarde o fim da execução.

0,1 por cento não é 10 por cento: o campo usa unidades percentuais. Para uma execução de valor 100, isso significa uma comissão de 0,1. Tanto a entrada quanto a saída são execuções e podem ter custos.
O tick é o menor incremento de preço do mercado. Nos metadados DEMO, ele é 0,01; assim, dois ticks correspondem a uma variação de preço de 0,02. A derrapagem desloca o preço de execução da ordem a mercado em uma direção desfavorável para a estratégia.
Em outro mercado, tanto o tick quanto o valor por ponto podem ser diferentes. Não transfira automaticamente a interpretação dos custos dos dados DEMO para outro instrumento.
A configuração de execução também faz parte do experimento
A opção On bar close, na seção Fill orders, influencia o momento de execução das ordens a mercado. Na estratégia básica do livro, deixe-a desativada para que uma ordem gerada pelo sinal seja executada na próxima abertura.
After order is filled pode solicitar um recálculo após a execução da ordem. Using bar magnifier pode examinar execuções dentro do candle com dados mais detalhados, de um período menor. Essas opções introduzem outras condições de execução; mantenha-as desativadas ao comparar com a execução básica.
Alterar uma única configuração já produz um novo resultado. Se você mudar comprimento, quantidade, custos e modo de execução ao mesmo tempo, não conseguirá identificar qual deles causou a diferença.
Salve o que foi comparado
Na barra de ferramentas do gráfico, Open trades output CSV abre a exportação das operações. Open plot output CSV abre a tabela dos valores desenhados. Os arquivos de resultados também ficam no grupo Output do projeto.
Antes de executar novamente o mesmo programa, copie a exportação que deseja preservar com outro nome. O nome do resultado, por si só, não identifica todas as configurações.
Em suas anotações, registre pelo menos isto:
| Execução | Dados | Comprimento rápido/lento | Quantidade | Comissão | Derrapagem |
|---|---|---|---|---|---|
| Básica | DEMO | 5 / 20 | 1 unidade | 0% | 0 tick |
| Com custos | DEMO | 5 / 20 | 1 unidade | 0,1% | 2 ticks |
Acrescente os resultados obtidos. Preencha a tabela nas suas próprias anotações, com base nas execuções reais.
Tente por conta própria
Compare a mesma operação nas execuções sem custos e com custos. Confira o preço de entrada, o de saída e o lucro. O que mudou e o que continuou igual na regra do sinal?
Solução do exercício
As médias móveis e seus cruzamentos não são calculados a partir da comissão nem da derrapagem, por isso os sinais básicos não mudam. Os preços de entrada e encerramento a mercado podem ficar menos favoráveis por causa da derrapagem. A comissão reduz ainda mais o resultado líquido da operação.
As execuções podem ser comparadas diretamente quando os inputs, a quantidade, os dados e o modo de execução são iguais, e a estratégia consegue executar as ordens nos dois casos.
Escolha outros dados
Depois da demonstração, você também pode obter dados de mercado pelo recurso de download do PyneIDE. Eles podem ter outros preços, tamanhos de tick, limites de quantidade e operações. Primeiro, examine os dados; só depois compare resultados.
- No painel Pyne, à esquerda, passe o ponteiro sobre o cabeçalho do grupo Data. Clique no ícone Download Data…, uma nuvem com seta para baixo. Isso abre o Symbol Browser. Você também encontra essa opção clicando com o botão direito no cabeçalho Data.
- Escolha um provedor em Provider. A imagem usa
ccxt; com ele, você também pode escolher a fonte específica em Broker. - Digite o nome do mercado no campo de filtro. Na imagem, selecionamos o mercado spot
BTC/USDda fontecoinbase. Confira o nome completo do símbolo: linhas com prefixos parecidos podem representar mercados diferentes. - Defina Timeframe como
1De escolha 365 days back em From. Em To, now solicita dados até o momento do download. - Clique em Download e espere o download terminar.

Nas informações à direita, mintick é o tamanho do tick; pointvalue, o valor por ponto; mincontract, a quantidade mínima. Confira esses dados também para sua fonte. A disponibilidade e o acesso necessário dependem do provedor; solicitar os dados escolhidos aqui não significa usar uma conta de trading.
Os dados baixados aparecem no grupo Data do projeto. Você também pode clicar no nome do mercado na linha superior do gráfico da estratégia para abrir o seletor de dados e escolher o novo conjunto. O gráfico é recalculado; continue conferindo os inputs e as propriedades da estratégia.
O intervalo de download não garante um número específico de candles: a extensão dos dados do provedor, os dias de negociação do mercado e os períodos ausentes também influenciam. Um novo download pode mudar a série analisada. Por isso, para comparar resultados, preserve o arquivo de dados e o arquivo de metadados correspondente.
Como interpretar a execução
O backtest calcula com uma combinação específica de regras, série de dados e modelo de execução. Ele ajuda a examinar se o código faz o que você descreveu e como teria se comportado no modelo. O resultado não contém dados futuros.
Se você alterar os parâmetros muitas vezes sobre os mesmos dados, poderá encontrar uma regra ajustada àquela série. Examinar um intervalo separado, não usado na escolha das configurações, responde a outra pergunta. Por isso, no projeto final, você vai conferir separadamente o funcionamento correto do programa e a comparação entre configurações.