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.

Également disponible en English

Testez votre logique d'agent, pas seulement votre stratégie

Auteur: Équipe FXMacroData
Publié: 21 mai 2026

La plupart des équipes de trading d'IA ne font toujours que backtester une seule couche: signal-à-PnL. Cela manque le composant le plus risqué des systèmes modernes, l'agent lui-même. Si votre modèle interprète mal une macro-impression, dévie du schéma ou viole la politique sous pression, une bonne stratégie peut toujours produire de mauvais trades.

Le backtesting logique des agents résout ce problème en replayant les contextes historiques et en évaluant la qualité des décisions avant que n'importe quel ordre n'atteigne votre courtier. USD/JPY Je suis désolé . Le taux de changeJe suis désolé .

L'idée clé: Un backtest de stratégie demande " Est-ce que cette règle aurait fait de l'argent ? " Le backtesting d'agent demande " Cette IA aurait-elle pris la même décision sûre à plusieurs reprises dans des conditions réalistes ? "

Pourquoi les tests de rétroaction basés uniquement sur la stratégie manquent-ils les modes d'échec réels

Lorsque vous évaluez seulement PnL, vous masquez trois classes critiques d'échec:

  • Erreurs d'interprétation: le modèle interprète mal une libération telle que PNFP et construit une thèse dans la mauvaise direction.
  • Erreurs de contrat: La sortie rompt votre schéma pendant les périodes de forte volatilité.
  • Le risque de dépassement: le modèle recommande une surdimensionnement ou ignore les critères d'invalidation.

Ces problèmes apparaissent souvent avant que la dégradation de la PnL ne devienne évidente.


Le cadre de contre-test des agents à quatre couches

Couche 1: Replay du contexte

Reconstruisez chaque horodatage tel que le modèle l'aurait vu en temps réel. calendrier de sortieJe suis désolé .

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"

Couche 2: Répétition de décision

Exécutez l'agent sur chaque contexte avec l'invite de production exacte et les contraintes.

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

Couche 3: Simulation de la politique

Reprenez les mêmes règles que vous utilisez en direct: risque maximal, verrouillage des fenêtres d'événements, niveaux de confiance et contraintes de concentration.

Couche 4: Attribution des résultats

Des résultats distincts:

  • Une bonne thèse, une bonne conformité aux politiques, rentable.
  • Une bonne thèse, une mauvaise qualité d'exécution.
  • Une thèse erronée, la politique aurait dû bloquer.
  • Échec du schéma ou du processus indépendant de l'orientation du marché.

Cela vous indique si vous devez améliorer les instructions, les politiques ou la plomberie.


Conception d'un ensemble de données de reproduction de haute qualité

La plupart des pipelines de reproduction échouent parce que l'ensemble de données est trop propre ou trop étroit.

Une scission pratique:

  • 40% des séances normales: les mélanges à faible volume, à tendance et à plage.
  • 35% fenêtres d'événements: Les émissions à fort impact telles que PCE de base et jours de taux d'intérêt.
  • fenêtres de tension de 25%: jours de risque large avec un écart anormalement élevé et un bruit de latence.

Pour chaque horodatage, capturez uniquement ce qui était connu à ce moment-là, y compris le contexte du calendrier de sortie, le parcours actuel et tout contexte de politique des archives de communication de la banque centrale.

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

Le hachage des charges utiles contextuelles permet de détecter une fuite accidentelle de données futures pendant les réacteurs.


Comment évaluer le raisonnement, pas seulement la direction

L'évaluation par direction seule cache une dégradation importante.

  1. La cause et le résultat: Est-ce que la thèse fait référence au bon macro-driver ?
  2. Connaissance des contraintes: la recommandation reflète-t-elle les règles relatives aux risques?
  3. Étalonnage de l'incertitude: La confiance correspond-elle à la qualité du contexte ?
  4. Discipline d'action: Le modèle choisit ? flat quand les preuves sont faibles ?

Suivez ça comme ça . ReasoningConsistency pour que vous puissiez comparer les modèles et les instructions au-delà de PnL.

Modèle utile: Il est important de garder un petit ensemble d'évaluation (50-100 exemples) examiné par des humains chaque mois.

Qualité de l'agent de notation (au-delà du taux de réussite)

Une fiche de résultats fiable devrait suivre au moins ces indicateurs:

  • Taux de réussite du schéma: pourcentage des sorties qui sont analysées correctement.
  • Taux de conformité à la politique: pourcentage des sorties qui satisfont des contraintes strictes.
  • La cohérence des raisonnements: la fréquence à laquelle la thèse s'aligne sur le contexte fourni.
  • Distribution de la latence: p50/p95 temps de décision dans des conditions réalistes de conduite.
  • Stabilité du régime: les scores dérivent à travers les fenêtres tendance, de portée et de choc.

Exemple de pointage pondéré:

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

Si vous exécutez un flux de travail axé sur la sécurité, augmentez les poids sur le schéma et la conformité aux politiques.


Le harnais de reprise minimum

Utilisez un coureur de répétition qui enregistre chaque décision et composante de score.

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,
    )

La clé est la répétition déterministe: même contexte d'entrée, même version instantanée, mêmes règles de validation.


Des résultats de la reprise aux décisions de déploiement

Ne pas promouvoir les modifications de modèle ou de commande directement à partir des métriques de points.

  • La porte 1: Le taux de réussite du schéma ne doit pas régresser.
  • La porte deux . La conformité à la politique doit rester supérieure au seuil dans les périodes d'événements.
  • La porte trois: La cohérence de raisonnement doit s'améliorer ou rester stable.
  • La porte 4: La latence p95 doit rester dans le budget opérationnel.

Si toutes les portes sont franchies, vous devez commencer le mode ombre.

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

Cela empêche le cycle classique où les équipes sont trop adaptées pour jouer à nouveau et sous-testent le comportement opérationnel.


Erreurs courantes lors des tests

  • Faillite: inclure accidentellement les champs futurs dans le contexte.
  • Déplacement rapide: Tests arrière avec une demande et échanges en direct avec une autre.
  • Aucune segmentation du régime: la moyenne des résultats à travers des états de volatilité très différents.
  • Pas de répétition de la politique: traiter toutes les sorties du modèle comme négociables.
Avertissement pratique: Les contrats brisés sont un risque opérationnel, pas un bruit cosmétique.

Comment cela améliore la fiabilité des transactions en direct

Le backtesting logique-agent améliore la fiabilité de manière que les backtests classiques ne peuvent pas:

  • Il trouve des grappes de défaillance autour des jours de la banque centrale, de la Réserve fédérale à la Banque d'AngleterreJe suis désolé .
  • Révèle quelles erreurs sont liées à l'instant ou à la politique.
  • Prend en charge des mises à niveau de modèles plus sûres car vous pouvez comparer le comportement de décision entre les versions avant le déploiement.
  • Créer une piste d'audit réutilisable pour chaque candidat commercial accepté ou rejeté.

Si vous suivez déjà PnL, cela ajoute la couche d'observabilité manquante qui empêche l'automatisation de l'IA de se dégrader silencieusement.


Résumé

Le backtesting de la logique de stratégie est nécessaire. Le backtesting de l'agent logique est ce qui rend les flux de travail de trading d'IA durables. Les systèmes les plus solides évaluent à la fois: le marché et l'intégrité de la décision.

L'étape suivante: créer un replay mensuel et exiger que chaque modification de modèle soit passée avant d'atteindre le mode en direct. Le COT et filtres de session de Sessions de change Le rapport de la Commission sur les effets de la réduction des coûts sur les marchés

Blogroll