Skip to content
All competitions

Open, 16 days to goClimate tech · Data science · Predict + report · Part of Season 1: Four problems for the planet

Estimate the sun

Given the weather that happened, how much solar power came onto Great Britain's grid in each half-hour? The grid balances on this number.

Scored by
MAE
Lower is better
Score to beat
700.405
Train-period mean capacity factor for that month and half-hour × installed capacity
Entrants
9
5 uploads a day
Closes
29 Nov
23:59 UTC

Cash prizes for the top three. Amounts are announced on Monday 2 November 2026 and paid after the audit. Prizes need a beaten baseline, a filed solution report and a reproducible pipeline, see the rules and terms.

Overview

The problem. Great Britain has more than 20 GW of solar panels and almost none of them are metered by the grid. Every half-hour the system operator balances supply against a national estimate of solar output; the better the estimate, the less gas is burned holding reserve. PV_Live, from Sheffield Solar, is that estimate. Your job is the same one: given the weather that happened at twelve points across the country and the installed capacity at the time, estimate national solar generation in megawatts for every half-hour of the test year.

The data. Train: January 2022 to June 2025, 61,296 half-hours. Test: July 2025 to June 2026, 17,520 half-hours. Each row has the timestamp, PV_Live's installed capacity at the time, and NASA POWER hourly weather at twelve points: all-sky and clear-sky irradiance, temperature, cloud amount, wind and humidity. The target is PV_Live's national generation figure. Compute the sun's position from the timestamp yourself.

Scoring. Mean absolute error in megawatts, lower is better. Whole days of the test year are public (30%) or private (70%) so both splits cover every season; your standing is the private split.

Baselines (private split). Predicting the train-period mean capacity factor for that month and half-hour, times the day's capacity: 700 MW. A default gradient-boosted tree on the shipped columns: 279 MW. Beat the first for the badge; beat the second to be in the game.

Why it matters. Every megawatt the estimate misses is a megawatt of reserve someone pays for or a curtailment someone loses. The same skill runs solar forecasting, battery dispatch and grid planning everywhere in the world.

Marking rubric

Exactly how your points are worked out. Mark your own work against it before you file.

Out of 100 final points, 70 come from your score on the hidden test rows and 30 from your solution report, marked against the rubric below.

The metric

70 points

Scored with MAE (lower is better) on the private 70% of the test rows, which nobody sees until results. Your rank there becomes your points: first place earns the full 70, last place earns 0, and everyone between is spaced evenly by rank.

A score that does not beat the train-period mean capacity factor for that month and half-hour × installed capacity earns 0, whatever its rank. Ranks, not raw scores, so one runaway entry cannot squash the rest of the field.

points = 70 × (1 − (rank − 1) ÷ (entrants − 1))For example, 3rd of 21: 70 × (1 − 2 ÷ 20) = 63 points.

The report

30 points, 6 per criterion

Five criteria, equal weight. Each is marked at one of four levels, and every level is defined below, so you can mark your own draft before you file it. Three judges mark blind and independently; each criterion takes the middle mark of the three.

  1. Problem framing and impact

    6 points

    Who uses this estimate, what decision changes if it is better, and what an error costs them.

    0 · Absent0 pts
    No statement of who uses the estimate or why.
    1 · Developing2 pts
    Names the use but not the decision it changes.
    2 · Solid4 pts
    States the decision, the user and what a given error costs them.
    3 · Exemplary6 pts
    As 2, and quantifies the value of the improvement over the baseline in the user’s terms.
  2. Data understanding and validation

    6 points

    A validation design that mirrors the test split, with leakage risks named and handled.

    0 · Absent0 pts
    No validation design, or validates on the public leaderboard.
    1 · Developing2 pts
    Holds out data but the split can leak: random rows in a time series, or the same entity on both sides.
    2 · Solid4 pts
    A split that mirrors the test split; leakage risks named and handled.
    3 · Exemplary6 pts
    As 2, with evidence the local validation tracks the public score, and a data finding that changed the approach.
  3. Method and rigour

    6 points

    Choices justified, compared against both pinned baselines, failures reported honestly.

    0 · Absent0 pts
    No description, or a method with no justification.
    1 · Developing2 pts
    A reasonable method described, no comparison.
    2 · Solid4 pts
    Choices justified, compared against both pinned baselines, at least one thing that failed reported honestly.
    3 · Exemplary6 pts
    As 2, with an ablation or sensitivity check that shows which parts matter.
  4. Error analysis and limitations

    6 points

    Where the model is wrong and why, and what would go wrong if someone deployed it.

    0 · Absent0 pts
    No error analysis at all.
    1 · Developing2 pts
    Says errors exist, no pattern.
    2 · Solid4 pts
    Shows where the model fails (segments, conditions) and gives a plausible reason.
    3 · Exemplary6 pts
    As 2, and states the deployment risks: who is harmed if it is over-trusted, what would have to be monitored.
  5. Reproducibility and clarity

    6 points

    Code, environment and steps a reader could run; prose that is clear and within length.

    0 · Absent0 pts
    No code, or steps that cannot be followed.
    1 · Developing2 pts
    Code linked but steps incomplete or environment unstated.
    2 · Solid4 pts
    Code, environment and steps that a reader could run; prose is clear and within length.
    3 · Exemplary6 pts
    As 2, with fixed seeds, a one-command run, and results that match the report.

If two judges are more than one level apart on a criterion, a person marks it instead. Judge prompts, model ids and calibration figures are published with the results.

Medals and prizes

  • Final rank is by total points. Ties go to the better metric rank, then to whoever reached their score first.
  • With five or more entrants: gold for the top 10%, silver for the next 20%, bronze for the next 30%.
  • Every medal and prize needs a score that beats the baseline and a filed report.
  • At least the top ten are audited: we re-run your code from train.csv and the result has to match.

The full rules and terms apply to every entry.

Submission format

Two things to hand in: a predictions file, scored automatically, and a report, marked against the rubric.

Your predictions, as a CSV

Header
id,generation_mw. Column order does not matter; extra columns are ignored.
Rows
17,520 rows, one per id in test.csv. A missing id rejects the file and tells you which.
generation_mw
A number. Decimals are fine; no units, no thousands separators.
File
UTF-8, comma separated, up to 10 MB. sample_submission.csv is a valid starting point.
Limits
5 scored uploads a day (resets 00:00 UTC). A file that fails these checks is rejected with the reason and does not use one. Pick up to 2 for final scoring; pick none and your best public score is used.
submission.csvExample
id,generation_mw<first id in test.csv>,12.40<second id>,9.85<third id>,14.10…

Your solution report

Written in the editor on this page, in Markdown, 600 to 1,500 words. Use these five headings, in this order; each one maps to a rubric criterion.

  1. 1

    ## The problem and who it serves

    What decision changes if this estimate is better, for whom, and what an error costs them.

  2. 2

    ## Data and validation

    What you found in the data, how you built your own validation, what could leak and how you avoided it.

  3. 3

    ## Method

    What you built and why, what you tried that did not work, how it compares with the two pinned baselines.

  4. 4

    ## Error analysis and limitations

    Where the model is wrong and why; the risks if someone deployed it: fairness, safety, over-trust.

  5. 5

    ## Reproducibility

    Link to the code, the environment, the exact steps to regenerate your predictions from train.csv.

Code link, required

A public repository or notebook URL. The audit runs it from train.csv to regenerate your predictions.

AI use, declared

  • Human: no AI assistance
  • AI-assisted: I used AI tools and made the decisions
  • Autonomous: an agent produced the submission

Save a draft as often as you like. The panel marks what is there at close; a report counts as filed once it is submitted or reaches 600 words.

Leaderboard

9 entrants, best public score each. The baseline and our reference model are pinned where their scores fall.

Public leaderboard, best score per entrant on the public 30% of test rows
RankEntrantUploadsBest score
1dhruval8134.313
2Jiahao Cao7135.288
3bruno11137.404
4MoFarina6139.875
5Joty2142.075
6ShinjiNakasaki1147.062
7DanielSolaris1174.031
8AlexCChristou1175.570
Default gradient-boosted tree on the shipped weather, capacity and the calendarour reference model279.183
Train-period mean capacity factor for that month and half-hour × installed capacitybaseline to beat700.405

Scored on the public 30% of the test rows while the competition runs. Final standings use the other 70%, so a public lead is not a final one. The two reference rows are scored on those final rows.

Data

Columns in the data files
ColumnWhat it holds
idRow id (one per half-hour). Use it in your submission.
datetime_utcStart of the half-hour, UTC. Derive hour, day of year, sun position and daylight-saving from it yourself.
installed_capacity_mwpGB installed PV capacity in MWp at that time (PV_Live's estimate). It grows through the window.
<point>_ghiAll-sky surface shortwave downward irradiance for that hour at the point, Wh/m² (NASA POWER). Twelve points: london, birmingham, manchester, leeds, bristol, norwich, southampton, plymouth, cardiff, newcastle, glasgow, edinburgh.
<point>_clearskyClear-sky irradiance for the same hour, Wh/m², what the sun would give with no cloud.
<point>_temp_cAir temperature at 2 m, °C.
<point>_cloud_pctCloud amount, %.
<point>_wind_msWind speed at 10 m, m/s.
<point>_rh_pctRelative humidity at 2 m, %.
generation_mw predict thisTarget. GB solar generation in MW for the half-hour, PV_Live's national estimate (train only).

Sign in to download train.csv, test.csv and sample_submission.csv.

Sources and licences

Split. January 2022 to June 2025 is train; July 2025 to June 2026 is test. Within the test year, whole days are public (30%) or private (70%) by a hash of the date, so both splits cover every season and no half-hour has a neighbour in the other split.

Changes made. PV_Live half-hours joined to the NASA POWER hour that contains them (both half-hours of an hour carry that hour's weather); NASA missing values (-999) blanked; rows shuffled and given opaque ids; the target removed from the test file.

Withheld. Nothing beyond the target for the test year.

Rows: train 61,296, test 17,520 (public 5,280, private 12,240).

Artefact audit passed

  • No duplicate rows across train and test. 0 of 17520 test rows have an identical feature row in train
  • 1-NN does not beat the honest model. 1-NN mae 483.8332 vs honest 282.4693
  • No single feature encodes the target. strongest |corr| 0.954 (birmingham_ghi)
  • Row order is uncorrelated with the target. spearman(row index, target) = 0.006
  • The id does not encode the target. spearman(id number, target) = 0.004

Half-hourly weather does not exist in NASA POWER; the hourly value is repeated for both half-hours. The datetime is the feature the sun's position hangs on, compute solar elevation from it.

Timeline

  1. OpensMon, 5 Oct 2026(done)

    Data released; uploads accepted.

  2. Mid-pointMon, 2 Nov 2026(done)

    Prize pool announced.

  3. ClosesSun, 29 Nov 2026

    Reports and selections are frozen. The last 48 hours are a quiet period.

  4. ResultsMon, 7 Dec 2026

    Private standings, medals and the marking pack. Seven days to appeal.

Rules

  1. One entry per person; your handle is fixed once you join. Entering means you accept the competition rules and terms.
  2. Up to 5 submissions a day (resets 00:00 UTC). Select up to 2 for final scoring; if you select none, your best public score's file is used.
  3. Train on the shipped data only. No external data beyond what the data card lists, and never the withheld targets from any source, looking them up is disqualification.
  4. Your solution report (30% of your points) is written on this page and graded as it stands at close. Medals and prizes need a filed report and a beaten baseline; the top ten are audited by re-running their code from train.csv.
  5. Sharing code or ideas publicly is fine; sharing a submission file is not (identical files are detected). One account per person. Text aimed at the grader scores zero.
  6. The final 48 hours are the quiet period: the public board freezes for viewers while you still see your own scores. Results are published once, after the audit, and are final subject to appeal.

The full competition terms apply to every entry.

Read the brief, then enter.

Free with a student account. The brief and the public leaderboard need no account.