> ## Documentation Index
> Fetch the complete documentation index at: https://docs.intention.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# TWAP

> Fractionner un ordre important dans le temps pour prendre de la liquidité à mesure que le carnet se reconstitue — avec rattrapage quand des tranches manquent, et randomisation pour ne pas être prévisible.

Un ordre important pris d’un seul coup paie son propre impact : il parcourt le carnet, et chaque niveau consommé est moins bon que le précédent. Un ordre TWAP étale la même taille dans le temps, en prenant une tranche à intervalles fixes pour que le carnet ait le temps de se reconstituer entre elles.

Le compromis est explicite. Vous acceptez un **risque de prix sur la fenêtre d’exécution** — le marché peut bouger contre vous pendant que vous travaillez l’ordre — en échange de ne pas subir l’impact d’une exécution en une fois.

<h2 id="parameters">
  Paramètres
</h2>

| Paramètre         | Signification                                                                    |
| ----------------- | -------------------------------------------------------------------------------- |
| **Taille totale** | Quantité complète à exécuter, saisie dans l’actif ou dans la devise de règlement |
| **Durée**         | Sur combien de temps l’étaler — de 5 minutes à 24 heures                         |
| **Intervalle**    | Temps entre deux tranches                                                        |
| **Randomisation** | Faire varier la taille des tranches plutôt que d’en envoyer d’identiques         |
| **Reduce-only**   | Restreindre l’ordre à la clôture d’une position existante                        |

À partir de la durée et de l’intervalle :

$$
N = \frac{\text{durée}}{\text{intervalle}} + 1 \qquad
\text{tranche de base} = \frac{Q}{N}
$$

Une tranche part immédiatement au démarrage, puis à chaque intervalle, et une dernière fois à la fin de la fenêtre.

<h2 id="validation-before-it-starts">
  Validation avant le démarrage
</h2>

Un TWAP est rejeté d’emblée s’il ne peut pas se terminer tel qu’il est spécifié :

* Les tranches doivent être assez grandes pour constituer des ordres valides — le total réparti sur le calendrier ne peut pas descendre sous le minimum du marché
* Les tranches ne doivent pas dépasser la taille d’ordre maximale du marché
* La taille complète doit satisfaire la marge initiale
* En reduce-only, le total ne doit pas dépasser votre position actuelle

Ici, échouer tôt compte. Un TWAP qui découvre à mi-parcours que ses tranches passent sous le minimum vous laisse partiellement exécuté, sans moyen propre de terminer.

<h2 id="execution-and-catch-up">
  Exécution et rattrapage
</h2>

Chaque tranche est soumise comme un ordre au marché assorti d’une **borne de slippage de 3 %**. Les tranches tombent sur le premier bloc suivant l’écoulement de chaque intervalle, puisque l’exécution est pilotée on-chain et non par une horloge externe.

Si une tranche s’exécute moins que prévu — carnet mince, borne de slippage atteinte — le manque n’est pas perdu. Le calendrier se compare en permanence à l’endroit où il devrait être :

$$
\text{cible} = \frac{t_{\text{elapsed}}}{t_{\text{duration}}} \times Q
$$

Quand les exécutions réelles passent sous cette cible, les tranches suivantes sont agrandies pour rattraper :

<div className="dg" data-dg="twap-catchup">
  <div className="dg-c" style={{aspectRatio:"720 / 286"}}>
    <svg className="dg-w" viewBox="0 0 720 286" aria-hidden="true">
      <path className="dg-rule dg-dash" d="M 400 24 L 400 250" />
    </svg>

    <div className="dg-b dg-plain dg-left" style={{left:"57.2222%",top:"35.6643%",width:"18.8889%",height:"9.7902%"}}><span className="dg-s dg-ink--orange">sous-exécutée</span></div>
    <div className="dg-b dg-plain dg-left" style={{left:"57.2222%",top:"48.2517%",width:"18.8889%",height:"9.7902%"}}><span className="dg-s dg-ink--sky">rattrapage</span></div>
    <div className="dg-b dg--sky dg-left" style={{left:"77.7778%",top:"16.0839%",width:"22.2222%",height:"61.5385%"}}><span className="dg-t">Pourquoi un plafond</span><span className="dg-s">Une stratégie qui répond à l’illiquidité par des ordres toujours plus gros devient l’impact qu’elle devait éviter.</span><span className="dg-n">cible = écoulé ÷ durée × total</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"0.0000%",width:"61.1111%"}}><div className="dg-n">Six tranches, 6.0 au total — la 3 sous-exécutée en carnet mince</div></div>
    <div className="dg-bar" style={{left:"0.0000%",top:"10.4895%",width:"55.5556%",height:"9.7902%"}}><span className="dg-bar-lead" style={{width:"15.5000%"}}>Tranche 1</span><span className="dg-bar-track"><span className="dg-bar-fill dg--blue" style={{left:"0%",width:"33.333%"}} /><span className="dg-bar-val" style={{left:"33.333%"}}>1.00</span></span></div>
    <div className="dg-bar" style={{left:"0.0000%",top:"23.0769%",width:"55.5556%",height:"9.7902%"}}><span className="dg-bar-lead" style={{width:"15.5000%"}}>Tranche 2</span><span className="dg-bar-track"><span className="dg-bar-fill dg--blue" style={{left:"0%",width:"33.333%"}} /><span className="dg-bar-val" style={{left:"33.333%"}}>1.00</span></span></div>
    <div className="dg-bar" style={{left:"0.0000%",top:"35.6643%",width:"55.5556%",height:"9.7902%"}}><span className="dg-bar-lead" style={{width:"15.5000%"}}>Tranche 3</span><span className="dg-bar-track"><span className="dg-bar-fill dg--orange" style={{left:"0%",width:"13.333%"}} /><span className="dg-bar-val" style={{left:"13.333%"}}>0.40</span></span></div>
    <div className="dg-bar" style={{left:"0.0000%",top:"48.2517%",width:"55.5556%",height:"9.7902%"}}><span className="dg-bar-lead" style={{width:"15.5000%"}}>Tranche 4</span><span className="dg-bar-track"><span className="dg-bar-fill dg--sky" style={{left:"0%",width:"40.000%"}} /><span className="dg-bar-val" style={{left:"40.000%"}}>1.20</span></span></div>
    <div className="dg-bar" style={{left:"0.0000%",top:"60.8392%",width:"55.5556%",height:"9.7902%"}}><span className="dg-bar-lead" style={{width:"15.5000%"}}>Tranche 5</span><span className="dg-bar-track"><span className="dg-bar-fill dg--sky" style={{left:"0%",width:"40.000%"}} /><span className="dg-bar-val" style={{left:"40.000%"}}>1.20</span></span></div>
    <div className="dg-bar" style={{left:"0.0000%",top:"73.4266%",width:"55.5556%",height:"9.7902%"}}><span className="dg-bar-lead" style={{width:"15.5000%"}}>Tranche 6</span><span className="dg-bar-track"><span className="dg-bar-fill dg--sky" style={{left:"0%",width:"40.000%"}} /><span className="dg-bar-val" style={{left:"40.000%"}}>1.20</span></span></div>
    <div className="dg-lbl" style={{left:"55.5556%",top:"90.2098%"}}>3× la taille de base — plafond</div>
  </div>
</div>

Le plafond est l’élément important. Rattraper est souhaitable ; rattraper sans limite ne l’est pas — une stratégie qui répond à l’illiquidité en envoyant des ordres de plus en plus gros devient l’impact qu’elle était censée éviter. **Aucune tranche ne dépasse trois fois la taille de base**, donc la reprise est graduelle.

Une tranche qui échoue complètement est sautée et signalée. La stratégie ne s’arrête pas : une mauvaise tranche à un moment creux ne doit pas bloquer le reste de l’ordre.

<h2 id="randomization">
  Randomisation
</h2>

Avec la randomisation active, les tranches ne sont pas identiques. Avant chacune, la stratégie calcule la moyenne de ce qui reste et choisit une taille dans une plage sûre autour de cette moyenne.

Des tranches de taille fixe à intervalles fixes forment un motif, et un motif dans le flux d’ordres est une information pour quiconque observe. La randomisation supprime la régularité sans changer le total du calendrier.

L’arithmétique de la quantité restante continue de s’imposer. La randomisation fait varier les tailles ; elle ne permet pas à la stratégie de dépasser le total ni de laisser un reliquat à la fin.

<h2 id="when-twap-is-the-right-tool">
  Quand le TWAP est le bon outil
</h2>

**Utilisez-le** quand votre ordre est important par rapport à la profondeur visible, quand vous avez du temps, et quand un prix moyen sur une fenêtre est un objectif acceptable.

**Ne l’utilisez pas** quand vous avez besoin de la position maintenant — un TWAP est l’exact contraire de l’urgence. Et ne l’utilisez pas quand vous avez un prix précis en tête : un TWAP n’a pas d’objectif de prix, seulement un calendrier. Si le prix compte plus que l’immédiateté, les [ordres échelonnés](/fr/trading/scale-orders) placent plutôt des ordres à cours limité en carnet sur une plage de prix.

<Warning>
  Un TWAP ne garantit pas une exécution complète. Les tranches sont des ordres au marché bornés par le slippage, et dans un mouvement soutenu dans un seul sens elles peuvent être sous-exécutées à répétition. Le rattrapage est plafonné, si bien qu’une fenêtre qui se termine avec le marché contre vous peut laisser l’ordre largement incomplet.
</Warning>

<h2 id="where-to-go-next">
  Pour aller plus loin
</h2>

<CardGroup cols={2}>
  <Card title="Ordres échelonnés" href="/fr/trading/scale-orders">
    Fractionner sur le prix plutôt que dans le temps.
  </Card>

  <Card title="Ordres au marché" href="/fr/trading/market-to-limit">
    La borne de slippage à laquelle chaque tranche est soumise.
  </Card>

  <Card title="Carnet d’ordres" href="/fr/trading/order-book">
    Juger si votre ordre est important par rapport à la profondeur.
  </Card>

  <Card title="Frais" href="/fr/programs/fees">
    Chaque tranche est un ordre taker et paie les frais taker.
  </Card>
</CardGroup>
