Backtest Your Agent Logic Not Just Your Strategy banner image

Reference

Macro Education

Backtest Your Agent Logic Not Just Your Strategy

Traditional backtests miss a critical layer in AI trading systems: the agent decision process itself. Learn how to replay historical macro context and score reasoning quality, schema stability, and risk-policy compliance before trusting live automation.

Também disponível em English

Teste a sua lógica de agente, não apenas a sua estratégia

Autor: Equipa FXMacroData
Publicação: 21 de Maio de 2026

A maioria das equipes de negociação de IA ainda testam apenas uma camada: sinal para PnL. Isso perde o componente de maior risco nos sistemas modernos, o próprio agente. Se o seu modelo ler mal uma impressão macro, desviar do esquema ou violar a política sob pressão, uma boa estratégia ainda pode produzir maus negócios.

O backtesting lógico do agente resolve isso reproduzindo contextos históricos e avaliando a qualidade da decisão antes de qualquer ordem chegar ao seu corretor. USD/JPY E ... EUR/USD- Não .

A ideia chave: Um backtest de estratégia pergunta: "Esta regra teria feito dinheiro?" O backtesting de agente pergunta:

Por que os backtests de estratégia perdem modos reais de fracasso

Quando você só avalia PnL, você esconde três classes de falha crítica:

  • Erros de interpretação: O modelo interpreta mal uma versão como PNFP e constrói uma tese na direcção errada.
  • Erros de contrato: A saída quebra o seu esquema durante períodos de alta volatilidade.
  • Desvio da política de risco: O modelo recomenda o dimensionamento excessivo ou ignora os critérios de invalidação.

Estes problemas aparecem muitas vezes antes de a degradação da PnL se tornar óbvia.


O quadro de teste de retorno de agentes de quatro camadas

Camada 1: Repetição de contexto

Reconstruir cada marca de tempo como o modelo teria visto em tempo real. Calendário de lançamento- Não .

curl "https://fxmacrodata.com/api/v1/announcements/usd/core_pce?api_key=YOUR_API_KEY"
curl "https://fxmacrodata.com/api/v1/announcements/eur/inflation?api_key=YOUR_API_KEY"
curl "https://fxmacrodata.com/api/v1/forex?base=EUR&quote=USD&api_key=YOUR_API_KEY"

Camada 2: Repetição de decisão

Execute o agente em cada contexto com o prompt de produção exato e restrições. Armazenar saída bruta mais saída analisada para que você possa auditar tanto o raciocínio quanto a estrutura.

{
  "pair": "EUR/USD",
  "action": "long|short|flat",
  "confidence": 0.0,
  "thesis": "string",
  "invalidation": "string",
  "size_pct": 0.0
}

Camada 3: Simulação de políticas

Refaça as mesmas regras do guardião que usou ao vivo: risco máximo, bloqueio de janela de eventos, limites de confiança e restrições de concentração.

Camada 4: Atribuição de resultados

Resultados separados:

  • Tese correta, boa conformidade com a política, lucrativo.
  • Tese correta, má qualidade de execução.
  • Tese incorreta, a política devia ter bloqueado.
  • Falha de esquema ou processo independente da direcção do mercado.

Isto diz-lhe se deve melhorar os sinais, políticas ou canalização de execução.


Projetar um conjunto de dados de repetição de alta qualidade

A maioria dos canais de repetição falha porque o conjunto de dados é muito limpo ou muito estreito.

Uma divisão prática:

  • 40% sessões normais: misturas de baixo volume, de tendência e de gama.
  • 35% de janelas de eventos: emissões de alto impacto como PCE de base e dias de taxa de juro.
  • Fonte de tensão de 25%: dias de risco alargado com uma variação anormalmente elevada e ruído de latência.

Para cada marca de tempo, capture apenas o que era conhecido na época. Isso inclui o contexto do calendário de lançamento, o caminho atual do ponto e qualquer contexto de política dos arquivos de comunicação do banco central.

Replay row fields (recommended):
- ts_utc
- pair
- context_payload_hash
- prompt_version
- model_version
- raw_output
- parsed_output
- policy_decision
- simulated_execution
- realized_outcome

Hashing contextual cargas úteis ajuda a detectar acidental futuro vazamento de dados durante refactores.


Como avaliar o raciocínio, não apenas a direção

Adicione uma rubrica de raciocínio simples marcada por verificações determinísticas mais uma auditoria humana leve:

  1. Correcção da causa: A tese faz referência ao motor macro certo?
  2. Consciência das restrições: A recomendação reflete as regras de risco?
  3. Calibração da incerteza: A confiança corresponde à qualidade do contexto?
  4. Disciplina de acção: O modelo escolhe ? flat quando a evidência é fraca?

Segure isto como ReasoningConsistency para que você possa comparar modelos e instruções além do PnL.

Padrão útil: manter um pequeno conjunto de avaliações (50-100 exemplos) revisados mensalmente por humanos.

Qualidade do agente de pontuação (além da taxa de acerto)

Um quadro de avaliação robusto deve registar pelo menos estas métricas:

  • Taxa de aprovação do esquema: percentagem de saídas que analisam limpam.
  • Taxa de cumprimento das políticas: % das saídas que satisfazem restrições duras.
  • Consistência de raciocínio: Quantas vezes a tese se alinha com o contexto fornecido.
  • Distribuição da latência: tempo de decisão p50/p95 em condições realistas de oleoduto.
  • Estabilidade do regime: A pontuação desloca-se através de tendências, de intervalos e de janelas de choque de eventos.

Exemplo de pontuação ponderada:

AgentScore = 0.30 * SchemaPass
           + 0.25 * PolicyCompliance
           + 0.20 * ReasoningConsistency
           + 0.15 * RegimeStability
           + 0.10 * LatencyScore

Se você executar um fluxo de trabalho com segurança em primeiro lugar, aumente o peso no esquema e conformidade de políticas.


Arneses de repetição mínimos

Use um jogador de repetição que registra cada decisão e componente de pontuação.

from dataclasses import dataclass


@dataclass
class ReplayResult:
    ts: str
    parsed_ok: bool
    policy_ok: bool
    reasoning_ok: bool
    latency_ms: int
    pnl_r: float


def evaluate_one(ctx, agent, gatekeeper) -> ReplayResult:
    raw = agent.run(ctx)
    parsed = agent.parse(raw)
    parsed_ok = parsed is not None

    if not parsed_ok:
        return ReplayResult(ctx["ts"], False, False, False, agent.last_latency_ms, 0.0)

    gate = gatekeeper.validate(parsed, ctx)
    policy_ok = gate.allowed

    reasoning_ok = gate.reasoning_consistent
    pnl_r = gate.simulated_r if policy_ok else 0.0

    return ReplayResult(
        ts=ctx["ts"],
        parsed_ok=parsed_ok,
        policy_ok=policy_ok,
        reasoning_ok=reasoning_ok,
        latency_ms=agent.last_latency_ms,
        pnl_r=pnl_r,
    )

A chave é a repetição determinista: o mesmo contexto de entrada, a mesma versão imediata, as mesmas regras de validação.


De resultados de repetição a decisões de envio

Não promova alterações de modelo ou de prompt diretamente a partir de métricas de pontos.

  • Portão 1: A taxa de aprovação do esquema não deve regredir.
  • Portão 2: A conformidade com a política deve permanecer acima do limiar nas janelas de eventos.
  • Portão 3: A coerência do raciocínio deve melhorar ou permanecer estável.
  • Portão 4: A latência p95 deve manter-se dentro do orçamento operacional.

Só se todos os portões passarem, deve começar o modo sombra de negociação de papel.

Promotion policy example:
- Replay pass: required
- Shadow mode: 3 weeks minimum
- Live rollout: 20% traffic for 5 days, then full
- Auto-rollback: any schema fail burst or policy breach cluster

Isto evita o ciclo clássico em que as equipas se adaptam demais para reproduzir e sub-testam o comportamento operacional.


Erros comuns de teste

  • Fugas: Incluindo acidentalmente campos futuros no contexto.
  • Drift imediato: backtesting com um prompt e negociação ao vivo com outro.
  • Não há segmentação do regime: A média dos resultados em estados de volatilidade muito diferentes.
  • Não há repetição de política: Tratar todos os resultados do modelo como negociáveis.
Advertência prática: A taxa de acerto elevada com baixa estabilidade do esquema não está pronta para produção.

Como isso melhora a confiabilidade das negociações ao vivo

O backtesting de lógica de agente melhora a confiabilidade de maneiras que os backtests clássicos não podem:

  • Encontrar aglomerados de falhas em torno de dias do banco central, a partir do Reserva Federal Para o ... Banco da Inglaterra- Não .
  • Revelar quais erros estão relacionados com o prompt versus com a política.
  • Suporta atualizações de modelos mais seguras porque você pode comparar o comportamento de decisão entre versões antes da implantação.
  • Criar uma trilha de auditoria reutilizável para cada candidato comercial aceite ou rejeitado.

Se já rastrearmos PnL, isso adiciona a camada de observabilidade que falta e impede que a automação da IA se degrade silenciosamente.


Resumo

O backtesting é necessário para a lógica da estratégia. O backtesting é o que torna os fluxos de trabalho de negociação de IA duráveis. Os sistemas mais fortes avaliam ambos: vantagem de mercado e integridade de decisão.

Próximo passo: criar um benchmark de repetição mensal e exigir que cada mudança de prompt/modelo seja aprovada antes de chegar ao modo ao vivo. COT e filtros de sessão de Sessões de câmbio para o comportamento de teste de esforço em diferentes estados de mercado.

Blogroll