{
  "schema": "https://l0g.fr/api/v1/signals/schema.json",
  "version": "1",
  "generated": "2026-07-15T00:53:08.295Z",
  "coverage": {
    "observations": 5,
    "levelChanges": 3,
    "instruments": [
      "us",
      "eu",
      "yen",
      "energie",
      "debt"
    ],
    "firstObservedAt": "2026-07-15T00:52:07.000Z",
    "lastObservedAt": "2026-07-15T00:52:07.000Z",
    "pointInTime": true
  },
  "policy": {
    "purpose": "Historique public point-in-time des signaux l0g pour audit, replay et backtest.",
    "appendOnlyTarget": "public/signals-history.ndjson",
    "dateDiscipline": "observedAt date la valeur du signal, sourcePublishedAt date la publication amont, retrievedAt date la collecte par l0g, computedAt date la generation du fichier.",
    "backtestRule": "Utiliser seulement observations. Les levelChanges sont des alertes derivees, pas des points de serie.",
    "caveat": "Best-effort, pas du temps reel strict, pas un conseil en investissement.",
    "license": "CC BY 4.0",
    "attribution": "l0g.fr"
  },
  "instruments": [
    {
      "key": "us",
      "label": "US Macro Dashboard",
      "source": "https://us.l0g.fr",
      "methodology": "https://l0g.fr/methodologie/us-macro/"
    },
    {
      "key": "eu",
      "label": "EU Macro Dashboard",
      "source": "https://euro.l0g.fr",
      "methodology": "https://l0g.fr/methodologie/euro-macro/"
    },
    {
      "key": "yen",
      "label": "Yen Carry Monitor",
      "source": "https://yct.l0g.fr",
      "methodology": "https://l0g.fr/methodologie/yen-carry/"
    },
    {
      "key": "energie",
      "label": "Energie Monitor",
      "source": "https://energie.l0g.fr",
      "methodology": "https://l0g.fr/methodologie/energie/"
    },
    {
      "key": "debt",
      "label": "Debt Risk Radar",
      "source": "https://debt.l0g.fr",
      "methodology": "https://l0g.fr/methodologie/debt-risk-radar/"
    }
  ],
  "current": {
    "debt": {
      "recordType": "observation",
      "schemaVersion": "1",
      "recordId": "obs:debt:2026-07-15T00:52:07.000Z:42554f326458",
      "instrument": "debt",
      "label": "Debt Risk Radar",
      "observedAt": "2026-07-15T00:52:07.000Z",
      "sourcePublishedAt": "2026-07-15T00:52:07.000Z",
      "retrievedAt": "2026-07-15T00:52:54.997Z",
      "computedAt": "2026-07-15T00:53:08.295Z",
      "value": 55,
      "rawValue": 54.642766284241716,
      "scale": 100,
      "level": "Élevé",
      "tone": "elevated",
      "sourceUrl": "https://debt.l0g.fr/latest.json",
      "methodologyUrl": "https://l0g.fr/methodologie/debt-risk-radar/",
      "sourceSnapshotUrl": "https://l0g.fr/api/v1/debt-risk.json",
      "calculatorRepo": "https://github.com/bluetouff/debt-risk-radar",
      "calculatorRevision": null,
      "snapshotHash": "42554f326458792bcfee104f41a3c102f14617b93f60e513de1fc6cc1a7a1c57",
      "pointInTime": true,
      "backtestUsable": true,
      "limitations": [
        "Score normalise par instrument, pas une probabilite.",
        "Les dates sourcePublishedAt et retrievedAt peuvent rester null si le dashboard amont ne les expose pas.",
        "La serie historique complete depend de l archive append-only public/signals-history.ndjson."
      ]
    },
    "energie": {
      "recordType": "observation",
      "schemaVersion": "1",
      "recordId": "obs:energie:2026-07-15T00:52:07.000Z:8c60a31ea583",
      "instrument": "energie",
      "label": "Energie Monitor",
      "observedAt": "2026-07-15T00:52:07.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-15T00:53:08.295Z",
      "value": 45,
      "rawValue": 45,
      "scale": 100,
      "level": "Normal",
      "tone": "moderate",
      "sourceUrl": "https://energie.l0g.fr",
      "methodologyUrl": "https://l0g.fr/methodologie/energie/",
      "sourceSnapshotUrl": "https://l0g.fr/api/v1/risk.json",
      "calculatorRepo": null,
      "calculatorRevision": null,
      "snapshotHash": "8c60a31ea583dde99f4cb52ab4d44e1c9ca82637eb1486ce49e08f0a7a1bedcf",
      "pointInTime": true,
      "backtestUsable": true,
      "limitations": [
        "Score normalise par instrument, pas une probabilite.",
        "Les dates sourcePublishedAt et retrievedAt peuvent rester null si le dashboard amont ne les expose pas.",
        "La serie historique complete depend de l archive append-only public/signals-history.ndjson."
      ]
    },
    "eu": {
      "recordType": "observation",
      "schemaVersion": "1",
      "recordId": "obs:eu:2026-07-15T00:52:07.000Z:5b37f213a051",
      "instrument": "eu",
      "label": "EU Macro Dashboard",
      "observedAt": "2026-07-15T00:52:07.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-15T00:53:08.295Z",
      "value": 41,
      "rawValue": 41,
      "scale": 100,
      "level": "Risk-On",
      "tone": "calm",
      "sourceUrl": "https://euro.l0g.fr",
      "methodologyUrl": "https://l0g.fr/methodologie/euro-macro/",
      "sourceSnapshotUrl": "https://l0g.fr/api/v1/risk.json",
      "calculatorRepo": null,
      "calculatorRevision": null,
      "snapshotHash": "5b37f213a0514f6da34571603870067a899b2ce952c1122a257225f901a01f84",
      "pointInTime": true,
      "backtestUsable": true,
      "limitations": [
        "Score normalise par instrument, pas une probabilite.",
        "Les dates sourcePublishedAt et retrievedAt peuvent rester null si le dashboard amont ne les expose pas.",
        "La serie historique complete depend de l archive append-only public/signals-history.ndjson."
      ]
    },
    "us": {
      "recordType": "observation",
      "schemaVersion": "1",
      "recordId": "obs:us:2026-07-15T00:52:07.000Z:6eeb16dc602e",
      "instrument": "us",
      "label": "US Macro Dashboard",
      "observedAt": "2026-07-15T00:52:07.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-15T00:53:08.295Z",
      "value": 43,
      "rawValue": 43,
      "scale": 100,
      "level": "Modéré",
      "tone": "moderate",
      "sourceUrl": "https://us.l0g.fr",
      "methodologyUrl": "https://l0g.fr/methodologie/us-macro/",
      "sourceSnapshotUrl": "https://l0g.fr/api/v1/risk.json",
      "calculatorRepo": null,
      "calculatorRevision": null,
      "snapshotHash": "6eeb16dc602e2db2a189315af67446c68a1da8c4bbcf087a12fb95b7c3ad5d5c",
      "pointInTime": true,
      "backtestUsable": true,
      "limitations": [
        "Score normalise par instrument, pas une probabilite.",
        "Les dates sourcePublishedAt et retrievedAt peuvent rester null si le dashboard amont ne les expose pas.",
        "La serie historique complete depend de l archive append-only public/signals-history.ndjson."
      ]
    },
    "yen": {
      "recordType": "observation",
      "schemaVersion": "1",
      "recordId": "obs:yen:2026-07-15T00:52:07.000Z:1ae30525f14b",
      "instrument": "yen",
      "label": "Yen Carry Monitor",
      "observedAt": "2026-07-15T00:52:07.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-15T00:53:08.295Z",
      "value": 45,
      "rawValue": 45,
      "scale": 100,
      "level": "Modéré",
      "tone": "moderate",
      "sourceUrl": "https://yct.l0g.fr",
      "methodologyUrl": "https://l0g.fr/methodologie/yen-carry/",
      "sourceSnapshotUrl": "https://l0g.fr/api/v1/risk.json",
      "calculatorRepo": null,
      "calculatorRevision": null,
      "snapshotHash": "1ae30525f14ba69ed43266be34d567ccc99a8597e38ac932e68bba3494fb2a93",
      "pointInTime": true,
      "backtestUsable": true,
      "limitations": [
        "Score normalise par instrument, pas une probabilite.",
        "Les dates sourcePublishedAt et retrievedAt peuvent rester null si le dashboard amont ne les expose pas.",
        "La serie historique complete depend de l archive append-only public/signals-history.ndjson."
      ]
    }
  },
  "observations": [
    {
      "recordType": "observation",
      "schemaVersion": "1",
      "recordId": "obs:debt:2026-07-15T00:52:07.000Z:42554f326458",
      "instrument": "debt",
      "label": "Debt Risk Radar",
      "observedAt": "2026-07-15T00:52:07.000Z",
      "sourcePublishedAt": "2026-07-15T00:52:07.000Z",
      "retrievedAt": "2026-07-15T00:52:54.997Z",
      "computedAt": "2026-07-15T00:53:08.295Z",
      "value": 55,
      "rawValue": 54.642766284241716,
      "scale": 100,
      "level": "Élevé",
      "tone": "elevated",
      "sourceUrl": "https://debt.l0g.fr/latest.json",
      "methodologyUrl": "https://l0g.fr/methodologie/debt-risk-radar/",
      "sourceSnapshotUrl": "https://l0g.fr/api/v1/debt-risk.json",
      "calculatorRepo": "https://github.com/bluetouff/debt-risk-radar",
      "calculatorRevision": null,
      "snapshotHash": "42554f326458792bcfee104f41a3c102f14617b93f60e513de1fc6cc1a7a1c57",
      "pointInTime": true,
      "backtestUsable": true,
      "limitations": [
        "Score normalise par instrument, pas une probabilite.",
        "Les dates sourcePublishedAt et retrievedAt peuvent rester null si le dashboard amont ne les expose pas.",
        "La serie historique complete depend de l archive append-only public/signals-history.ndjson."
      ]
    },
    {
      "recordType": "observation",
      "schemaVersion": "1",
      "recordId": "obs:energie:2026-07-15T00:52:07.000Z:8c60a31ea583",
      "instrument": "energie",
      "label": "Energie Monitor",
      "observedAt": "2026-07-15T00:52:07.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-15T00:53:08.295Z",
      "value": 45,
      "rawValue": 45,
      "scale": 100,
      "level": "Normal",
      "tone": "moderate",
      "sourceUrl": "https://energie.l0g.fr",
      "methodologyUrl": "https://l0g.fr/methodologie/energie/",
      "sourceSnapshotUrl": "https://l0g.fr/api/v1/risk.json",
      "calculatorRepo": null,
      "calculatorRevision": null,
      "snapshotHash": "8c60a31ea583dde99f4cb52ab4d44e1c9ca82637eb1486ce49e08f0a7a1bedcf",
      "pointInTime": true,
      "backtestUsable": true,
      "limitations": [
        "Score normalise par instrument, pas une probabilite.",
        "Les dates sourcePublishedAt et retrievedAt peuvent rester null si le dashboard amont ne les expose pas.",
        "La serie historique complete depend de l archive append-only public/signals-history.ndjson."
      ]
    },
    {
      "recordType": "observation",
      "schemaVersion": "1",
      "recordId": "obs:eu:2026-07-15T00:52:07.000Z:5b37f213a051",
      "instrument": "eu",
      "label": "EU Macro Dashboard",
      "observedAt": "2026-07-15T00:52:07.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-15T00:53:08.295Z",
      "value": 41,
      "rawValue": 41,
      "scale": 100,
      "level": "Risk-On",
      "tone": "calm",
      "sourceUrl": "https://euro.l0g.fr",
      "methodologyUrl": "https://l0g.fr/methodologie/euro-macro/",
      "sourceSnapshotUrl": "https://l0g.fr/api/v1/risk.json",
      "calculatorRepo": null,
      "calculatorRevision": null,
      "snapshotHash": "5b37f213a0514f6da34571603870067a899b2ce952c1122a257225f901a01f84",
      "pointInTime": true,
      "backtestUsable": true,
      "limitations": [
        "Score normalise par instrument, pas une probabilite.",
        "Les dates sourcePublishedAt et retrievedAt peuvent rester null si le dashboard amont ne les expose pas.",
        "La serie historique complete depend de l archive append-only public/signals-history.ndjson."
      ]
    },
    {
      "recordType": "observation",
      "schemaVersion": "1",
      "recordId": "obs:us:2026-07-15T00:52:07.000Z:6eeb16dc602e",
      "instrument": "us",
      "label": "US Macro Dashboard",
      "observedAt": "2026-07-15T00:52:07.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-15T00:53:08.295Z",
      "value": 43,
      "rawValue": 43,
      "scale": 100,
      "level": "Modéré",
      "tone": "moderate",
      "sourceUrl": "https://us.l0g.fr",
      "methodologyUrl": "https://l0g.fr/methodologie/us-macro/",
      "sourceSnapshotUrl": "https://l0g.fr/api/v1/risk.json",
      "calculatorRepo": null,
      "calculatorRevision": null,
      "snapshotHash": "6eeb16dc602e2db2a189315af67446c68a1da8c4bbcf087a12fb95b7c3ad5d5c",
      "pointInTime": true,
      "backtestUsable": true,
      "limitations": [
        "Score normalise par instrument, pas une probabilite.",
        "Les dates sourcePublishedAt et retrievedAt peuvent rester null si le dashboard amont ne les expose pas.",
        "La serie historique complete depend de l archive append-only public/signals-history.ndjson."
      ]
    },
    {
      "recordType": "observation",
      "schemaVersion": "1",
      "recordId": "obs:yen:2026-07-15T00:52:07.000Z:1ae30525f14b",
      "instrument": "yen",
      "label": "Yen Carry Monitor",
      "observedAt": "2026-07-15T00:52:07.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-15T00:53:08.295Z",
      "value": 45,
      "rawValue": 45,
      "scale": 100,
      "level": "Modéré",
      "tone": "moderate",
      "sourceUrl": "https://yct.l0g.fr",
      "methodologyUrl": "https://l0g.fr/methodologie/yen-carry/",
      "sourceSnapshotUrl": "https://l0g.fr/api/v1/risk.json",
      "calculatorRepo": null,
      "calculatorRevision": null,
      "snapshotHash": "1ae30525f14ba69ed43266be34d567ccc99a8597e38ac932e68bba3494fb2a93",
      "pointInTime": true,
      "backtestUsable": true,
      "limitations": [
        "Score normalise par instrument, pas une probabilite.",
        "Les dates sourcePublishedAt et retrievedAt peuvent rester null si le dashboard amont ne les expose pas.",
        "La serie historique complete depend de l archive append-only public/signals-history.ndjson."
      ]
    }
  ],
  "levelChanges": [
    {
      "recordType": "level-change",
      "schemaVersion": "1",
      "eventId": "event:yen:2026-06-08T17:15:00.000Z:acd41e95f0f3",
      "instrument": "yen",
      "label": "Yen Carry",
      "observedAt": "2026-06-08T17:15:00.000Z",
      "previousLevel": "Détendu",
      "currentLevel": "Modéré",
      "value": 41,
      "tone": "moderate",
      "sourceUrl": "https://yct.l0g.fr",
      "pointInTime": true,
      "backtestUsable": false,
      "limitations": [
        "Evenement de franchissement de seuil, pas une observation complete.",
        "Utiliser observations pour un backtest, levelChanges pour les alertes."
      ]
    },
    {
      "recordType": "level-change",
      "schemaVersion": "1",
      "eventId": "event:energie:2026-06-12T17:15:00.000Z:277f631d8c6b",
      "instrument": "energie",
      "label": "Énergie",
      "observedAt": "2026-06-12T17:15:00.000Z",
      "previousLevel": "Modéré",
      "currentLevel": "Tendu",
      "value": 58,
      "tone": "elevated",
      "sourceUrl": "https://energie.l0g.fr",
      "pointInTime": true,
      "backtestUsable": false,
      "limitations": [
        "Evenement de franchissement de seuil, pas une observation complete.",
        "Utiliser observations pour un backtest, levelChanges pour les alertes."
      ]
    },
    {
      "recordType": "level-change",
      "schemaVersion": "1",
      "eventId": "event:debt:2026-06-30T12:22:06.000Z:234d12baa5d4",
      "instrument": "debt",
      "label": "Dette US",
      "observedAt": "2026-06-30T12:22:06.000Z",
      "previousLevel": "Non suivi",
      "currentLevel": "Élevé",
      "value": 57,
      "tone": "elevated",
      "sourceUrl": "https://debt.l0g.fr/latest.json",
      "pointInTime": true,
      "backtestUsable": false,
      "limitations": [
        "Evenement de franchissement de seuil, pas une observation complete.",
        "Utiliser observations pour un backtest, levelChanges pour les alertes."
      ]
    }
  ]
}
