Curtailment simulation
Background
A curtailed asset cannot sell the electricity it would have produced, so curtailment has a significant impact on asset revenue. Simulating future curtailment involves two questions: how much curtailment a plant will have, and when it will happen.
The amount depends on many factors, such as the solar capacity installed in a zone, interconnection and distribution capacity, and the availability of storage. To estimate it, Tensor Cloud uses a curtailment rate for each grid area and fiscal year, expressed as a share of annual solar generation. The default rates come from the long-term curtailment outlook that METI's grid working group published in August 2026: each TSO's forecast for FY2026 and METI's outlook for FY2035, which assumes that FIP plants have co-located storage of 3 kWh per kW. Rates between the given years are interpolated linearly, and the nearest given rate is held before the first and after the last. You can change these rates in the scenario assumptions.
For the timing, we combine heuristics with a statistical model to select the days and hours of curtailment for each plant, given the total for each year.
Calculation logic
Day probability
Curtailment days are chosen in two stages.
First, when the price forward curves of a scenario are generated, an area curtailment curve is generated with them for each grid area. Each day of a year receives a weight
where is the day-ahead price in JPY/kWh, is the day's maximum temperature in °C at a reference location in the area, and is 2 on Saturdays and Sundays and 1 otherwise. Weekends and days with very low prices or mild temperatures, as in spring and autumn, are therefore the most likely. Days are drawn at random according to these weights, each at most once, and each drawn day is curtailed from 9:00 to 16:00 at a level drawn from a distribution, where is the area's curtailment rate for the year, until the area reaches its rate.
Second, for each plant, the (non-normalized) probability of a day having curtailment is
where is the daily mean of the area curtailment curve and the minimum is taken over the days of the same fiscal year, so that every day keeps a small chance of being curtailed. If the area curve has no curtailment in a fiscal year, the plant is not curtailed in that year.
Parametrization
When a day is curtailed, a simple statistical model based on historical data sets the start and end hour. For each grid area, we use the full history of hourly solar output and curtailed solar output reported by the TSO, and keep the days with curtailment, defined as days whose hourly curtailed shares add up to more than 1%. The probability of hour being a start hour in month is the share of those days in month on which curtailment started at hour . Similarly, is the share on which hour was the first hour after curtailment ended.
If an area has 20 or fewer days with curtailment, or a calendar month without any, the statistics for Japan as a whole are used instead. The statistics are recalculated every month together with each new base curve version, and a simulation uses the statistics of the base curve version selected in its scenario.
Calculation
Assuming that the curtailment rate for fiscal year (April to March) is , and is the plant's simulated AC generation in 30-minute slot :
for each fiscal year Y: # target: a share of the plant's own generation # initialize curtailment for the plant this year order the days of Y by drawing them at random without replacement, with probability for each day in that order, up to 365 days: stop if draw from and from independently, for the month of
A few properties follow from this procedure:
- A curtailed slot cannot export any generation, but a co-located battery can still store part of it (see battery simulation).
- When the drawn end hour is not after the start hour, the day is used up without any curtailment.
- The last event of a year can take curtailment above the target.
- The random sequence is fixed by the asset's location, so the same inputs always produce the same curtailment.
- Each exceedance scenario is curtailed separately, based on its own scaled generation.