Submitting a Continuous Forecast¶
Forecasters can submit their continuous forecasts through the API. Ensure that your data is formatted correctly and adheres to the guidelines provided in the documentation.
API Endpoints¶
To interact with the Predico API and submit your forecasts for a given target resource, you can use the following endpoints:
- POST
/api/v1/market/continuous-forecasts/{resource_id}- Publish your continuous forecast for a specific target resource.
Do not forget to fulfill the data requirements described in the Preparing a Continuous Forecast section.
Prerequisites
- Access Token: Ensure you have a valid access token. Refer to the Authentication section if needed.
- Prepared Forecast Data: Follow the Preparing a Continuous Forecast section to prepare your continuous forecast.
Submitting Forecast Data¶
After preparing your continuous forecast, submit it to the Predico platform.
In this example, we'll submit the random data generated in Preparing a Continuous Forecast section:
Before you submit
- Submit all three quantiles — Q10, Q50, Q90. Partial submissions are excluded from scoring and payment.
- Quantiles should satisfy Q10 ≤ Q50 ≤ Q90 at every timestamp.
- Use a 15-minute resolution with no gaps across the target range.
- All datetimes in UTC; timestamps must fall inside the window accepted by the endpoint (see API reference for exact bounds).
Series coverage and qualification
Predico slices your continuous series into per-session submissions at gate closure. For your day to qualify, the slice produced at each counting gate must be present (Intraday) and your series must reach into every opened D+1 / D+N session of the target day. See Evaluation.
Updating a forecast
Repeat the flow — the latest submission overwrites the previous one; the response will indicate updated records.
# Submit the forecasts:
for submission in submission_list:
response = requests.post(url=f"{API_URL}/market/continuous-forecasts/{resource_id}",
json=submission,
headers=headers,
timeout=30)
# Check if the request was successful
if response.status_code == 201:
print(f"Response: {response.json()}")
print(f"Forecast submission successful for {submission['variable']} quantile.")
else:
print(f"Failed to submit forecast for {submission['variable']} quantile.")
print(f"Status code: {response.status_code}")
print(f"Response: {response.content}")
Remember that these forecasts will be sliced (automatically) by Predico in order to create Session Forecast submissions for market sessions. At the gate-closure of each market session, your continuous forecast will be sliced and submitted as a Session Forecast. You can later list the submitted forecasts via the Listing Session Submissions section.
Checking your submission status¶
After submitting a continuous forecast, you can confirm whether it covers each challenge in the currently open session — without waiting for gate closure.
- GET
/api/v1/market/session/coverage- Per-challenge readiness for the currently open session.
The response lists every challenge in the open session and, for each one:
| Field | Meaning |
|---|---|
ready |
true when your forecasts fully cover that challenge window. |
source |
session_submission (an explicit per-challenge POST), continuous_forecast (this continuous series covers the window), or null if not covered. When both exist, session_submission wins. |
A challenge is ready only when all of the following hold:
- All three quantiles (Q10, Q50, Q90) are present.
- Values exist at every expected 15-minute timestamp in the challenge's
[start_datetime, end_datetime]window — no gaps.
If ready is false for a challenge you expected to cover, extend your
continuous series (or submit a session forecast directly) so that all three
quantiles span the full window at 15-minute resolution. The endpoint is scoped
to the calling forecaster — you only see your own status.