Données, exports et API de mesure
Ce dictionnaire existe pour qu'un intégrateur n'ait jamais à deviner une unité, un fuseau ou une
règle d'embargo, et pour qu'un lecteur compare l'historique sans confondre les versions du modèle.
Il décrit uniquement ce qui est servi aujourd'hui dans public/forward-test/.
Règles transverses (valables pour chaque fichier)
| Règle | Valeur exacte |
|---|---|
| Fuseau opérationnel unique | Asia/Shanghai (UTC+8, sans DST). Les fenêtres contractuelles : publication 16h10, mesure 16h10, contrôle de délai ≥16h25, livraison privée 16h30. |
| Horodatage dans les fichiers | ISO 8601 avec offset (ex. 2026-10-07T18:46:16+00:00) — convertir côté client si besoin. |
| Embargo gratuit | scores.json public contient toujours le classement de J-1, jamais celui de J. C'est permanent, pas une phase de lancement. |
| Null honnête | une donnée absente vaut null (rendu « — ») ; jamais convertie en 0 ni en 50. |
| Versionnement | chaque mesure porte la version du protocole et, le cas échéant, du modèle. Une rupture de modèle (retrain mensuel) est signalée, jamais lissée. |
| Unité de la cible | tgt-rfwd-075atrpct v1 : rendement avant 24 h > 0,75 × ATR%14 (moyenne simple du True Range 14 rapportée à la clôture), comparaison stricte. |
Dictionnaire des fichiers JSON
| Fichier | Contenu / schéma | Unités & limites |
|---|---|---|
scores.json | date, date_classement (= J-1), note, classement[], classement_short[], classement_6h[], mesures_du_jour, stats, contexte, univers, incident_exchange{} | score = probabilité calibrée 0–100 (pas un percentile pine — voir guide dédié). 6h = contextuel uniquement. incident_exchange.en_cours booléen. |
modeles.json | fiche: "fiche-modele-v1", empreintes sha256 des 10 fichiers modèle, folds OOS agrégés + dispersion, références historiques datées | jamais la métrique actuelle comme « référence » ; les 4 folds défavorables sont affichés autant que les favorables. |
calibration.json | protocole_id: calibration-prospective-v1, Brier/log-loss naturel par (horizon, sens), bins figés 0,10 + Wilson, référence naïve séquentielle sans futur | moins de 60 entrées échues ⇒ « données insuffisantes », jamais extrapolé. long/short séparés (short = miroir expérimental). |
engagements.json | engagements[] versionnés vN + alias latest jamais écrasés, nonce NULL jusqu'à révélation, gel_le | un engagement immuable : révélé avec le nonce initial, jamais recalculé. |
attestations.json | 5 étapes horodatées (scoring → publication → mesure → calibration → révélation) | plus aucun mtime comme preuve. |
changements.json | agrégats scalaires J vs J-1 (top30 L/S, seuils 15/4.5, Δ médiane), run_id, hash_engagement, service | zéro symbole (doctrine) — aucune liste ordonnée. |
versions.json | schema_version, contrat, table des versions | point d'entrée pour détecter une rupture de schéma côté intégrateur. |
reveles/AAAA-MM-JJ.json | révélation quotidienne (le classement engagé J-1 dévoilé à J) | les octets révélés correspondent au hash engagé. |
journal*.csv | journal.csv (1D), journal_b.csv (protocole B), journal_6h.csv, colonne sens (long/short) | période brute vs nette séparées ; rendement du short inversé à la mesure. |
Exemple de schéma (structure réelle, valeurs tronquées)
Comparer l'historique sans se tromper
Trois choses doivent être identiques avant de comparer deux dates : la version du modèle
(retrain mensuel — modeles.json date la sienne), la couverture (l'univers a
été élargi le 25 septembre : 30 → 81 actifs, univers.date_changement) et l'horizon
(1D vs 6h ne se mélangent jamais). Quand l'un change, la série s'interrompt et la cause est écrite —
on ne trace pas de courbe artificiellement homogène à travers une rupture de modèle.
Trois objets distincts, à ne jamais confondre (voir « Probabilité ou percentile ») : l'indice pine (percentile 0–100, échelle proche de 50), la probabilité calibrée serveur (0–15 typique), et le résultat observé (rendement mesuré). Corrélation de rangs pine↔serveur ≈ 0,42 — les rangs se comparent, pas les niveaux bruts.
Erreurs, états dégradés, limites
| Signal | Signification exacte |
|---|---|
incident_exchange.en_cours: true | API exchange dégradée : les mesures du jour sont exclues ou marquées, jamais remplies de zéros. |
| « données insuffisantes » (calibration) | < 60 entrées échues dans le bin ou l'ensemble — attente, pas zéro. |
| exclusions du classement | chaque actif exclu porte sa raison (historique insuffisant, API, règle d'univers). |
| seuil de calibration | la Brier/log-loss se compare à la référence naïve séquentielle, pas à 0 absolu. |
| limite d'usage | pas d'API privée du jour J sans abonnement ; les règles d'embargo et de débit s'appliqueraient à toute API future (fiche 71 du cahier). |