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 |
---|---|---|---|---|---|
tsa_balanced_d0_ensemble | 2286.0 | 20 | yes | 243.1 | statsmodels , timemachines |
tsa_p2_d0_q1 | 2170.0 | 595 | yes | 79.5 | statsmodels , timemachines |
tsa_precision_d0_ensemble | 2056.0 | 58 | yes | 189.0 | statsmodels , timemachines |
tsa_aggressive_combined_ensemble | 2034.0 | 23 | yes | 5620.4 | statsmodels , timemachines |
elo_faster_residual_precision_ensemble | 2026.0 | 1070 | yes | 22.2 | timemachines |
quick_aggressive_ema_ensemble | 2005.0 | 2747 | yes | 0.1 | timemachines |
tsa_p1_d0_q1 | 2005.0 | 399 | yes | 266.8 | statsmodels , timemachines |
merlion_prophet | 1996.0 | 38 | yes | 33.4 | timemachines |
slow_aggressive_ema_ensemble | 1992.0 | 1169 | yes | 0.2 | timemachines |
elo_fastest_residual_precision_ensemble | 1987.0 | 1435 | yes | 1.1 | timemachines |
elo_fastest_univariate_balanced_ensemble | 1973.0 | 1034 | yes | 2634.1 | timemachines |
bats_damped_bc | 1970.0 | 41 | yes | 1493.3 | tbats , timemachines |
tsa_balanced_combined_ensemble | 1963.0 | 44 | yes | 305.5 | statsmodels , timemachines |
tsa_p2_d0_q0 | 1948.0 | 533 | yes | 32.3 | statsmodels , timemachines |
sk_ae_add | 1936.0 | 2060 | yes | 9.4 | sktime , timemachines |
tsa_balanced_theta_ensemble | 1910.0 | 1346 | yes | 2.8 | statsmodels , timemachines |
elo_fastest_univariate_precision_ensemble | 1910.0 | 1886 | yes | 2016.6 | timemachines |
tsa_p3_d0_q1 | 1908.0 | 149 | yes | 70.7 | statsmodels , timemachines |
slow_balanced_ema_ensemble | 1904.0 | 1771 | yes | 0.1 | timemachines |
elo_faster_univariate_balanced_ensemble | 1899.0 | 841 | yes | 1219.8 | timemachines |
thinking_precision_ensemble | 1896.0 | 69 | yes | 0.3 | timemachines |
smdk_p5_d0_q3_n500 | 1895.0 | 955 | yes | 23.9 | simdkalman , timemachines |
sk_ae | 1883.0 | 1380 | yes | 9.3 | sktime , timemachines |
balanced_ema_ensemble | 1882.0 | 1665 | yes | 0.1 | timemachines |
sk_autoarima | 1873.0 | 125 | yes | 645.4 | sktime , timemachines |
bats_trendy_bc | 1873.0 | 27 | yes | 1162.5 | tbats , timemachines |
tsa_aggressive_d0_ensemble | 1860.0 | 23 | yes | 156.8 | statsmodels , timemachines |
elo_faster_univariate_aggressive_ensemble | 1854.0 | 1066 | yes | 931.3 | timemachines |
elo_faster_univariate_precision_ensemble | 1848.0 | 1152 | yes | 956.2 | timemachines |
tsa_p3_d0_q0 | 1844.0 | 421 | yes | 39.0 | statsmodels , timemachines |
quick_balanced_ema_ensemble | 1790.0 | 1226 | yes | 0.1 | timemachines |
slow_precision_ema_ensemble | 1788.0 | 1209 | yes | 0.1 | timemachines |
bats_trendy_arma_bc | 1785.0 | 21 | yes | 877.7 | tbats , timemachines |
nprophet_p1_hypocratic | 1783.0 | 483 | yes | 47.0 | neuralprophet , timemachines |
aggressive_ema_ensemble | 1779.0 | 1491 | yes | 0.1 | timemachines |
quickly_moving_average | 1765.0 | 1236 | yes | 0.0 | timemachines |
bats_damped_arma | 1752.0 | 13 | yes | 788.8 | tbats , timemachines |
elo_faster_residual_aggressive_ensemble | 1737.0 | 658 | yes | 30.0 | timemachines |
quick_precision_ema_ensemble | 1731.0 | 1301 | yes | 0.1 | timemachines |
darts_autoarima | 1725.0 | 23 | no | 33.9 | darts , timemachines |
gk_basic_skater | 1709.0 | 9 | yes | 4460.2 | greykite , timemachines |
elo_fastest_univariate_aggressive_ensemble | 1701.0 | 1075 | yes | 3717.2 | timemachines |
thinking_slow_and_fast | 1694.0 | 1400 | yes | 0.0 | timemachines |
bats_arma_bc | 1692.0 | 18 | yes | 2121.0 | tbats , timemachines |
elo_fastest_residual_aggressive_ensemble | 1686.0 | 1135 | yes | 1.7 | timemachines |
smdk_p5_d0_q3_n1000 | 1678.0 | 612 | yes | 49.9 | simdkalman , timemachines |
elo_faster_residual_balanced_ensemble | 1675.0 | 1114 | yes | 18.8 | timemachines |
tsa_precision_theta_ensemble | 1667.0 | 1059 | yes | 2.7 | statsmodels , timemachines |
tsa_precision_combined_ensemble | 1662.0 | 51 | yes | 876.1 | statsmodels , timemachines |
pycrt_median_3_full | 1661.0 | 2 | yes | 5828.6 | pycaret , timemachines |
darts_theta | 1657.0 | 91 | no | 1.2 | darts , timemachines |
bats_trendy | 1656.0 | 38 | yes | 970.9 | tbats , timemachines |
bats_damped_arma_bc | 1650.0 | 13 | yes | 1396.8 | tbats , timemachines |
bats_damped | 1648.0 | 22 | yes | 939.5 | tbats , timemachines |
thinking_fast_and_slow | 1638.0 | 1135 | yes | 0.0 | timemachines |
divine_univariate | 1629.0 | 101 | yes | -0.1 | divinity , timemachines |
divine_univariate_hypocratic_slow | 1615.0 | 161 | yes | 81.3 | divinity , timemachines |
merlion_arima | 1607.0 | 41 | yes | 30.3 | timemachines |
bats_trendy_arma | 1601.0 | 28 | yes | 1904.6 | tbats , timemachines |
tsa_p1_d0_q0 | 1600.0 | 760 | yes | 31.6 | statsmodels , timemachines |
orbit_lgt_24 | 1600 | 0 | yes | 0.0 | orbit-ml , timemachines |
orbit_lgt_12 | 1600 | 0 | yes | -0.3 | 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 |
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 |
darts_prophet | 1599.0 | 26 | no | 78.1 | darts , timemachines |
pycrt_median_8 | 1599.0 | 2 | no | 5004.0 | pycaret , timemachines |
darts_fft | 1598.0 | 101 | no | 0.7 | darts , timemachines |
darts_four_theta | 1579.0 | 181 | no | 1.3 | darts , timemachines |
fbprophet_univariate | 1578.0 | 169 | yes | 121.5 | prophet , timemachines |
slowly_moving_average | 1572.0 | 1626 | yes | 0.0 | timemachines |
bats_fast | 1569.0 | 42 | yes | 662.7 | tbats , timemachines |
sk_ae_add_damped | 1564.0 | 1489 | yes | 9.0 | sktime , timemachines |
pycrt_mean_8 | 1562.0 | 2 | no | 2918.5 | pycaret , timemachines |
pycrt_mean_3 | 1562.0 | 2 | yes | 2590.9 | pycaret , timemachines |
fbprophet_cautious_hypocratic | 1559.0 | 58 | yes | 81.4 | prophet , timemachines |
fbprophet_known | 1557.0 | 59 | yes | 80.7 | prophet , timemachines |
fbprophet_univariate_hypocratic | 1547.0 | 64 | yes | 82.8 | prophet , timemachines |
darts_exp_smoothing | 1545.0 | 290 | no | 10.1 | darts , timemachines |
smdk_p5_d0_q3_n1000_aggressive | 1540.0 | 660 | yes | 59.0 | simdkalman , timemachines |
bats_arma | 1529.0 | 21 | yes | 1690.5 | tbats , timemachines |
divine_univariate_hypocratic_fast | 1498.0 | 104 | yes | 67.0 | divinity , timemachines |
elo_fastest_residual_balanced_ensemble | 1498.0 | 1421 | yes | 0.9 | timemachines |
suc_tsa_p2_d0_q1 | 1492.0 | 110 | no | 1.8 | successor , timemachines |
nprophet_p2 | 1490.0 | 661 | yes | 46.4 | neuralprophet , timemachines |
fbprophet_exogenous_exogenous | 1490.0 | 48 | yes | 243.1 | prophet , timemachines |
fbprophet_cautious | 1485.0 | 45 | yes | 80.3 | prophet , timemachines |
suc_tsa_aggressive_d0_ensemble | 1485.0 | 11 | yes | 1.5 | successor , timemachines |
darts_arima | 1484.0 | 114 | no | 16.2 | darts , timemachines |
bats_bc | 1483.0 | 44 | yes | 759.8 | tbats , timemachines |
fbprophet_exogenous | 1480.0 | 102 | yes | 177.3 | prophet , timemachines |
thinking_fast_and_fast | 1479.0 | 1282 | yes | 0.0 | timemachines |
tsa_aggressive_theta_ensemble | 1473.0 | 1721 | yes | 2.6 | statsmodels , timemachines |
fbprophet_exogenous_hypocratic | 1470.0 | 72 | yes | 80.2 | prophet , timemachines |
sluggish_moving_average | 1468.0 | 1431 | yes | 0.0 | timemachines |
pycrt_median_3 | 1454.0 | 1 | yes | 1416.4 | pycaret , timemachines |
sk_theta | 1448.0 | 1228 | yes | 0.8 | sktime , timemachines |
suc_quick_aggressive_ema_ensemble | 1446.0 | 99 | no | 3.1 | successor , timemachines |
precision_ema_ensemble | 1435.0 | 1863 | yes | 0.2 | timemachines |
pmd_exogenous_hypocratic | 1432.0 | 1013 | yes | 4.1 | pmdarima , timemachines |
nprophet_p3_hypocratic | 1421.0 | 511 | yes | 68.6 | neuralprophet , timemachines |
fbprophet_recursive | 1359.0 | 71 | yes | 123.9 | prophet , timemachines |
nprophet_p2_hypocratic | 1349.0 | 524 | yes | 61.1 | neuralprophet , timemachines |
nprophet_p5_hypocratic | 1335.0 | 604 | yes | 65.3 | neuralprophet , timemachines |
smdk_p5_d0_q3_n500_aggressive | 1325.0 | 814 | yes | 27.0 | simdkalman , timemachines |
nprophet_p3 | 1318.0 | 399 | yes | 36.0 | neuralprophet , timemachines |
fbprophet_univariate_univariate_hypocratic | 1306.0 | 49 | yes | 583.5 | prophet , timemachines |
tsa_slowly_hypocratic_d0_ensemble | 1298.0 | 74 | yes | 172.5 | statsmodels , timemachines |
rvr_balanced_ensemble | 1282.0 | 741 | yes | 0.3 | river , timemachines |
thinking_slow_and_slow | 1275.0 | 1184 | yes | 0.1 | timemachines |
nprophet_p8_hypocratic | 1266.0 | 432 | yes | 49.9 | neuralprophet , timemachines |
nprophet_p8 | 1252.0 | 481 | yes | 60.6 | neuralprophet , timemachines |
rapidly_moving_average | 1214.0 | 1479 | yes | 0.0 | timemachines |
rvr_slowly_hypocratic | 1211.0 | 638 | yes | 0.7 | river , timemachines |
nprophet_p1 | 1196.0 | 1281 | yes | 66.9 | neuralprophet , timemachines |
rvr_p5_d0_q0 | 1138.0 | 618 | yes | 0.1 | river , timemachines |
pmd_univariate | 1095.0 | 809 | yes | 21.2 | pmdarima , timemachines |
nprophet_p5 | 1088.0 | 613 | yes | 57.4 | neuralprophet , timemachines |
empirical_last_value | 1069.0 | 901 | yes | 0.0 | timemachines |
rvr_p1_d0_q0 | 1058.0 | 917 | yes | 0.0 | river , timemachines |
rvr_quickly_hypocratic | 1057.0 | 899 | yes | 0.8 | river , timemachines |
tsa_quickly_hypocratic_d0_ensemble | 1049.0 | 67 | yes | 326.0 | statsmodels , timemachines |
rvr_p8_d0_q0 | 1031.0 | 627 | yes | 0.1 | river , timemachines |
rvr_p2_d0_q0 | 896.0 | 809 | yes | 0.1 | river , timemachines |
merlion_mses | 717.0 | 22 | yes | 140.5 | timemachines |