Alpha Hunt Kit: falsifique ideias de trading antes de otimizá-las

Alpha Hunt Kit: falsifique ideias de trading antes de otimizá-las

Uma CLI minúscula que recebe um JSON de hipótese e um CSV de preços, roda um backtest de configuração fixa mais um teste de timing embaralhado, e diz ao seu agente se a ideia merece mais teste ou enterro imediato.

alpha-hunttrading-researchbacktestingautonomous-research

Alpha Hunt Kit é um pequeno harness de linha de comando para testar uma ideia de trading sem deixá-la se transformar num backtest bonitinho.

Você passa um JSON de hipótese, um CSV OHLCV e uma premissa de custo. Ele roda um backtest de configuração fixa, compara o resultado contra um null de timing embaralhado, e escreve o veredito no disco: continuar testando, ou enterrar a ideia.

Esse é o produto inteiro. Não é um bot. Não é um conector de corretora. Não é um repositório com a estratégia mágica. É uma máquina pequena para fazer seu agente provar que uma ideia não é lixo óbvio antes de gastar mais uma hora otimizando ela.

Repo: github.com/thiagosucupira/alpha-hunt-kit

Instruções para o agente: docs/agent_prompt.md

A fixture embutida prova só que o encanamento funciona. Edge real ainda exige dado real.

Rode uma vez

git clone https://github.com/thiagosucupira/alpha-hunt-kit.git
cd alpha-hunt-kit
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

alpha-hunt init --demo
alpha-hunt trial experiments/current.json --data fixtures/bars/demo_ohlcv.csv --budget-seconds 30

Essa primeira rodada deve criar:

  • .alpha-hunt/runs/<run_id>/metrics.json
  • .alpha-hunt/runs/<run_id>/report.md
  • uma nova linha em state/experiments.tsv
  • KEEP_CANDIDATE ou DISCARD_CANDIDATE

Se a demo roda, o harness funciona. Nada mais. Dado de fixture é teste de fumaça, não evidência de alpha.

Como é uma rodada limpa do agente

Janela de terminal mostrando uma sessão bash interativa real: alpha-hunt init --demo, alpha-hunt trial retornando KEEP_CANDIDATE com métricas do null model, e alpha-hunt status lembrando que dado de fixture prova apenas o encanamento
Shell interativo real, stdout real — comando, decisão, métricas do null model, status. Dado de fixture prova só o encanamento, não edge.

O loop de verdade

Um candidato, um portão

O loop inteiro em 15 segundos: um candidato congelado passa por um trial, um portão de null, depois ou testes mais duros ou o cemitério.

Um candidato não é “tenta esses parâmetros”. Um candidato é uma afirmação falsificável:

  1. fonte ou observação,
  2. hipótese,
  3. configuração JSON congelada,
  4. premissa de custo explícita,
  5. barras locais,
  6. comparação com null de timing,
  7. mantém ou enterra.

O null embutido é deliberadamente barato: preserva o inventário de posições do próprio candidato, embaralha-o ao longo dos timestamps, e pergunta se o timing real bate o percentil 95 do embaralhado. Passar nesse portão não significa “opera ela”. Significa “isso deixou de ser lixo óbvio; teste mais a fundo”.

Falhar significa enterrar e seguir.

alpha-hunt bury <run_id> --reason "failed shuffled timing null"

O cemitério não é arrumação. É o ativo composto. O agente de amanhã não pode gastar uma rodada redescobrindo o cadáver de ontem.

Um hunt sério também precisa de artefatos de trade auditáveis. Esse exemplo é de um dos nossos backtests, não da fixture de brinquedo:

Gráfico de candlesticks em matplotlib de um backtest short de USDJPY com entrada, stop loss, take profit e saída anotados
Um short USDJPY backtestado: entrada, SL, TP e saída no mesmo gráfico. Esse é o tipo de artefato que uma hipótese precisa deixar antes de alguém acreditar na história.

De onde as ideias devem vir

Ranqueie fontes pela velocidade com que viram um observável:

  1. Inversões do cemitério. Se uma ideia falhou por uma razão específica, teste a menor mudança que ataca essa razão.
  2. Microestrutura de mercado e papers de FX. Bons papers normalmente entregam observáveis, não estratégias. Já basta.
  3. Suas próprias barras. Quando o encanamento funciona, dado de fixture tem que sumir da cadeia de evidência.

Fonte ruim: um screenshot, um vibe, ou um grid de parâmetros sem tese.

Traga o seu próprio dado

O repo espera CSV OHLCV comum:

timestamp,open,high,low,close,volume

Rode o mesmo candidato contra barras locais reais:

alpha-hunt trial experiments/current.json --data path/to/your_bars.csv --budget-seconds 120

Antes de confiar num resultado, anote timezone, premissa de spread/custo, política de barras faltantes, convenção de símbolo, e exatamente que informação estava disponível quando o sinal disparou.

Por que isso existe

Agentes são ótimos em produzir variações. Pesquisa de trading precisa em geral do oposto: deletar com disciplina.

O Alpha Hunt Kit faz o caminho da deleção sair mais barato que o caminho da otimização. Se a ideia não bate uma configuração congelada e um null barato em dado local, ela não merece um backtest mais longo, um gráfico mais bonito, ou uma história.

Clone, rode um candidato, enterre uma ideia ruim direito. Já é progresso.