There is some motivation in the blog post Fast Python Time-Series Forecasting. All algorithms utilized here can be called the same way using the TimeMachines Python package. However, as indicated in the table, some of these draw an important part of their functionality (if not all) from other packages such as Facebook Prophet, Statsmodels TSA, Flux, PmdArima, Uber Orbit and more. Take relative performance with with a grain of salt, since many packages don't intend completely autonomous use and some are aimed at longer term seasonal forecasts. If you have a suggestion for a package or technique that should be included, please file an issue or, even better, add a skater and make a pull request. There is a guide for contributors and a long list of popular time-series packages.
Some of these methods are used in real-time to provide free prediction to anyone who publishes public data using a community API explained at microprediction.com. See the example crawlers folder for examples of algorithms calling the timemachines package. See the knowledge center or contributor guide for instructions on publishing live data that can influence these ratings.
Name | Rating | Games | Active | Seconds | Dependencies |
---|---|---|---|---|---|
elo_faster_univariate_balanced_ensemble | 2342.0 | 975 | yes | 20.1 | timemachines |
orbit_lgt_12 | 2226.0 | 16 | yes | 0.0 | orbit-ml , timemachines |
tsa_p2_d0_q1 | 2170.0 | 1001 | yes | 84.3 | statsmodels , timemachines |
bats_trendy_bc | 2168.0 | 38 | yes | 964.9 | tbats , timemachines |
elo_faster_univariate_precision_ensemble | 2160.0 | 1255 | yes | -26.3 | timemachines |
sluggish_moving_average | 2144.0 | 1438 | yes | 0.0 | timemachines |
tsa_p1_d0_q1 | 2136.0 | 317 | yes | 38.5 | statsmodels , timemachines |
elo_fastest_univariate_aggressive_ensemble | 2131.0 | 1269 | yes | 1.0 | timemachines |
bats_trendy_arma | 2116.0 | 18 | yes | 1772.9 | tbats , timemachines |
merlion_arima | 2111.0 | 38 | yes | 34.4 | timemachines |
tsa_aggressive_d0_ensemble | 2095.0 | 28 | yes | 672.3 | statsmodels , timemachines |
tsa_p3_d0_q1 | 2074.0 | 150 | yes | 64.8 | statsmodels , timemachines |
bats_damped | 2056.0 | 25 | yes | 1014.4 | tbats , timemachines |
tsa_aggressive_combined_ensemble | 2034.0 | 23 | yes | 5620.4 | statsmodels , timemachines |
tsa_balanced_d0_ensemble | 2031.0 | 34 | yes | 251.7 | statsmodels , timemachines |
sk_ae_add_damped | 2014.0 | 1445 | yes | 15.6 | sktime , timemachines |
tsa_p2_d0_q0 | 2012.0 | 529 | yes | 35.7 | statsmodels , timemachines |
thinking_fast_and_fast | 1994.0 | 1253 | yes | 0.0 | timemachines |
elo_fastest_residual_balanced_ensemble | 1983.0 | 1340 | yes | 3.0 | timemachines |
bats_trendy_arma_bc | 1980.0 | 25 | yes | 2171.2 | tbats , timemachines |
darts_autoarima | 1978.0 | 25 | no | 63.1 | darts , timemachines |
thinking_slow_and_slow | 1958.0 | 1190 | yes | 0.1 | timemachines |
elo_faster_residual_precision_ensemble | 1946.0 | 1033 | yes | 2.9 | timemachines |
aggressive_ema_ensemble | 1945.0 | 1495 | yes | 0.1 | timemachines |
orbit_lgt_24 | 1945.0 | 15 | yes | 0.0 | orbit-ml , timemachines |
thinking_fast_and_slow | 1927.0 | 1146 | yes | 0.0 | timemachines |
fbprophet_recursive | 1923.0 | 69 | yes | 121.3 | prophet , timemachines |
quick_precision_ema_ensemble | 1918.0 | 1289 | yes | 0.2 | timemachines |
slow_balanced_ema_ensemble | 1893.0 | 1758 | yes | 0.1 | timemachines |
elo_fastest_univariate_precision_ensemble | 1885.0 | 2040 | yes | 0.9 | timemachines |
fbprophet_exogenous_hypocratic | 1879.0 | 66 | yes | 125.9 | prophet , timemachines |
divine_univariate | 1875.0 | 95 | yes | -0.1 | divinity , timemachines |
elo_faster_univariate_aggressive_ensemble | 1866.0 | 1188 | yes | 26.0 | timemachines |
tsa_precision_theta_ensemble | 1858.0 | 1044 | yes | -3.5 | statsmodels , timemachines |
divine_univariate_hypocratic_fast | 1856.0 | 98 | yes | -0.1 | divinity , timemachines |
thinking_slow_and_fast | 1855.0 | 1816 | yes | 0.0 | timemachines |
elo_fastest_univariate_balanced_ensemble | 1842.0 | 1296 | yes | 1.5 | timemachines |
bats_damped_arma | 1842.0 | 21 | yes | 1971.6 | tbats , timemachines |
divine_univariate_hypocratic_slow | 1835.0 | 147 | yes | -0.1 | divinity , timemachines |
elo_fastest_residual_precision_ensemble | 1804.0 | 1456 | yes | 2.0 | timemachines |
bats_trendy | 1787.0 | 36 | yes | 901.0 | tbats , timemachines |
elo_faster_residual_aggressive_ensemble | 1774.0 | 711 | yes | -0.9 | timemachines |
bats_arma_bc | 1762.0 | 28 | yes | 2280.1 | tbats , timemachines |
tsa_balanced_combined_ensemble | 1758.0 | 55 | yes | 943.9 | statsmodels , timemachines |
rvr_slowly_hypocratic | 1740.0 | 653 | yes | 0.7 | river , timemachines |
tsa_p3_d0_q0 | 1736.0 | 392 | yes | 43.1 | statsmodels , timemachines |
tsa_precision_d0_ensemble | 1732.0 | 69 | yes | 1255.8 | statsmodels , timemachines |
sk_autoarima | 1726.0 | 126 | yes | 183.9 | sktime , timemachines |
tsa_precision_combined_ensemble | 1718.0 | 56 | yes | 484.5 | statsmodels , timemachines |
bats_damped_bc | 1704.0 | 32 | yes | 1219.4 | tbats , timemachines |
smdk_p5_d0_q3_n500_aggressive | 1700.0 | 806 | yes | 24.9 | simdkalman , timemachines |
bats_bc | 1690.0 | 50 | yes | 272.2 | tbats , timemachines |
elo_fastest_residual_aggressive_ensemble | 1689.0 | 1097 | yes | 1.8 | timemachines |
fbprophet_univariate | 1680.0 | 127 | yes | 161.4 | prophet , timemachines |
precision_ema_ensemble | 1676.0 | 1747 | yes | 0.1 | timemachines |
elo_faster_residual_balanced_ensemble | 1664.0 | 1053 | yes | 3.5 | timemachines |
slow_aggressive_ema_ensemble | 1661.0 | 1152 | yes | 0.2 | timemachines |
bats_damped_arma_bc | 1660.0 | 17 | yes | 3256.9 | tbats , timemachines |
thinking_precision_ensemble | 1641.0 | 89 | yes | 0.5 | timemachines |
slow_precision_ema_ensemble | 1632.0 | 1163 | yes | 0.1 | timemachines |
fbprophet_known | 1630.0 | 65 | yes | 125.0 | prophet , timemachines |
darts_theta | 1618.0 | 67 | no | 1.4 | darts , timemachines |
pmd_univariate | 1608.0 | 811 | yes | -4.1 | pmdarima , timemachines |
regress_change_on_first_known | 1600 | 0 | no | -1.0 | timemachines |
tsa_p1_d1_q0 | 1600 | 0 | no | -1.0 | statsmodels , timemachines |
tsa_p2_d1_q0 | 1600 | 0 | no | -1.0 | statsmodels , timemachines |
tsa_p3_d1_q0 | 1600 | 0 | no | -1.0 | statsmodels , timemachines |
sk_ae_mul | 1600 | 0 | no | -0.1 | sktime , timemachines |
sk_ae_mul_damped | 1600 | 0 | no | -0.1 | sktime , timemachines |
rvr_p3_d0_q0 | 1600 | 0 | no | -1.0 | river , timemachines |
rvr_aggressive_ensemble | 1600 | 0 | no | -1.0 | river , timemachines |
dlm_univariate_a | 1600 | 0 | no | -1.0 | pydlm , timemachines |
dlm_univariate_b | 1600 | 0 | no | -1.0 | pydlm , timemachines |
darts_nbeats | 1600 | 0 | no | -1.0 | darts , timemachines |
balanced_ema_ensemble | 1596.0 | 1633 | yes | -0.2 | timemachines |
quick_balanced_ema_ensemble | 1581.0 | 1225 | yes | 0.1 | timemachines |
sk_ae_add | 1563.0 | 2056 | yes | 12.4 | sktime , timemachines |
tsa_aggressive_theta_ensemble | 1559.0 | 1681 | yes | 2.6 | statsmodels , timemachines |
bats_arma | 1539.0 | 26 | yes | 1550.3 | tbats , timemachines |
nprophet_p3 | 1536.0 | 411 | yes | 83.3 | neuralprophet , timemachines |
quick_aggressive_ema_ensemble | 1529.0 | 3134 | yes | 0.2 | timemachines |
pycrt_mean_8 | 1518.0 | 1 | no | 3386.1 | pycaret , timemachines |
pycrt_median_3 | 1515.0 | 1 | no | 2389.6 | pycaret , timemachines |
sk_theta | 1511.0 | 1246 | yes | 0.8 | sktime , timemachines |
pycrt_median_3_full | 1505.0 | 1 | yes | 10324.9 | pycaret , timemachines |
darts_four_theta | 1504.0 | 111 | no | 1.5 | darts , timemachines |
pmd_exogenous_hypocratic | 1501.0 | 1006 | yes | 4.1 | pmdarima , timemachines |
darts_arima | 1500.0 | 75 | no | 12.0 | darts , timemachines |
smdk_p5_d0_q3_n1000 | 1473.0 | 607 | yes | 69.9 | simdkalman , timemachines |
fbprophet_cautious | 1471.0 | 63 | yes | 143.3 | prophet , timemachines |
nprophet_p1_hypocratic | 1470.0 | 488 | yes | 62.3 | neuralprophet , timemachines |
suc_tsa_p2_d0_q1 | 1458.0 | 103 | no | 3.0 | successor , timemachines |
merlion_prophet | 1456.0 | 75 | yes | 33.4 | timemachines |
tsa_balanced_theta_ensemble | 1448.0 | 1225 | yes | 2.5 | statsmodels , timemachines |
nprophet_p2 | 1444.0 | 666 | yes | 73.6 | neuralprophet , timemachines |
suc_quick_aggressive_ema_ensemble | 1439.0 | 89 | no | 4.3 | successor , timemachines |
pycrt_median_8 | 1432.0 | 2 | no | 2288.3 | pycaret , timemachines |
nprophet_p5_hypocratic | 1427.0 | 562 | yes | 65.4 | neuralprophet , timemachines |
tsa_p1_d0_q0 | 1419.0 | 717 | yes | 54.0 | statsmodels , timemachines |
pycrt_mean_3 | 1419.0 | 2 | no | 3660.3 | pycaret , timemachines |
darts_fft | 1414.0 | 89 | no | 0.7 | darts , timemachines |
rvr_quickly_hypocratic | 1413.0 | 820 | yes | 0.4 | river , timemachines |
smdk_p5_d0_q3_n500 | 1412.0 | 911 | yes | -16.9 | simdkalman , timemachines |
slowly_moving_average | 1406.0 | 1597 | yes | 0.0 | timemachines |
fbprophet_univariate_hypocratic | 1402.0 | 56 | yes | 208.3 | prophet , timemachines |
fbprophet_cautious_hypocratic | 1388.0 | 57 | yes | 232.1 | prophet , timemachines |
darts_exp_smoothing | 1368.0 | 187 | no | 9.9 | darts , timemachines |
bats_fast | 1333.0 | 35 | yes | 714.8 | tbats , timemachines |
smdk_p5_d0_q3_n1000_aggressive | 1305.0 | 678 | yes | 49.6 | simdkalman , timemachines |
gk_basic_skater | 1298.0 | 9 | yes | 3661.4 | greykite , timemachines |
nprophet_p8 | 1280.0 | 490 | yes | 36.1 | neuralprophet , timemachines |
nprophet_p8_hypocratic | 1277.0 | 433 | yes | 67.9 | neuralprophet , timemachines |
darts_prophet | 1276.0 | 20 | no | 77.6 | darts , timemachines |
sk_ae | 1272.0 | 1377 | yes | 11.6 | sktime , timemachines |
nprophet_p1 | 1253.0 | 1255 | yes | 61.7 | neuralprophet , timemachines |
fbprophet_univariate_univariate_hypocratic | 1229.0 | 42 | yes | 473.4 | prophet , timemachines |
nprophet_p5 | 1225.0 | 450 | yes | 63.7 | neuralprophet , timemachines |
quickly_moving_average | 1220.0 | 1228 | yes | 0.0 | timemachines |
fbprophet_exogenous | 1198.0 | 125 | yes | 174.8 | prophet , timemachines |
fbprophet_exogenous_exogenous | 1076.0 | 53 | yes | 529.8 | prophet , timemachines |
nprophet_p2_hypocratic | 1061.0 | 556 | yes | 51.9 | neuralprophet , timemachines |
tsa_slowly_hypocratic_d0_ensemble | 1040.0 | 88 | yes | 469.5 | statsmodels , timemachines |
suc_tsa_aggressive_d0_ensemble | 1021.0 | 23 | yes | 2.7 | successor , timemachines |
rapidly_moving_average | 1005.0 | 1479 | yes | 0.0 | timemachines |
rvr_p2_d0_q0 | 940.0 | 756 | yes | 0.1 | river , timemachines |
rvr_p1_d0_q0 | 935.0 | 944 | yes | 0.0 | river , timemachines |
empirical_last_value | 934.0 | 884 | yes | 0.0 | timemachines |
rvr_balanced_ensemble | 902.0 | 729 | yes | 0.3 | river , timemachines |
tsa_quickly_hypocratic_d0_ensemble | 885.0 | 54 | yes | 4522.7 | statsmodels , timemachines |
nprophet_p3_hypocratic | 811.0 | 489 | yes | 36.9 | neuralprophet , timemachines |
merlion_mses | 754.0 | 14 | yes | 190.6 | timemachines |
rvr_p5_d0_q0 | 677.0 | 623 | yes | 0.1 | river , timemachines |
rvr_p8_d0_q0 | 584.0 | 645 | yes | 0.1 | river , timemachines |