WindSolar StudioForecast · Trade · Store · Assess
No site selected

Pick a site, choose dates, press Update forecast

Four global weather models (ECMWF, GFS, ICON, Météo-France) and up to three ensembles are converted to wind-farm and PV power for any location on Earth — free, no account.

Wind farm power

MW · band = ensemble P10–P90

Solar PV power

MW · band = ensemble P10–P90

Hub-height wind speed

m/s per model

Daily energy

MWh, P50 with P10–P90

Combination forecast

Weather models are good in different situations. The weight of each model is learned from its past error separately for each weather situation (wind: low wind / power-curve slope / high wind; solar: clear / broken / overcast) using weights ∝ (1/MSE)p, where the sharpness p is chosen on held-out data, and the spread of past errors in that situation gives a situation-dependent uncertainty band. The latest measurement then corrects the first hours, with the error decaying as e−Δt/τ.

Combination forecast

MW
Press Update forecast in the sidebar — the combination is computed automatically.

Model weights per weather situation

share of the combination
Weights appear after learning.

With the ERA5 reference the weights show which model agrees best with the reanalysis at this site; with your measurements they reflect real plant skill.

Test-period skill

last 30 % of the training window, not used for learning

Skill appears after learning.

Manual weights

Short-term correction

latest measured output

Time empty = the current hour. If measurements are loaded in the Evaluate tab and overlap the period, the most recent one is used automatically.

Weather warnings for operation and trading

Each hour is checked in every weather model (and, for storms, every ensemble member). The share of scenarios that meet a rule sets the level: ! Watch ≥ 15 % !! Warning ≥ 40 % ⛔ Severe ≥ 70 %. Updates automatically with every forecast.

Risk timeline

hover a cell for details

Run a forecast first.

Active warnings

Situational report

Availability and curtailment forecast

Two versions of the forecast: technically possible feed-in (weather potential minus outages, maintenance and scheduled shutdowns) and real feed-in (additionally grid restrictions and market-driven curtailment at low or negative day-ahead prices).

Maintenance & grid restriction plan

Maintenance: MW unavailable. Grid restriction: maximum export (MW) for the whole plant during the window. Saved in this browser.

Scheduled shutdowns (wind)

Active only when the sun is in that sector and it is sunny (GHI > 60 % of clear sky).

Market & grid

Weather-driven (PV)

Wind: potential vs technically possible vs real feed-in

MW, P50

Solar: potential vs technically possible vs real feed-in

MW, P50

Energy lost by cause

Optimal day-ahead offer

Revenue for offer q and production p: R(q) = λDq + λ↓(p−q)+ − λ↑(q−p)+. Maximising the expected revenue over the forecast distribution gives the newsvendor solution: offer the τ* = (λD−λ↓)/(λ↑−λ↓) quantile. Quantile forecasts (pinball loss) are therefore the right tool, not the MSE-optimal mean.

Offers vs forecast uncertainty

MW per hour

Day-ahead price

€/MWh

Expected revenue vs offer

Strategy comparison

expected revenue over all scenarios and hours

Battery scheduling with dynamic programming

State = state of charge (SoC), action = charge / idle / discharge, reward = price × energy − degradation. The optimal schedule is found by backward induction of the Bellman equation Vt(s) = maxa [ rt(s,a) + Vt+1(s′) ] over the selected period.

State of charge

MWh

Charge (−) / discharge (+)

MW at the grid connection

Lecture MDP: battery with a Markov price

The exercise from the MDP lecture: prices switch between two levels as a Markov chain. Solved for the infinite-horizon discounted value V*(s) = maxa[R(s,a) + γ Σ Psa(s′)V*(s′)] with both value iteration and policy iteration.

Optimal policy π*(s)

Value-iteration convergence

max |Vk+1 − Vk|

Evaluate forecasts against your measurements and learn a better model

Upload hourly plant data (CSV with time in UTC and power_mw, or wind_power_mw/solar_power_mw). The app downloads the archived forecasts for the same hours and compares: raw physical model → ridge regression with polynomial features (λ and degree chosen by blocked cross-validation) → decision-focused learning (linear offer trained to maximise revenue, not accuracy).

Test-period error

MAE penalises all errors equally; RMSE penalises large errors more — report both

Validation curve

blocked 5-fold CV RMSE vs ridge λ

Learned power curve

measured vs forecast, test period

Test period time series

MW

Site assessment and representative days

A full year of ERA5 reanalysis is converted to hourly capacity factors. Each day becomes a 48-value vector (24 h wind + 24 h solar) and k-means groups them into representative days, each weighted by the number of days it represents — the input format of capacity-expansion models.

Monthly capacity factor

%

Elbow plot

within-cluster sum of squares vs k

Representative days — wind

capacity factor by hour (site time)

Representative days — solar

capacity factor by hour (site time)

Power curve

per turbine, standard vs site air density

Hub-height wind distribution

% of hours, with Weibull fit

Annual energy production (AEP)

selected year

Other uncertainty covers power-curve, loss and reanalysis-bias uncertainty (typically 6–10 %).

Inter-annual variability

net wind AEP per ERA5 year

Duration curve check

full year vs weighted representative days (wind)

Clusters