API · v1 · read only

Data API

The portal's own figures from a script: reports with their n, the day brief, the week ahead, weekly positioning and calendar effects. Read only, in JSON.

What it carries and what it does not

Only size, frequency, time and distance, each figure with its sample (n). There are no prices or quotes, no likely direction or advice on what to trade, and no signals.

Your personal key

The key is created in My account, inside the portal, and sent with every request. It is shown once; regenerating or revoking it cuts the old one at once.

Included from the Trader plan, also during the 14-day free trial.

See plans

Base URL and authentication

https://cerebro-dalton-platform-api.onrender.com

Send the key in the Authorization: Bearer <key> header (X-API-Key is accepted too). Every answer is JSON.

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/whoami"

Rate limit

60 requests every 60 minutes per key, shared by every endpoint. Each data answer carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (seconds).

Endpoints

In the examples, each list shows its first two items and long objects their first fields.

GET/v1/whoami

Your account and plan: use it to check the key. It does not count against the limit.

Parameters

No parameters.

Request

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/whoami"
Response (real example, trimmed)
{
  "email": "tu@correo.com",
  "tier": "trader",
  "has_reports_access": true
}

GET/v1/reports/{instrument}

Every report of a market (id, n, date range, table and notes), plus the retired ones with their replacement.

Parameters

  • instrument (path, required) · ES

Request

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/reports/ES"
Response (real example, trimmed)
{
  "instrument": "ES",
  "reports": [
    {
      "report_name": "adx_regime_filter",
      "instrument": "ES",
      "n_classified": 4187,
      "sample_size": 4187,
      "date_range": [
        "2010-06-07",
        "2026-10-16"
      ],
      "adx_period": 14,
      "...": "5 more fields"
    },
    {
      "report_name": "gap_fill_by_weekday",
      "instrument": "ES",
      "source_file": "historical market data",
      "date_range": [
        "2010-06-07",
        "2026-10-16"
      ],
      "sample_size": 4213,
      "caveats": [
        "Historical futures data with UTC timestamps (no broker-timezone ambiguity). Continuous series built with a highest-volume-contract roll rule per exchange tra...",
        "Gap of exactly 0.0 between consecutive days is excluded from n.",
        "... 2 more"
      ],
      "...": "3 more fields"
    },
    "... 108 more"
  ],
  "retired": {
    "afternoon_ib_first_extreme_by_weekday": {
      "since": "2026-10-11",
      "replacement": "ib_single_double_break_by_weekday",
      "reason": {
        "es": "El IB de la tarde (14:00-16:00 ET) no registra ningún caso en los mercados que lo calculan (n=0 en ES, NQ, GC y ZN), así que no hay cifra que mostrar.",
        "en": "The afternoon IB (14:00-16:00 ET) has no cases in the markets that compute it (n=0 in ES, NQ, GC and ZN), so there is no figure to show.",
        "pt": "O IB da tarde (14:00-16:00 ET) não registra nenhum caso nos mercados que o calculam (n=0 em ES, NQ, GC e ZN), portanto não há número a mostrar."
      }
    },
    "orb_ib_confluence": {
      "since": "2026-10-11",
      "replacement": "orb_variants_by_weekday",
      "reason": {
        "es": "La condición (el rango de apertura y el IB rompen hacia el mismo lado) usa un hecho que solo se conoce completo al cierre, de modo que el 90,9% de ES (n=1.62...",
        "en": "The condition (opening range and IB break the same side) uses a fact that is only fully known at the close, so the 90.9% on ES (n=1,627) is largely construct...",
        "pt": "A condição (o range de abertura e o IB rompem para o mesmo lado) usa um fato que só é conhecido por completo no fechamento, de modo que os 90,9% do ES (n=1.6..."
      }
    },
    "session_range_by_weekday": {
      "since": "2026-10-11",
      "replacement": "range_vs_adr_by_weekday",
      "reason": {
        "es": "El promedio en puntos de toda la historia subestima el rango actual: en ES, sesión de Nueva York, declaraba 23,2 puntos y fuera de muestra (desde 2022) fuero...",
        "en": "The all-history average in points understates today's range: for the ES New York session it stated 23.2 points and out of sample (from 2022) it was 60.1; the...",
        "pt": "A média em pontos de todo o histórico subestima o range atual: no ES, sessão de Nova York, declarava 23,2 pontos e fora da amostra (desde 2022) foram 60,1; a..."
      }
    },
    "opening_range_breakout_standard": {
      "since": "2026-10-11",
      "replacement": "orb_variants_by_weekday",
      "reason": {
        "es": "Responde la misma pregunta que «Rango de apertura: 5, 15 o 30 minutos» con 130 sesiones en vez de unas 4.200, es decir, con intervalos unas cinco veces más a...",
        "en": "It answers the same question as \"Opening range: 5, 15 or 30 minutes\" with 130 sessions instead of about 4,200, i.e. with intervals roughly five times wider.",
        "pt": "Responde à mesma pergunta que «Range de abertura: 5, 15 ou 30 minutos» com 130 sessões em vez de cerca de 4.200, ou seja, com intervalos cerca de cinco vezes..."
      }
    },
    "power_hour_breakout_standard": {
      "since": "2026-10-11",
      "replacement": "power_hour_new_extreme_by_weekday",
      "reason": {
        "es": "Responde la misma pregunta que «Última hora: ¿marca nuevo máximo o mínimo?» con 126 sesiones en vez de la historia completa.",
        "en": "It answers the same question as \"Last hour: new high or low?\" with 126 sessions instead of the full history.",
        "pt": "Responde à mesma pergunta que «Última hora: marca nova máxima ou mínima?» com 126 sessões em vez do histórico completo."
      }
    },
    "profile_shape_by_weekday": {
      "since": "2026-10-11",
      "replacement": "value_area_extension_by_weekday",
      "reason": {
        "es": "Fuera de muestra la forma del perfil no anticipó la sesión siguiente mejor que la tasa de cualquier día (ES tras un perfil en P: 55,1% declarado, 49,6% obser...",
        "en": "Out of sample the profile shape did not anticipate the next session better than the any-day rate (ES after a P-shaped profile: 55.1% stated, 49.6% observed).",
        "pt": "Fora da amostra a forma do perfil não antecipou a sessão seguinte melhor que a taxa de qualquer dia (ES após um perfil em P: 55,1% declarado, 49,6% observado)."
      }
    },
    "bid_ask_spread_by_weekday": {
      "since": "2026-10-11",
      "replacement": null,
      "reason": {
        "es": "El promedio agrupa por fecha UTC sobre 24 horas y el viernes no tiene reapertura nocturna, por lo que su spread baja solo (ES: -13,2% frente a lunes-jueves e...",
        "en": "The average groups by UTC date over 24 hours and Friday has no evening reopen, so its spread drops by construction (ES: -13.2% against Monday-Thursday over a...",
        "pt": "A média agrupa por data UTC em 24 horas e a sexta-feira não tem reabertura noturna, por isso seu spread cai sozinho (ES: -13,2% frente a segunda-quinta em to..."
      }
    }
  }
}

GET/v1/reports/{instrument}/{report_id}

One report by its id (the report_name of the list above). A retired report answers 410.

Parameters

  • instrument (path, required) · ES
  • report_id (path, required) · gap_fill_by_weekday

Request

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/reports/ES/gap_fill_by_weekday"
Response (real example, trimmed)
{
  "report_name": "gap_fill_by_weekday",
  "instrument": "ES",
  "source_file": "historical market data",
  "date_range": [
    "2010-06-07",
    "2026-10-16"
  ],
  "sample_size": 4213,
  "caveats": [
    "Historical futures data with UTC timestamps (no broker-timezone ambiguity). Continuous series built with a highest-volume-contract roll rule per exchange tra...",
    "Gap of exactly 0.0 between consecutive days is excluded from n.",
    "... 2 more"
  ],
  "breakdown": {
    "Mon": {
      "gap_up": {
        "n": 388,
        "filled": 303,
        "fill_pct": 78.1
      },
      "gap_down": {
        "n": 387,
        "filled": 323,
        "fill_pct": 83.5
      }
    },
    "Tue": {
      "gap_up": {
        "n": 323,
        "filled": 312,
        "fill_pct": 96.6
      },
      "gap_down": {
        "n": 382,
        "filled": 373,
        "fill_pct": 97.6
      }
    },
    "Wed": {
      "gap_up": {
        "n": 293,
        "filled": 285,
        "fill_pct": 97.3
      },
      "gap_down": {
        "n": 382,
        "filled": 369,
        "fill_pct": 96.6
      }
    },
    "Thu": {
      "gap_up": {
        "n": 333,
        "filled": 324,
        "fill_pct": 97.3
      },
      "gap_down": {
        "n": 370,
        "filled": 356,
        "fill_pct": 96.2
      }
    },
    "Fri": {
      "gap_up": {
        "n": 296,
        "filled": 280,
        "fill_pct": 94.6
      },
      "gap_down": {
        "n": 380,
        "filled": 369,
        "fill_pct": 97.1
      }
    }
  },
  "recent_window_days": 90,
  "recent_breakdown": {
    "Mon": {
      "gap_up": {
        "n": 7,
        "filled": 6,
        "fill_pct": 85.7
      },
      "gap_down": {
        "n": 4,
        "filled": 2,
        "fill_pct": 50
      }
    },
    "Tue": {
      "gap_up": {
        "n": 8,
        "filled": 8,
        "fill_pct": 100
      },
      "gap_down": {
        "n": 4,
        "filled": 4,
        "fill_pct": 100
      }
    },
    "Wed": {
      "gap_up": {
        "n": 9,
        "filled": 9,
        "fill_pct": 100
      },
      "gap_down": {
        "n": 4,
        "filled": 4,
        "fill_pct": 100
      }
    },
    "Thu": {
      "gap_up": {
        "n": 9,
        "filled": 9,
        "fill_pct": 100
      },
      "gap_down": {
        "n": 4,
        "filled": 4,
        "fill_pct": 100
      }
    },
    "Fri": {
      "gap_up": {
        "n": 7,
        "filled": 7,
        "fill_pct": 100
      },
      "gap_down": {
        "n": 6,
        "filled": 6,
        "fill_pct": 100
      }
    }
  }
}

GET/v1/day-brief/{root}

The facts of the day brief for the next session: expected size, scheduled releases (New York time) and context, without prices.

Parameters

  • root (path, required) · ES

Request

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/day-brief/ES"
Response (real example, trimmed)
{
  "v": 1,
  "root": "ES",
  "session": "2026-10-19",
  "data_through": "2026-10-16",
  "today": "2026-10-17",
  "when": "next",
  "contract": "ESZ6",
  "tick": 0.25,
  "size": {
    "source": "model",
    "points": 62,
    "normal_points": 66.25,
    "vs_normal": 0.94,
    "class": "normal",
    "band70": [
      41,
      93.5
    ],
    "band90": [
      31.25,
      125
    ],
    "n_band": 3668,
    "degraded": false,
    "family": "blend_slope",
    "typical_error_pct": 28,
    "scoreboard": {
      "n": 250,
      "from": "2025-10-29",
      "to": "2026-10-16",
      "cover70_pct": 72,
      "cover90_pct": 90.4,
      "typical_error_pct": 28
    },
    "out_of_sample": {
      "n": 2781,
      "from": "2016-01-04",
      "to": "2026-10-16",
      "cover70_pct": 69.4,
      "cover90_pct": 89.6,
      "typical_error_pct": 26.1
    }
  },
  "events": [],
  "chips": [
    {
      "key": "mon",
      "mult": 0.9,
      "ci95": [
        0.85,
        0.95
      ],
      "n": 831,
      "distinct": true
    }
  ],
  "headline_event": {
    "kind": "chip",
    "chip": {
      "key": "mon",
      "mult": 0.9,
      "ci95": [
        0.85,
        0.95
      ],
      "n": 831,
      "distinct": true
    }
  },
  "where": {
    "daily": {
      "state": "balance",
      "sessions": 2
    },
    "picture": {
      "sessions": 20,
      "value": "below",
      "range_pct": 13
    },
    "weekly_state": "balance",
    "source": "panorama"
  },
  "context": {
    "week": {
      "from": "2026-10-12",
      "to": "2026-10-16",
      "exceeds_high_pct": 64,
      "exceeds_low_pct": 40.5,
      "n": 852
    }
  },
  "hour": null,
  "as_of": {
    "session": "2026-10-16",
    "data_through": "2026-10-16",
    "state": "complete"
  },
  "energy_report": null
}

GET/v1/week-ahead/{root}

The week of a market: scheduled releases, calendar effects in force and positioning context.

Parameters

  • root (path, required) · ES

Request

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/week-ahead/ES"
Response (real example, trimmed)
{
  "v": 1,
  "root": "ES",
  "today": "2026-10-17",
  "week": {
    "monday": "2026-10-19",
    "from": "2026-10-19",
    "to": "2026-10-23",
    "days": [
      "2026-10-19",
      "2026-10-20",
      "... 3 more"
    ],
    "upcoming": true,
    "partial": false,
    "pending": []
  },
  "size_measured": true,
  "events": [
    {
      "date": "2026-10-22",
      "weekday": 3,
      "time_et": "08:30",
      "key": null,
      "name": "Initial Jobless Claims",
      "importance": "media",
      "...": "9 more fields"
    }
  ],
  "headline_event": {
    "kind": "none"
  },
  "calendar": {
    "family": {
      "declared": 86,
      "tested": 86,
      "survivors": 4,
      "q": 0.1
    },
    "registered_on": "2026-10-12",
    "data_through": "2026-10-16",
    "held": [],
    "held_mine": [],
    "active": [
      {
        "effect": "gold_month",
        "variant": "m10",
        "start": "2026-10-01",
        "end": "2026-10-30",
        "sessions": 22,
        "markets": {
          "se_sostiene": [],
          "indeciso": [],
          "no_se_sostiene": [
            "GC"
          ]
        },
        "...": "1 more fields"
      },
      {
        "effect": "vol_index_expiry",
        "variant": null,
        "start": "2026-10-20",
        "end": "2026-10-21",
        "sessions": 2,
        "markets": {
          "se_sostiene": [],
          "indeciso": [],
          "no_se_sostiene": [
            "ES",
            "NQ",
            "... 2 more"
          ]
        },
        "...": "1 more fields"
      },
      "... 1 more"
    ],
    "folded": {
      "groups": 3,
      "indeciso": 0,
      "no_se_sostiene": 6
    }
  },
  "positioning": {
    "report_date": "2026-10-13",
    "published": "2026-10-16",
    "markets": 29,
    "at_extreme": 5,
    "extremes": [
      {
        "instrument": "YM",
        "family": "indices",
        "report": "tff",
        "group": "leveraged",
        "index": 100,
        "side": "long",
        "...": "3 more fields"
      },
      {
        "instrument": "6E",
        "family": "fx",
        "report": "tff",
        "group": "leveraged",
        "index": 0,
        "side": "short",
        "...": "3 more fields"
      },
      "... 1 more"
    ],
    "mine": {
      "instrument": "ES",
      "family": "indices",
      "report": "tff",
      "group": "leveraged",
      "index": 37.9,
      "side": null,
      "...": "3 more fields"
    },
    "evidence": {
      "oos_start": "2022-01-01",
      "tests": 58,
      "holds": 2,
      "markets": 29,
      "n": 514,
      "rank": [
        {
          "group": "managed_money",
          "rho": -0.027,
          "ci95": [
            -0.185,
            0.132
          ],
          "n": 180
        },
        {
          "group": "leveraged",
          "rho": -0.024,
          "ci95": [
            -0.141,
            0.093
          ],
          "n": 334
        }
      ],
      "...": "1 more fields"
    }
  },
  "flows": {
    "auctions": [
      {
        "date": "2026-10-21",
        "weekday": 2,
        "time_et": "13:00",
        "tenor": "20y",
        "reopening": true,
        "market": "ES",
        "...": "4 more fields"
      }
    ],
    "london_fix": null,
    "energy": [
      {
        "report": "crude_inventories",
        "market": "CL",
        "date": "2026-10-21",
        "weekday": 2,
        "time_et": "10:30",
        "window_et": "10:30-11:00",
        "...": "8 more fields"
      },
      {
        "report": "gas_storage",
        "market": "NG",
        "date": "2026-10-22",
        "weekday": 3,
        "time_et": "10:30",
        "window_et": "10:30-11:00",
        "...": "8 more fields"
      }
    ]
  },
  "roll": [
    {
      "root": "ZS",
      "from": "ZSX6",
      "to": "ZSF7",
      "estimated_roll_date": "2026-10-21",
      "status": "in_progress",
      "in_week": true,
      "...": "1 more fields"
    },
    {
      "root": "NG",
      "from": "NGX26",
      "to": "NGZ26",
      "estimated_roll_date": "2026-10-23",
      "status": "in_progress",
      "in_week": true,
      "...": "1 more fields"
    }
  ],
  "week_range": {
    "half_width": 178.5,
    "inside_pct": 81.7,
    "ci95": [
      79,
      84.1
    ],
    "n": 852,
    "tick": 0.25,
    "data_through": "2026-10-16"
  },
  "as_of": {
    "session": "2026-10-16",
    "data_through": "2026-10-16",
    "state": "complete"
  }
}

GET/v1/cot/{instrument}

The latest weekly positioning reading: nets by group, weekly change and one-year percentile.

Parameters

  • instrument (path, required) · ES

Request

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/cot/ES"
Response (real example, trimmed)
{
  "instrument": "ES",
  "report_date": "2026-10-13",
  "commercial_net": -602358,
  "non_commercial_net": -408726,
  "non_commercial_net_change_1w": 6361,
  "non_commercial_net_percentile_1y": 42.3,
  "commercial_net_change_1w": -1517,
  "cot_index": 64.2,
  "cot_index_weeks": 156,
  "extremes_index": 32.7,
  "extremes_index_weeks": 156,
  "extremes_index_signal": "sin_extremo",
  "asset_manager_net": 915835,
  "asset_manager_net_change_1w": 9220,
  "asset_manager_net_percentile_1y": 32.7,
  "asset_manager_cot_index": 62.5,
  "asset_manager_cot_index_weeks": 156,
  "total_open_interest": 1931607,
  "open_interest_change_1w": -620
}

GET/v1/calendar-effects

The calendar effects declared beforehand, measured per market and period, with the false-discovery control and the next windows.

Parameters

  • market (query, optional) · ES
  • days (query, optional) · 30

Request

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/calendar-effects?market=ES&days=30"
Response (real example, trimmed)
{
  "version": 1,
  "registered_on": "2026-10-12",
  "data_through": "2026-10-16",
  "family": {
    "declared": 86,
    "tested": 86,
    "survivors": 4,
    "q": 0.1,
    "uncorrected": 14,
    "expected_by_chance": 4.3,
    "method": "benjamini_hochberg"
  },
  "verdicts": {
    "se_sostiene": 4,
    "indeciso": 8,
    "no_se_sostiene": 74
  },
  "costs": "USD 4.50 per round turn + 1 tick per side, in % of notional; one more round turn per contract change inside the window",
  "periods": [
    "full",
    "2016+",
    "... 2 more"
  ],
  "effects": [
    {
      "key": "turn_of_month",
      "order": 1,
      "markets": [
        "ES",
        "NQ",
        "... 3 more"
      ],
      "variants": [],
      "unit": "bp_day",
      "weekly": false,
      "...": "4 more fields"
    },
    {
      "key": "month_end_treasuries",
      "order": 2,
      "markets": [
        "ZT",
        "ZF",
        "... 2 more"
      ],
      "variants": [],
      "unit": "bp_day",
      "weekly": false,
      "...": "4 more fields"
    },
    "... 11 more"
  ],
  "rows": [
    {
      "effect": "turn_of_month",
      "market": "ES",
      "variant": null,
      "unit": "bp_day",
      "weekly": false,
      "measured": true,
      "...": "9 more fields"
    },
    {
      "effect": "pre_holiday",
      "market": "ES",
      "variant": null,
      "unit": "bp_day",
      "weekly": false,
      "measured": true,
      "...": "9 more fields"
    },
    "... 7 more"
  ],
  "today": "2026-10-17",
  "upcoming_days": 30,
  "upcoming": [
    {
      "effect": "vol_index_expiry",
      "variant": null,
      "start": "2026-10-20",
      "end": "2026-10-21",
      "sessions": 2,
      "active": false,
      "...": "3 more fields"
    },
    {
      "effect": "pre_fomc",
      "variant": null,
      "start": "2026-10-27",
      "end": "2026-10-28",
      "sessions": 2,
      "active": false,
      "...": "3 more fields"
    },
    "... 4 more"
  ]
}

Error codes

{ "detail": "..." }

  • 401 Missing, invalid or revoked key.
  • 403 Your plan does not include the API.
  • 404 No data for that market or id.
  • 410 Retired report; the answer names its replacement.
  • 422 Parameter out of range (for example days above 120).
  • 429 Hourly limit used up; the Retry-After header says how many seconds to wait.

OpenAPI schema

The OpenAPI 3 document of these endpoints, with their response models, is requested with the same key:

curl -H "Authorization: Bearer YOUR_KEY" \
  "https://cerebro-dalton-platform-api.onrender.com/v1/openapi.json"

The same document, without a key, as a static file: openapi.json (OpenAPI 3)

Delay and licence

  • End-of-day data: every answer reads through the market's last complete session (the as_of field) and is rebuilt every night. There are no real-time prices.
  • For your personal use: do not redistribute or resell the data. These are descriptive historical statistics, with their n; not an investment or trading recommendation.

Versioning

/v1 stays backward compatible: new fields may appear, but no field is renamed or removed. A change that breaks the shape of an answer will go to /v2, announced first in the changelog, and /v1 keeps working meanwhile.