Le marché saute-t-il à cet instant ?
BV est aveugle aux sauts ; RV les voit. Leur ratio est ton détecteur de Lévy.
Une seule question à un bit. Si la variance de ces 60 secondes vient d'une
diffusion continue, deux estimateurs convergent vers la même cible et leur
écart est ~0. Si elle vient d'un saut isolé, un seul des deux estimateurs
l'a vu — l'écart explose. Le ratio J = 1 − BV/RV rend cette dichotomie
lisible sur un axe [0, 1].
Définition formelle de BV
Sur la même fenêtre \((t − τ, t]\) que celle qui sert à
realized-variance — mêmes retours tick-by-tick
r_i, même découpe temporelle — on définit la bipower variation :
La constante \(π/2\) vient de l'identité gaussienne \(E[|Z|]² = 2/π\) pour \(Z ∼ 𝒩(0, 1)\). Elle calibre l'estimateur de sorte que, en l'absence de saut, \(BV(t, τ) →_p IV(t, τ)\) — la même integrated variance que RV estime ([Thm. 1, p. ~7] — consistance de la bipower variation vers la variance intégrée du processus continu, en présence d'un terme de sauts purs additif).
C'est précisément cette robustesse-au-saut qui distingue BV de RV :
RV consomme \(r²\) (qui intègre les sauts), BV consomme \(|r_i|·|r_{i-1}|\)
(qui ne voit que ce qui persiste sur deux ticks consécutifs).
Le jump indicator
Le ratio sans dimension :
Sémantique à un bit. \(J ≈ 0\) \(\to\) diffusion lisse. \(J → 1\) \(\to\) les sauts dominent la variance court terme. C'est la réponse à un bit à la question wheeler qui donne son titre à cette page.
Borne à fenêtre finie : \(J ∈ [−ε, 1]\) avec \(ε = O(1/N)\) — empiriquement
\(ε ≈ c/N\) où la constante c se loge entre 5 et 15 selon la queue de
la distribution des retours sur la fenêtre (mesuré sur replays MBP-10
internes, pas dérivé analytiquement ; piste de dérivation propre dans
Barndorff-Nielsen & Shephard 2004 §4, fini-sample). Le \(−ε\) est purement
fini-sample ; asymptotiquement (\(Δ → 0\)) on aurait \(J ∈ [0, 1]\).
Intuition — pourquoi le produit décroisé est aveugle
Sur retours iid gaussiens centrés de variance \(σ²\), l'identité \(E[|r_i| · |r_{i-1}|] = E[|r_i|]² = (2/π) · σ²\) donne directement \(E[BV] = (π/2) · N · (2/π) · σ² = N · σ² = E[RV]\). Donc \(BV ≈ RV\), \(J ≈ 0\) — la signature d'un régime continu.
Maintenant injecte un saut isolé \(Δ_k\) au tick k. Le saut entre :
- dans
RVvia \(r_k²\) \(\to\) contribution \(Δ_k²\) (un seul terme, énorme) ; - dans
BVvia deux produits, \(|r_{k-1}|·|r_k|\) et \(|r_k|·|r_{k+1}|\), qui mêlent chacun \(|Δ_k|\) (grand) à \(|r_{k±1}|\) (de l'ordre de \(σ·√Δ\)).
Le terme de saut dans BV est donc d'ordre \(|Δ_k| · σ\), linéaire en
amplitude, alors qu'il est \(Δ_k²\) dans RV, quadratique. À forte
amplitude, l'écart explose. Le ratio bascule. C'est mathématiquement le
même mécanisme que la décomposition de Lévy-Khintchine du quadratic
variation en partie continue + somme des sauts au carré
([Thm. 1] — qui formalise précisément cette
décomposition pour les semi-martingales avec sauts).
Biais fini-sample
L'estimateur naïf surestime systématiquement BV à N petit. La forme de
correction la plus simple, héritée de la littérature BNS / Andersen–
Bollerslev autour de la realized bipower, est :
Le 2/N reflète qu'on perd deux paires utilisables aux bords de la
fenêtre (le tout premier et le tout dernier). (Note de probité : Huang &
Tauchen 2005, parfois cité pour cette forme exacte, formule en réalité
des corrections autour du jump test statistic — pas le \((1 − 2/N)⁻¹\)
verbatim. La forme ci-dessus est l'asymptotique standard du biais
fini-sample sur BV ; nous ne lui attribuons pas de pater plus précis
qu'« usage commun post-BNS 2004 ».)
Deux choses différentes méritent d'être distinguées :
- Le biais asymptotique prédit par cette formule :
2/N. PourN = 60, ça donne~3.3 %. PourN = 600,~0.33 %. PourN = 6 000,~0.033 %. C'est ce qu'on attendrait si les retours étaient parfaitement iid gaussiens. - Le biais empirique mesuré par replay sur données MBP-10 (returns
pas tout à fait iid, queue plus lourde que gaussienne) :
~2.6 %,~0.25 %,~0.03 %aux trois mêmes échelles. Légèrement plus petit que la prédiction asymptotique, mais du même ordre — la correction tient en pratique.
L'écart entre l'asymptotique (2/N) et l'empirique vient de la
persistance des retours et de l'autocorrélation des |r_i| — pas d'un
bug de mesure ni d'une formule différente. À six mois, si tu veux serrer
les chiffres, le seul vrai test est le replay sur ta propre fenêtre.
En pratique. On ne l'applique pas par défaut. À \(N ≥ 600\) (10 min @
1 Hz), 0.25 % de biais est bien plus petit que le bruit du classifier
lui-même — le correctif est cosmétique. À N plus petit (60 s @ 1 Hz),
le min-tick guard ci-dessous mord avant que le biais ne devienne
géopolitique. On gardera le correctif en réserve si le bruit empirique
demande qu'on le réactive.
Pour ton cas
Si tu calcules J sur fenêtre 60 s à chaque tick, c'est exactement la
mesure qui distingue « ARM bouge fort mais lisse » (volatilité élevée,
processus continu, \(J ≈ 0\)) de « ARM bouge fort par sauts » (régime
rugueux Mandelbrot, \(J → 1\)).
Le second est la signature que tu décrivais le 2026-05-10 sur WhatsApp.
J la rend lisible sans regarder le prix lui-même — il suffit de
comparer deux estimateurs de variance dont l'un ferme les yeux sur les
sauts.
Min-tick guard
Sur fenêtre courte avec très peu de samples (N < 30), J est
trompeur : un premier return solitaire donne BV = 0 (pas de paire
disponible), donc J = 1 artefact qui n'a rien à voir avec un saut
physique. Le pipeline applique min_tick_count_short = 30 avant de
laisser J alimenter le classifier — voir
pivot-j-based §"patches (a) min-tick guard" et
docs/adr/0005-classifier-signal-j-based.md §"Patches complémentaires"
qui posent les défauts (30, 300) et l'invariant « le classifier ne
transitionne pas tant que les deux counts ne dépassent pas ».
Sans ce garde, l'estimateur devient instable — le détecteur sonne en l'absence de saut, simplement parce que la fenêtre est trop maigre pour former assez de paires.
Limites
- BV n'identifie pas quel tick a sauté, seulement qu'il y a eu
saut sur la fenêtre. Pour localiser, on agrège plusieurs \(J(t, τ)\) à
\(τ\) croissant et on cherche le \(τ\) minimal où
Jbascule. C'est le même genre de stratégie que la tail discovery d'Aït-Sahalia (hors scope ici). - La consistance de BV est asymptotique (\(Δ → 0\), [Thm. 1]). En haute fréquence MBP-10 (cadence sub-seconde au NY-open), c'est OK pour fenêtre \(≥ 30\) ticks ; en heure calme (midi NY), le min-tick guard tient.
Jseul ne distingue pas saut Lévy α-stable vs saut gaussien rare — les deux donnent \(J → 1\). Pour la signature α-stable on regarde la décroissance deJquand \(τ\) grandit, ou l'exposant de Hurst des retours absolus ; voir roughness-and-levy.
Adversaire & liens
- Risque côté estimateur :
Jpeut flotter sur fenêtres maigres (N < 30). Antidote : min-tick guard nommé ci-dessus, et — en réserve — la correction \((1 − 2/N)⁻¹\) si le biais fini-sample empêche la lecture. - Théorie amont : realized-variance — définit
r_iet \(RV(t, τ)\) ; cette page les réutilise sans les redéfinir (chaque re-définition évitée allège la lecture d'environ 200 bits — la redondance utile est ailleurs, dans les définitions de seuils). - Théorie aval (régime) : regime-classifier —
utilise
Jcomme signal d'état (Smooth / Transition / Rough). - Décision empirique : pivot-j-based — pourquoi
Jremplace le ratioRV_short/RV_longdu MVP, et comportement observé AMC 27-jan-2021. - Au-delà du détecteur binaire : roughness-and-levy — distinguer un saut α-stable d'un saut gaussien rare.
Références
- Barndorff-Nielsen, O. E. & Shephard, N. (2004). Power and Bipower Variation with Stochastic Volatility and Jumps. Journal of Financial Econometrics 2(1), 1–37. DOI: 10.1093/jjfinec/nbh001. Thm. 1 = consistance BV \(\to\) IV en présence de sauts.
- Huang, X. & Tauchen, G. (2005). The Relative
Contribution of Jumps to Total Price Variance. Journal of Financial
Econometrics 3(4), p. 456–499. Référence de contexte sur le partage de
variance saut / continu ; la forme \((1 − 2/N)⁻¹\) du correctif fini-
sample sur
BVest d'usage commun dans la littérature BNS-suite, sans pater verbatim dans cette page. docs/adr/0003-stats-and-classifier.md§2 — Bipower variation et jump indicator (définition, algo online, invariants).docs/adr/0005-classifier-signal-j-based.md— PourquoiJremplaceR = RV_short/RV_long; min-tick guard.