Conteúdo do artigo
- Evidências e escopo
- Ilustração
- Processo
- Um envelope específico para um determinado período, não uma faixa percentual constante.
- O alinhamento de dados determina o que era cognoscível.
- Transforme o conceito em uma regra explícita de posição-alvo.
- O tamanho de posição por volatilidade altera a exposição
- Aritmética sintética e uma continuação falha
- Evidências publicadas e uma comparação reproduzível
- Erros comuns
- Lista prática de verificação
- Perguntas frequentes
- Fontes de pesquisa
Evidências e escopo
O artigo reporta retorno total de +1,985%, IRR de 19.6%, Sharpe de 1.33 e drawdown máximo de 25% no período de maio de 2007 a abril de 2024, incluindo a comissão e o slippage declarados. São resultados reportados pelos autores; nenhum backtest independente foi realizado aqui. [1]
Fluxo de trabalho prático
- Prepare a históriaAlinhe as 14 sessões anteriores pelo horário do relógio e calcule a volatilidade diária.
- Construir bandasÂncora à abertura e ao fechamento anterior com tratamento consistente de eventos corporativos.
- Atualização VWAPUtilizar apenas o volume da sessão atual já recebido.
- Avaliar conforme o cronogramaDepois que a barra do checkpoint fechar, defina posição comprada, vendida ou zerada.
- Executar e liquidarContabilize os custos de cada mudança de posição e zere todas as posições até o limite da sessão.
- Contribuições separadasCompare bandas, VWAP e tamanho de posição em dados de avaliação ainda não usados.
Um envelope específico para um determinado período, não uma faixa percentual constante.
A volatilidade de abertura e a volatilidade do meio-dia têm distribuições diferentes. A ideia da banda de ruído mede um movimento absoluto normal a partir da abertura da sessão separadamente em cada horário intradiário. Uma observação do final da manhã é comparada com observações do final da manhã de sessões anteriores, em vez de com uma sequência móvel de minutos adjacentes.
Para o tempo de relógio k, defina sigma(d, k) = mean(abs(P(d−j, k)/Open(d−j)−1), j=1…14). Usar apenas as sessões anteriores concluídas torna a linha de base causal. O limite superior é U(d, k)=max(Open(d), PreviousClose(d))×(1+sigma(d, k)); O valor inferior é L(d, k)=min(Open(d), PreviousClose(d))×(1−sigma(d, k)). As âncoras que levam em consideração as lacunas tornam o envelope mais amplo ao longo de uma lacuna noturna.
Este sigma representa o deslocamento absoluto médio, não o desvio padrão dos retornos por minuto. Substituí-lo por um indicador convencional de volatilidade móvel altera o sinal. Uma grande lacuna de abertura também tem um efeito diferente de um grande movimento após a abertura, porque as âncoras e o deslocamento intradiário desempenham papéis distintos.
A hipótese da estratégia é a persistência após movimentos de preço que ultrapassem o ruído intradiário usual. Ela pode falhar quando um pico de notícias se reverte, quando as 14 sessões anteriores subestimam a volatilidade atual ou quando o preço cruza repetidamente o limite. Nenhum desses resultados é descartado por uma ruptura de alto volume.
O alinhamento de dados determina o que era cognoscível.
O estudo utiliza dados de minuto a minuto do IQFeed. Os resultados apresentados incluem a comissão $0.0035 e o slippage $0.001 por ação. [1] Essas são suposições explícitas, e não uma garantia de que todas as ordens históricas poderiam ter sido executadas a esse custo.
Construa a matriz histórica por sessão da bolsa e horário. Feriados, mudanças para o horário de verão e sessões reduzidas exigem tratamento considerando o calendário. Uma observação 10:00 ausente não é equivalente a um retorno zero. Indique se uma sessão histórica incompleta será excluída ou se a decisão atual será desativada.
Use uma convenção consistente de ajuste por eventos corporativos para abertura, fechamento anterior e preços históricos. Misturar um fechamento anterior ajustado com uma abertura atual não ajustada pode fabricar um gap. Guarde a série bruta de execução separada de séries transformadas usadas para estimar retornos.
A sessão VWAP deve usar apenas negociações recebidas ou barras concluídas. Uma aproximação baseada em barras pode usar o preço típico, (H+L+C)/3, ponderado pelo volume da barra; ela difere de uma referência em nível de transação. A diferença deve ser medida onde dados de maior resolução estiverem disponíveis, especialmente para barras com ampla amplitude.
Transforme o conceito em uma regra explícita de posição-alvo.
A implementação proposta abaixo avalia apenas em pontos de verificação predefinidos a cada meia hora. Em um ponto de verificação, seu alvo é uma posição comprada acima de max(U, VWAP), uma posição vendida abaixo de min(L, VWAP) e uma posição neutra caso contrário. Ela envia o alvo resultante após a barra ficar disponível. Esta é uma variante explicitamente voltada para pesquisa; saídas de proteção contínuas e atualizações de exposição programadas não devem ser tratadas implicitamente como equivalentes.
Entre pontos de controle, uma passagem temporária do preço pela banda não gera uma nova decisão nesta variante. Se uma stop protetor continuamente ativo for desejada, especifique-a como uma regra separada orientada a eventos e teste sua rotatividade adicional. Uma estratégia com um cronograma de entrada de meia hora e saídas em nível de tick tem uma dependência de trajetória diferente de uma que altera toda a exposição apenas a cada meia hora.
O objetivo é uma posição desejada, não uma instrução para adicionar repetidamente uma nova posição. Mover de +q ações para −q requer a venda de 2q ações. Mover de +q para zero requer q ações. Os custos devem acompanhar a mudança real da posição, incluindo ambas as etapas de uma reversão.
No horário limite de liquidação, zerar todas as posições tem prioridade sobre um novo sinal de entrada. Em produção, cancele entradas pendentes antes de solicitar a saída final e concilie execuções recebidas durante o cancelamento.
before_session(d):
bands = build_from_completed_sessions(d, lookback=14)
daily_vol = sample_std(previous_14_daily_returns)
if data_incomplete or not isfinite(daily_vol) or daily_vol <= 0:
disable_session(); return
multiplier = min(4, 0.02 / daily_vol)
shares = floor(previous_equity * multiplier / session_open)
on_completed_bar(k):
if is_liquidation_deadline(k):
cancel_pending_entries(); submit_flat(); return
if session_disabled: return
update_session_vwap()
if is_decision_time(k):
target = 1 if close > max(upper[k], vwap) else (
-1 if close < min(lower[k], vwap) else 0)
submit_target_after_available_at(target * shares)
O tamanho de posição por volatilidade altera a exposição
Uma especificação de tamanho é multiplier = min(4, 0.02/s), em que s é o desvio padrão amostral dos 14 retornos diários anteriores já concluídos. A quantidade de ações é floor(previous account equity × multiplier / session open). O alvo de 2% e o teto de alavancagem pertencem a esta configuração; não são recomendações universais de risco.
Quando s é zero, ausente ou não finito, desabilitar a sessão é mais seguro do que permitir que a divisão crie um tamanho ilimitado. Um piso mínimo de volatilidade seria uma regra declarada diferente. A série de dimensionamento deve ser fixada antes da sessão, em vez de ser recalculada com o retorno de fechamento do dia atual.
As versões alavancada e sem alavancagem devem ser apresentadas separadamente. No artigo, a versão com exposição de uma vez o capital reporta retorno total de +380%, IRR de 9.7%, Sharpe de 1.24 e drawdown máximo de 12%. [1] A diferença de desempenho não pode ser inteiramente atribuída a um sinal de entrada melhor quando a política de exposição também mudou.
Os limites de tamanho exigem restrições operacionais adicionais. Verifique o poder de compra, o valor nocional bruto, a margem da corretora e a participação no intervalo de execução. Uma regra de exposição baseada em um período recente de calmaria pode criar grandes posições imediatamente antes de um pico de volatilidade, portanto, testes de estresse com gaps e saídas atrasadas são necessários.
Aritmética sintética e uma continuação falha
Suponha que o fechamento anterior seja 500, a abertura de hoje seja 505 e o sigma no ponto de verificação seja 0.003. Então, U=505×1.003=506.515 e L=500×0.997=498.50. A assimetria é causada pela lacuna de abertura. Uma faixa simétrica em torno de 505 não exigiria o mesmo cálculo.
Em 10:00, considere VWAP como 506.20 e o fechamento da barra concluída como 506.80. A regra proposta visa a compra, pois 506.80 excede max(506.515,506.20). Se a ordem for executada em 506.86 e a saída em 509.00, o ganho de preço será de $2.14 por ação antes dos custos. A execução ocorre deliberadamente mais tarde e a um preço diferente do fechamento da barra de sinal.
Em um cenário de falha, o fechamento de 10:30 é 506.30, sua banda superior atualizada é 506.60 e VWAP é 506.50. A posição-alvo passa a ser zerada. Uma execução de saída em 506.24 resulta em uma perda de $0.62 por ação em relação à entrada em 506.86. Um cruzamento anterior abaixo da banda não fornece retroativamente uma saída melhor para uma implementação de decisão programada.
Teste igualdade e horários explicitamente: nas comparações estritas, fechamento exatamente no limiar exige posição zerada; dados recebidos com atraso não permitem usar preço de execução anterior; histórico insuficiente impede estimar plenamente as bandas. Esses casos pequenos podem explicar grandes diferenças entre implementações públicas.
Evidências publicadas e uma comparação reproduzível
A taxa de acerto diária do artigo é 43%, enquanto sua tabela de negociações reporta 37% em 7,668 negociações. [1] Esses denominadores respondem a perguntas diferentes. Mantenha IRR, retorno total, taxa de acerto por negociação e frequência de dias lucrativos em campos separados.
O artigo de código público dos autores é útil para inspecionar VWAP, mudanças de exposição e mecanismos, mas o exemplo completo também inclui um componente de reversão à média do gap noturno. [2]. Seu patrimônio combinado não pode ser automaticamente atribuído apenas ao componente de momentum intradiário.
Um arquivo README separado de um repositório público reporta um índice Sharpe fora da amostra de 0.39, um retorno anual de 4.8% e um drawdown máximo de 18.5% para o período de maio 2024 a março 2026, em comparação com o índice Sharpe dentro da amostra de 1.34. Apenas o arquivo README foi inspecionado aqui; seus dados licenciados e execução completa não foram reproduzidos de forma independente. [3]
Compare bandas sozinhas, bandas com VWAP e os mesmos sinais com tamanho ajustado pela volatilidade. Mantenha iguais o modelo de execução, os ajustes de dados e as datas de avaliação. Reporte se VWAP muda qualidade da entrada, momento da saída, tempo no mercado ou somente giro.
Compare as bandas diárias e os horários de posicionamento dos alvos antes dos retornos. Em seguida, considere os custos com base nas premissas estabelecidas e os custos sob condições de estresse, atrasos de uma barra, períodos de observação próximos e períodos de mercado independentes. O objetivo é determinar quais premissas sustentam o resultado, e não buscar até que uma manchete específica reapareça.
Erros comuns
Substituir a estatística de ruído sem renomear a variante.
A média dos movimentos absolutos desde a abertura da sessão até um horário específico não é um desvio padrão móvel. Substituir uma pela outra muda a escala do limiar e sua interpretação econômica.
Fornecer sinais programados para execução contínua.
Um backtest pode melhorar falsamente as saídas ao usar cada cruzamento intrabarra, alegando decisões a cada meia hora. Especifique as frequências dos eventos de entrada e saída.
Atribuir um exemplo de código combinado a um componente.
Um exemplo que contenha reversão à média do gap e momentum precisa de atribuição separada antes que qualquer um dos componentes possa ser validado.
Lista de verificação antes de usar este método
Marque cada item após verificá-lo nos seus dados. O progresso fica salvo neste navegador; isso não certifica que a estratégia seja lucrativa.
Perguntas frequentes
VWAP é o mesmo que a banda de ruído superior ou inferior?
Não. VWAP é a referência de preço da sessão atual ponderada por volume; as bandas estimam deslocamentos típicos das sessões anteriores no mesmo horário.
O índice Sharpe relatado estabelece a lucratividade atual?
Não. Descreve uma amostra e um modelo de custo específicos. Evidências de períodos posteriores, replicação da execução e incerteza devem ser avaliadas separadamente.
Fontes de pesquisa
Cada fonte sustenta a definição ou evidência descrita ao lado. O pseudocódigo, os exemplos sintéticos e os parâmetros propostos exigem validação separada.
- Beat the Market: An Effective Intraday Momentum Strategy for S&P500 ETF (SPY)Zarattini, Aziz, Barbon — bản 03/02/2025. Foi lido o PDF completo, incluindo a versão de 3 de fevereiro de 2025. As tabelas 3 e 4 estão nas páginas físicas e impressas 15 e 16. Não foi executada nova replicação. Verificado em: .
- Designing a Profitable Intraday Strategy Using Python and AlpacaConcretum Group. Foram lidos o artigo dos autores e o código público. O exemplo completo inclui um componente adicional de gap noturno; não é automaticamente uma replicação pura de momentum. Verificado em: .
- Out-of-Sample Evaluation of an Intraday Momentum Strategy for SPYSheimy Paz Serpa. Apenas o arquivo README do repositório foi inspecionado; as entradas licenciadas completas e sua execução fora da amostra relatada não foram reproduzidas de forma independente. Verificado em: .
Métodos relacionados
Nota de risco
Este conteúdo apoia a educação e o planejamento de pesquisas, não constitui aconselhamento financeiro. O Backtest é uma simulação histórica, não garante desempenho futuro e não executa operações reais. Os métodos desta biblioteca não são necessariamente recursos disponíveis no aplicativo. Consulte a metodologia e a central de aprendizado.
Valide as regras antes de arriscar capital real
Verifique o suporte do aplicativo, os dados e cada operação simulada; detectores avançados podem exigir uma implementação própria.
Baixe o Backtest na App Store