Uma Tese de 298 Páginas Matou Cinco das Nossas Ideias e Salvou Duas

Uma Tese de 298 Páginas Matou Cinco das Nossas Ideias e Salvou Duas

Passamos uma tese de doutorado sobre processos estocásticos restringidos pelo programa keep/kill de um scalper crypto. A maioria morreu. O que sobreviveu mudou como operamos.

researchbgcspcascade-fadepath-dependencebacktestcrypto

O Problema

Nosso scalper de cascade-fade funcionava. Não com elegância — funcionava do jeito que um martelo funciona num parafuso. Detectava cascatas de 5 barras em volume anormal, fazia fade, mantinha por um tempo fixo e saía. O win rate era decente. O profit factor era real. Mas as saídas eram burras e a filtragem, inexistente.

Todo trade recebia o mesmo tempo de hold. Toda cascata era fadada, independente de como o movimento se desenrolou. Um grind lento até uma cascata e um spike violento até o mesmo ponto final eram tratados de forma idêntica. Sabíamos que isso estava deixando dinheiro na mesa — ou pior, pegando dinheiro que não era nosso para pegar.

A estratégia precisava de duas coisas:

  1. Seleção de hold mais inteligente — nem todo fade merece a mesma janela de saída.
  2. Filtragem de qualidade — nem toda cascata vale a pena fadear.

Fomos procurar um framework matemático que pudesse formalizar a intuição de que a forma do caminho importa. Encontramos um no último lugar que você esperaria.

Descobrindo Taranto

A tese de doutorado de Aldo Taranto na University of Southern Queensland, de 2022, tem 298 páginas. O título — “Bi-Directional Grid Constrained Stochastic Processes and Their Applications in Mathematical Finance” — soa como um manual de grid trading. Não é.

BGCSP é uma classe de difusões de Itô restringidas. A ideia central: pegar um processo estocástico padrão (movimento browniano, movimento browniano geométrico, Ornstein-Uhlenbeck) e impor termos de restrição simétricos que criam barreiras ocultas suaves. Não são paredes rígidas — são pressão de reversão. Conforme o processo se aproxima de uma barreira, um termo de forcing o empurra de volta ao equilíbrio. A intensidade desse empurrão depende da proximidade à restrição.

A tese prova rigorosamente várias coisas:

  • Comportamento path-dependent emerge da geometria da restrição
  • O mesmo valor terminal atingido por caminhos diferentes produz dinâmicas diferentes sob a restrição
  • Tempos de first-passage através dessas barreiras suaves têm propriedades analíticas distintas de processos não restringidos

Ler a tese como um playbook de grid trading seria um erro de categoria. Ler como uma lente matemática para entender mean-reversion restringida acabou sendo produtivo.

O Que Pegamos Emprestado

Pegamos a lente, não o grid literal.

Três conceitos do framework de Taranto mapearam direto no nosso problema de cascade-fade:

1. Barreiras Ocultas Suaves → Avaliação de Qualidade do Caminho

O termo de restrição de Taranto cria zonas onde o processo experimenta pressão de reversão crescente. Traduzimos isso para: nem todos os movimentos de cascata são iguais. Uma cascata que despeja sua energia na primeira metade do movimento (front-loaded) é estruturalmente diferente de uma que acelera até o ponto final. O framework de restrição nos deu a linguagem para formalizar isso — front_half_move_share como proxy para qualidade do caminho.

2. Dependência de Caminho → Seleção Dinâmica de Hold

Mesmo ponto final, caminho diferente, qualidade de fade diferente. Uma cascata que cria um jump grande mas um entry gap pequeno se comporta diferente na reversão do que uma com jump pequeno e gap grande. O caminho até o ponto de entrada prevê a dinâmica de reversão. Construímos uma tabela de buckets: dado a magnitude do jump e as características do entry-gap do sinal, selecionar hold de 4, 6 ou 8 minutos.

3. O Que NÃO Pegamos Emprestado

Não implementamos um grid literal. Não usamos as fórmulas de first-passage time do BGCSP para saídas. Não construímos um overlay de barreira oculta no processo de preço. Não tentamos detecção de regime a partir dos parâmetros de restrição.

Tentamos tudo isso. Morreu. Mais sobre isso a seguir.

A Escadaria de Pesquisa

Rodamos um programa sistemático de keep/kill. Cada ideia da tese foi traduzida em uma hipótese backtestável, testada in-sample, validada out-of-sample, e medida contra a alternativa viável mais simples. Aqui está a escadaria completa.

O Que Sobreviveu

Seleção Dinâmica de Hold por Bucket Jump-Gap

A ideia: categorizar cada evento de cascata pela magnitude do jump (em basis points) e entry gap (em basis points), então selecionar duração de hold a partir de uma tabela de buckets pré-computada em vez de usar um hold fixo.

MétricaHold Fixo (Baseline)Hold Dinâmico
Trades1.4711.128
Win Rate64,04%68,44%
Profit Factor2,423,20

O número de trades caiu ~23% porque algumas combinações de bucket mapeavam para “pular.” Os trades sobreviventes eram significativamente melhores. Isso é um filtro e um mecanismo de roteamento — mata setups fracos e otimiza hold para os fortes simultaneamente.

Veto de Qualidade por Path-Shape (Front-Half)

A ideia: medir que fração do movimento total da cascata ocorreu na primeira metade da janela de cascata. Se energia demais foi front-loaded (pior quartil), pular o trade.

A intuição do BGCSP: um processo que atinge a restrição cedo e passa a maior parte do tempo sob pressão de reversão se comporta diferente de um que constrói momentum ao longo do caminho. Cascatas front-loaded já “gastaram” seu combustível de mean-reversion.

MétricaSem VetoCom Veto
Trades1.471~1.128
Win Rate64,04%68,44%
Profit Factor2,423,20

O veto removeu aproximadamente o pior quartil de trades por qualidade de caminho. Os sobreviventes eram substancialmente melhores.

O Que Morreu

Overlay de Barreira Oculta ☠️ (Sobreviveu OOS, morto por Occam)

Essa foi a morte mais dolorosa. Implementamos o termo de restrição de Taranto como uma camada de scoring sobre cada evento de cascata — computando um “barrier proximity score” e usando para roteamento. Sobreviveu out-of-sample. Produziu um campeão de pesquisa:

  • Campeão de pesquisa (a4_path_veto_global): 1.127 trades, 68,50% WR, PF 3,21
  • Campeão operacional (front_half_move_share_low_4q_thr2): 1.128 trades, 68,44% WR, PF 3,20

Diferença: +0,22% do P&L líquido. Em 1.127 trades.

O overlay de barreira oculta adicionava complexidade significativa — parâmetros adicionais, um novo pipeline de scoring, sensibilidade à estimativa de largura de barreira. Para $83 de edge sobre um sistema mais simples. Matamos. Não porque não funcionava, mas porque não valia funcionar.

Saídas por First-Passage ☠️

As distribuições de first-passage time de Taranto através de barreiras suaves pareciam promissoras para saídas adaptativas. Computamos tempos esperados de first-passage para cada trade e usamos no lugar de holds fixos. Morto. As estimativas eram ruidosas demais em barras de 1 minuto para melhorar a tabela de buckets. A elegância analítica não sobreviveu à discretização.

Gates de Regime ☠️

Tentamos detectar regimes “restringidos” vs “não restringidos” usando estimativas rolantes do parâmetro de restrição do BGCSP. A ideia: só operar quando o mercado está em regime restringido (mean-reverting). O gate colapsou para always-on — todo período parecia suficientemente restringido. Um filtro que nunca filtra não é um filtro.

Engenharia de Score de Barreira Oculta ☠️

Várias tentativas de engenheirar features a partir do barrier proximity score: distância-até-barreira, razão de força de barreira, assimetria de restrição. Nenhuma adicionou valor preditivo além do que jump_bps e entry_gap_bps já capturavam. As features simples dominaram.

Roteamento Mais Rico ☠️

Em vez de uma tabela de buckets de 3 opções (4/6/8 min), tentamos predição contínua de hold a partir de um feature set mais rico incluindo barrier scores, estimativas de regime e métricas de path-shape. Overfitou. A tabela discreta de buckets era mais robusta.

O Placar

  • Ideias testadas: 7
  • Ideias que sobreviveram: 2
  • Ideias que sobreviveram OOS mas morreram por Occam: 1
  • Ideias mortas na chegada: 4
  • Taxa de sobrevivência: 28,6%

Matemática bonita. Seleção brutal.

O Stack Sobrevivente

O campeão operacional é simples o suficiente para explicar em um parágrafo.

O sistema detecta cascatas de 5 barras em volume anormal. Quando uma cascata dispara, mede três coisas: jump_bps (quanto o preço saltou), entry_gap_bps (quão longe a entrada está do pico da cascata) e front_half_move_share (que fração do movimento aconteceu na primeira metade). Se o front_half_move_share está no pior quartil — a cascata foi front-loaded demais — o trade é vetado. Caso contrário, o jump_bps e entry_gap_bps são consultados numa tabela pré-computada de buckets que retorna uma duração de hold de 4, 6 ou 8 minutos. O trade é aberto, mantido por exatamente essa duração, e fechado.

É isso. Duas ideias inspiradas pela tese, três features medidas, uma tabela de lookup, um threshold de veto.

1.128 trades. 68,44% win rate. Profit factor 3,20.

Deploy em Produção

O sistema opera crypto perpetuals em barras de 1 minuto.

O pipeline:

  1. Ingestão de OHLCV de 1 min via websocket
  2. Detecção de cascatas de 5 barras onde o movimento excede um threshold ajustado por volume
  3. Cálculo de jump_bps, entry_gap_bps, front_half_move_share
  4. Aplicação do veto de path-shape (pular pior quartil de front_half_move_share)
  5. Consulta de duração de hold na tabela de buckets jump-gap
  6. Entrada na posição de fade a mercado
  7. Hold pela duração selecionada, saída a mercado

Sem stop-loss — a duração curta de hold limita o risco. Sem take-profit — mesma lógica. Saídas puramente baseadas em tempo, selecionadas pelas características do sinal.

O Que o BGCSP NÃO Resolveu

A estratégia ficou mais inteligente. O problema de taxas, não.

BGCSP nos deu uma lente melhor para filtragem e roteamento. Não mudou a estrutura de taxas, e não resolveu o problema fundamental de que edges finos o suficiente para serem reais também são finos o suficiente para que taxas importem em escala pequena.

Em qualquer venue com taxas por trade, uma estratégia de fade de alta frequência vive ou morre pela margem entre lucro esperado por trade e custo de round-trip. Filtragem mais inteligente ajuda — menos trades significa menos taxas pagas — mas o peso por trade permanece. Os números do backtest assumem execução em escala. Contas reais pagam taxas reais que comprimem essas margens.

Isso não é um problema do BGCSP. É um problema econômico. Mas honestidade intelectual exige declarar: melhoramos o cérebro, não a economia.

Conclusão

Lemos uma tese de doutorado de 298 páginas sobre processos estocásticos restringidos. Não encontramos um cheat code de grid trading. Não provamos nossa estratégia com equações diferenciais. Não resolvemos nosso maior problema prático.

O que fizemos: pegamos emprestado as intuições de um framework matemático sobre dependência de caminho e geometria de restrição, traduzimos em features mensuráveis, testamos sete hipóteses, matamos cinco e promovemos duas para produção. As sobreviventes melhoraram o win rate de 64% para 68%, profit factor de 2,42 para 3,20, e adicionaram um veto de qualidade que remove os piores trades antes que aconteçam.

O cemitério é maior que o pódio. É assim que deveria ser.

Mesmo ponto final, caminho diferente, qualidade de fade diferente. Essa é a única ideia que vale guardar. Todo o resto era matemática bonita que não sobreviveu ao combate empírico.


Artefatos de pesquisa — incluindo resultados completos de backtest, a trilha de auditoria keep/kill e vídeos de replay de eventos mantidos vs. pulados — estão disponíveis no resumo de pesquisa BGCSP.

Taranto, A. (2022). Bi-Directional Grid Constrained Stochastic Processes and Their Applications in Mathematical Finance. PhD thesis, University of Southern Queensland.