Skip to content

Listing your submission forecast skill scores

Retrieve your submission skill scores and relative rank against other forecasters.

Scores are only available after the evaluation phase for the challenge has completed (it depends on measurement-data availability). For the methodology behind these scores, see Evaluation & Prizes.

API Endpoints

To interact with the Predico API and retrieve information about your submissions scores, you can use the following endpoints:

Access Token Required

An access token must be included in the Authorization header of your request. If you haven't obtained an access token yet, please refer to the Authentication section.

Retrieving your historical submissions:

Here's how you can retrieve the list your past submissions.

download_submissions_scores.py
# List your historical submissions:
response = requests.get(
    url=f"{API_URL}/market/challenge/submission",
    headers=headers,
    timeout=30
)

# Check if the request was successful
if response.status_code == 200:
    submissions = response.json()
else:
    print("Failed to retrieve submissions.")
    print(f"Status code: {response.status_code}")

For each submission, you can then retrieve the forecast skill scores:

download_submissions_scores.py
# Select a submission and respective challenge:
selected_submission = submissions["data"][0]
submission_id = selected_submission['id']
challenge_id = selected_submission['market_session_challenge']
print("Selected Submission:")
print(f"Submission ID: {submission_id}")
print(f"Challenge ID: {challenge_id}")

# Request the submission scores for the selected challenge
response = requests.get(
    url=f"{API_URL}/market/challenge/submission-scores",
    params={'challenge': challenge_id},
    headers=headers,
    timeout=30
)

# Check if the request was successful
if response.status_code == 200:
    submission_scores = response.json()
    print(submission_scores)
else:
    print("Failed to retrieve submission scores.")

Download Full Example

JSON Example Response

If the response is empty for a given day, double-check the challenge identifier you are requesting.

Which metrics count?

Rankings and prize distribution use rmse (Q50) and winkler (Q10/Q90). The response may include additional metrics (mae, pinball, …) for reference. See Evaluation & Prizes for methodology.

Daily-score rows and penalties

Daily scores are now per (target_day, horizon, metric, variable), aggregated across all of your submissions that physically covered the day. A row with is_penalty: true means your day failed qualification (Intraday slot-coverage failure or D+1/D+N session non-compliance) — your score for that day was substituted with the peer Q75 value. See Evaluation.

Click to view Example Response

json { "code": 200, "data": { "personal_metrics": [ { "submission": "41ccbb67-1612-4045-8674-671e7631777d", "variable": "q50", "metric": "rmse", "value": 54.162, "rank": 1, "total_participants": 3 }, { "submission": "b7f2c123-8821-4901-9abc-1234abcd5678", "variable": "q10", "metric": "winkler", "value": 120.445, "rank": 2, "total_participants": 3 } ], "general_metrics": [ { "submission__variable": "q50", "metric": "rmse", "avg_value": 511.077, "min_value": 54.162, "max_value": 1416.82, "std_value": 640.465 }, { "submission__variable": "q10", "metric": "winkler", "avg_value": 210.334, "min_value": 120.445, "max_value": 380.112, "std_value": 95.231 } ] }