// backtests
Les signaux doivent pouvoir être rejoués.
Un indicateur qui ne garde pas son historique demande qu'on lui fasse confiance. l0g publie les observations point-in-time de ses signaux pour que chacun puisse vérifier, rejouer, casser ou améliorer les lectures de marché.
// contrat
La règle est simple : un backtest doit utiliser ce qui était observable à une date donnée,
pas ce que l'on sait après coup. Le format sépare donc observedAt,
sourcePublishedAt, retrievedAt et computedAt.
Les lignes observation sont les points de série utilisables. Les lignes
level-change sont des alertes de franchissement, utiles pour l'audit,
mais pas des observations complètes.
// pipeline public
// exports
// signaux
// exemple pandas
import pandas as pd
url = "https://l0g.fr/api/v1/signals/history.csv"
df = pd.read_csv(url, parse_dates=["observedAt", "retrievedAt"])
df = df[df["instrument"] == "debt"].sort_values("observedAt")
# Exemple volontairement minimal :
# signal observe a T, rendement futur calcule hors de l'archive.
signal = df[["observedAt", "value", "level", "snapshotHash"]] // garde-fou
Les rendements, prix ou benchmarks utilisés pour évaluer un signal doivent être ajoutés depuis une source de marché datée. L'archive l0g dit ce que l'indicateur affichait, pas ce que le marché a fait ensuite.
// état de la brique
Cette première version expose le snapshot courant et les franchissements déjà collectés.
La cible durable est une archive append-only alimentée à chaque collecte par
public/signals-history.ndjson. Les clients peuvent déjà coder contre le contrat,
puis bénéficier automatiquement de l'allongement de l'historique.