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 | 2425.0 | 492 | yes | 12.6 | timemachines |
tsa_p3_d0_q0 | 2365.0 | 187 | yes | 29.2 | statsmodels , timemachines |
tsa_aggressive_d0_ensemble | 2363.0 | 31 | yes | 232.8 | statsmodels , timemachines |
orbit_lgt_12 | 2263.0 | 9 | yes | 49.8 | orbit-ml , timemachines |
tsa_p2_d0_q1 | 2212.0 | 467 | yes | 131.1 | statsmodels , timemachines |
pmd_exogenous_hypocratic | 2137.0 | 618 | yes | 3.4 | pmdarima , timemachines |
sluggish_moving_average | 2133.0 | 665 | yes | 0.0 | timemachines |
elo_fastest_residual_balanced_ensemble | 2120.0 | 649 | yes | 1.8 | timemachines |
tsa_p1_d0_q1 | 2117.0 | 207 | yes | 26.8 | statsmodels , timemachines |
sk_autoarima | 2114.0 | 35 | yes | 138.0 | sktime , timemachines |
tsa_p2_d0_q0 | 2113.0 | 381 | yes | 19.2 | statsmodels , timemachines |
elo_fastest_univariate_balanced_ensemble | 2107.0 | 686 | yes | 1.9 | timemachines |
tsa_aggressive_combined_ensemble | 2046.0 | 24 | yes | 150.0 | statsmodels , timemachines |
darts_autoarima | 2042.0 | 16 | no | 247.0 | darts , timemachines |
tsa_p3_d0_q1 | 2039.0 | 129 | yes | 185.2 | statsmodels , timemachines |
bats_trendy_arma_bc | 2025.0 | 12 | yes | 3875.6 | tbats , timemachines |
tsa_precision_d0_ensemble | 2017.0 | 53 | yes | 336.0 | statsmodels , timemachines |
bats_damped_arma | 2014.0 | 17 | yes | 955.7 | tbats , timemachines |
tsa_balanced_d0_ensemble | 2002.0 | 23 | yes | 138.3 | statsmodels , timemachines |
fbprophet_univariate_hypocratic | 1995.0 | 139 | yes | 181.4 | prophet , timemachines |
bats_damped_bc | 1994.0 | 16 | yes | 1251.5 | tbats , timemachines |
suc_tsa_aggressive_d0_ensemble | 1988.0 | 16 | yes | 5.4 | successor , timemachines |
thinking_slow_and_slow | 1982.0 | 791 | yes | 0.1 | timemachines |
elo_faster_residual_aggressive_ensemble | 1973.0 | 382 | yes | 20.9 | timemachines |
divine_univariate | 1966.0 | 166 | yes | -0.1 | divinity , timemachines |
tsa_balanced_combined_ensemble | 1960.0 | 30 | yes | 500.7 | statsmodels , timemachines |
tsa_precision_combined_ensemble | 1955.0 | 36 | yes | 615.3 | statsmodels , timemachines |
precision_ema_ensemble | 1946.0 | 708 | yes | 0.6 | timemachines |
tsa_slowly_hypocratic_d0_ensemble | 1939.0 | 52 | yes | 196.9 | statsmodels , timemachines |
bats_damped | 1936.0 | 12 | yes | 1401.2 | tbats , timemachines |
elo_faster_univariate_aggressive_ensemble | 1921.0 | 414 | yes | 2.6 | timemachines |
slowly_moving_average | 1909.0 | 916 | yes | 0.0 | timemachines |
tsa_p1_d0_q0 | 1909.0 | 413 | yes | 26.7 | statsmodels , timemachines |
bats_arma_bc | 1906.0 | 15 | yes | 786.4 | tbats , timemachines |
quick_balanced_ema_ensemble | 1905.0 | 677 | yes | 0.4 | timemachines |
elo_fastest_univariate_precision_ensemble | 1898.0 | 880 | yes | 2.6 | timemachines |
bats_trendy_bc | 1890.0 | 21 | yes | 308.8 | tbats , timemachines |
elo_faster_residual_precision_ensemble | 1880.0 | 510 | yes | 36.4 | timemachines |
divine_univariate_hypocratic_fast | 1869.0 | 122 | yes | 0.0 | divinity , timemachines |
elo_fastest_residual_aggressive_ensemble | 1868.0 | 515 | yes | -3.1 | timemachines |
bats_fast | 1855.0 | 25 | yes | 810.6 | tbats , timemachines |
bats_bc | 1854.0 | 17 | yes | 918.1 | tbats , timemachines |
slow_aggressive_ema_ensemble | 1842.0 | 952 | yes | 1.0 | timemachines |
sk_ae | 1835.0 | 672 | yes | 14.6 | sktime , timemachines |
elo_faster_residual_balanced_ensemble | 1810.0 | 562 | yes | 54.5 | timemachines |
tsa_precision_theta_ensemble | 1807.0 | 584 | yes | -2.9 | statsmodels , timemachines |
balanced_ema_ensemble | 1795.0 | 668 | yes | 0.5 | timemachines |
thinking_precision_ensemble | 1789.0 | 24 | yes | 1.2 | timemachines |
thinking_slow_and_fast | 1764.0 | 1158 | yes | 0.1 | timemachines |
darts_prophet | 1754.0 | 25 | no | 94.7 | darts , timemachines |
sk_ae_add_damped | 1748.0 | 817 | yes | 15.8 | sktime , timemachines |
thinking_fast_and_slow | 1746.0 | 730 | yes | 0.1 | timemachines |
divine_univariate_hypocratic_slow | 1744.0 | 84 | yes | -0.1 | divinity , timemachines |
rvr_slowly_hypocratic | 1743.0 | 347 | yes | 0.6 | river , timemachines |
bats_trendy_arma | 1727.0 | 12 | yes | 1309.7 | tbats , timemachines |
slow_balanced_ema_ensemble | 1726.0 | 701 | yes | 0.4 | timemachines |
bats_damped_arma_bc | 1722.0 | 9 | yes | 653.9 | tbats , timemachines |
dlm_univariate_a | 1720.0 | 20 | no | -1.0 | pydlm , timemachines |
elo_fastest_univariate_aggressive_ensemble | 1714.0 | 636 | yes | -1.8 | timemachines |
darts_arima | 1688.0 | 48 | no | 12.7 | darts , timemachines |
elo_faster_univariate_precision_ensemble | 1672.0 | 423 | yes | -0.4 | timemachines |
fbprophet_univariate | 1642.0 | 148 | yes | 76.4 | prophet , timemachines |
fbprophet_exogenous_hypocratic | 1642.0 | 130 | yes | 76.6 | prophet , timemachines |
quick_precision_ema_ensemble | 1638.0 | 930 | yes | 0.7 | timemachines |
slow_precision_ema_ensemble | 1624.0 | 651 | yes | 0.4 | timemachines |
tsa_quickly_hypocratic_d0_ensemble | 1623.0 | 42 | yes | 325.1 | statsmodels , timemachines |
darts_fft | 1622.0 | 45 | no | 0.7 | darts , timemachines |
aggressive_ema_ensemble | 1605.0 | 638 | yes | 0.3 | timemachines |
sk_ae_add | 1605.0 | 1029 | yes | 12.8 | sktime , timemachines |
darts_four_theta | 1602.0 | 39 | no | 1.2 | darts , timemachines |
suc_quick_aggressive_ema_ensemble | 1602.0 | 41 | no | 8.6 | successor , timemachines |
orbit_lgt_24 | 1600 | 0 | yes | -42.0 | orbit-ml , 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 |
pycrt_mean_3 | 1600 | 0 | no | -0.6 | pycaret , timemachines |
pycrt_mean_8 | 1600 | 0 | no | -0.7 | pycaret , timemachines |
pycrt_median_3_full | 1600 | 0 | no | -1.0 | pycaret , timemachines |
pycrt_median_3 | 1600 | 0 | no | -1.7 | pycaret , timemachines |
darts_nbeats | 1600 | 0 | no | -1.0 | darts , timemachines |
fbprophet_cautious_hypocratic | 1597.0 | 88 | yes | 76.4 | prophet , timemachines |
quickly_moving_average | 1597.0 | 1051 | yes | 0.0 | timemachines |
pmd_univariate | 1577.0 | 541 | yes | 3.4 | pmdarima , timemachines |
fbprophet_known | 1575.0 | 116 | yes | 174.7 | prophet , timemachines |
bats_arma | 1551.0 | 11 | yes | 1459.5 | tbats , timemachines |
elo_fastest_residual_precision_ensemble | 1544.0 | 739 | yes | 1.7 | timemachines |
merlion_arima | 1539.0 | 16 | yes | 36.4 | timemachines |
suc_tsa_p2_d0_q1 | 1539.0 | 41 | no | 8.7 | successor , timemachines |
fbprophet_recursive | 1538.0 | 101 | yes | 81.1 | prophet , timemachines |
sk_theta | 1533.0 | 691 | yes | 0.8 | sktime , timemachines |
dlm_univariate_b | 1530.0 | 15 | no | -1.0 | pydlm , timemachines |
darts_theta | 1528.0 | 36 | no | 1.2 | darts , timemachines |
pycrt_median_8 | 1524.0 | 2 | no | -1.6 | pycaret , timemachines |
fbprophet_cautious | 1519.0 | 115 | yes | 164.0 | prophet , timemachines |
merlion_prophet | 1496.0 | 24 | yes | 35.1 | timemachines |
tsa_balanced_theta_ensemble | 1432.0 | 648 | yes | 2.8 | statsmodels , timemachines |
bats_trendy | 1403.0 | 14 | yes | 1065.8 | tbats , timemachines |
rapidly_moving_average | 1396.0 | 777 | yes | 0.1 | timemachines |
tsa_aggressive_theta_ensemble | 1308.0 | 889 | yes | 2.9 | statsmodels , timemachines |
quick_aggressive_ema_ensemble | 1305.0 | 1170 | yes | 0.4 | timemachines |
rvr_quickly_hypocratic | 1284.0 | 442 | yes | 0.4 | river , timemachines |
gk_basic_skater | 1256.0 | 10 | yes | 4080.3 | greykite , timemachines |
rvr_p2_d0_q0 | 1250.0 | 459 | yes | 0.0 | river , timemachines |
darts_exp_smoothing | 1232.0 | 78 | no | 10.4 | darts , timemachines |
fbprophet_exogenous | 1229.0 | 122 | yes | 123.6 | prophet , timemachines |
fbprophet_exogenous_exogenous | 1164.0 | 99 | yes | 247.8 | prophet , timemachines |
nprophet_p2 | 1158.0 | 184 | yes | 48.0 | neuralprophet , timemachines |
thinking_fast_and_fast | 1058.0 | 723 | yes | 0.1 | timemachines |
fbprophet_univariate_univariate_hypocratic | 1055.0 | 106 | yes | 260.3 | prophet , timemachines |
nprophet_p3 | 1027.0 | 258 | yes | 59.1 | neuralprophet , timemachines |
rvr_balanced_ensemble | 965.0 | 470 | yes | 0.5 | river , timemachines |
nprophet_p8 | 954.0 | 206 | yes | 76.3 | neuralprophet , timemachines |
nprophet_p3_hypocratic | 945.0 | 203 | yes | 48.1 | neuralprophet , timemachines |
rvr_p1_d0_q0 | 936.0 | 550 | yes | 0.0 | river , timemachines |
rvr_p8_d0_q0 | 927.0 | 377 | yes | 0.0 | river , timemachines |
rvr_p5_d0_q0 | 917.0 | 340 | yes | 0.0 | river , timemachines |
empirical_last_value | 903.0 | 652 | yes | 0.0 | timemachines |
merlion_mses | 879.0 | 15 | yes | 111.7 | timemachines |
nprophet_p5_hypocratic | 848.0 | 224 | yes | 70.9 | neuralprophet , timemachines |
nprophet_p8_hypocratic | 795.0 | 214 | yes | 68.7 | neuralprophet , timemachines |
nprophet_p5 | 790.0 | 206 | yes | 64.5 | neuralprophet , timemachines |
nprophet_p2_hypocratic | 757.0 | 177 | yes | 63.4 | neuralprophet , timemachines |
nprophet_p1 | 732.0 | 165 | yes | 71.2 | neuralprophet , timemachines |
nprophet_p1_hypocratic | 708.0 | 208 | yes | 72.5 | neuralprophet , timemachines |
smdk_p5_d0_q3_n1000_aggressive | 686.0 | 24 | yes | 126.3 | simdkalman , timemachines |
smdk_p5_d0_q3_n500_aggressive | 620.0 | 153 | yes | 76.2 | simdkalman , timemachines |
smdk_p5_d0_q3_n1000 | 372.0 | 29 | yes | 127.2 | simdkalman , timemachines |
smdk_p5_d0_q3_n500 | 130.0 | 204 | yes | 83.0 | simdkalman , timemachines |