## Before trusting a curve, ask what job it is doing.

An observed line connects measurements. A fitted line compresses the past into a few parameters. A forecast extends that model beyond the observations used to fit it. The shapes can look similar, but the claims are very different.

### Observation

A recorded share at a stated date. Connecting the points helps reading; it does not turn the gaps into new observations.

Example: Country histories and German registrations.

### Fitted function

A mathematical shape chosen to describe available observations. Its parameters are estimates or, in the teaching laboratory, explicit illustrative inputs.

Example: Logistic and Gompertz shapes.

### Frozen forecast

A prediction made without using later target observations. Its usefulness is judged against what happened and a simple benchmark.

Example: German December-origin forecasts.

### Diagnostic profile

The fit obtained as one parameter is varied. The horizontal axis is a parameter, not time; lower loss does not mean higher probability.

Example: The saturation-ceiling inspection.

### Conditional scenario

What the stock-flow arithmetic implies if stated assumptions hold. Changing an assumption changes the result, not the historical evidence.

Example: The 2026–2040 fleet paths.

### Reader sketch

Your proposed continuation of a historical path, or a labeled starter. It is compared with the record only after an explicit reveal.

Example: The five-year drawing exercise.

## The five forecasting models

### Naive benchmark

Annual: next share = last observed share

For annual data, repeat the last share. For monthly data, repeat the last twelve-month cycle. The monthly benchmark therefore allows seasonality without estimating a new adoption trend.

Its simplicity is the point. A more elaborate model earns its place only if its extra structure improves forecasts on the same targets.

### Logistic

s(t) = K / [1 + exp(−r × (t − t₀))]

K is the long-run ceiling, r controls steepness and t₀ locates the inflection. In the unseasonalized shape, the fastest gain occurs at half the ceiling, K/2. Growth then slows symmetrically around that inflection.

A compact description of acceleration and saturation. Its smooth, monotone path does not by itself represent a subsidy shock, product constraint or reversal.

### Gompertz

g(t) = K × exp[−exp(−r × (t − t₀))]

K is again the ceiling and t₀ the inflection, but the fastest gain now occurs at K/e, about 36.8% of the ceiling. The approach to saturation has a longer upper tail than the logistic shape.

The same apparent takeoff can coexist with a different slowing phase. Similar fits over a short window need not imply the same long-run timing.

### Local trend

logit(s(t)) = a + b × t

The supplied implementation fits a line to log-odds over the last five annual observations or 36 monthly observations, with monthly seasonal terms. Inverse-logit transformation returns forecasts to the share scale.

It asks whether recent momentum is more useful than a complete S-curve. Short windows can adapt, but can also extrapolate a temporary episode.

### Break trend

logit(s(t)) = a + b × t + c × max(0, t − τ)

The supplied model compares an unbroken trend with candidate slope changes. The Bayesian information criterion (BIC) trades improved fit against added complexity; the knot τ is selected from the data, not assigned to a policy date.

A fitted change can improve a description without identifying its cause. Do not rename an estimated knot a causal subsidy effect.

In the formulas, t is time, exp is the exponential function and e is approximately 2.718. For logit calculations, s is a fraction between zero and one: 20% is 0.20. The logit is log(s/(1−s)); its inverse returns to zero–one. The teaching curves instead express both K and the plotted share in percent. Errors are reported in percentage points after returning to the share scale.

The supplied logistic and Gompertz fits minimize squared errors on the share scale after monthly seasonal adjustment, not on logit shares. Local and break trends are fitted on log-odds. The laboratory below isolates the underlying shapes: no country coefficients, monthly seasonality or new econometric estimation enter it.

### Seasonality and the fitted scale

For monthly structural curves, an intercept, time trend and two annual Fourier harmonics identify the seasonal component on the logit scale. The code removes that component, returns to shares, fits the structural curve to those adjusted shares, then adds the seasonal component back in log-odds for fitted values and predictions. Local and break trends instead include the seasonal regressors in their logit regression. Naive simply repeats the supplied prior cycle.

### Bounds are computational assumptions

For free logistic/Gompertz fits, K lies between max(0.0001, 0.55 × the largest adjusted share) and 1, r between 0.001 and 5, and t₀ between −30 and 100 in model time. Logit calculations bound shares to [0.00001, 0.99999] for numerical stability. These bounds are estimation choices, not empirical confidence limits; the source observations are not overwritten.

### The break is selected, not imposed by a policy story

BIC compares the unbroken trend with candidate knots. The annual series considers yearly knots with at least three observations on either side; monthly candidates are three months apart with at least twelve observations on each side. A selected knot is a statistical change in slope, not proof of the event that caused it.

### The ceiling profile is a separate diagnostic

For each selected country/window, 60 imposed K values run from max(5%, 0.9 × the largest observed share) to 100%. K is fixed and the logistic r and t₀ are refitted at each grid point. The stored RMSE is the square root of the average squared observed-scale fitting error, expressed in percentage points. This sensitivity set is explicitly not a confidence interval.

## Two S-curves. The same ceiling. A different slowdown.

**Illustrative mathematical comparison, not a country forecast.**

What changes when the shape changes, while the ceiling and fastest annual gain are held equal?

Choose a ceiling and a peak annual gain. The two curves share their inflection at relative year zero, but reach it at different shares. Inspect the plot with pointer, touch or arrow keys. These are illustrative shapes, not country forecasts.

For a logistic curve, the fastest rise occurs halfway to the ceiling. For a Gompertz curve, it occurs earlier in share terms, at about 36.8% of the ceiling. Shape is an assumption with consequences.

Illustrative mathematical functions on a fixed zero–100% share axis. The horizontal axis is years relative to an assumed inflection, not a calendar forecast. Inputs are teaching choices, not parameter estimates or confidence limits.

To match peak growth p (percentage points per year), set logistic r = 4p/K and Gompertz r = ep/K, with K expressed as a percentage and t₀ = 0. Evaluate every quarter-year from −15 to +15; the exact-value table reports whole relative years.

ILLUSTRATIVE CURVE LABORATORY / NOT FITTED OBSERVATIONS OR FORECASTS
Common ceiling: 80%. Common peak gain: 8 percentage points per year.
At relative year zero: logistic = 40.0000%; Gompertz = 29.4304%.
The inflection is fixed at relative year zero. Logistic r = 4p/K; Gompertz r = ep/K. No country parameters are estimated here.


Live laboratory: https://www.schym.de/blog/to-charge-or-not-to-charge#curve-lab
