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_precision_combined_ensemble | 2100.0 | 27 | yes | 583.1 | statsmodels , timemachines |
tsa_p2_d0_q1 | 2082.0 | 399 | yes | 172.9 | statsmodels , timemachines |
orbit_lgt_24 | 2049.0 | 14 | yes | 51.7 | orbit-ml , timemachines |
tsa_p1_d0_q1 | 2018.0 | 380 | yes | 107.0 | statsmodels , timemachines |
bats_damped_arma | 2018.0 | 19 | yes | 1089.1 | tbats , timemachines |
sk_ae_add_damped | 1990.0 | 1084 | yes | 11.4 | sktime , timemachines |
tsa_precision_d0_ensemble | 1984.0 | 41 | yes | 282.1 | statsmodels , timemachines |
sk_autoarima | 1974.0 | 72 | yes | 151.4 | sktime , timemachines |
divine_univariate_hypocratic_fast | 1967.0 | 143 | yes | 71.0 | divinity , timemachines |
elo_faster_residual_balanced_ensemble | 1952.0 | 1581 | yes | 3.7 | timemachines |
quick_balanced_ema_ensemble | 1949.0 | 1159 | yes | 0.2 | timemachines |
sk_ae | 1922.0 | 958 | yes | 11.5 | sktime , timemachines |
bats_bc | 1916.0 | 23 | yes | 257.1 | tbats , timemachines |
elo_fastest_univariate_aggressive_ensemble | 1912.0 | 1019 | yes | 0.9 | timemachines |
tsa_p2_d0_q0 | 1899.0 | 657 | yes | 48.1 | statsmodels , timemachines |
elo_faster_residual_precision_ensemble | 1898.0 | 669 | yes | 2.5 | timemachines |
slow_balanced_ema_ensemble | 1897.0 | 1449 | yes | 0.2 | timemachines |
bats_trendy_bc | 1888.0 | 25 | yes | 517.4 | tbats , timemachines |
bats_trendy | 1881.0 | 15 | yes | 366.1 | tbats , timemachines |
aggressive_ema_ensemble | 1881.0 | 1335 | yes | 0.2 | timemachines |
tsa_p3_d0_q0 | 1877.0 | 300 | yes | 96.2 | statsmodels , timemachines |
tsa_balanced_d0_ensemble | 1863.0 | 28 | yes | 171.9 | statsmodels , timemachines |
bats_arma_bc | 1859.0 | 7 | no | 4617.3 | tbats , timemachines |
precision_ema_ensemble | 1857.0 | 1278 | yes | 0.0 | timemachines |
elo_faster_residual_aggressive_ensemble | 1845.0 | 823 | yes | 1.8 | timemachines |
slow_aggressive_ema_ensemble | 1825.0 | 1539 | yes | 0.1 | timemachines |
bats_trendy_arma | 1818.0 | 14 | yes | 698.2 | tbats , timemachines |
sk_theta | 1818.0 | 1265 | yes | 1.3 | sktime , timemachines |
slow_precision_ema_ensemble | 1817.0 | 1173 | yes | 0.2 | timemachines |
bats_fast | 1806.0 | 26 | yes | 284.1 | tbats , timemachines |
tsa_p3_d0_q1 | 1797.0 | 212 | yes | 61.9 | statsmodels , timemachines |
elo_fastest_residual_precision_ensemble | 1791.0 | 1689 | yes | 1.9 | timemachines |
divine_univariate_hypocratic_slow | 1791.0 | 135 | yes | 163.7 | divinity , timemachines |
darts_autoarima | 1779.0 | 34 | yes | 62.9 | darts , timemachines |
tsa_precision_theta_ensemble | 1777.0 | 1157 | yes | 4.6 | statsmodels , timemachines |
bats_damped_bc | 1775.0 | 29 | yes | 1265.9 | tbats , timemachines |
empirical_last_value | 1767.0 | 1001 | yes | 0.0 | timemachines |
tsa_aggressive_combined_ensemble | 1765.0 | 14 | yes | 278.2 | statsmodels , timemachines |
quickly_moving_average | 1764.0 | 1800 | yes | 0.0 | timemachines |
bats_damped_arma_bc | 1759.0 | 21 | yes | 1696.2 | tbats , timemachines |
quick_aggressive_ema_ensemble | 1759.0 | 1875 | yes | 0.1 | timemachines |
bats_trendy_arma_bc | 1745.0 | 20 | yes | 3227.4 | tbats , timemachines |
tsa_balanced_theta_ensemble | 1743.0 | 1425 | yes | 6.2 | statsmodels , timemachines |
bats_damped | 1731.0 | 25 | yes | 984.1 | tbats , timemachines |
tsa_aggressive_d0_ensemble | 1719.0 | 42 | yes | 176.4 | statsmodels , timemachines |
dlm_univariate_a | 1719.0 | 61 | no | -1.0 | pydlm , timemachines |
elo_fastest_univariate_balanced_ensemble | 1719.0 | 1470 | yes | 0.7 | timemachines |
nprophet_p2_hypocratic | 1712.0 | 449 | yes | 36.7 | neuralprophet , timemachines |
elo_fastest_residual_aggressive_ensemble | 1709.0 | 1806 | yes | 2.7 | timemachines |
bats_arma | 1704.0 | 12 | yes | 252.7 | tbats , timemachines |
tsa_aggressive_theta_ensemble | 1685.0 | 1180 | yes | 3.5 | statsmodels , timemachines |
pycrt_median_8 | 1674.0 | 4 | yes | 2879.6 | pycaret , timemachines |
divine_univariate | 1668.0 | 224 | yes | -0.1 | divinity , timemachines |
merlion_mses | 1666.0 | 15 | yes | 121.7 | timemachines |
rapidly_moving_average | 1653.0 | 1422 | yes | 0.0 | timemachines |
slowly_moving_average | 1651.0 | 1518 | yes | 0.0 | timemachines |
quick_precision_ema_ensemble | 1644.0 | 1145 | yes | 0.1 | timemachines |
thinking_slow_and_slow | 1642.0 | 1240 | yes | 0.0 | timemachines |
nprophet_p1 | 1638.0 | 1072 | yes | 36.2 | neuralprophet , timemachines |
tsa_balanced_combined_ensemble | 1638.0 | 33 | yes | 701.0 | statsmodels , timemachines |
fbprophet_cautious | 1634.0 | 152 | yes | 83.2 | prophet , timemachines |
pycrt_median_3 | 1630.0 | 2 | yes | 1392.1 | pycaret , timemachines |
fbprophet_cautious_hypocratic | 1620.0 | 103 | yes | 75.2 | prophet , timemachines |
tsa_slowly_hypocratic_d0_ensemble | 1613.0 | 77 | yes | 159.1 | statsmodels , timemachines |
tsa_p1_d0_q0 | 1608.0 | 766 | yes | 38.7 | statsmodels , timemachines |
darts_four_theta | 1608.0 | 112 | no | 2.1 | darts , timemachines |
balanced_ema_ensemble | 1605.0 | 1169 | yes | 0.1 | 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_damped | 1600 | 0 | no | -0.1 | sktime , timemachines |
sk_ae_mul | 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 |
fbprophet_chaser | 1600 | 0 | no | -1.0 | prophet , timemachines |
darts_nbeats | 1600 | 0 | no | -1.0 | darts , timemachines |
fbprophet_univariate | 1598.0 | 238 | yes | 154.8 | prophet , timemachines |
fbprophet_univariate_hypocratic | 1591.0 | 111 | yes | 81.8 | prophet , timemachines |
pycrt_median_3_full | 1590.0 | 2 | yes | 24587.1 | pycaret , timemachines |
nprophet_p3 | 1588.0 | 404 | yes | 64.4 | neuralprophet , timemachines |
elo_faster_univariate_precision_ensemble | 1577.0 | 964 | yes | 21.4 | timemachines |
darts_arima | 1571.0 | 73 | no | 7.7 | darts , timemachines |
smdk_p5_d0_q3_n1000 | 1566.0 | 525 | yes | 33.9 | simdkalman , timemachines |
elo_fastest_residual_balanced_ensemble | 1565.0 | 1307 | yes | 2.7 | timemachines |
darts_prophet | 1558.0 | 28 | yes | 98.8 | darts , timemachines |
pycrt_mean_8 | 1551.0 | 2 | no | 4365.7 | pycaret , timemachines |
elo_faster_univariate_aggressive_ensemble | 1547.0 | 1157 | yes | 26.5 | timemachines |
smdk_p5_d0_q3_n500 | 1525.0 | 1189 | yes | 17.0 | simdkalman , timemachines |
nprophet_p8 | 1525.0 | 412 | yes | 37.2 | neuralprophet , timemachines |
thinking_fast_and_fast | 1523.0 | 1136 | yes | 0.0 | timemachines |
sk_ae_add | 1516.0 | 1304 | yes | 22.7 | sktime , timemachines |
tsa_quickly_hypocratic_d0_ensemble | 1505.0 | 67 | yes | 162.2 | statsmodels , timemachines |
pycrt_mean_3 | 1503.0 | 1 | no | 1364.8 | pycaret , timemachines |
thinking_precision_ensemble | 1494.0 | 55 | yes | 0.5 | timemachines |
elo_faster_univariate_balanced_ensemble | 1490.0 | 906 | yes | 17.9 | timemachines |
darts_theta | 1473.0 | 91 | no | 1.2 | darts , timemachines |
smdk_p5_d0_q3_n500_aggressive | 1461.0 | 729 | yes | 25.4 | simdkalman , timemachines |
elo_fastest_univariate_precision_ensemble | 1451.0 | 1198 | yes | 1.0 | timemachines |
fbprophet_univariate_univariate_hypocratic | 1424.0 | 93 | yes | 244.4 | prophet , timemachines |
fbprophet_exogenous_hypocratic | 1416.0 | 114 | yes | 81.4 | prophet , timemachines |
gk_basic_skater | 1406.0 | 4 | no | 1557.8 | greykite , timemachines |
merlion_prophet | 1400.0 | 9 | yes | 44.1 | timemachines |
dlm_univariate_b | 1399.0 | 45 | no | -1.0 | pydlm , timemachines |
thinking_fast_and_slow | 1396.0 | 1275 | yes | 0.0 | timemachines |
rvr_slowly_hypocratic | 1384.0 | 551 | yes | 0.6 | river , timemachines |
darts_fft | 1378.0 | 69 | yes | 0.7 | darts , timemachines |
thinking_slow_and_fast | 1371.0 | 1340 | yes | 0.0 | timemachines |
smdk_p5_d0_q3_n1000_aggressive | 1369.0 | 599 | yes | 48.2 | simdkalman , timemachines |
nprophet_p2 | 1368.0 | 476 | yes | 0.0 | neuralprophet , timemachines |
fbprophet_exogenous | 1345.0 | 164 | yes | 88.9 | prophet , timemachines |
pmd_univariate | 1336.0 | 994 | yes | 20.1 | pmdarima , timemachines |
darts_exp_smoothing | 1333.0 | 134 | no | 10.4 | darts , timemachines |
rvr_balanced_ensemble | 1332.0 | 794 | yes | 0.4 | river , timemachines |
nprophet_p5 | 1332.0 | 557 | yes | 36.6 | neuralprophet , timemachines |
nprophet_p8_hypocratic | 1331.0 | 538 | yes | 48.4 | neuralprophet , timemachines |
orbit_lgt_12 | 1303.0 | 4 | yes | 31.7 | orbit-ml , timemachines |
nprophet_p5_hypocratic | 1287.0 | 440 | yes | 61.3 | neuralprophet , timemachines |
sluggish_moving_average | 1285.0 | 1932 | yes | 0.0 | timemachines |
merlion_arima | 1268.0 | 9 | yes | 24.2 | timemachines |
fbprophet_recursive | 1264.0 | 164 | yes | 165.3 | prophet , timemachines |
pmd_exogenous_hypocratic | 1261.0 | 951 | yes | 13.0 | pmdarima , timemachines |
suc_quick_aggressive_ema_ensemble | 1260.0 | 65 | no | 4.3 | successor , timemachines |
suc_tsa_p2_d0_q1 | 1246.0 | 75 | no | 3.0 | successor , timemachines |
nprophet_p3_hypocratic | 1229.0 | 473 | yes | 36.5 | neuralprophet , timemachines |
rvr_p2_d0_q0 | 1183.0 | 1551 | yes | 0.1 | river , timemachines |
rvr_quickly_hypocratic | 1174.0 | 921 | yes | 0.6 | river , timemachines |
fbprophet_exogenous_exogenous | 1170.0 | 96 | yes | 325.4 | prophet , timemachines |
nprophet_p1_hypocratic | 1130.0 | 382 | yes | 61.7 | neuralprophet , timemachines |
fbprophet_known | 1101.0 | 168 | yes | 134.9 | prophet , timemachines |
suc_tsa_aggressive_d0_ensemble | 1014.0 | 9 | yes | 1.7 | successor , timemachines |
rvr_p1_d0_q0 | 955.0 | 704 | yes | 0.0 | river , timemachines |
rvr_p5_d0_q0 | 868.0 | 972 | no | 0.0 | river , timemachines |
rvr_p8_d0_q0 | 811.0 | 610 | yes | 0.1 | river , timemachines |