{
  "schema": "https://l0g.fr/api/v1/signals/schema.json",
  "version": "1",
  "generated": "2026-07-01T11:14:30.121Z",
  "coverage": {
    "observations": 5,
    "levelChanges": 3,
    "instruments": [
      "us",
      "eu",
      "yen",
      "energie",
      "debt"
    ],
    "firstObservedAt": "2026-07-01T11:02:19.000Z",
    "lastObservedAt": "2026-07-01T11:02:19.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-01T11:02:19.000Z:0ac61ab17103",
      "instrument": "debt",
      "label": "Debt Risk Radar",
      "observedAt": "2026-07-01T11:02:19.000Z",
      "sourcePublishedAt": "2026-07-01T11:02:19.000Z",
      "retrievedAt": "2026-07-01T11:14:23.347Z",
      "computedAt": "2026-07-01T11:14:30.121Z",
      "value": 54,
      "rawValue": 53.977214461235675,
      "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": "0ac61ab171039d784ccc7ccd6b005656a74f64bfc65bda2821e4dff75df98f5c",
      "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-01T11:02:19.000Z:f1d5d6580aa8",
      "instrument": "energie",
      "label": "Energie Monitor",
      "observedAt": "2026-07-01T11:02:19.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-01T11:14:30.121Z",
      "value": 58,
      "rawValue": 58,
      "scale": 100,
      "level": "Tendu",
      "tone": "elevated",
      "sourceUrl": "https://energie.l0g.fr",
      "methodologyUrl": "https://l0g.fr/methodologie/energie/",
      "sourceSnapshotUrl": "https://l0g.fr/api/v1/risk.json",
      "calculatorRepo": null,
      "calculatorRevision": null,
      "snapshotHash": "f1d5d6580aa85af3e664d520a57452f379497772b40d733badfd8218c3932450",
      "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-01T11:02:19.000Z:6ab37d4f5e12",
      "instrument": "eu",
      "label": "EU Macro Dashboard",
      "observedAt": "2026-07-01T11:02:19.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-01T11:14:30.121Z",
      "value": 47,
      "rawValue": 47,
      "scale": 100,
      "level": "Modéré",
      "tone": "moderate",
      "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": "6ab37d4f5e12fb074ee9878c4691cab636f835fa0ea9f6d0cf0f4e134e3ac112",
      "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-01T11:02:19.000Z:ca0b26e040eb",
      "instrument": "us",
      "label": "US Macro Dashboard",
      "observedAt": "2026-07-01T11:02:19.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-01T11:14:30.121Z",
      "value": 58,
      "rawValue": 58,
      "scale": 100,
      "level": "Élevé",
      "tone": "elevated",
      "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": "ca0b26e040eb6123565bb832510e18aa501950d757eee564853b681de3a8ee24",
      "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-01T11:02:19.000Z:ea185dc24472",
      "instrument": "yen",
      "label": "Yen Carry Monitor",
      "observedAt": "2026-07-01T11:02:19.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-01T11:14:30.121Z",
      "value": 41,
      "rawValue": 41,
      "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": "ea185dc24472a96790b8f7b3893a6d7fac35e75ca192df756533750176056660",
      "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-01T11:02:19.000Z:0ac61ab17103",
      "instrument": "debt",
      "label": "Debt Risk Radar",
      "observedAt": "2026-07-01T11:02:19.000Z",
      "sourcePublishedAt": "2026-07-01T11:02:19.000Z",
      "retrievedAt": "2026-07-01T11:14:23.347Z",
      "computedAt": "2026-07-01T11:14:30.121Z",
      "value": 54,
      "rawValue": 53.977214461235675,
      "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": "0ac61ab171039d784ccc7ccd6b005656a74f64bfc65bda2821e4dff75df98f5c",
      "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-01T11:02:19.000Z:f1d5d6580aa8",
      "instrument": "energie",
      "label": "Energie Monitor",
      "observedAt": "2026-07-01T11:02:19.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-01T11:14:30.121Z",
      "value": 58,
      "rawValue": 58,
      "scale": 100,
      "level": "Tendu",
      "tone": "elevated",
      "sourceUrl": "https://energie.l0g.fr",
      "methodologyUrl": "https://l0g.fr/methodologie/energie/",
      "sourceSnapshotUrl": "https://l0g.fr/api/v1/risk.json",
      "calculatorRepo": null,
      "calculatorRevision": null,
      "snapshotHash": "f1d5d6580aa85af3e664d520a57452f379497772b40d733badfd8218c3932450",
      "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-01T11:02:19.000Z:6ab37d4f5e12",
      "instrument": "eu",
      "label": "EU Macro Dashboard",
      "observedAt": "2026-07-01T11:02:19.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-01T11:14:30.121Z",
      "value": 47,
      "rawValue": 47,
      "scale": 100,
      "level": "Modéré",
      "tone": "moderate",
      "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": "6ab37d4f5e12fb074ee9878c4691cab636f835fa0ea9f6d0cf0f4e134e3ac112",
      "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-01T11:02:19.000Z:ca0b26e040eb",
      "instrument": "us",
      "label": "US Macro Dashboard",
      "observedAt": "2026-07-01T11:02:19.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-01T11:14:30.121Z",
      "value": 58,
      "rawValue": 58,
      "scale": 100,
      "level": "Élevé",
      "tone": "elevated",
      "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": "ca0b26e040eb6123565bb832510e18aa501950d757eee564853b681de3a8ee24",
      "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-01T11:02:19.000Z:ea185dc24472",
      "instrument": "yen",
      "label": "Yen Carry Monitor",
      "observedAt": "2026-07-01T11:02:19.000Z",
      "sourcePublishedAt": null,
      "retrievedAt": null,
      "computedAt": "2026-07-01T11:14:30.121Z",
      "value": 41,
      "rawValue": 41,
      "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": "ea185dc24472a96790b8f7b3893a6d7fac35e75ca192df756533750176056660",
      "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."
      ]
    }
  ]
}
