← Tous les exercices
LEAD : le rendement du lendemain
Partie 4 · ★★
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.
import sqlite3 con = sqlite3.connect(":memory:") con.execute("CREATE TABLE prices(date TEXT, ticker TEXT, close REAL)") A = [100, 102, 101, 105, 107, 108] B = [50, 49, 51, 50, 52, 55] for i in range(6): d = f"2024-01-0{i + 1}" con.execute("INSERT INTO prices VALUES (?, ?, ?)", (d, "A", A[i])) con.execute("INSERT INTO prices VALUES (?, ?, ?)", (d, "B", B[i])) sql = """ SELECT date, ticker, ___(close) OVER (PARTITION BY ticker ORDER BY date) - close AS fwd FROM prices ORDER BY ticker, date """ rows = con.execute(sql).fetchall()
Ctrl/⌘+Entrée