meanReverting method
Generates mean-reverting time series (Ornstein-Uhlenbeck process).
Implementation
List<TimeSeriesPoint> meanReverting({
required DateTime start,
required DateTime end,
required Duration interval,
double mean = 100,
double theta = 0.1,
double sigma = 5,
double? startValue,
}) {
final points = <TimeSeriesPoint>[];
var current = start;
var value = startValue ?? mean;
while (!current.isAfter(end)) {
points.add(TimeSeriesPoint(timestamp: current, value: value));
// Ornstein-Uhlenbeck update
const dt = 1.0;
value = value +
theta * (mean - value) * dt +
sigma * math.sqrt(dt) * _random.normal(0, 1);
current = current.add(interval);
}
return points;
}