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_residual_balanced_ensemble | 2258.0 | 471 | yes | 15.2 | timemachines |
tsa_precision_combined_ensemble | 2184.0 | 12 | yes | 2401.5 | statsmodels , timemachines |
bats_damped_bc | 2120.0 | 26 | yes | 373.5 | tbats , timemachines |
thinking_slow_and_fast | 2088.0 | 686 | yes | 0.2 | timemachines |
tsa_aggressive_combined_ensemble | 2086.0 | 44 | yes | 312.4 | statsmodels , timemachines |
tsa_slowly_hypocratic_d0_ensemble | 2084.0 | 45 | yes | 160.1 | statsmodels , timemachines |
merlion_arima | 2061.0 | 17 | yes | 33.8 | timemachines |
tsa_precision_d0_ensemble | 2050.0 | 36 | yes | 171.6 | statsmodels , timemachines |
tsa_balanced_d0_ensemble | 2036.0 | 19 | yes | 175.8 | statsmodels , timemachines |
elo_faster_residual_precision_ensemble | 2029.0 | 579 | yes | 10.1 | timemachines |
elo_fastest_univariate_aggressive_ensemble | 1982.0 | 624 | yes | 1.9 | timemachines |
tsa_p3_d0_q1 | 1962.0 | 112 | yes | 53.6 | statsmodels , timemachines |
elo_fastest_univariate_balanced_ensemble | 1957.0 | 675 | yes | 4.3 | timemachines |
elo_fastest_univariate_precision_ensemble | 1952.0 | 988 | yes | 1.8 | timemachines |
elo_faster_univariate_aggressive_ensemble | 1952.0 | 539 | yes | 6.0 | timemachines |
tsa_p2_d0_q1 | 1952.0 | 189 | yes | 134.1 | statsmodels , timemachines |
sluggish_moving_average | 1945.0 | 731 | yes | 0.0 | timemachines |
elo_fastest_residual_balanced_ensemble | 1939.0 | 597 | yes | 1.5 | timemachines |
tsa_p2_d0_q0 | 1938.0 | 400 | yes | 29.0 | statsmodels , timemachines |
bats_trendy_arma_bc | 1938.0 | 12 | yes | 698.7 | tbats , timemachines |
slow_precision_ema_ensemble | 1932.0 | 708 | yes | 0.3 | timemachines |
tsa_quickly_hypocratic_d0_ensemble | 1931.0 | 45 | yes | 134.1 | statsmodels , timemachines |
pmd_univariate | 1887.0 | 468 | yes | 4.8 | pmdarima , timemachines |
divine_univariate_hypocratic_fast | 1879.0 | 48 | yes | 99.0 | divinity , timemachines |
tsa_p1_d0_q1 | 1878.0 | 221 | yes | 195.3 | statsmodels , timemachines |
sk_autoarima | 1870.0 | 59 | yes | 141.6 | sktime , timemachines |
fbprophet_cautious | 1865.0 | 34 | yes | 82.9 | prophet , timemachines |
bats_trendy | 1863.0 | 15 | yes | 1914.5 | tbats , timemachines |
elo_faster_univariate_balanced_ensemble | 1860.0 | 425 | yes | 3.4 | timemachines |
tsa_balanced_combined_ensemble | 1859.0 | 21 | yes | 403.4 | statsmodels , timemachines |
gk_basic_skater | 1858.0 | 4 | no | 2144.6 | greykite , timemachines |
bats_damped_arma | 1857.0 | 7 | yes | 891.7 | tbats , timemachines |
bats_trendy_bc | 1830.0 | 15 | yes | 316.2 | tbats , timemachines |
suc_tsa_aggressive_d0_ensemble | 1828.0 | 6 | yes | 7.0 | successor , timemachines |
precision_ema_ensemble | 1822.0 | 995 | yes | 0.2 | timemachines |
tsa_p3_d0_q0 | 1818.0 | 225 | yes | 23.3 | statsmodels , timemachines |
elo_faster_residual_aggressive_ensemble | 1809.0 | 441 | yes | 8.8 | timemachines |
pmd_exogenous_hypocratic | 1800.0 | 497 | yes | 4.3 | pmdarima , timemachines |
elo_faster_univariate_precision_ensemble | 1800.0 | 489 | yes | 2.6 | timemachines |
bats_damped | 1786.0 | 17 | yes | 1060.7 | tbats , timemachines |
slow_aggressive_ema_ensemble | 1779.0 | 579 | yes | 0.3 | timemachines |
fbprophet_exogenous_hypocratic | 1765.0 | 46 | yes | 81.1 | prophet , timemachines |
bats_bc | 1760.0 | 32 | yes | 354.8 | tbats , timemachines |
thinking_slow_and_slow | 1757.0 | 663 | yes | 0.1 | timemachines |
elo_fastest_residual_precision_ensemble | 1726.0 | 710 | yes | 1.3 | timemachines |
tsa_aggressive_d0_ensemble | 1719.0 | 11 | yes | 4426.6 | statsmodels , timemachines |
elo_fastest_residual_aggressive_ensemble | 1711.0 | 552 | yes | 0.7 | timemachines |
darts_autoarima | 1708.0 | 17 | yes | 149.9 | darts , timemachines |
smdk_p5_d0_q3_n500 | 1695.0 | 172 | yes | 44.6 | simdkalman , timemachines |
bats_arma_bc | 1693.0 | 5 | yes | 4404.6 | tbats , timemachines |
fbprophet_cautious_hypocratic | 1684.0 | 54 | yes | 140.9 | prophet , timemachines |
divine_univariate | 1680.0 | 58 | yes | 71.1 | divinity , timemachines |
quick_precision_ema_ensemble | 1667.0 | 702 | yes | 0.1 | timemachines |
slowly_moving_average | 1664.0 | 916 | yes | 0.0 | timemachines |
fbprophet_univariate | 1663.0 | 67 | yes | 166.4 | prophet , timemachines |
slow_balanced_ema_ensemble | 1660.0 | 966 | yes | 0.1 | timemachines |
bats_arma | 1660.0 | 12 | yes | 452.1 | tbats , timemachines |
fbprophet_univariate_hypocratic | 1656.0 | 44 | yes | 110.9 | prophet , timemachines |
bats_trendy_arma | 1640.0 | 9 | yes | 348.6 | tbats , timemachines |
fbprophet_exogenous | 1636.0 | 83 | yes | 99.1 | prophet , timemachines |
divine_univariate_hypocratic_slow | 1633.0 | 86 | yes | -0.1 | divinity , timemachines |
thinking_fast_and_slow | 1621.0 | 661 | yes | 0.1 | timemachines |
aggressive_ema_ensemble | 1612.0 | 872 | yes | 0.2 | timemachines |
rvr_quickly_hypocratic | 1608.0 | 384 | no | 0.4 | river , timemachines |
pycrt_median_3_full | 1600 | 0 | yes | -1.0 | pycaret , timemachines |
pycrt_median_3 | 1600 | 0 | yes | -19.8 | pycaret , timemachines |
pycrt_mean_8 | 1600 | 0 | yes | -22.9 | pycaret , timemachines |
orbit_lgt_12 | 1600 | 0 | yes | 0.0 | orbit-ml , timemachines |
orbit_lgt_24 | 1600 | 0 | yes | -0.8 | 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.0 | 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 |
bats_damped_arma_bc | 1594.0 | 6 | yes | 732.6 | tbats , timemachines |
quick_balanced_ema_ensemble | 1575.0 | 643 | yes | 0.1 | timemachines |
sk_ae | 1569.0 | 715 | yes | 5.0 | sktime , timemachines |
quick_aggressive_ema_ensemble | 1568.0 | 1483 | yes | 0.6 | timemachines |
fbprophet_univariate_univariate_hypocratic | 1561.0 | 48 | yes | 415.3 | prophet , timemachines |
suc_quick_aggressive_ema_ensemble | 1553.0 | 29 | yes | 5.7 | successor , timemachines |
tsa_aggressive_theta_ensemble | 1553.0 | 964 | yes | 4.6 | statsmodels , timemachines |
pycrt_mean_3 | 1552.0 | 2 | yes | 4836.3 | pycaret , timemachines |
sk_ae_add | 1547.0 | 1238 | yes | 20.1 | sktime , timemachines |
darts_four_theta | 1541.0 | 46 | yes | 1.7 | darts , timemachines |
tsa_precision_theta_ensemble | 1537.0 | 598 | yes | 2.3 | statsmodels , timemachines |
quickly_moving_average | 1530.0 | 732 | yes | 0.0 | timemachines |
fbprophet_known | 1527.0 | 40 | yes | 76.2 | prophet , timemachines |
darts_theta | 1523.0 | 40 | no | 2.7 | darts , timemachines |
merlion_mses | 1500.0 | 3 | yes | 62.9 | timemachines |
suc_tsa_p2_d0_q1 | 1494.0 | 30 | no | 6.9 | successor , timemachines |
thinking_fast_and_fast | 1483.0 | 657 | yes | 0.1 | timemachines |
pycrt_median_8 | 1482.0 | 1 | no | -20.1 | pycaret , timemachines |
sk_theta | 1480.0 | 645 | yes | 0.8 | sktime , timemachines |
rvr_slowly_hypocratic | 1448.0 | 337 | yes | 0.4 | river , timemachines |
tsa_p1_d0_q0 | 1447.0 | 420 | yes | 28.9 | statsmodels , timemachines |
darts_fft | 1440.0 | 45 | yes | 0.7 | darts , timemachines |
merlion_prophet | 1428.0 | 20 | yes | 43.8 | timemachines |
darts_prophet | 1423.0 | 14 | no | 77.5 | darts , timemachines |
sk_ae_add_damped | 1411.0 | 825 | yes | 9.0 | sktime , timemachines |
thinking_precision_ensemble | 1402.0 | 22 | yes | 0.6 | timemachines |
tsa_balanced_theta_ensemble | 1389.0 | 618 | yes | 2.9 | statsmodels , timemachines |
darts_arima | 1388.0 | 42 | yes | 9.8 | darts , timemachines |
darts_exp_smoothing | 1383.0 | 76 | yes | 23.4 | darts , timemachines |
fbprophet_recursive | 1359.0 | 39 | yes | 81.8 | prophet , timemachines |
bats_fast | 1339.0 | 24 | yes | 327.8 | tbats , timemachines |
balanced_ema_ensemble | 1329.0 | 873 | yes | 0.4 | timemachines |
rvr_balanced_ensemble | 1312.0 | 431 | yes | 0.3 | river , timemachines |
rvr_p2_d0_q0 | 1256.0 | 425 | no | 0.0 | river , timemachines |
rvr_p1_d0_q0 | 1239.0 | 555 | yes | 0.0 | river , timemachines |
nprophet_p5 | 1220.0 | 207 | yes | 31.5 | neuralprophet , timemachines |
nprophet_p3 | 1140.0 | 180 | yes | 54.0 | neuralprophet , timemachines |
rapidly_moving_average | 1120.0 | 818 | yes | 0.0 | timemachines |
nprophet_p1_hypocratic | 1110.0 | 223 | yes | 34.0 | neuralprophet , timemachines |
nprophet_p8 | 1101.0 | 223 | yes | 31.8 | neuralprophet , timemachines |
smdk_p5_d0_q3_n1000 | 1059.0 | 86 | no | 52.6 | simdkalman , timemachines |
fbprophet_exogenous_exogenous | 1049.0 | 30 | yes | 224.2 | prophet , timemachines |
rvr_p5_d0_q0 | 1047.0 | 361 | no | 0.0 | river , timemachines |
nprophet_p8_hypocratic | 1044.0 | 186 | yes | 73.6 | neuralprophet , timemachines |
nprophet_p2_hypocratic | 1002.0 | 223 | yes | 66.0 | neuralprophet , timemachines |
nprophet_p3_hypocratic | 987.0 | 190 | yes | 40.8 | neuralprophet , timemachines |
empirical_last_value | 969.0 | 483 | yes | 0.0 | timemachines |
rvr_p8_d0_q0 | 968.0 | 363 | yes | 0.1 | river , timemachines |
nprophet_p5_hypocratic | 964.0 | 328 | yes | 35.9 | neuralprophet , timemachines |
nprophet_p1 | 955.0 | 342 | yes | 31.8 | neuralprophet , timemachines |
nprophet_p2 | 799.0 | 283 | yes | 32.4 | neuralprophet , timemachines |
smdk_p5_d0_q3_n500_aggressive | 798.0 | 183 | no | 26.5 | simdkalman , timemachines |
smdk_p5_d0_q3_n1000_aggressive | 764.0 | 78 | no | 68.1 | simdkalman , timemachines |