Python

merge_asof: union temporal sin fuga de futuro

Asocia cada evento con el ultimo valor conocido de otra serie (direccion backward), con una tolerancia maxima.

Requisitos

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"]

Resultado

>>> 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 relacionados

Volver al Data Lab