Aller au contenu
Apprendre.
  • M1 · toutes les matières15 matières : Préparation de données, API & sécurité, CI/CD, Docker, Merise, Dataviz, KNIME, ML appliqué : projet LoL, SQL & UML, SQL avancé, Machine Learning, Git, IA frugale & responsable, Qualité des données, MathématiquesAnnée
  • M2 · toutes les matières4 matières : Deep Learning, AI Act, Comex & Fundraising, Gouvernance & DataMeshAnnée
  • Deep LearningM2 · 4 modules · Réseaux de neurones, CNN, texte, modèles génératifs.Matière
  • Préparation de donnéesM1 · 3 modules · Nettoyer, transformer et fusionner des données avec Python.Matière
  • API & sécuritéM1 · 2 modules · Consommer, concevoir et sécuriser des API.Matière
  • CI/CDM1 · 1 module · Intégration et livraison continues.Matière
  • DockerM1 · 3 modules · Conteneurs, images, volumes, réseaux, Compose.Matière
  • MeriseM1 · 2 modules · Modéliser une base : MCD, MLD, MPD.Matière
  • DatavizM1 · 2 modules · Visualiser pour comprendre et décider.Matière
  • KNIMEM1 · 1 module · Explorer et nettoyer des données en workflow.Matière
  • ML appliqué : projet LoLM1 · 2 modules · Du besoin métier au POC de vision par ordinateur.Matière
  • SQL & UMLM1 · 3 modules · Modèles UML et requêtes SQL.Matière
  • SQL avancéM1 · 3 modules · Jointures, fenêtres, CTE, optimisation.Matière
  • Machine LearningM1 · 3 modules · Régression, classification, segmentation, projet.Matière

↑↓ naviguer↵ ouvre le résultat en surbrillanceesc fermer

Partie 4 · Navigation

LAG, LEAD, FIRST_VALUE, LAST_VALUE

Les fonctions de navigation permettent de se déplacer à l'intérieur d'une partition ordonnée : LAG lit une valeur passée, LEAD une valeur future, FIRST_VALUE la première valeur de la fenêtre, LAST_VALUE la dernière.

Elles ne calculent pas d'agrégats : elles extraient des valeurs repérées dans un contexte. Il est utile de distinguer les fonctions qui lisent une valeur de celles qui résument plusieurs valeurs.

FonctionCe qu'elle lit
LAG(close)le prix précédent
LEAD(close)le prix suivant
FIRST_VALUE(close)la 1re valeur de la fenêtre
LAST_VALUE(close)la dernière valeur de la fenêtre

LEAD : regarder vers le futur

LEAD(close) OVER (PARTITION BY ticker ORDER BY date)

Cette fonction renvoie le prix suivant. Elle sert à construire un rendement futur, à mesurer l'évolution de t à t+1 ou à définir une cible supervisée en machine learning. Attention : utiliser LEAD sans s'en rendre compte dans un signal censé être disponible à la date t est une fuite d'information. Sur le dernier jour d'un actif, LEAD vaut NULL : il n'y a pas de ligne suivante dans la partition.

À toi de coder

LEAD : le rendement du lendemain

LEAD lit la ligne suivante. On s'en sert pour construire une cible (« que va-t-il se passer demain ? ») mais jamais pour un signal censé être utilisable à la date t.

Écris une requête qui renvoie date, ticker, fwd avec fwd = LEAD(close) - close par actif (trié par ticker, date). La dernière ligne de chaque actif doit valoir NULL.

Ctrl/⌘+Entrée

Vérifie que tu as compris

Sur la dernière ligne d'un actif, LEAD(close) OVER (PARTITION BY ticker ORDER BY date) renvoie…

FIRST_VALUE et LAST_VALUE

FIRST_VALUE(close) OVER (
    PARTITION BY ticker ORDER BY date
    ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
)

Pour chaque ligne, on rappelle le premier prix observé dans l'historique jusqu'à la date courante : on peut ainsi exprimer une performance relative par rapport à un point initial.

Avec la même fenêtre, LAST_VALUE(close) renvoie simplement la valeur courante. Piège : LAST_VALUE est souvent mal compris. Sans fenêtre explicite adaptée (par exemple jusqu'à UNBOUNDED FOLLOWING), on ne récupère pas « la dernière valeur globale ». (Hors cours : dans la norme SQL, avec un ORDER BY et sans cadre, la fenêtre par défaut s'arrête à la ligne courante.)

À toi de coder

Performance relative au premier prix

FIRST_VALUE rappelle sur chaque ligne le premier prix de l'historique : utile pour exprimer une performance relative à un point initial. Renvoie ticker, date, perf avec perf = close / FIRST_VALUE(close) - 1, trié par ticker, date.

Ctrl/⌘+Entrée

À toi de coder

LAST_VALUE : la fenêtre explicite change tout

Avec le cadre par défaut (jusqu'à la ligne courante), LAST_VALUE renvoie simplement la valeur courante. Pour retrouver la dernière valeur de tout l'historique de l'actif sur chaque ligne, il faut étendre la fenêtre vers le futur.

Renvoie ticker, date, dernier (le dernier prix de l'actif sur chaque ligne), trié par ticker, date.

Ctrl/⌘+Entrée

Vérifie que tu as compris

LAST_VALUE(close) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) renvoie…