import numpy as np def compute_slope(series): if len(series) < 2: return 0.0 x = np.arange(len(series)) y = np.array(series) return float(np.polyfit(x, y, 1)[0]) def classify_trend(slope, threshold=0.001): if slope > threshold: return "hausse" elif slope < -threshold: return "baisse" return "stable" def project_series(series, horizon): if len(series) < 2: return series x = np.arange(len(series)) slope, intercept = np.polyfit(x, series, 1) future_x = np.arange(len(series) + horizon) return list(slope * future_x + intercept) def time_to_threshold(series, threshold): slope = compute_slope(series) current = series[-1] if slope <= 0: return None t = (threshold - current) / slope if t < 0: return None return int(t)