{"openapi":"3.1.0","info":{"title":"Time Series Calculators","version":"1.0.0","description":"Moving averages, exponential smoothing, autocorrelation, outliers, decomposition, growth rates, change points and forecast accuracy for a list of numbers. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"Time Series Calculators: Moving averages, exponential smoothing, autocorrelation, outliers, decomposition, growth rates, change points and forecast accuracy for a list of numbers. Use /moving-average to smooth a series, /exponential-smoothing to smooth and forecast (simple, Holt, Holt-Winters), /autocorrelation for ACF and PACF, /outliers to flag unusual points, /trend-seasonality to split trend and seasonal parts, /growth-rates for period-over-period change, CAGR and log returns, /change-points to find level shifts and /forecast-accuracy to score forecasts (MAE, RMSE, MAPE, sMAPE, MASE). Each paid GET returns a computed verdict with the reasons, the source and what was NOT checked. A verdict of UNVERIFIED means a lookup failed: treat it as unknown. No account or key: pay per call in USDC over x402."},"servers":[{"url":"https://time-series-calc.x402tookit.com"}],"paths":{"/autocorrelation":{"get":{"operationId":"autocorrelation","summary":"Sample autocorrelation (ACF) and partial autocorrelation (PACF, Durbin-Levinson) of a series up to lag k, with 95% bounds.","description":"Sample autocorrelation (ACF) and partial autocorrelation (PACF, Durbin-Levinson) of a series up to lag k, with 95% bounds.","tags":["autocorrelation","acf","pacf","time-series"],"parameters":[{"name":"values","in":"query","required":true,"description":"Comma-separated numbers in time order, oldest first (3 to 500), any one unit","schema":{"type":"string"}},{"name":"maxLag","in":"query","required":false,"description":"Largest lag in observations (default min(10, n-1); at most n-1 and 100)","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"n":{"type":["null","number"]},"maxLag":{"type":["null","number"]},"acf":{"type":["array","null"],"items":{"type":"number"}},"pacf":{"type":["array","null"],"items":{"type":"number"}},"pacfNote":{"type":["null","string"]},"confidenceBound95":{"type":["null","number"]},"acfLagsOutsideBound":{"type":["array","null"]},"pacfLagsOutsideBound":{"type":["array","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"ACF/PACF to lag 2 for 5 values: lag-1 autocorrelation 0.4; 0 ACF lags outside +/-0.877.","reasons":["ACF r_k = sum (x_t - mean)(x_(t-k) - mean) / sum (x_t - mean)^2 (the standard biased estimator, ensures a valid PACF).","Approximate 95% bounds +/-1.96/sqrt(n) apply to a white-noise series.","…1 more"],"n":5,"maxLag":2,"acf":[1,0.4],"pacf":[0.4,-0.30952381],"pacfNote":"pacf[0] is lag 1","confidenceBound95":0.876539,"acfLagsOutsideBound":[],"pacfLagsOutsideBound":[],"degraded":false,"notChecked":["stationarity (trend or seasonality inflate the ACF)","a formal test such as Ljung-Box","…1 more"],"source":"computed locally (Box-Jenkins sample ACF; Durbin-Levinson recursion)","asOf":"2026-10-21T06:18:21.903Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/autocorrelation"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/autocorrelation"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/autocorrelation"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/autocorrelation"}}]}}},"/change-points":{"get":{"operationId":"change_points","summary":"Find level shifts in a series with two-sided CUSUM alarms and a mean-shift binary segmentation, positions 1-based.","description":"Find level shifts in a series with two-sided CUSUM alarms and a mean-shift binary segmentation, positions 1-based.","tags":["change-point","cusum","segmentation","time-series"],"parameters":[{"name":"values","in":"query","required":true,"description":"Comma-separated numbers in time order, oldest first (6 to 500), any one unit","schema":{"type":"string"}},{"name":"method","in":"query","required":false,"description":"both, cusum or binseg (default both)","schema":{"type":"string"}},{"name":"target","in":"query","required":false,"description":"CUSUM in-control mean in the data's unit (default: mean of the first quarter of the series)","schema":{"type":"number"}},{"name":"sigma","in":"query","required":false,"description":"CUSUM in-control standard deviation, same unit (default: sd of the first quarter; required if that is 0)","schema":{"type":"number"}},{"name":"k","in":"query","required":false,"description":"CUSUM slack in sigma units (default 0.5, tuned for a 1-sigma shift)","schema":{"type":"number"}},{"name":"h","in":"query","required":false,"description":"CUSUM alarm threshold in sigma units (default 5)","schema":{"type":"number"}},{"name":"maxChanges","in":"query","required":false,"description":"Most change points binseg may return, 1 to 20 (default 3)","schema":{"type":"integer"}},{"name":"minSegment","in":"query","required":false,"description":"Smallest segment length for binseg in observations (default 2)","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"n":{"type":["null","number"]},"method":{"type":["null","string"]},"binarySegmentation":{"type":["null","object"],"properties":{"changePoints":{"type":["array","null"],"items":{"type":"object","properties":{"newLevelStartsAtPosition":{"type":["null","number"]},"sseReduction":{"type":["null","number"]}}}},"segments":{"type":["array","null"],"items":{"type":"object","properties":{"from":{"type":["null","number"]},"to":{"type":["null","number"]},"mean":{"type":["null","number"]}}}},"noiseSigma":{"type":["null","number"]},"acceptThreshold":{"type":["null","number"]}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"CHANGE_DETECTED","summary":"1 change signal found in 10 values.","reasons":["Binary segmentation: repeatedly split where the sum of squared errors drops most; a split is kept if the drop exceeds 2 x noiseSigma^2 x ln(n), with noiseSigma from the median absolute successive diff…"],"n":10,"method":"binseg","binarySegmentation":{"changePoints":[{"newLevelStartsAtPosition":6,"sseReduction":40}],"segments":[{"from":1,"to":5,"mean":1},{"from":6,"to":10,"mean":5}],"noiseSigma":0,"acceptThreshold":0},"degraded":false,"notChecked":["changes in variance or slope (only mean shifts are searched)","a formal significance test or false-alarm rate","…1 more"],"source":"computed locally (Page 1954 tabular CUSUM; greedy binary segmentation, Scott and Knott 1974)","asOf":"2026-10-21T06:18:22.158Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0300"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/change-points"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/change-points"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/change-points"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/change-points"}}]}}},"/exponential-smoothing":{"get":{"operationId":"exponential_smoothing","summary":"Simple, Holt trend or Holt-Winters seasonal exponential smoothing with a forecast h steps ahead and in-sample fit error.","description":"Simple, Holt trend or Holt-Winters seasonal exponential smoothing with a forecast h steps ahead and in-sample fit error.","tags":["exponential-smoothing","forecast","holt-winters","time-series"],"parameters":[{"name":"values","in":"query","required":true,"description":"Comma-separated numbers in time order, oldest first (2 to 500), any one unit","schema":{"type":"string"}},{"name":"method","in":"query","required":false,"description":"simple, holt, hw-additive or hw-multiplicative (default simple)","schema":{"type":"string"}},{"name":"alpha","in":"query","required":false,"description":"Level smoothing 0 to 1 exclusive of 0 (default 0.3)","schema":{"type":"number"}},{"name":"beta","in":"query","required":false,"description":"Trend smoothing 0 to 1 (default 0.1; holt and hw only)","schema":{"type":"number"}},{"name":"gamma","in":"query","required":false,"description":"Seasonal smoothing 0 to 1 (default 0.1; hw only)","schema":{"type":"number"}},{"name":"seasonLength","in":"query","required":false,"description":"Observations per season, 2 or more (required for hw; needs 2 full seasons of data)","schema":{"type":"integer"}},{"name":"horizon","in":"query","required":false,"description":"Steps to forecast, 1 to 100 (default 3)","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"method":{"type":["null","string"]},"alpha":{"type":["null","number"]},"beta":{"type":["null","number"]},"gamma":{},"seasonLength":{},"finalLevel":{"type":["null","number"]},"finalTrend":{"type":["null","number"]},"seasonalIndices":{},"forecast":{"type":["array","null"],"items":{"type":"number"}},"horizon":{"type":["null","number"]},"fitted":{"type":["array","null"],"items":{"type":["null","number"]}},"inSampleRmse":{"type":["null","number"]},"inSampleMae":{"type":["null","number"]},"inSampleSse":{"type":["null","number"]},"fittedCount":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"holt smoothing: forecast 3 steps ahead starts at 18.7116; in-sample RMSE 1.535.","reasons":["Level starts at the first value and trend at (second - first); fitted values begin at position 2.","Forecasts use the final state only. Parameters are as given, not optimised.","…1 more"],"method":"holt","alpha":0.5,"beta":0.3,"gamma":null,"seasonLength":null,"finalLevel":17.5657908,"finalTrend":1.14577245,"seasonalIndices":null,"forecast":[18.7115632,19.8573357],"horizon":3,"fitted":[null,12],"inSampleRmse":1.53548832,"inSampleMae":1.08524103,"inSampleSse":16.5040707,"fittedCount":7,"degraded":false,"notChecked":["parameter optimisation (alpha, beta, gamma are used exactly as given)","prediction intervals","…1 more"],"source":"computed locally (Hyndman and Athanasopoulos, Forecasting: Principles and Practice, exponential smoothing methods)","asOf":"2026-10-21T06:18:22.423Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0300"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/exponential-smoothing"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/exponential-smoothing"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/exponential-smoothing"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/exponential-smoothing"}}]}}},"/forecast-accuracy":{"get":{"operationId":"forecast_accuracy","summary":"Score a forecast against actuals: MAE, RMSE, MAPE, sMAPE, bias and MASE against a naive benchmark.","description":"Score a forecast against actuals: MAE, RMSE, MAPE, sMAPE, bias and MASE against a naive benchmark.","tags":["forecast","accuracy","mape","mase"],"parameters":[{"name":"actual","in":"query","required":true,"description":"Comma-separated actual values (1 to 500), any one unit","schema":{"type":"string"}},{"name":"forecast","in":"query","required":true,"description":"Comma-separated forecast values, same length and unit as actual","schema":{"type":"string"}},{"name":"training","in":"query","required":false,"description":"Comma-separated earlier history in the same unit, for the MASE scale (default: the actual series itself)","schema":{"type":"string"}},{"name":"seasonLength","in":"query","required":false,"description":"Seasonal naive lag in observations for MASE (default 1 = last value)","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"n":{"type":["null","number"]},"mae":{"type":["null","number"]},"mse":{"type":["null","number"]},"rmse":{"type":["null","number"]},"mapePct":{"type":["null","number"]},"smapePct":{"type":["null","number"]},"meanError":{"type":["null","number"]},"mase":{"type":["null","number"]},"naiveScale":{"type":["null","number"]},"naiveLag":{"type":["null","number"]},"errors":{"type":["array","null"],"items":{"type":"number"}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"BEATS_NAIVE","summary":"Over 4 points: MAE 1, RMSE 1.22474, MAPE 36.9048%, MASE 0.571429.","reasons":["error e = actual - forecast; bias = mean(e) (positive means forecasts too low).","MASE = MAE / mean absolute one-step (or seasonal) naive error on the history; below 1 beats the naive forecast."],"n":4,"mae":1,"mse":1.5,"rmse":1.22474487,"mapePct":36.9047619,"smapePct":30,"meanError":-0.5,"mase":0.571428571,"naiveScale":1.75,"naiveLag":1,"errors":[1,0],"degraded":false,"notChecked":["statistical significance of the difference between two forecasts","forecast intervals or calibration","…1 more"],"source":"computed locally (Hyndman and Koehler 2006, Another look at measures of forecast accuracy)","asOf":"2026-10-21T06:18:22.688Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/forecast-accuracy"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/forecast-accuracy"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/forecast-accuracy"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/forecast-accuracy"}}]}}},"/growth-rates":{"get":{"operationId":"growth_rates","summary":"Period-over-period percent change, log returns, CAGR and rolling growth for a list of values in time order.","description":"Period-over-period percent change, log returns, CAGR and rolling growth for a list of values in time order.","tags":["growth","cagr","log-returns","time-series"],"parameters":[{"name":"values","in":"query","required":true,"description":"Comma-separated levels in time order, oldest first (2 to 500), in any one unit (not percentages)","schema":{"type":"string"}},{"name":"periodsPerYear","in":"query","required":false,"description":"Periods per year to annualise CAGR (12 monthly, 4 quarterly, 252 trading days; default 1 = one period is one year)","schema":{"type":"number"}},{"name":"rollingWindow","in":"query","required":false,"description":"Also give growth over this many periods at each point (default none; 2 or more)","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"n":{"type":["null","number"]},"periods":{"type":["null","number"]},"periodsPerYear":{"type":["null","number"]},"years":{"type":["null","number"]},"periodChangePct":{"type":["array","null"],"items":{"type":["null","number"]}},"logReturns":{"type":["array","null"],"items":{"type":["null","number"]}},"cumulativeChangePct":{"type":["array","null"],"items":{"type":"number"}},"totalChangePct":{"type":["null","number"]},"cagrPct":{"type":["null","number"]},"sumLogReturns":{"type":["null","number"]},"meanLogReturn":{"type":["null","number"]},"rollingWindow":{"type":["null","number"]},"rollingChangePct":{"type":["array","null"],"items":{"type":["null","number"]}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"4 values: total change 33.1%, CAGR 10% per year.","reasons":["CAGR uses 3 periods at 1 per year (3 years).","Log returns add across periods; percent changes compound."],"n":4,"periods":3,"periodsPerYear":1,"years":3,"periodChangePct":[null,10],"logReturns":[null,0.0953101798],"cumulativeChangePct":[0,10],"totalChangePct":33.1,"cagrPct":10,"sumLogReturns":0.285930539,"meanLogReturn":0.0953101798,"rollingWindow":2,"rollingChangePct":[null,null],"degraded":false,"notChecked":["inflation, dividends, fees or taxes","volatility between the endpoints (CAGR hides it)","…1 more"],"source":"computed locally (pct change = x_t/x_(t-1) - 1; log return = ln(x_t/x_(t-1)); CAGR = (last/first)^(periodsPerYear/(n-1)) - 1)","asOf":"2026-10-21T06:18:22.953Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/growth-rates"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/growth-rates"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/growth-rates"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/growth-rates"}}]}}},"/moving-average":{"get":{"operationId":"moving_average","summary":"Simple, exponential or weighted moving average of a list of numbers, trailing or centered, with the alignment stated.","description":"Simple, exponential or weighted moving average of a list of numbers, trailing or centered, with the alignment stated.","tags":["moving-average","smoothing","time-series","ema"],"parameters":[{"name":"values","in":"query","required":true,"description":"Comma-separated numbers in time order, oldest first (2 to 500 values), in any one unit","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"sma, ema or wma (default sma)","schema":{"type":"string"}},{"name":"window","in":"query","required":false,"description":"Window length in observations for sma and wma (default 3; must not exceed the number of values)","schema":{"type":"integer"}},{"name":"alpha","in":"query","required":false,"description":"ema smoothing factor above 0 up to 1 (default 0.3); send alpha or span, not both","schema":{"type":"number"}},{"name":"span","in":"query","required":false,"description":"ema span in observations (alpha = 2 / (span + 1)); use instead of alpha","schema":{"type":"integer"}},{"name":"align","in":"query","required":false,"description":"trailing (default) or centered, for sma","schema":{"type":"string"}},{"name":"weights","in":"query","required":false,"description":"wma weights, oldest first, comma-separated (default 1,2,...,window)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"type":{"type":["null","string"]},"alignment":{"type":["null","string"]},"window":{"type":["null","number"]},"alpha":{},"weights":{},"count":{"type":["null","number"]},"smoothed":{"type":["array","null"],"items":{"type":["null","number"]}},"latest":{"type":["null","number"]},"alignmentNote":{"type":["null","string"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"SMA of 7 values: latest smoothed value 15.","reasons":["Trailing 3-point average: each output sits at the END of its window (uses only past values); the first 2 positions are null."],"type":"sma","alignment":"trailing","window":3,"alpha":null,"weights":null,"count":7,"smoothed":[null,null],"latest":15,"alignmentNote":"Trailing 3-point average: each output sits at the END of its window (uses only past values); the first 2 positions are null.","degraded":false,"notChecked":["whether the series is stationary or has outliers (see /outliers)","missing values or uneven time spacing (every value is treated as equally spaced)"],"source":"computed locally (textbook moving averages)","asOf":"2026-10-21T06:18:23.204Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/moving-average"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/moving-average"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/moving-average"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/moving-average"}}]}}},"/outliers":{"get":{"operationId":"outliers","summary":"Flag outliers in a list of numbers by z-score, Tukey IQR fences and the MAD modified z-score (3.5 rule).","description":"Flag outliers in a list of numbers by z-score, Tukey IQR fences and the MAD modified z-score (3.5 rule).","tags":["outliers","anomaly","z-score","iqr"],"parameters":[{"name":"values","in":"query","required":true,"description":"Comma-separated numbers (4 to 500), any one unit","schema":{"type":"string"}},{"name":"method","in":"query","required":false,"description":"all, zscore, iqr or mad (default all)","schema":{"type":"string"}},{"name":"zLimit","in":"query","required":false,"description":"Flag |z| above this many standard deviations (default 3)","schema":{"type":"number"}},{"name":"iqrMultiplier","in":"query","required":false,"description":"Fence width in IQRs (default 1.5; 3 for extreme outliers)","schema":{"type":"number"}},{"name":"madLimit","in":"query","required":false,"description":"Flag |modified z| above this (default 3.5, Iglewicz and Hoaglin)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"n":{"type":["null","number"]},"method":{"type":["null","string"]},"zscore":{"type":["null","object"],"properties":{"mean":{"type":["null","number"]},"sampleSd":{"type":["null","number"]},"limit":{"type":["null","number"]},"flaggedPositions":{"type":["array","null"]},"flaggedValues":{"type":["array","null"]},"zScores":{"type":["array","null"],"items":{"type":"number"}}}},"iqr":{"type":["null","object"],"properties":{"q1":{"type":["null","number"]},"q3":{"type":["null","number"]},"iqr":{"type":["null","number"]},"lowerFence":{"type":["null","number"]},"upperFence":{"type":["null","number"]},"multiplier":{"type":["null","number"]},"flaggedPositions":{"type":["array","null"],"items":{"type":"number"}},"flaggedValues":{"type":["array","null"],"items":{"type":"number"}}}},"mad":{"type":["null","object"],"properties":{"median":{"type":["null","number"]},"mad":{"type":["null","number"]},"limit":{"type":["null","number"]},"flaggedPositions":{"type":["array","null"],"items":{"type":"number"}},"flaggedValues":{"type":["array","null"],"items":{"type":"number"}},"modifiedZ":{"type":["array","null"],"items":{"type":"number"}},"formula":{"type":["null","string"]}}},"anyMethodFlaggedPositions":{"type":["array","null"],"items":{"type":"number"}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"OUTLIERS_FLAGGED","summary":"1 of 10 values flagged by at least one method (positions 10).","reasons":["z-score: |x - mean| / sample sd above 3. With n points the largest possible |z| is (n-1)/sqrt(n) = 2.846, so small samples cannot reach large limits.","IQR fences: quartiles by linear interpolation (type 7); flag below Q1 - 1.5 IQR or above Q3 + 1.5 IQR.","…1 more"],"n":10,"method":"all","zscore":{"mean":14.5,"sampleSd":30.1523907,"limit":3,"flaggedPositions":[],"flaggedValues":[],"zScores":[-0.447726,-0.414561]},"iqr":{"q1":3.25,"q3":7.75,"iqr":4.5,"lowerFence":-3.5,"upperFence":14.5,"multiplier":1.5,"flaggedPositions":[10],"flaggedValues":[100]},"mad":{"median":5.5,"mad":2.5,"limit":3.5,"flaggedPositions":[10],"flaggedValues":[100],"modifiedZ":[-1.2141,-0.9443],"formula":"modified z = 0.6745 (x - median) / MAD"},"anyMethodFlaggedPositions":[10],"degraded":false,"notChecked":["whether a flagged value is an error or a real event","seasonality or trend (a normal seasonal peak can look like an outlier)","…1 more"],"source":"computed locally (z-score; Tukey 1977 fences; Iglewicz and Hoaglin 1993 modified z-score)","asOf":"2026-10-21T06:18:23.456Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/outliers"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/outliers"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/outliers"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/outliers"}}]}}},"/trend-seasonality":{"get":{"operationId":"trend_seasonality","summary":"Classical additive decomposition of a series into trend, seasonal and remainder parts for a given period.","description":"Classical additive decomposition of a series into trend, seasonal and remainder parts for a given period.","tags":["decomposition","seasonality","trend","time-series"],"parameters":[{"name":"values","in":"query","required":true,"description":"Comma-separated numbers in time order, oldest first (4 to 500), any one unit","schema":{"type":"string"}},{"name":"period","in":"query","required":true,"description":"Observations per seasonal cycle, 2 or more (for example 12 for monthly data); need at least 2 cycles","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"n":{"type":["null","number"]},"period":{"type":["null","number"]},"trend":{"type":["array","null"],"items":{"type":["null","number"]}},"seasonal":{"type":["array","null"],"items":{"type":"number"}},"remainder":{"type":["array","null"],"items":{"type":["null","number"]}},"seasonalIndices":{"type":["array","null"],"items":{"type":"number"}},"seasonalSwing":{"type":["null","number"]},"remainderRms":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"Additive decomposition, period 4: seasonal swing 4, remainder RMS 0.","reasons":["Trend is a centered moving average of length 4 (2 x 4 convention); the first and last 2 trend values are null.","Seasonal indices are the average detrended value for each position in the cycle, adjusted to sum to zero.","…1 more"],"n":12,"period":4,"trend":[null,null],"seasonal":[1,-1],"remainder":[null,null],"seasonalIndices":[1,-1],"seasonalSwing":4,"remainderRms":0,"degraded":false,"notChecked":["multiplicative seasonality (only the additive model is fitted)","changing seasonal patterns over time","…1 more"],"source":"computed locally (classical decomposition, Hyndman and Athanasopoulos FPP chapter 3)","asOf":"2026-10-21T06:18:23.719Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0300"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/trend-seasonality"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/trend-seasonality"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/trend-seasonality"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://time-series-calc.x402tookit.com/trend-seasonality"}}]}}}}}