Esta é a pergunta que mais me fazem, de uma forma ou de outra, as pessoas que acabaram de concluir a sua primeira estratégia: de quantas operações preciso para que o resultado seja real? Normalmente vem acompanhada de um número. «Tenho 1,200 operações, chega, não é?» E a resposta honesta irrita toda a gente, porque não se trata de contar operações.
Aqui está tudo numa linha; depois passo o resto do artigo a explicar porque é que isto custa.
Qual é o erro-padrão de um rácio de Sharpe?
Para um Sharpe calculado com n rendibilidades periódicas, partindo do princípio de que são independentes e aproximadamente normais, o erro de amostragem é:
SE(s) ≈ √((1 + s²/2) / n)
em que s é o Sharpe medido com a mesma frequência. Anualizando ambos os lados, obtemos uma expressão simples. Com k observações por ano e T anos, o Sharpe anualizado S tem:
SE(S) ≈ √((1 + S²/(2k)) / T)
Reparem nesse 2k no denominador. Para rendibilidades diárias, k = 252, por isso até um Sharpe de 2 contribui com 4/504 ≈ 0.008 para o numerador. O termo completo reduz-se a 1. O erro-padrão de um Sharpe anualizado é aproximadamente 1/√T, em que T corresponde aos anos de calendário dos dados. Quase não depende do próprio Sharpe, não depende da frequência de amostragem e, de todo, não depende de quantas operações fizeste.
Assim:
| Anos de dados | EP(Sharpe) | IC de 95% se mediste 1.5 |
|---|---|---|
| 1 | 1.00 | −0.46 a 3.46 |
| 2 | 0.71 | 0.11 a 2.89 |
| 3 | 0.58 | 0.37 a 2.63 |
| 5 | 0.45 | 0.62 a 2.38 |
| 10 | 0.32 | 0.88 a 2.12 |
Um backtest com Sharpe 1.5 ao longo de dois anos de histórico não consegue distinguir-se estatisticamente de um lançamento de moeda ao nível de 95%. Esta é a situação de base na maioria da investigação em cripto, porque os dados limpos, corrigidos para enviesamento de sobrevivência e com comissões exatas da maioria das pessoas começam por volta de 2022, e metade dos símbolos interessantes nem sequer existia antes de 2023.
Mas tenho 40,000 operações. Isso não resolve o problema?
Não, e este é o equívoco que mais quero eliminar.
O número de operações e a duração da amostra são grandezas diferentes, e só uma delas aparece na fórmula. Se a tua estratégia dispara 40,000 vezes em seis meses, tens T = 0.5 e EP ≈ 1.41. O intervalo de 95% para um Sharpe medido de 2.0 vai de −0.8 a 4.8. Quarenta mil operações, e a conclusão honesta é «pode ser bom, pode ser negativo».
A razão é que essas 40,000 operações não são 40,000 apostas independentes em 40,000 estados de mercado diferentes. São 40,000 amostras de cerca de 180 dias de comportamento do mercado; os dias estão correlacionados entre si e os regimes também estão correlacionados dentro de si. Um portefólio de reversão à média de alta frequência que ganha dinheiro todos os dias durante quatro meses fez, na realidade, uma única aposta — a de que a reversão a curto prazo se mantém neste regime de liquidez — e observou essa aposta concretizar-se, talvez, um punhado de vezes independentes.
A substituição mental que faço: conta os regimes, não as execuções. Quantas condições de mercado realmente diferentes conseguiu atravessar esta estratégia? Uma estratégia de carry de funding que funcionou durante um longo período com basis positivo só viu n = 1, independentemente do número de reajustes horários que registou.
Diagnóstico rápido: aplica um block bootstrap ao P&L diário, com blocos de 20 dias, e observa a dispersão dos Sharpes reamostrados. Se o percentil 5 estiver abaixo de zero, o número de operações é irrelevante. São cerca de nove linhas de numpy, e já me demoveu de mais estratégias do que qualquer outra verificação isolada.
A fórmula aplica-se a estratégias reais?
Não exatamente, e o erro é no sentido de que menos gostas. O resultado 1/√T pressupõe rendibilidades normais e IID. As rendibilidades de estratégias reais têm autocorrelação e assimetria, geralmente negativa em tudo o que se pareça com carry, volatilidade curta ou reversão à média. A correção de Mertens volta a incluir esses momentos:
SE(s) ≈ √((1 + s²/2 − γ₃·s + (γ₄−3)·s²/4) / n)
em que γ₃ é a assimetria e γ₄ a curtose. A assimetria negativa torna positivo o termo −γ₃·s, o que alarga o intervalo. O excesso de curtose alarga-o ainda mais. Num P&L típico de carry em cripto, com assimetria perto de −1.2 e curtose perto de 9, já vi o erro-padrão corrigido ficar 30–40% acima do valor ingénuo. O artigo de Lo, de 2002, trata da autocorrelação e o efeito tem o mesmo sinal: a correlação serial positiva nas rendibilidades infla o Sharpe ingénuo e reduz o erro aparente, uma combinação desagradável.
Por isso, considera 1/√T um limite inferior para a tua incerteza. É o melhor cenário.
Qual tem de ser o Sharpe se testei 500 variantes?
Chegamos agora à parte que interessa a quem executa um pipeline automatizado de investigação, que é o nosso dia a dia na Stratmill: o agente de geração não produz um candidato, produz centenas.
O máximo esperado de M extrações de uma normal padrão é aproximadamente √(2 ln M). Multiplica-o pelo erro-padrão e obténs o Sharpe que a mais afortunada de M estratégias genuinamente sem valor apresentará.
| Estratégias testadas | √(2 ln M) | Sharpe da melhor estratégia sem sinal, 5 anos (EP 0.45) | Melhor estratégia sem sinal, 2 anos (EP 0.71) |
|---|---|---|---|
| 10 | 2.15 | 0.96 | 1.52 |
| 100 | 3.03 | 1.36 | 2.16 |
| 500 | 3.53 | 1.58 | 2.50 |
| 5,000 | 4.13 | 1.85 | 2.93 |
Le a penúltima linha. Se geraste 500 candidatos com dois anos de dados e o vencedor apresenta Sharpe 2.4, não encontraste absolutamente nada. Está abaixo do nível do ruído. O Sharpe deflacionado de Bailey e López de Prado formaliza isto, usando a variância dos Sharpes dos ensaios em vez da aproximação grosseira √(2 ln M). Vale a pena implementá-lo devidamente, mas a versão grosseira basta para mudar o comportamento já hoje.
Há 2 aspetos que tornam a situação pior do que a tabela sugere. Primeiro, M não é o número de estratégias que guardaste, mas sim o número que avaliastes, incluindo cada ajuste de parâmetros, cada «deixa-me só experimentar uma janela de 30 períodos» e cada nova execução depois de corrigir um erro. Ninguém faz uma contagem honesta. Segundo, os teus candidatos não são extrações independentes, por isso √(2 ln M) exagera a amplitude efetiva da pesquisa, embora ensaios correlacionados também signifiquem que um único regime afortunado eleva todo um grupo de candidatos em conjunto.
O número mais perigoso na investigação quantitativa é aquele que ninguém registou: quantas vezes procuraste.
Então, o que faço na prática?
5 coisas, pela ordem em que as faria.
- Regista todas as avaliações. Um contador que aumenta a cada execução do backtest, fica guardado e nunca é reiniciado. Se não sabes qual é o valor de M, não sabes qual deve ser o teu limiar. Esta é a hora de engenharia com maior retorno de toda a lista.
- Apresenta sempre o Sharpe com o respetivo intervalo. Nunca mostres um número isolado. Os nossos relatórios de backtest incluem
1.72 ± 0.51 (2.9y, skew-adjusted)e o ± não é opcional. Muda a forma como toda a equipa fala dos resultados. - Define o limiar com base em M e T antes de veres os resultados. Vai buscar o número à tabela acima e anota-o. Os limiares definidos a posteriori são a forma como toda a gente se convence de que um ajuste à curva é válido.
- Quando a amostra é curta, privilegia a amplitude em vez da frequência. Não podes criar mais tempo de calendário, mas podes executar o mesmo sinal em 40 símbolos não correlacionados. Isso aumenta efetivamente n, ao contrário de aumentar a frequência de operações. Mas atenção às correlações: 40 perpétuos de cripto numa hora de aversão ao risco são um só instrumento.
- Depois, negoceia em simulação. O tempo fora da amostra acumula-se à razão de um dia por dia, e não há atalhos; é exatamente por isso que é a única amostra em que ninguém consegue sobreajustar.
Nada disto torna utilizáveis as amostras curtas. Ajuda-te a ser honesto sobre o que uma amostra curta permite afirmar, algo muito mais modesto do que a maioria dos relatórios de backtest dá a entender. Um Sharpe de 1.5 em dois anos é uma hipótese que vale a pena testar em simulação. Não é uma conclusão.
← Todos os artigos
