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 | 2115.0 | 471 | yes | 32.2 | timemachines |
tsa_p3_d0_q0 | 2107.0 | 175 | yes | 57.1 | statsmodels , timemachines |
tsa_p2_d0_q0 | 2103.0 | 350 | yes | 15.7 | statsmodels , timemachines |
sluggish_moving_average | 2066.0 | 639 | yes | 0.0 | timemachines |
elo_fastest_univariate_precision_ensemble | 2061.0 | 864 | yes | 2.5 | timemachines |
elo_faster_residual_balanced_ensemble | 2052.0 | 544 | yes | 13.6 | timemachines |
slowly_moving_average | 2052.0 | 911 | yes | 0.0 | timemachines |
bats_trendy_arma | 2048.0 | 11 | yes | 861.3 | tbats , timemachines |
tsa_aggressive_combined_ensemble | 2046.0 | 24 | yes | 150.0 | statsmodels , timemachines |
darts_autoarima | 2042.0 | 16 | yes | 247.0 | darts , timemachines |
thinking_slow_and_fast | 2021.0 | 905 | yes | 0.2 | timemachines |
tsa_balanced_d0_ensemble | 2002.0 | 23 | yes | 138.3 | statsmodels , timemachines |
elo_faster_residual_aggressive_ensemble | 1999.0 | 367 | yes | 22.8 | timemachines |
tsa_aggressive_d0_ensemble | 1976.0 | 24 | yes | 331.2 | statsmodels , timemachines |
elo_fastest_residual_aggressive_ensemble | 1970.0 | 511 | yes | 0.8 | timemachines |
divine_univariate | 1966.0 | 166 | yes | 137.1 | divinity , timemachines |
elo_fastest_univariate_aggressive_ensemble | 1965.0 | 616 | yes | 0.8 | timemachines |
tsa_p1_d0_q1 | 1963.0 | 200 | yes | 69.5 | statsmodels , timemachines |
tsa_p3_d0_q1 | 1955.0 | 119 | yes | 56.5 | statsmodels , timemachines |
bats_trendy_arma_bc | 1945.0 | 11 | yes | 733.3 | tbats , timemachines |
thinking_precision_ensemble | 1944.0 | 19 | yes | 0.8 | timemachines |
tsa_slowly_hypocratic_d0_ensemble | 1939.0 | 52 | yes | 196.9 | statsmodels , timemachines |
tsa_balanced_combined_ensemble | 1935.0 | 27 | yes | 229.3 | statsmodels , timemachines |
orbit_lgt_24 | 1933.0 | 9 | yes | 44.6 | orbit-ml , timemachines |
tsa_p2_d0_q1 | 1925.0 | 216 | yes | 133.9 | statsmodels , timemachines |
bats_bc | 1894.0 | 16 | yes | 360.4 | tbats , timemachines |
sk_autoarima | 1888.0 | 25 | yes | 748.9 | sktime , timemachines |
thinking_fast_and_slow | 1887.0 | 726 | yes | 0.1 | timemachines |
bats_arma_bc | 1881.0 | 13 | yes | 570.5 | tbats , timemachines |
divine_univariate_hypocratic_fast | 1869.0 | 122 | yes | -0.1 | divinity , timemachines |
tsa_precision_d0_ensemble | 1867.0 | 44 | yes | 126.1 | statsmodels , timemachines |
pmd_exogenous_hypocratic | 1861.0 | 595 | yes | 2.4 | pmdarima , timemachines |
elo_fastest_univariate_balanced_ensemble | 1855.0 | 668 | yes | 0.9 | timemachines |
rvr_slowly_hypocratic | 1854.0 | 336 | yes | 0.4 | river , timemachines |
elo_fastest_residual_balanced_ensemble | 1842.0 | 625 | yes | 1.9 | timemachines |
elo_fastest_residual_precision_ensemble | 1830.0 | 710 | yes | 1.8 | timemachines |
slow_balanced_ema_ensemble | 1827.0 | 678 | yes | 1.0 | timemachines |
elo_faster_univariate_precision_ensemble | 1826.0 | 416 | yes | 2.9 | timemachines |
aggressive_ema_ensemble | 1825.0 | 634 | yes | 0.3 | timemachines |
merlion_arima | 1820.0 | 7 | yes | 23.6 | timemachines |
thinking_slow_and_slow | 1819.0 | 787 | yes | 0.1 | timemachines |
bats_damped_bc | 1802.0 | 14 | yes | 853.6 | tbats , timemachines |
elo_faster_residual_precision_ensemble | 1799.0 | 488 | yes | 14.8 | timemachines |
bats_arma | 1789.0 | 7 | yes | 366.6 | tbats , timemachines |
bats_fast | 1780.0 | 16 | yes | 198.9 | tbats , timemachines |
bats_damped_arma | 1776.0 | 12 | yes | 693.6 | tbats , timemachines |
tsa_quickly_hypocratic_d0_ensemble | 1773.0 | 38 | yes | 148.2 | statsmodels , timemachines |
tsa_precision_combined_ensemble | 1756.0 | 31 | yes | 416.2 | statsmodels , timemachines |
darts_prophet | 1754.0 | 25 | yes | 94.7 | darts , timemachines |
divine_univariate_hypocratic_slow | 1744.0 | 84 | yes | -0.1 | divinity , timemachines |
slow_precision_ema_ensemble | 1743.0 | 643 | yes | 0.2 | timemachines |
gk_basic_skater | 1735.0 | 3 | no | 1792.9 | greykite , timemachines |
bats_damped_arma_bc | 1722.0 | 9 | yes | 653.9 | tbats , timemachines |
dlm_univariate_a | 1720.0 | 20 | no | -1.0 | pydlm , timemachines |
quick_aggressive_ema_ensemble | 1716.0 | 915 | yes | 0.8 | timemachines |
bats_trendy_bc | 1714.0 | 25 | yes | 1241.1 | tbats , timemachines |
quick_balanced_ema_ensemble | 1713.0 | 662 | yes | 0.4 | timemachines |
quick_precision_ema_ensemble | 1707.0 | 917 | yes | 1.0 | timemachines |
bats_damped | 1702.0 | 12 | yes | 0.3 | tbats , timemachines |
precision_ema_ensemble | 1699.0 | 677 | yes | 0.6 | timemachines |
merlion_prophet | 1695.0 | 3 | yes | 24.0 | timemachines |
fbprophet_univariate_hypocratic | 1692.0 | 130 | yes | 82.5 | prophet , timemachines |
darts_arima | 1688.0 | 48 | no | 12.7 | darts , timemachines |
thinking_fast_and_fast | 1671.0 | 712 | yes | 0.1 | timemachines |
tsa_p1_d0_q0 | 1670.0 | 402 | yes | 18.5 | statsmodels , timemachines |
sk_ae | 1664.0 | 663 | yes | 7.9 | sktime , timemachines |
pmd_univariate | 1646.0 | 517 | yes | 13.7 | pmdarima , timemachines |
balanced_ema_ensemble | 1644.0 | 653 | 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 |
suc_quick_aggressive_ema_ensemble | 1630.0 | 39 | yes | 6.6 | successor , timemachines |
slow_aggressive_ema_ensemble | 1628.0 | 945 | yes | 0.4 | timemachines |
darts_fft | 1622.0 | 45 | no | 0.7 | darts , timemachines |
sk_ae_add | 1614.0 | 1026 | yes | 8.1 | sktime , timemachines |
elo_faster_univariate_aggressive_ensemble | 1610.0 | 404 | yes | 7.3 | timemachines |
darts_four_theta | 1602.0 | 39 | no | 1.2 | darts , timemachines |
pycrt_mean_3 | 1600 | 0 | yes | -1.0 | pycaret , timemachines |
orbit_lgt_12 | 1600 | 0 | yes | -0.2 | 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_8 | 1600 | 0 | no | -1.0 | 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 |
fbprophet_cautious | 1566.0 | 113 | yes | 76.0 | prophet , timemachines |
quickly_moving_average | 1565.0 | 1043 | yes | 0.1 | timemachines |
fbprophet_recursive | 1538.0 | 101 | yes | 81.1 | prophet , timemachines |
sk_ae_add_damped | 1537.0 | 809 | yes | 15.0 | sktime , timemachines |
dlm_univariate_b | 1530.0 | 15 | no | -1.0 | pydlm , timemachines |
darts_theta | 1528.0 | 36 | yes | 1.2 | darts , timemachines |
rvr_p2_d0_q0 | 1526.0 | 446 | no | 0.0 | river , timemachines |
fbprophet_known | 1525.0 | 115 | yes | 122.2 | prophet , timemachines |
pycrt_median_8 | 1524.0 | 2 | no | -1.6 | pycaret , timemachines |
rvr_quickly_hypocratic | 1518.0 | 422 | yes | 0.4 | river , timemachines |
tsa_aggressive_theta_ensemble | 1489.0 | 868 | yes | 2.2 | statsmodels , timemachines |
rapidly_moving_average | 1485.0 | 765 | yes | 0.0 | timemachines |
suc_tsa_p2_d0_q1 | 1479.0 | 40 | no | 8.8 | successor , timemachines |
tsa_balanced_theta_ensemble | 1462.0 | 645 | yes | 4.4 | statsmodels , timemachines |
sk_theta | 1444.0 | 674 | yes | 0.5 | sktime , timemachines |
bats_trendy | 1435.0 | 14 | yes | 1087.0 | tbats , timemachines |
fbprophet_exogenous | 1404.0 | 115 | yes | 82.5 | prophet , timemachines |
tsa_precision_theta_ensemble | 1371.0 | 565 | yes | 2.2 | statsmodels , timemachines |
merlion_mses | 1346.0 | 3 | yes | 44.8 | timemachines |
rvr_p5_d0_q0 | 1343.0 | 317 | yes | 0.0 | river , timemachines |
rvr_p1_d0_q0 | 1263.0 | 528 | yes | 0.0 | river , timemachines |
darts_exp_smoothing | 1232.0 | 78 | no | 10.4 | darts , timemachines |
rvr_balanced_ensemble | 1218.0 | 456 | no | 0.2 | river , timemachines |
fbprophet_exogenous_exogenous | 1164.0 | 99 | yes | 247.8 | prophet , timemachines |
nprophet_p3_hypocratic | 1113.0 | 188 | yes | 35.3 | neuralprophet , timemachines |
suc_tsa_aggressive_d0_ensemble | 1101.0 | 9 | yes | 3.8 | successor , timemachines |
rvr_p8_d0_q0 | 1075.0 | 357 | no | 0.0 | river , timemachines |
nprophet_p2 | 1069.0 | 183 | yes | 72.2 | neuralprophet , timemachines |
fbprophet_univariate_univariate_hypocratic | 1055.0 | 106 | yes | 260.3 | prophet , timemachines |
nprophet_p3 | 948.0 | 251 | yes | 66.5 | neuralprophet , timemachines |
nprophet_p1_hypocratic | 945.0 | 202 | yes | 48.7 | neuralprophet , timemachines |
nprophet_p5 | 932.0 | 193 | yes | 47.9 | neuralprophet , timemachines |
nprophet_p8 | 876.0 | 204 | yes | 36.1 | neuralprophet , timemachines |
nprophet_p1 | 862.0 | 156 | yes | 48.2 | neuralprophet , timemachines |
empirical_last_value | 859.0 | 635 | yes | 0.0 | timemachines |
nprophet_p5_hypocratic | 838.0 | 224 | yes | 86.3 | neuralprophet , timemachines |
nprophet_p2_hypocratic | 832.0 | 176 | yes | 62.1 | neuralprophet , timemachines |
nprophet_p8_hypocratic | 748.0 | 212 | yes | 71.1 | neuralprophet , timemachines |
smdk_p5_d0_q3_n1000_aggressive | 607.0 | 24 | yes | 172.0 | simdkalman , timemachines |
smdk_p5_d0_q3_n1000 | 493.0 | 19 | no | 77.2 | simdkalman , timemachines |
smdk_p5_d0_q3_n500_aggressive | 265.0 | 141 | yes | 84.3 | simdkalman , timemachines |
smdk_p5_d0_q3_n500 | 127.0 | 205 | yes | 73.3 | simdkalman , timemachines |