Python

merge_asof : jointure temporelle sans fuite future

Associer chaque événement à la dernière valeur connue d'une autre série (direction backward), avec tolérance maximale.

Cas d'usage

Enrichir des trades avec la cotation en vigueur, ou des incidents avec la dernière métrique système.

Prérequis

Python 3.9+, pandas

Python
import pandas as pd

trades = trades.sort_values("timestamp")
quotes = quotes.sort_values("timestamp")

# Chaque trade reçoit la dernière cotation CONNUE (pas de fuite future)
enriched = pd.merge_asof(
    trades,
    quotes[["timestamp", "bid", "ask"]],
    on="timestamp",
    direction="backward",
    tolerance=pd.Timedelta("2s"),   # au-delà : NaN plutôt qu'une valeur périmée
)
enriched["spread"] = enriched["ask"] - enriched["bid"]

Résultat

>>> enriched.head(3)
                timestamp  symbol  qty      bid      ask   spread
0 2026-06-01 09:00:00.120  EURUSD  1.0  1.08431  1.08444  0.00013
1 2026-06-01 09:00:02.480  EURUSD  0.5  1.08433  1.08447  0.00014
2 2026-06-01 09:00:05.910  EURUSD  2.0      NaN      NaN      NaN

>>> enriched["bid"].isna().sum()   # trades sans cotation < 2 s
1
Pandasmerge_asofTime SeriesFinance

Snippets liés

Retour au Data Lab