From f2ca215132de40804667feb4deaa0c6b8bfc3d25 Mon Sep 17 00:00:00 2001 From: Jeroen Bouma Date: Fri, 4 Mar 2022 21:44:59 +0100 Subject: [PATCH] Econometrics Menu (#1403) * Add Statistics Menu * Add Granger Causality test * Apply Black formatting * Add Cointegration Tests * Adjust plotting for Cointegration test * Add Significant parameter to Cointegration tests * Move regression functions to seperate .py files * Progress on Panel Data * A lot of progress for Panel Data * Make functions robust and improve documentation * Re-enable Breusch-Godfrey * Add modify functionality * Improve modify functionality * Add Breusch-Pagan heteroscedasticity test * Capitalize a word * Include documentatin for the Statistics Menu * Update _index.md * Update _index.md * Update _index.md * Fix export statements and add Example datasets * Update example with Longley's dataset * Update documentation with a legit source * Compare the results from each regression models based on the wage_panel dataset * Updated with all relevant types of regression tables * Update with all relevant regression types for Panel data * Update _index.md * Add change column type, improve OLS, add time and entity effects for FE * Update documentation and fix a small bug * Add in Statistics menu, replacing Custom menu * Remove custom menu * Add in documentation * Add in gst files * Cointegration can be used on any amount of columns * Add Tests * Make tests time invariant * Update Poetry and Requirements * Change name of Statistics menu to Econometrics menu * Rename scripts * Add type in Documentation * Change names from Statistics to Econometrics * Add graph * Update tests with rounding and naming * Make minor adjustments to fix the tests * Updating tests : allow extra args for capture * Apply recorder formatting * Adding some minor formatting * Fix error with MyPy * Attempt to fix MyPy annoyance * super small style things * Fix small bugs and add plot command to dwat * Small description mistake * Update documentation with missing argument * Update styling * Add error handling and add improve show functionality * Fix merge issue * Allow import from custom_imports Co-authored-by: Jeroen Bouma Co-authored-by: jmaslek Co-authored-by: Chavithra PARANA --- gamestonk_terminal/api.py | 1 - gamestonk_terminal/econometrics/__init__.py | 0 .../econometrics/econometrics_controller.py | 1497 ++++++ .../econometrics/econometrics_model.py | 348 ++ .../econometrics/econometrics_view.py | 440 ++ .../econometrics/regression_model.py | 568 +++ .../econometrics/regression_view.py | 238 + poetry.lock | 129 +- pyproject.toml | 1 + requirements-full.txt | 58 +- requirements.txt | 58 +- scripts/test_econometrics_panel.gst | 30 + scripts/test_econometrics_ts.gst | 26 + terminal.py | 14 +- tests/FIXTURES.md | 32 +- tests/conftest.py | 11 +- .../econometrics/__init__.py | 0 .../test_clean[dataset0-rfill-None-5].csv | 17 + .../test_clean[dataset1-cfill-None-5].csv | 17 + .../test_clean[dataset10-rfill-None-10].csv | 17 + .../test_clean[dataset11-None-rdrop-10].csv | 17 + .../test_clean[dataset2-rbfill-None-5].csv | 17 + .../test_clean[dataset3-cbfill-None-5].csv | 17 + .../test_clean[dataset4-rffill-None-5].csv | 17 + .../test_clean[dataset5-cffill-None-5].csv | 17 + .../test_clean[dataset6-None-rdrop-5].csv | 17 + .../test_clean[dataset7-None-cdrop-5].csv | 17 + .../test_clean[dataset8-rfill-rdrop-5].csv | 17 + .../test_clean[dataset9-rfill-cdrop-5].csv | 17 + ...ger_two_step_cointegration_test[y0-x0].csv | 6 + ...r_two_step_cointegration_test[y0-x0]_1.csv | 108 + .../test_get_normality[data0].csv | 3 + .../test_get_normality[data1].csv | 3 + .../test_get_normality[data2].csv | 3 + .../test_get_root[df0-c-c].csv | 6 + .../test_get_root[df1-c-ct].csv | 6 + .../test_get_root[df2-ct-c].csv | 6 + .../test_get_root[df3-ctt-c].csv | 6 + .../test_get_root[df4-nc-c].csv | 6 + ...ile_types1-data_files1-data_examples1].csv | 310 ++ ...ile_types0-data_files0-data_examples0].csv | 4361 +++++++++++++++++ .../test_options[datasets0-heart].csv | 4 + .../test_options[datasets1-None].csv | 4 + .../test_options[datasets1-None]_1.csv | 15 + ...ion_variables0-data0-datasets0-True-3].csv | 5 + ...ion_variables1-data1-datasets1-True-1].csv | 5 + ...regression_variables0-data0-datasets0].csv | 2 + ...ssion_variables0-data0-datasets0-True].csv | 5 + ...ssion_variables1-data1-datasets1-True].csv | 5 + ...regression_variables0-data0-datasets0].csv | 5 + ...regression_variables0-data0-datasets0].csv | 2 + ...regression_variables0-data0-datasets0].csv | 2 + ...ssion_variables0-data0-datasets0-True].csv | 2 + ...sion_variables1-data1-datasets1-False].csv | 2 + ...regression_variables0-data0-datasets0].csv | 2 + ...regression_variables0-data0-datasets0].csv | 2 + ...regression_variables0-data0-datasets0].csv | 20 + ...sion_variables0-data0-datasets0-True].json | 1 + ...sion_variables1-data1-datasets1-True].json | 1 + .../econometrics/test_econometrics_model.py | 325 ++ .../econometrics/test_econometrics_view.py | 219 + .../econometrics/test_regression_model.py | 477 ++ .../econometrics/test_regression_view.py | 107 + ...ality[time_series_y0-time_series_x0-3].txt | 1 + ...ity[time_series_y0-time_series_x0-3]_1.txt | 1 + ...ity[time_series_y0-time_series_x0-3]_2.txt | 1 + ...ity[time_series_y0-time_series_x0-3]_3.txt | 1 + ...ality[time_series_y1-time_series_x1-2].txt | 1 + ...ity[time_series_y1-time_series_x1-2]_1.txt | 1 + ...ity[time_series_y1-time_series_x1-2]_2.txt | 1 + ...ity[time_series_y1-time_series_x1-2]_3.txt | 1 + ...ality[time_series_y2-time_series_x2-1].txt | 1 + ...ity[time_series_y2-time_series_x2-1]_1.txt | 1 + ...ity[time_series_y2-time_series_x2-1]_2.txt | 1 + ...ity[time_series_y2-time_series_x2-1]_3.txt | 1 + ...[time_series_y0-time_series_x0-3-0.05].txt | 7 + ...r[time_series_y1-time_series_x1-2-0.1].txt | 7 + ...[time_series_y2-time_series_x2-1-0.01].txt | 7 + ...y_norm[data0-Sunset-Sunactivity-False].txt | 4 + ..._norm[data1-Macrodata-Inflation-False].txt | 4 + ...play_norm[data2-El Nino-January-False].txt | 4 + ...play_root[df0-Sunspot-Sunactivity-c-c].txt | 7 + ...lay_root[df1-Sunspot-Sunactivity-c-ct].txt | 7 + ...lay_root[df2-Sunspot-Sunactivity-ct-c].txt | 7 + ...ay_root[df3-Sunspot-Sunactivity-ctt-c].txt | 7 + ...lay_root[df4-Sunspot-Sunactivity-nc-c].txt | 7 + ...integration_test[datasets0-True-False].txt | 5 + ...ntegration_test[datasets1-False-False].txt | 3 + .../test_show_options[datasets0-None].txt | 19 + ...on_variables0-data0-datasets0-False-1].txt | 8 + ...on_variables1-data1-datasets1-False-2].txt | 8 + ...sion_variables0-data0-datasets0-False].txt | 8 + ...sion_variables1-data1-datasets1-False].txt | 8 + website/content/custom/_index.md | 24 - website/content/custom/info/_index.md | 28 - website/content/custom/load/_index.md | 11 - website/content/custom/plot/_index.md | 23 - website/content/custom/show/_index.md | 24 - website/content/econometrics/_index.md | 11 + website/content/econometrics/bgod/_index.md | 63 + website/content/econometrics/bpag/_index.md | 49 + website/content/econometrics/clean/_index.md | 105 + website/content/econometrics/coint/_index.md | 44 + .../content/econometrics/compare/_index.md | 70 + website/content/econometrics/desc/_index.md | 61 + website/content/econometrics/dwat/_index.md | 56 + website/content/econometrics/export/_index.md | 21 + .../content/econometrics/granger/_index.md | 37 + website/content/econometrics/index/_index.md | 102 + website/content/econometrics/load/_index.md | 138 + website/content/econometrics/modify/_index.md | 93 + website/content/econometrics/norm/_index.md | 49 + website/content/econometrics/ols/_index.md | 81 + .../content/econometrics/options/_index.md | 101 + website/content/econometrics/panel/_index.md | 426 ++ website/content/econometrics/plot/_index.md | 55 + website/content/econometrics/remove/_index.md | 16 + website/content/econometrics/root/_index.md | 55 + website/content/econometrics/show/_index.md | 106 + website/content/econometrics/type/_index.md | 83 + website/data/menu/main.yml | 110 +- 121 files changed, 11627 insertions(+), 245 deletions(-) create mode 100644 gamestonk_terminal/econometrics/__init__.py create mode 100644 gamestonk_terminal/econometrics/econometrics_controller.py create mode 100644 gamestonk_terminal/econometrics/econometrics_model.py create mode 100644 gamestonk_terminal/econometrics/econometrics_view.py create mode 100644 gamestonk_terminal/econometrics/regression_model.py create mode 100644 gamestonk_terminal/econometrics/regression_view.py create mode 100644 scripts/test_econometrics_panel.gst create mode 100644 scripts/test_econometrics_ts.gst create mode 100644 tests/gamestonk_terminal/econometrics/__init__.py create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset0-rfill-None-5].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset1-cfill-None-5].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset10-rfill-None-10].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset11-None-rdrop-10].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset2-rbfill-None-5].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset3-cbfill-None-5].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset4-rffill-None-5].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset5-cffill-None-5].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset6-None-rdrop-5].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset7-None-cdrop-5].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset8-rfill-rdrop-5].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset9-rfill-cdrop-5].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_engle_granger_two_step_cointegration_test[y0-x0].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_engle_granger_two_step_cointegration_test[y0-x0]_1.csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_normality[data0].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_normality[data1].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_normality[data2].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df0-c-c].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df1-c-ct].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df2-ct-c].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df3-ctt-c].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df4-nc-c].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_load[sunspots-file_types1-data_files1-data_examples1].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_load[wage_panel-file_types0-data_files0-data_examples0].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_options[datasets0-heart].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_options[datasets1-None].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_options[datasets1-None]_1.csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bgod[regression_variables0-data0-datasets0-True-3].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bgod[regression_variables1-data1-datasets1-True-1].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bols[regression_variables0-data0-datasets0].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bpag[regression_variables0-data0-datasets0-True].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bpag[regression_variables1-data1-datasets1-True].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_comparison[regression_variables0-data0-datasets0].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_fdols[regression_variables0-data0-datasets0].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_fe[regression_variables0-data0-datasets0].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_ols[regression_variables0-data0-datasets0-True].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_ols[regression_variables1-data1-datasets1-False].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_pols[regression_variables0-data0-datasets0].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_re[regression_variables0-data0-datasets0].csv create mode 100644 tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_regression_data[regression_variables0-data0-datasets0].csv create mode 100644 tests/gamestonk_terminal/econometrics/json/test_regression_model/test_get_dwat[regression_variables0-data0-datasets0-True].json create mode 100644 tests/gamestonk_terminal/econometrics/json/test_regression_model/test_get_dwat[regression_variables1-data1-datasets1-True].json create mode 100644 tests/gamestonk_terminal/econometrics/test_econometrics_model.py create mode 100644 tests/gamestonk_terminal/econometrics/test_econometrics_view.py create mode 100644 tests/gamestonk_terminal/econometrics/test_regression_model.py create mode 100644 tests/gamestonk_terminal/econometrics/test_regression_view.py create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3]_1.txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3]_2.txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3]_3.txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2]_1.txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2]_2.txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2]_3.txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1]_1.txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1]_2.txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1]_3.txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_granger[time_series_y0-time_series_x0-3-0.05].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_granger[time_series_y1-time_series_x1-2-0.1].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_granger[time_series_y2-time_series_x2-1-0.01].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_norm[data0-Sunset-Sunactivity-False].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_norm[data1-Macrodata-Inflation-False].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_norm[data2-El Nino-January-False].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df0-Sunspot-Sunactivity-c-c].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df1-Sunspot-Sunactivity-c-ct].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df2-Sunspot-Sunactivity-ct-c].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df3-Sunspot-Sunactivity-ctt-c].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df4-Sunspot-Sunactivity-nc-c].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_get_engle_granger_two_step_cointegration_test[datasets0-True-False].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_get_engle_granger_two_step_cointegration_test[datasets1-False-False].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_show_options[datasets0-None].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bgod[regression_variables0-data0-datasets0-False-1].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bgod[regression_variables1-data1-datasets1-False-2].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bpag[regression_variables0-data0-datasets0-False].txt create mode 100644 tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bpag[regression_variables1-data1-datasets1-False].txt delete mode 100644 website/content/custom/_index.md delete mode 100644 website/content/custom/info/_index.md delete mode 100644 website/content/custom/load/_index.md delete mode 100644 website/content/custom/plot/_index.md delete mode 100644 website/content/custom/show/_index.md create mode 100644 website/content/econometrics/_index.md create mode 100644 website/content/econometrics/bgod/_index.md create mode 100644 website/content/econometrics/bpag/_index.md create mode 100644 website/content/econometrics/clean/_index.md create mode 100644 website/content/econometrics/coint/_index.md create mode 100644 website/content/econometrics/compare/_index.md create mode 100644 website/content/econometrics/desc/_index.md create mode 100644 website/content/econometrics/dwat/_index.md create mode 100644 website/content/econometrics/export/_index.md create mode 100644 website/content/econometrics/granger/_index.md create mode 100644 website/content/econometrics/index/_index.md create mode 100644 website/content/econometrics/load/_index.md create mode 100644 website/content/econometrics/modify/_index.md create mode 100644 website/content/econometrics/norm/_index.md create mode 100644 website/content/econometrics/ols/_index.md create mode 100644 website/content/econometrics/options/_index.md create mode 100644 website/content/econometrics/panel/_index.md create mode 100644 website/content/econometrics/plot/_index.md create mode 100644 website/content/econometrics/remove/_index.md create mode 100644 website/content/econometrics/root/_index.md create mode 100644 website/content/econometrics/show/_index.md create mode 100644 website/content/econometrics/type/_index.md diff --git a/gamestonk_terminal/api.py b/gamestonk_terminal/api.py index d35bbb50a87..cad19972614 100644 --- a/gamestonk_terminal/api.py +++ b/gamestonk_terminal/api.py @@ -4,7 +4,6 @@ from .stocks import stocks_api as stocks from .alternative import alt_api as alt from .cryptocurrency import crypto_api as crypto -from .custom import custom_api as custom from .economy import economy_api as economy from .etf import etf_api as etf from .forex import forex_api as forex diff --git a/gamestonk_terminal/econometrics/__init__.py b/gamestonk_terminal/econometrics/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/gamestonk_terminal/econometrics/econometrics_controller.py b/gamestonk_terminal/econometrics/econometrics_controller.py new file mode 100644 index 00000000000..e0597f8650d --- /dev/null +++ b/gamestonk_terminal/econometrics/econometrics_controller.py @@ -0,0 +1,1497 @@ +"""Econometrics Controller Module""" +__docformat__ = "numpy" + +# pylint: disable=too-many-lines, too-many-branches, inconsistent-return-statements + +import argparse +import logging +from itertools import chain +import os +from pathlib import Path +from typing import List, Dict, Any + +import numpy as np +import pandas as pd +from prompt_toolkit.completion import NestedCompleter + +import gamestonk_terminal.econometrics.regression_model +import gamestonk_terminal.econometrics.regression_view +from gamestonk_terminal import feature_flags as gtff +from gamestonk_terminal.helper_funcs import ( + parse_known_args_and_warn, + NO_EXPORT, + EXPORT_ONLY_FIGURES_ALLOWED, + EXPORT_ONLY_RAW_DATA_ALLOWED, + EXPORT_BOTH_RAW_DATA_AND_FIGURES, + export_data, +) +from gamestonk_terminal.helper_funcs import ( + print_rich_table, +) +from gamestonk_terminal.menu import session +from gamestonk_terminal.parent_classes import BaseController +from gamestonk_terminal.rich_config import console +from gamestonk_terminal.econometrics import econometrics_model, econometrics_view + +logger = logging.getLogger(__name__) + + +class EconometricsController(BaseController): + """Econometrics class""" + + CHOICES_COMMANDS: List[str] = [ + "load", + "export", + "remove", + "options", + "plot", + "show", + "type", + "desc", + "index", + "clean", + "modify", + "ols", + "norm", + "root", + "panel", + "compare", + "dwat", + "bgod", + "bpag", + "granger", + "coint", + ] + CHOICES_MENUS: List[str] = ["qa", "pred"] + pandas_plot_choices = [ + "line", + "scatter", + "bar", + "barh", + "hist", + "box", + "kde", + "area", + "pie", + "hexbin", + ] + PATH = "/econometrics/" + + def __init__(self, queue: List[str] = None): + """Constructor""" + super().__init__(queue) + self.files: List[str] = list() + self.datasets: Dict[str, pd.DataFrame] = dict() + self.regression: Dict[Any[Dict, Any], Any] = dict() + + self.DATA_EXAMPLES: Dict[str, str] = { + "anes96": "American National Election Survey 1996", + "cancer": "Breast Cancer Data", + "ccard": "Bill Greene’s credit scoring data.", + "cancer_china": "Smoking and lung cancer in eight cities in China.", + "co2": "Mauna Loa Weekly Atmospheric CO2 Data", + "committee": "First 100 days of the US House of Representatives 1995", + "copper": "World Copper Market 1951-1975 Dataset", + "cpunish": "US Capital Punishment dataset.", + "danish_data": "Danish Money Demand Data", + "elnino": "El Nino - Sea Surface Temperatures", + "engel": "Engel (1857) food expenditure data", + "fair": "Affairs dataset", + "fertility": "World Bank Fertility Data", + "grunfeld": "Grunfeld (1950) Investment Data", + "heart": "Transplant Survival Data", + "interest_inflation": "(West) German interest and inflation rate 1972-1998", + "longley": "Longley dataset", + "macrodata": "United States Macroeconomic data", + "modechoice": "Travel Mode Choice", + "nile": "Nile River flows at Ashwan 1871-1970", + "randhie": "RAND Health Insurance Experiment Data", + "scotland": "Taxation Powers Vote for the Scottish Parliament 1997", + "spector": "Spector and Mazzeo (1980) - Program Effectiveness Data", + "stackloss": "Stack loss data", + "star98": "Star98 Educational Dataset", + "statecrim": "Statewide Crime Data 2009", + "strikes": "U.S. Strike Duration Data", + "sunspots": "Yearly sunspots data 1700-2008", + "wage_panel": "Veila and M. Verbeek (1998): Whose Wages Do Unions Raise?", + } + + self.DATES = { + "Y": "%Y", + "m": "%m", + "d": "%d", + "m-d": "%m-%d", + "Y-m": "%Y-%m", + "Y-d": "%Y-%d", + "Y-m-d": "%Y-%m-%d", + "Y-d-m": "%Y-%d-%m", + "default": None, + } + + self.DATA_TYPES: List[str] = ["int", "float", "str", "bool", "date", "category"] + + for regression in [ + "OLS", + "POLS", + "BOLS", + "RE", + "FE", + "FE_EE", + "FE_IE", + "FE_EE_IE", + "FDOLS", + ]: + self.regression[regression] = { + "data": {}, + "independent": {}, + "dependent": {}, + "model": {}, + } + + self.signs: Dict[Any, Any] = { + "div": "/", + "mul": "*", + "add": "+", + "sub": "-", + "mod": "%", + "pow": "**", + } + self.file_types = ["csv", "xlsx"] + self.DATA_FILES = { + filepath.name: filepath + for file_type in self.file_types + for filepath in chain( + Path("exports").rglob(f"*.{file_type}"), + Path("custom_imports").rglob(f"*.{file_type}"), + ) + if filepath.is_file() + } + + if session and gtff.USE_PROMPT_TOOLKIT: + choices: dict = {c: {} for c in self.controller_choices} + choices["load"] = {c: None for c in self.DATA_FILES.keys()} + choices["show"] = {c: None for c in self.files} + + for feature in ["export", "options", "show", "desc", "clear", "index"]: + choices[feature] = {c: None for c in self.files} + + for feature in [ + "general", + "type", + "plot", + "norm", + "root", + "granger", + "cointegration", + "regressions", + ]: + choices[feature] = dict() + + self.choices = choices + self.completer = NestedCompleter.from_nested_dict(choices) + + def update_runtime_choices(self): + if session and gtff.USE_PROMPT_TOOLKIT: + dataset_columns = { + f"{column}-{dataset}": {column: None, dataset: None} + for dataset, dataframe in self.datasets.items() + for column in dataframe.columns + } + + for feature in [ + "general", + "type", + "plot", + "norm", + "root", + "granger", + "cointegration", + "regressions", + ]: + self.choices[feature] = dataset_columns + for feature in ["export", "options", "show", "desc", "clear", "index"]: + self.choices[feature] = {c: None for c in self.files} + + self.completer = NestedCompleter.from_nested_dict(self.choices) + + def print_help(self): + """Print help""" + help_text = f"""[cmds] + load load in custom data sets + export export a dataset + remove remove a dataset + options show available column-dataset options[/cmds] + +[param]Loaded files:[/param] {", ".join(self.files) or None}[cmds] + +Exploration + show show a portion of a loaded dataset + plot plot data from a dataset + type change types of the columns or display their types + desc show descriptive statistics of a dataset + index set (multi) index based on columns + clean clean a dataset by filling or dropping NaNs + modify combine columns of datasets and delete or rename columns + +Timeseries + ols fit a (multi) linear regression model + norm perform normality tests on a column of a dataset + root perform unitroot tests (ADF & KPSS) on a column of a dataset + +Panel Data + panel Estimate model based on various regression techniques + compare Compare results of all estimated models + +Tests + dwat perform Durbin-Watson autocorrelation test on the residuals of the regression + bgod perform Breusch-Godfrey autocorrelation tests with lags on the residuals of the regression + bpag perform Breusch-Pagan heteroscedasticity test on the residuals of the regression + granger perform Granger causality tests on two columns + coint perform co-integration test on a multitude of columns[/cmds] + """ + console.print(text=help_text, menu="Econometrics") + + def call_load(self, other_args: List[str]): + """Process load""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="load", + description="Load custom data set into a dataframe", + ) + parser.add_argument( + "-f", + "--file", + help="File to load in and the alias you wish to give to the dataset", + nargs="+", + type=str, + ) + + parser.add_argument( + "-ex", + "--examples", + help="Use this argument to show examples of Statsmodels to load in. " + "See: https://www.statsmodels.org/devel/datasets/index.html", + action="store_true", + default=False, + dest="examples", + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-f") + ns_parser = parse_known_args_and_warn(parser, other_args, NO_EXPORT) + + if ns_parser: + if ns_parser.examples: + df = pd.DataFrame.from_dict(self.DATA_EXAMPLES, orient="index") + print_rich_table( + df, + headers=list(["description"]), + show_index=True, + index_name="file name", + title="Examples from Statsmodels", + ) + elif len(ns_parser.file) == 1: + console.print( + f"Please provide an alias to the dataset (format: ). For example: " + f"'load {ns_parser.file[0] if len(ns_parser.file) > 0 else 'TSLA.xlsx'} dataset'" + ) + else: + file, alias = ns_parser.file + + data = econometrics_model.load( + file, self.file_types, self.DATA_FILES, self.DATA_EXAMPLES + ) + + if not data.empty: + data.columns = data.columns.map( + lambda x: x.lower().replace(" ", "_") + ) + + self.files.append(alias) + self.datasets[alias] = data + + self.update_runtime_choices() + + console.print() + + def call_export(self, other_args: List[str]): + """Process export command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="export", + description="Export dataset to Excel", + ) + + parser.add_argument( + "-n", + "--name", + dest="name", + help="The name of the dataset you wish to export", + type=str, + ) + + parser.add_argument( + "-t", + "--type", + help="The file type you wish to export to", + dest="type", + choices=self.file_types, + type=str, + default="xlsx", + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-n") + ns_parser = parse_known_args_and_warn( + parser, other_args, export_allowed=NO_EXPORT + ) + + if ns_parser: + if not ns_parser.name or ns_parser.name not in self.datasets: + console.print("Please enter a valid dataset.") + else: + export_data( + ns_parser.type, + os.path.dirname(os.path.abspath(__file__)), + ns_parser.name, + self.datasets[ns_parser.name], + ) + + console.print() + + def call_remove(self, other_args: List[str]): + """Process clear""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="remove", + description="Remove a dataset from the loaded dataset list", + ) + + parser.add_argument( + "-n", + "--name", + help="The name of the dataset you want to remove", + dest="name", + type=str, + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-n") + ns_parser = parse_known_args_and_warn(parser, other_args, NO_EXPORT) + + if not ns_parser.name: + console.print("Please enter a valid dataset.") + else: + if ns_parser.name in self.datasets: + del self.datasets[ns_parser.name] + self.files.remove(ns_parser.name) + else: + console.print(f"{ns_parser.name} is not a loaded dataset.") + + self.update_runtime_choices() + + console.print() + + def call_options(self, other_args: List[str]): + """Process options command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="options", + description="Show the column-dataset combination that can be entered within the functions.", + ) + + parser.add_argument( + "-n", + "--name", + type=str, + choices=self.files, + dest="name", + help="The dataset you would like to show the options for", + default=None, + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-n") + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if ns_parser: + econometrics_view.show_options( + self.datasets, ns_parser.name, ns_parser.export + ) + + console.print() + + def call_plot(self, other_args: List[str]): + """Process plot command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="plot", + description="Plot data based on the index", + ) + parser.add_argument( + "-c", + "--column", + help="Column to plot along the index", + dest="column", + type=str, + choices=self.choices["plot"], + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-c") + ns_parser = parse_known_args_and_warn( + parser, other_args, export_allowed=EXPORT_ONLY_FIGURES_ALLOWED + ) + + if ns_parser and ns_parser.column: + column, dataset = self.choices["plot"][ns_parser.column].keys() + data = self.datasets[dataset] + + econometrics_view.get_plot( + data, + dataset, + column, + ns_parser.export, + ) + + def call_show(self, other_args: List[str]): + """Process show command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="show", + description="Show a portion of the DataFrame", + ) + + parser.add_argument( + "-n", + "--name", + type=str, + choices=self.files, + dest="name", + help="The name of the database you want to show data for", + ) + + parser.add_argument( + "-l", + "--limit", + type=int, + dest="limit", + help="The amount of data you wish to show", + default=10, + ) + + parser.add_argument( + "-s", + "--sortcol", + help="Sort based on a column in the DataFrame", + nargs="+", + type=str, + dest="sortcol", + default="", + ) + parser.add_argument( + "-a", + "--ascend", + help="Use this argument to sort in a descending order", + action="store_true", + default=False, + dest="ascend", + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-n") + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if ns_parser: + if not ns_parser.name: + dataset_names = list(self.datasets.keys()) + else: + dataset_names = [ns_parser.name] + + for name in dataset_names: + df = self.datasets[name] + + if name in self.datasets and self.datasets[name].empty: + return console.print( + f"[red]No data available for {ns_parser.name}.[/red]\n" + ) + if ns_parser.sortcol: + sort_column = " ".join(ns_parser.sortcol) + if sort_column not in self.datasets[name].columns: + console.print( + f"[red]{sort_column} not a valid column. Showing without sorting.\n[/red]" + ) + else: + df = df.sort_values(by=sort_column, ascending=ns_parser.ascend) + + print_rich_table( + df.head(ns_parser.limit), + headers=list(df.columns), + show_index=True, + title=f"Dataset {name} | Showing {ns_parser.limit} of {len(df)} rows", + ) + + export_data( + ns_parser.export, + os.path.dirname(os.path.abspath(__file__)), + f"{ns_parser.name}_show", + df.head(ns_parser.limit), + ) + + console.print() + + def call_desc(self, other_args: List[str]): + """Process desc command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="desc", + description="Show the descriptive statistics of the dataset", + ) + + parser.add_argument( + "-n", + "--name", + type=str, + choices=self.files, + dest="name", + help="The name of the database you want to show the descriptive statistics for", + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-n") + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if ns_parser and ns_parser.name: + if ns_parser.name in self.datasets and self.datasets[ns_parser.name].empty: + console.print(f"[red]No data available for {ns_parser.name}.[/red]\n") + else: + df = self.datasets[ns_parser.name].describe() + print_rich_table( + df, headers=list(df.columns), show_index=True, title=ns_parser.name + ) + + export_data( + ns_parser.export, + os.path.dirname(os.path.abspath(__file__)), + f"{ns_parser.name}_desc", + df, + ) + + console.print() + + def call_type(self, other_args: List[str]): + """Process type""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="type", + description="Show the type of the columns of the dataset and/or change the type of the column", + ) + parser.add_argument( + "-n", + "--name", + type=str, + nargs=2, + dest="name", + help="The first argument is the column and name of the dataset (format: ). The second " + f"argument is the preferred type. This can be: {', '.join(self.DATA_TYPES)}", + ) + + parser.add_argument( + "-d", + "--dateformat", + type=str, + choices=self.DATES.keys(), + dest="dateformat", + default="default", + help="Set the format of the date. This can be: 'Y', 'M', 'D', 'm-d', 'Y-m', 'Y-d'," + "'Y-m-d', 'Y-d-m'", + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-n") + ns_parser = parse_known_args_and_warn(parser, other_args, NO_EXPORT) + + if ns_parser: + if ns_parser.name: + column, dataset = ns_parser.name[0].split("-") + data_type = ns_parser.name[1] + + if data_type not in self.DATA_TYPES: + console.print( + f"{data_type} is not an option. Please choose between: {', '.join(self.DATA_TYPES)}" + ) + else: + if data_type == "date": + self.datasets[dataset][column] = pd.to_datetime( + self.datasets[dataset][column], + format=self.DATES[ns_parser.dateformat], + ) + else: + self.datasets[dataset][column] = self.datasets[dataset][ + column + ].astype(data_type) + else: + for dataset_name, data in self.datasets.items(): + print_rich_table( + pd.DataFrame(data.dtypes), + headers=list(["dtype"]), + show_index=True, + index_name="column", + title=str(dataset_name), + ) + + console.print() + + def call_index(self, other_args: List[str]): + """Process index""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="index", + description="Set a (multi) index for the dataset", + ) + parser.add_argument( + "-n", + "--name", + type=str, + dest="name", + nargs="+", + help="The first argument is the name of the database, further arguments are " + "the columns you wish to set as index", + ) + + parser.add_argument( + "-a", + "--adjustment", + help="Whether to allow for making adjustments to the dataset to align it with the use case for " + "Timeseries and Panel Data regressions", + dest="adjustment", + action="store_true", + default=False, + ) + + parser.add_argument( + "-d", + "--drop", + help="Whether to drop the column(s) the index is set for.", + dest="drop", + action="store_true", + default=False, + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-n") + ns_parser = parse_known_args_and_warn(parser, other_args, NO_EXPORT) + + if ns_parser and ns_parser.name: + name = ns_parser.name[0] + columns = ns_parser.name[1:] + + dataset = self.datasets[name] + + if not pd.Index(np.arange(0, len(dataset))).equals(dataset.index): + console.print("As an index has been set, resetting the current index.") + if dataset.index.name in dataset.columns: + dataset = dataset.reset_index(drop=True) + else: + dataset = dataset.reset_index(drop=False) + + for column in columns: + if column not in dataset.columns: + return console.print( + f"The column '{column}' is not available in the dataset {name}." + f"Please choose one of the following: {', '.join(dataset.columns)}" + ) + + if ns_parser.adjustment: + if len(columns) > 1 and dataset[columns[0]].isnull().any(): + null_values = dataset[dataset[columns[0]].isnull()] + console.print( + f"The column '{columns[0]}' contains {len(null_values)} NaN values. As multiple columns are " + f"provided, it is assumed this column represents entities (i), the NaN values are " + f"forward filled. Remove the -a argument to disable this." + ) + dataset[columns[0]] = dataset[columns[0]].fillna(method="ffill") + if dataset[columns[-1]].isnull().any(): + # This checks whether NaT (missing values) exists within the DataFrame + null_values = dataset[dataset[columns[-1]].isnull()] + console.print( + f"The time index '{columns[-1]}' contains {len(null_values)} " + f"NaTs which are removed from the dataset. Remove the -a argument to disable this." + ) + dataset = dataset[dataset[columns[-1]].notnull()] + + self.datasets[name] = dataset.set_index(columns, drop=ns_parser.drop) + + self.update_runtime_choices() + + return console.print() + + def call_clean(self, other_args: List[str]): + """Process clean""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="clean", + description="Clean a dataset by filling and dropping NaN values.", + ) + + parser.add_argument( + "-n", + "--name", + help="The name of the dataset you want to clean up", + dest="name", + type=str, + ) + + parser.add_argument( + "-f", + "--fill", + help="The method of filling NaNs. This has options to fill rows (rfill, rbfill, rffill) or fill " + "columns (cfill, cbfill, cffill). Furthermore, it has the option to forward fill and backward fill " + "(up to --limit) which refer to how many rows/columns can be set equal to the last non-NaN value", + dest="fill", + choices=["rfill", "cfill", "rbfill", "cbfill", "rffill", "bffill"], + default="", + ) + + parser.add_argument( + "-d", + "--drop", + help="The method of dropping NaNs. This either has the option rdrop (drop rows that contain NaNs) " + "or cdrop (drop columns that contain NaNs)", + dest="drop", + choices=["rdrop", "cdrop"], + default="", + ) + + parser.add_argument( + "-l", + "--limit", + help="The max amount of columns/rows backward filled or forward filled that have NaNs or " + "the max amount of columns/rows that have NaNs before being dropped.", + dest="limit", + type=int, + default=5, + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-n") + ns_parser = parse_known_args_and_warn(parser, other_args, NO_EXPORT) + + if ns_parser: + if not ns_parser.name or ns_parser.name not in self.datasets: + console.print("Please enter a valid dataset.") + else: + self.datasets[ns_parser.name] = econometrics_model.clean( + self.datasets[ns_parser.name], + ns_parser.fill, + ns_parser.drop, + ns_parser.limit, + ) + + console.print() + + def call_modify(self, other_args: List[str]): + """Process modify""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="modify", + description="Modify a dataset by adding, removing or renaming columns. This also has the " + "possibility to combine DataFrames together.", + ) + + parser.add_argument( + "-a", + "--add", + help="Add columns to your dataframe with the option to use formulas. Use format: " + "- . " + "Two examples: high_revenue-thesis revenue-thesis > 1000 or debt_ratio-dataset " + "debt-dataset div assets-dataset2", + dest="add", + nargs=4, + type=str, + ) + + parser.add_argument( + "-d", + "--delete", + help="The columns you want to delete from a dataset. Use format: .", + dest="delete", + nargs="+", + type=str, + ) + + parser.add_argument( + "-c", + "--combine", + help="The columns you want to add to a dataset, the first argument is the dataset that you wish " + "to place these columns in. Use format: ", + dest="combine", + nargs="+", + type=str, + ) + + parser.add_argument( + "-r", + "--rename", + help="The columns you want to rename from a dataset. " + "Use format: dataset OLD_COLUMN NEW_COLUMN", + dest="rename", + nargs=3, + type=str, + ) + + ns_parser = parse_known_args_and_warn(parser, other_args, NO_EXPORT) + + if ns_parser: + if ns_parser.add: + new_column, dataset = ns_parser.add[0].split("-") + existing_column, dataset2 = ns_parser.add[1].split("-") + + for sign, operator in self.signs.items(): + if sign == ns_parser.add[2]: + ns_parser.add[2] = operator + + if dataset not in self.datasets: + console.print( + f"Not able to find the dataset {dataset}. Please choose one of " + f"the following: {', '.join(self.datasets)}" + ) + elif dataset2 not in self.datasets: + console.print( + f"Not able to find the dataset {dataset2}. Please choose one of " + f"the following: {', '.join(self.datasets)}" + ) + elif existing_column not in self.datasets[dataset2]: + console.print( + f"Not able to find the column {existing_column}. Please choose one of " + f"the following: {', '.join(self.datasets[dataset2].columns)}" + ) + elif len(ns_parser.add[3].split("-")) > 1: + existing_column2, dataset3 = ns_parser.add[3].split("-") + + if dataset3 not in self.datasets: + console.print( + f"Not able to find the dataset {dataset3}. Please choose one of " + f"the following: {', '.join(self.datasets)}" + ) + + elif existing_column2 not in self.datasets[dataset3]: + console.print( + f"Not able to find the column {existing_column2}. Please choose one of " + f"the following: {', '.join(self.datasets[dataset3].columns)}" + ) + else: + pd.eval( + f"{new_column} = self.datasets[dataset2][existing_column] " + f"{ns_parser.add[2]} self.datasets[dataset3][existing_column2]", + target=self.datasets[dataset], + inplace=True, + ) + else: + pd.eval( + f"{new_column} = self.datasets[dataset2][existing_column] " + f"{ns_parser.add[2]} {ns_parser.add[3]}", + target=self.datasets[dataset], + inplace=True, + ) + + if ns_parser.delete: + for option in ns_parser.delete: + column, dataset = option.split("-") + + if dataset not in self.datasets: + console.print( + f"Not able to find the dataset {dataset}. Please choose one of " + f"the following: {', '.join(self.datasets)}" + ) + elif column not in self.datasets[dataset]: + console.print( + f"Not able to find the column {column}. Please choose one of " + f"the following: {', '.join(self.datasets[dataset].columns)}" + ) + else: + del self.datasets[dataset][column] + + if ns_parser.combine: + if ns_parser.combine[0] not in self.datasets: + console.print( + f"Not able to find the dataset {ns_parser.combine[0]}. Please choose one of " + f"the following: {', '.join(self.datasets)}" + ) + else: + data = self.datasets[ns_parser.combine[0]] + + for option in ns_parser.combine[1:]: + column, dataset = self.choices["general"][option].keys() + + if dataset not in self.datasets: + console.print( + f"Not able to find the dataset {dataset}. Please choose one of " + f"the following: {', '.join(self.datasets)}" + ) + elif column not in self.datasets[dataset]: + console.print( + f"Not able to find the column {column}. Please choose one of " + f"the following: {', '.join(self.datasets[dataset].columns)}" + ) + else: + data[f"{column}_{dataset}"] = self.datasets[dataset][column] + + if ns_parser.rename: + dataset = ns_parser.rename[0] + column_old = ns_parser.rename[1] + column_new = ns_parser.rename[2] + + if dataset not in self.datasets: + console.print( + f"Not able to find the dataset {dataset}. Please choose one of " + f"the following: {', '.join(self.datasets)}" + ) + elif column_old not in self.datasets[dataset]: + console.print( + f"Not able to find the column {column_old}. Please choose one of " + f"the following: {', '.join(self.datasets[dataset].columns)}" + ) + else: + self.datasets[dataset] = self.datasets[dataset].rename( + columns={column_old: column_new} + ) + + self.update_runtime_choices() + + console.print() + + def call_ols(self, other_args: List[str]): + """Process ols command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="ols", + description="Performs an OLS regression on timeseries data.", + ) + + parser.add_argument( + "-r", + "--regression", + nargs="+", + type=str, + choices=self.choices["regressions"], + dest="regression", + help="The regression you would like to perform", + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-r") + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if ns_parser and ns_parser.regression: + if len(ns_parser.regression) < 2: + console.print( + "Please provide both dependent and independent variables." + ) + else: + ( + self.regression["OLS"]["data"], + self.regression["OLS"]["dependent"], + self.regression["OLS"]["independent"], + self.regression["OLS"]["model"], + ) = gamestonk_terminal.econometrics.regression_model.get_ols( + ns_parser.regression, + self.datasets, + self.choices["regressions"], + export=ns_parser.export, + ) + + def call_norm(self, other_args: List[str]): + """Process normality command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="norm", + description="Test whether the used data is normally distributed.", + ) + + parser.add_argument( + "-c", + "--column", + type=str, + choices=self.choices["norm"], + dest="column", + help="The column and name of the database you want to test normality for", + ) + + parser.add_argument( + "-p", + "--plot", + dest="plot", + help="Whether you wish to plot a histogram to visually depict normality", + action="store_true", + default=False, + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-c") + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + ) + + if ns_parser and ns_parser.column: + column, dataset = self.choices["norm"][ns_parser.column].keys() + + if isinstance(self.datasets[dataset][column].index, pd.MultiIndex): + return console.print( + f"The column {column} from the dataset {dataset} is a MultiIndex. To test for normality in a " + f"timeseries, make sure to set a singular time index." + ) + + if dataset in self.datasets: + if isinstance(self.datasets[dataset], pd.Series): + data = self.datasets[dataset] + elif isinstance(self.datasets[dataset], pd.DataFrame): + data = self.datasets[dataset][column] + else: + return console.print( + f"The type of {dataset} ({type(dataset)} is not an option." + ) + else: + return console.print(f"Can not find {dataset}. Did you load the data?") + + return econometrics_view.display_norm( + data, dataset, column, ns_parser.plot, ns_parser.export + ) + + def call_root(self, other_args: List[str]): + """Process unit root command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="root", + description="Show unit root tests of a column of a dataset", + ) + + parser.add_argument( + "-c", + "--column", + type=str, + choices=self.choices["root"], + dest="column", + help="The column and name of the database you want test unit root for", + ) + + parser.add_argument( + "-r", + "--fuller_reg", + help="Type of regression. Can be ‘c’,’ct’,’ctt’,’nc’. c - Constant and t - trend order", + choices=["c", "ct", "ctt", "nc"], + default="c", + type=str, + dest="fuller_reg", + ) + parser.add_argument( + "-k", + "--kps_reg", + help="Type of regression. Can be ‘c’,’ct'. c - Constant and t - trend order", + choices=["c", "ct"], + type=str, + dest="kpss_reg", + default="c", + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-c") + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if ns_parser and ns_parser.column: + column, dataset = self.choices["root"][ns_parser.column].keys() + + if isinstance(self.datasets[dataset][column].index, pd.MultiIndex): + console.print( + f"The column {column} from the dataset {dataset} is a MultiIndex. To test for unitroot in a " + f"timeseries, make sure to set a singular time index." + ) + else: + if isinstance(self.datasets[dataset], pd.Series): + data = self.datasets[dataset] + elif isinstance(self.datasets[dataset], pd.DataFrame): + data = self.datasets[dataset][column] + else: + return console.print( + "Can not select data due to the data not being a DataFrame or Series." + ) + + econometrics_view.display_root( + data, + dataset, + column, + ns_parser.fuller_reg, + ns_parser.kpss_reg, + ns_parser.export, + ) + + def call_panel(self, other_args: List[str]): + """Process panel command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="panel", + description="Performs regression analysis on Panel Data. There are a multitude of options to select " + "from to fit the needs of restrictions of the dataset.", + ) + + parser.add_argument( + "-r", + "--regression", + nargs="+", + type=str, + choices=self.choices["regressions"], + dest="regression", + help="The regression you would like to perform, first variable is the dependent variable, " + "consecutive variables the independent variables.", + ) + + parser.add_argument( + "-t", + "--type", + type=str, + choices=[ + "pols", + "re", + "bols", + "fe", + "fdols", + "POLS", + "RE", + "BOLS", + "FE", + "FDOLS", + ], + dest="type", + help="The type of regression you wish to perform. This can be either pols (Pooled OLS), " + "re (Random Effects), bols (Between OLS), fe (Fixed Effects) or fdols (First Difference OLS)", + default="pols", + ) + + parser.add_argument( + "-ee", + "--entity_effects", + dest="entity_effects", + help="Using this command creates entity effects, which is equivalent to including dummies for each entity. " + "This is only used within Fixed Effects estimations (when type is set to 'fe')", + action="store_true", + default=False, + ) + + parser.add_argument( + "-te", + "--time_effects", + dest="time_effects", + help="Using this command creates time effects, which is equivalent to including dummies for each time. " + "This is only used within Fixed Effects estimations (when type is set to 'fe')", + action="store_true", + default=False, + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-r") + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if ns_parser and ns_parser.regression: + if len(ns_parser.regression) < 2: + return console.print( + "Please provide both dependent and independent variables." + ) + for variable in ns_parser.regression: + column, dataset = self.choices["regressions"][variable].keys() + if not isinstance(self.datasets[dataset][column].index, pd.MultiIndex): + return console.print( + f"The column {column} from the dataset {dataset} is not a MultiIndex. Make sure you set " + f"the index correctly with the index command where the first level is the entity " + f"(e.g. Tesla Inc.) and the second level the date (e.g. 2021-03-31)" + ) + + # Ensure that OLS is always ran to be able to perform tests + regression_types = ["OLS", ns_parser.type.upper()] + + for regression in regression_types: + regression_name = regression + if regression == "FE": + if ns_parser.entity_effects: + regression_name = regression_name + "_EE" + if ns_parser.time_effects: + regression_name = regression_name + "_IE" + + ( + self.regression[regression_name]["data"], + self.regression[regression_name]["dependent"], + self.regression[regression_name]["independent"], + self.regression[regression_name]["model"], + ) = gamestonk_terminal.econometrics.regression_view.display_panel( + regression, + ns_parser.regression, + self.datasets, + self.choices["regressions"], + ns_parser.entity_effects, + ns_parser.time_effects, + ) + + def call_compare(self, other_args: List[str]): + """Process compare command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="compare", + description="Compare results between all activated Panel regression models", + ) + + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if ns_parser: + gamestonk_terminal.econometrics.regression_model.get_comparison( + self.regression, ns_parser.export + ) + + def call_dwat(self, other_args: List[str]): + """Process unitroot command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="dwat", + description="Show autocorrelation tests from Durbin-Watson", + ) + + parser.add_argument( + "-p", + "--plot", + help="Plot the residuals", + dest="plot", + action="store_true", + default=False, + ) + + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + if ns_parser: + if not self.regression["OLS"]["model"]: + console.print( + "Please perform an OLS regression before estimating the Durbin-Watson statistic." + ) + else: + dependent_variable = self.regression["OLS"]["data"][ + self.regression["OLS"]["dependent"] + ] + + gamestonk_terminal.econometrics.regression_view.display_dwat( + dependent_variable, + self.regression["OLS"]["model"].resid, + ns_parser.plot, + ns_parser.export, + ) + + console.print() + + def call_bgod(self, other_args): + """Process bgod command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="bgod", + description="Show Breusch-Godfrey autocorrelation test results.", + ) + + parser.add_argument( + "-l", + "--lags", + type=int, + dest="lags", + help="The lags for the Breusch-Godfrey test", + default=3, + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-l") + + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if ns_parser: + if not self.regression["OLS"]["model"]: + console.print( + "Please perform an OLS regression before estimating the Breusch-Godfrey statistic." + ) + else: + gamestonk_terminal.econometrics.regression_view.display_bgod( + self.regression["OLS"]["model"], ns_parser.lags, ns_parser.export + ) + + console.print() + + def call_bpag(self, other_args): + """Process bpag command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="bpag", + description="Show Breusch-Pagan heteroscedasticity test results.", + ) + + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) + + if ns_parser: + if not self.regression["OLS"]["model"]: + console.print( + "Please perform an OLS regression before estimating the Breusch-Pagan statistic." + ) + else: + gamestonk_terminal.econometrics.regression_view.display_bpag( + self.regression["OLS"]["model"], ns_parser.export + ) + + console.print() + + def call_granger(self, other_args: List[str]): + """Process granger command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="granger", + description="Show Granger causality between two timeseries", + ) + + parser.add_argument( + "-ts", + "--timeseries", + choices=self.choices["granger"], + help="Requires two time series, the first time series is assumed to be Granger-caused " + "by the second time series.", + nargs=2, + dest="ts", + ) + + parser.add_argument( + "-l", + "--lags", + help="How many lags should be included", + type=int, + dest="lags", + default=3, + ) + + parser.add_argument( + "-cl", + "--confidence", + help="Set the confidence level", + type=int, + dest="confidence", + default=0.05, + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-ts") + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + ) + + if ns_parser and ns_parser.ts: + if len(ns_parser.ts) == 2: + column_y, dataset_y = self.choices["granger"][ns_parser.ts[0]].keys() + column_x, dataset_x = self.choices["granger"][ns_parser.ts[1]].keys() + + econometrics_view.display_granger( + self.datasets[dataset_y][column_y], + self.datasets[dataset_x][column_x], + ns_parser.lags, + ns_parser.confidence, + ns_parser.export, + ) + else: + console.print( + "Please provide two time series for this function, " + "for example: granger adj_close-aapl adj_close-tsla" + ) + + console.print() + + def call_coint(self, other_args: List[str]): + """Process coint command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="coint", + description="Show co-integration between two timeseries", + ) + + parser.add_argument( + "-ts", + "--time_series", + help="The time series you wish to test co-integration on. Can hold multiple timeseries.", + choices=self.choices["cointegration"], + dest="ts", + nargs="+", + ) + + parser.add_argument( + "-p", + "--plot", + help="Plot Z-Values", + dest="plot", + action="store_true", + default=False, + ) + + parser.add_argument( + "-s", + "--significant", + help="Show only companies that have p-values lower than this percentage", + dest="significant", + type=float, + default=0, + ) + + if other_args and "-" not in other_args[0][0]: + other_args.insert(0, "-ts") + + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + ) + + if ns_parser and ns_parser.ts: + + datasets = {} + for stock in ns_parser.ts: + column, dataset = self.choices["cointegration"][stock].keys() + datasets[stock] = self.datasets[dataset][column] + + econometrics_view.display_cointegration_test( + datasets, ns_parser.significant, ns_parser.plot, ns_parser.export + ) + + console.print() diff --git a/gamestonk_terminal/econometrics/econometrics_model.py b/gamestonk_terminal/econometrics/econometrics_model.py new file mode 100644 index 00000000000..a1eabd2e5cb --- /dev/null +++ b/gamestonk_terminal/econometrics/econometrics_model.py @@ -0,0 +1,348 @@ +"""Econometrics Model""" +__docformat__ = "numpy" + +# pylint: disable=eval-used + +import logging +from pathlib import Path +import warnings +from typing import Dict, Union, Any + +import pandas as pd +from pandas import DataFrame +from scipy import stats +import statsmodels.api as sm +from statsmodels.tsa.stattools import adfuller, kpss, grangercausalitytests +from linearmodels.datasets import wage_panel + +from gamestonk_terminal.decorators import log_start_end +from gamestonk_terminal.rich_config import console + +logger = logging.getLogger(__name__) + + +@log_start_end(log=logger) +def load( + file: str, + file_types: list, + data_files: Dict[Any, Any], + data_examples: Dict[Any, Any], +) -> pd.DataFrame: + """Load custom file into dataframe. + + Parameters + ---------- + file: str + Path to file + file_types: list + Supported file types + data_files: dict + Contains all available data files within the Export folder + data_examples: dict + Contains all available examples from Statsmodels + + Returns + ------- + pd.DataFrame: + Dataframe with custom data + """ + if file in data_examples: + if file == "wage_panel": + return wage_panel.load() + return eval(f"sm.datasets.{file}.load_pandas().data") + + if file in data_files: + file = data_files[file] + + if not Path(file).exists(): + console.print(f"[red]Can not find the file {file}[/red]\n") + return pd.DataFrame() + + file_type = Path(file).suffix + + if file_type == ".xlsx": + data = pd.read_excel(file) + elif file_type == ".csv": + data = pd.read_csv(file) + else: + return console.print( + f"The file type {file_type} is not supported. Please choose one of the following: " + f"{', '.join(file_types)}" + ) + + return data + + +@log_start_end(log=logger) +def get_options( + datasets: Dict[str, pd.DataFrame], dataset_name: str = None +) -> Dict[Union[str, Any], DataFrame]: + """Obtain columns-dataset combinations from loaded in datasets that can be used in other commands + + Parameters + ---------- + datasets: dict + The available datasets. + dataset_name: str + The dataset you wish to show the options for. + + Returns + ------- + option_tables: dict + A dictionary with a DataFrame for each option. With dataset_name set, only shows one options table. + """ + option_tables = {} + + if dataset_name: + columns = datasets[dataset_name].columns + option_tables[dataset_name] = pd.DataFrame( + { + "dataset": [dataset_name] * len(columns), + "column": columns, + "option": [f"{column}-{dataset_name}" for column in columns], + } + ) + else: + for dataset, data_values in datasets.items(): + columns = data_values.columns + option_tables[dataset] = pd.DataFrame( + { + "dataset": [dataset] * len(columns), + "column": columns, + "option": [f"{column}-{dataset}" for column in columns], + } + ) + + return option_tables + + +@log_start_end(log=logger) +def clean(dataset: pd.DataFrame, fill: str, drop: str, limit: int) -> pd.DataFrame: + """Clean up NaNs from the dataset + + Parameters + ---------- + dataset : pd.DataFrame + The dataset you wish to clean + fill : str + The method of filling Nans + drop : str + The method of dropping NaNs + limit : int + The maximum limit you wish to apply that can be forward or backward filled + + Returns + ------- + pd.DataFrame: + Dataframe with cleaned up data + """ + if fill: + if fill == "rfill": + dataset = dataset.fillna(axis="index", value=0) + if fill == "cfill": + dataset = dataset.fillna(axis="columns", value=0) + elif fill == "rbfill": + dataset = dataset.fillna(axis="index", method="bfill", limit=limit) + elif fill == "cbfill": + dataset = dataset.fillna(axis="columns", method="bfill", limit=limit) + elif fill == "rffill": + dataset = dataset.fillna(axis="index", method="ffill", limit=limit) + elif fill == "cffill": + dataset = dataset.fillna(axis="columns", method="ffill", limit=limit) + + if drop: + if drop == "rdrop": + dataset = dataset.dropna(how="any", axis="index") + elif drop == "cdrop": + dataset = dataset.dropna(how="any", axis="columns") + + return dataset + + +@log_start_end(log=logger) +def get_normality(data: pd.Series) -> pd.DataFrame: + """ + Look at the distribution of returns and generate statistics on the relation to the normal curve. + This function calculates skew and kurtosis (the third and fourth moments) and performs both + a Jarque-Bera and Shapiro Wilk test to determine if data is normally distributed. + + Parameters + ---------- + data : pd.Series + A series or column of a DataFrame to test normality for + + Returns + ------- + pd.DataFrame + Dataframe containing statistics of normality + """ + # Kurtosis: measures height and sharpness of the central peak relative to that of a standard bell curve + k, kpval = stats.kurtosistest(data) + + # Skewness: measure of the asymmetry of the probability distribution of a random variable about its mean + s, spval = stats.skewtest(data) + + # Jarque-Bera goodness of fit test on sample data: tests if the sample data has the skewness and kurtosis + # matching a normal distribution + jb, jbpval = stats.jarque_bera(data) + + # The Shapiro-Wilk test: tests the null hypothesis that the data was drawn from a normal distribution. + sh, shpval = stats.shapiro(data) + + # Kolmogorov-Smirnov: the one-sample test compares the underlying distribution F(x) of a sample + # against a given distribution G(x). Comparing to normal here. + ks, kspval = stats.kstest(data, "norm") + + l_statistic = [k, s, jb, sh, ks] + l_pvalue = [kpval, spval, jbpval, shpval, kspval] + + return pd.DataFrame( + [l_statistic, l_pvalue], + columns=[ + "Kurtosis", + "Skewness", + "Jarque-Bera", + "Shapiro-Wilk", + "Kolmogorov-Smirnov", + ], + index=["Statistic", "p-value"], + ) + + +@log_start_end(log=logger) +def get_root(df: pd.Series, fuller_reg: str, kpss_reg: str) -> pd.DataFrame: + """Calculate test statistics for unit roots + + Parameters + ---------- + df : pd.Series + Series or column of DataFrame of target variable + fuller_reg : str + Type of regression of ADF test + kpss_reg : str + Type of regression for KPSS test + + Returns + ------- + pd.DataFrame + Dataframe with results of ADF test and KPSS test + """ + # The Augmented Dickey-Fuller test: used to test for a unit root in a univariate process in the + # presence of serial correlation. + result = adfuller(df, regression=fuller_reg) + cols = ["Test Statistic", "P-Value", "NLags", "Nobs", "ICBest"] + vals = [result[0], result[1], result[2], result[3], result[5]] + data = pd.DataFrame(data=vals, index=cols, columns=["ADF"]) + + # Kwiatkowski-Phillips-Schmidt-Shin test: test for level or trend stationarity + # Note: this test seems to produce an Interpolation Error which says + # The test statistic is outside the range of p-values available in the + # look-up table. The actual p-value is greater than the p-value returned. + # Wrap this in catch_warnings to prevent this + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res2 = kpss(df, regression=kpss_reg, nlags="auto") + + vals2 = [res2[0], res2[1], res2[2], 0, 0] + data["KPSS"] = vals2 + + return data + + +@log_start_end(log=logger) +def get_granger_causality(time_series_y, time_series_x, lags): + """Calculate granger tests + + Parameters + ---------- + time_series_y : Series + The series you want to test Granger Causality for. + time_series_x : Series + The series that you want to test whether it Granger-causes time_series_y + lags : int + The amoiunt of lags for the Granger test. By default, this is set to 3. + """ + granger_set = pd.concat([time_series_y, time_series_x], axis=1) + + granger = grangercausalitytests(granger_set, [lags], verbose=False) + + return granger + + +def get_engle_granger_two_step_cointegration_test(y, x): + """Estimates long-run and short-run cointegration relationship for series y and x and apply + the two-step Engle & Granger test for cointegration. + + Uses a 2-step process to first estimate coefficients for the long-run relationship + y_t = c + gamma * x_t + z_t + + and then the short-term relationship, + y_t - y_(t-1) = alpha * z_(t-1) + epsilon_t, + + with z the found residuals of the first equation. + + Then tests cointegration by Dickey-Fuller phi=1 vs phi < 1 in + z_t = phi * z_(t-1) + eta_t + + If this implies phi < 1, the z series is stationary is concluded to be + stationary, and thus the series y and x are concluded to be cointegrated. + + Parameters + + Parameters + ---------- + y : pd.Series + The first time series of the pair to analyse. + + x : pd.Series + The second time series of the pair to analyse. + + Returns + ------- + c : float + The constant term in the long-run relationship y_t = c + gamma * x_t + z_t. This + describes the static shift of y with respect to gamma * x. + + gamma : float + The gamma term in the long-run relationship y_t = c + gamma * x_t + z_t. This + describes the ratio between the const-shifted y and x. + + alpha : float + The alpha term in the short-run relationship y_t - y_(t-1) = alpha * z_(t-1) + epsilon. This + gives an indication of the strength of the error correction toward the long-run mean. + + z : pd.Series + Series of residuals z_t from the long-run relationship y_t = c + gamma * x_t + z_t, representing + the value of the error correction term. + + dfstat : float + The Dickey Fuller test-statistic for phi = 1 vs phi < 1 in the second equation. A more + negative value implies the existence of stronger cointegration. + + pvalue : float + The p-value corresponding to the Dickey Fuller test-statistic. A lower value implies + stronger rejection of no-cointegration, thus stronger evidence of cointegration. + + """ + warnings.simplefilter(action="ignore", category=FutureWarning) + long_run_ols = sm.OLS(y, sm.add_constant(x)) + warnings.simplefilter(action="default", category=FutureWarning) + + long_run_ols_fit = long_run_ols.fit() + + c, gamma = long_run_ols_fit.params + z = long_run_ols_fit.resid + + short_run_ols = sm.OLS(y.diff().iloc[1:], (z.shift().iloc[1:])) + short_run_ols_fit = short_run_ols.fit() + + alpha = short_run_ols_fit.params[0] + + # NOTE: The p-value returned by the adfuller function assumes we do not estimate z first, but test + # stationarity of an unestimated series directly. This assumption should have limited effect for high N, however. + # Critical values taking this into account more accurately are provided in e.g. McKinnon (1990) and + # Engle & Yoo (1987). + + adfstat, pvalue, _, _, _ = adfuller(z, maxlag=1, autolag=None) + + return c, gamma, alpha, z, adfstat, pvalue diff --git a/gamestonk_terminal/econometrics/econometrics_view.py b/gamestonk_terminal/econometrics/econometrics_view.py new file mode 100644 index 00000000000..241f4be5c0b --- /dev/null +++ b/gamestonk_terminal/econometrics/econometrics_view.py @@ -0,0 +1,440 @@ +"""Econometrics View""" +__docformat__ = "numpy" + +import logging +import os +from itertools import combinations +from typing import Dict, Any, Optional, List + +import matplotlib.pyplot as plt +import pandas as pd +from pandas.plotting import register_matplotlib_converters + +from gamestonk_terminal.config_plot import PLOT_DPI +from gamestonk_terminal.decorators import log_start_end +from gamestonk_terminal.helper_funcs import ( + export_data, + plot_autoscale, +) +from gamestonk_terminal.helper_funcs import ( + print_rich_table, +) +from gamestonk_terminal.rich_config import console +from gamestonk_terminal.econometrics import econometrics_model +from gamestonk_terminal.config_terminal import theme + +logger = logging.getLogger(__name__) + +register_matplotlib_converters() + + +@log_start_end(log=logger) +def show_options( + datasets: Dict[str, pd.DataFrame], + dataset_name: str = None, + export: str = "", +): + """Plot custom data + + Parameters + ---------- + datasets: dict + The loaded in datasets + dataset_name: str + The name of the dataset you wish to show options for + export: str + Format to export image + """ + if not datasets: + console.print( + "Please load in a dataset by using the 'load' command before using this feature." + ) + else: + option_tables = econometrics_model.get_options(datasets, dataset_name) + + for dataset, data_values in option_tables.items(): + print_rich_table( + data_values, + headers=list(data_values.columns), + show_index=False, + title=f"Options for {dataset}", + ) + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + f"{dataset}_options", + data_values.set_index("column"), + ) + + +@log_start_end(log=logger) +def get_plot( + data: pd.DataFrame, + dataset: str, + column: str, + export: str = "", + external_axes: Optional[List[plt.axes]] = None, +): + """Plot data from a dataset + + Parameters + ---------- + data: pd.DataFrame + Dataframe of custom data + dataset: str + Dataset name + column: str + Column for y data + export: str + Format to export image + external_axes:Optional[List[plt.axes]] + External axes to plot on + """ + if isinstance(data.index, pd.MultiIndex): + console.print( + "The index appears to be a multi-index. " + "Therefore, it is not possible to plot the data." + ) + else: + if external_axes is None: + _, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI) + else: + ax = external_axes[0] + + if isinstance(data, pd.Series): + ax.plot(data) + elif isinstance(data, pd.DataFrame): + ax.plot(data[column]) + + ax.set_title(f"{column} data from dataset {dataset}") + theme.style_primary_axis(ax) + + if external_axes is None: + theme.visualize_output() + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + f"{column}_{dataset}_plot", + ) + + +@log_start_end(log=logger) +def display_norm( + data: pd.Series, + dataset: str, + column: str, + plot: bool = False, + export: str = "", + external_axes: Optional[List[plt.axes]] = None, +): + """Determine the normality of a timeseries. + + Parameters + ---------- + data: pd.Series + Series of custom data + dataset: str + Dataset name + column: str + Column for y data + plot : bool + Whether you wish to plot a histogram + export: str + Format to export data. + external_axes: Optional[List[plt.axes]] + External axes to plot on + """ + if data.dtype not in [int, float]: + console.print( + f"The column type must be numeric. The {column}-{dataset} type is {data.dtype}. " + f"Consider using the command 'type' to change this." + ) + else: + results = econometrics_model.get_normality(data) + + print_rich_table( + results, + headers=list(results.columns), + show_index=True, + title=f"Normality Test [Column: {column} | Dataset: {dataset}]", + ) + + if plot: + if external_axes is None: + _, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI) + else: + ax = external_axes[0] + + ax.hist(data, bins=100) + + ax.set_title(f"Histogram of {column} data from dataset {dataset}") + + theme.style_primary_axis(ax) + + if external_axes is None: + theme.visualize_output() + + if export: + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + f"{column}_{dataset}_norm", + results, + ) + else: + console.print() + + +@log_start_end(log=logger) +def display_root( + df: pd.Series, + dataset_name: str, + column_name: str, + fuller_reg: str, + kpss_reg: str, + export: str = "", +): + """Determine the normality of a timeseries. + + Parameters + ---------- + df : pd.Series + Series of target variable + dataset_name: str + Name of the dataset + column_name: str + Name of the column + fuller_reg : str + Type of regression of ADF test + kpss_reg : str + Type of regression for KPSS test + export: str + Format to export data. + """ + if df.dtype not in [int, float]: + console.print( + f"The column type must be numeric. The {column_name}-{dataset_name} " + f"type is {df.dtype}. Consider using the command 'type' to change this." + ) + else: + results = econometrics_model.get_root(df, fuller_reg, kpss_reg) + + print_rich_table( + results, + headers=list(results.columns), + show_index=True, + title=f"Unitroot Test [Column: {column_name} | Dataset: {dataset_name}]", + ) + + if export: + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + f"{column_name}_{dataset_name}_root", + results, + ) + else: + console.print() + + +@log_start_end(log=logger) +def display_granger( + time_series_y: pd.Series, + time_series_x: pd.Series, + lags: int = 3, + confidence_level: float = 0.05, + export: str = "", +): + """Show granger tests + + Parameters + ---------- + time_series_y : Series + The series you want to test Granger Causality for. + time_series_x : Series + The series that you want to test whether it Granger-causes time_series_y + lags : int + The amount of lags for the Granger test. By default, this is set to 3. + confidence_level: float + The confidence level you wish to use. By default, this is set to 0.05. + export : str + Format to export data + """ + if time_series_y.dtype not in [int, float]: + console.print( + f"The time series {time_series_y.name} needs to be numeric but is type {time_series_y.dtype}. " + f"Consider using the command 'type' to change this." + ) + elif time_series_x.dtype not in [int, float]: + console.print( + f"The time series {time_series_x.name} needs to be numeric but is type {time_series_x.dtype}. " + f"Consider using the command 'type' to change this." + ) + else: + granger = econometrics_model.get_granger_causality( + time_series_y, time_series_x, lags + ) + + for test in granger[lags][0]: + # As ssr_chi2test and lrtest have one less value in the tuple, we fill + # this value with a '-' to allow the conversion to a DataFrame + if len(granger[lags][0][test]) != 4: + pars = granger[lags][0][test] + granger[lags][0][test] = (pars[0], pars[1], "-", pars[2]) + + granger_df = pd.DataFrame( + granger[lags][0], index=["F-test", "P-value", "Count", "Lags"] + ).T + + print_rich_table( + granger_df, + headers=list(granger_df.columns), + show_index=True, + title=f"Granger Causality Test [Y: {time_series_y.name} | X: {time_series_x.name} | Lags: {lags}]", + ) + + result_ftest = round(granger[lags][0]["params_ftest"][1], 3) + + if result_ftest > confidence_level: + console.print( + f"As the p-value of the F-test is {result_ftest}, we can not reject the null hypothesis at " + f"the {confidence_level} confidence level." + ) + else: + console.print( + f"As the p-value of the F-test is {result_ftest}, we can reject the null hypothesis at " + f"the {confidence_level} confidence level and find the Series '{time_series_x.name}' " + f"to Granger-cause the Series '{time_series_y.name}'" + ) + + if export: + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + f"{time_series_y.name}_{time_series_x.name}_granger", + granger_df, + ) + else: + console.print() + + +@log_start_end(log=logger) +def display_cointegration_test( + datasets: Dict[pd.Series, Any], + significant: bool = False, + plot: bool = False, + export: str = "", + external_axes: Optional[List[plt.axes]] = None, +): + """Estimates long-run and short-run cointegration relationship for series y and x and apply + the two-step Engle & Granger test for cointegration. + + Uses a 2-step process to first estimate coefficients for the long-run relationship + y_t = c + gamma * x_t + z_t + + and then the short-term relationship, + y_t - y_(t-1) = alpha * z_(t-1) + epsilon_t, + + with z the found residuals of the first equation. + + Then tests co-integration with the Dickey-Fuller phi=1 vs phi < 1 in + z_t = phi * z_(t-1) + eta_t + + If this implies phi < 1, the z series is stationary is concluded to be + stationary, and thus the series y and x are concluded to be cointegrated. + + Parameters + ---------- + datasets: Dict[pd.Series, Any] + All time series to perform co-integration tests on. + significant: float + Show only companies that have p-values lower than this percentage + plot: bool + Whether you wish to plot the z-values of all pairs. + export : str + Format to export data + external_axes:Optional[List[plt.axes]] + External axes to plot on + """ + + pairs = list(combinations(datasets.keys(), 2)) + result: Dict[str, list] = dict() + z_values: Dict[str, pd.Series] = dict() + + for x, y in pairs: + if sum(datasets[y].isnull()) > 0: + console.print( + f"The Series {y} has nan-values. Please consider dropping or filling these " + f"values with 'clean'." + ) + elif sum(datasets[x].isnull()) > 0: + console.print( + f"The Series {x} has nan-values. Please consider dropping or filling these " + f"values with 'clean'." + ) + elif not datasets[y].index.equals(datasets[x].index): + console.print(f"The Series {y} and {x} do not have the same index.") + else: + ( + c, + gamma, + alpha, + z, + adfstat, + pvalue, + ) = econometrics_model.get_engle_granger_two_step_cointegration_test( + datasets[x], datasets[y] + ) + result[f"{x}/{y}"] = [c, gamma, alpha, adfstat, pvalue] + z_values[f"{x}/{y}"] = z + + if result and z_values: + df = pd.DataFrame.from_dict( + result, + orient="index", + columns=["Constant", "Gamma", "Alpha", "Dickey-Fuller", "P Value"], + ) + + if significant: + console.print( + f"Only showing pairs that are statistically significant ({significant} > p-value)." + ) + df = df[significant > df["P Value"]] + console.print() + + print_rich_table( + df, + headers=list(df.columns), + show_index=True, + index_name="Pairs", + title="Cointegration Tests", + ) + + if plot: + if external_axes is None: + _, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI) + else: + ax = external_axes[0] + + for pair, values in z_values.items(): + ax.plot(values, label=pair) + + ax.legend() + ax.set_title("Error correction terms") + + theme.style_primary_axis(ax) + + if external_axes is None: + theme.visualize_output() + + if export: + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "results_cointegration", + df, + ) + else: + console.print() diff --git a/gamestonk_terminal/econometrics/regression_model.py b/gamestonk_terminal/econometrics/regression_model.py new file mode 100644 index 00000000000..47f44bcdb72 --- /dev/null +++ b/gamestonk_terminal/econometrics/regression_model.py @@ -0,0 +1,568 @@ +"""Regression Model""" +__docformat__ = "numpy" + +import os +import warnings +import logging +from typing import List, Tuple, Dict, Any + +import pandas as pd +from linearmodels import PooledOLS +from linearmodels.panel import ( + RandomEffects, + BetweenOLS, + PanelOLS, + FirstDifferenceOLS, + compare, +) +from pandas import DataFrame +from statsmodels.api import add_constant +import statsmodels.api as sm +from statsmodels.stats.api import het_breuschpagan +from statsmodels.stats.diagnostic import acorr_breusch_godfrey +from statsmodels.stats.stattools import durbin_watson + +from gamestonk_terminal.decorators import log_start_end +from gamestonk_terminal.helper_funcs import export_data +from gamestonk_terminal.rich_config import console + +logger = logging.getLogger(__name__) + + +def get_regressions_results( + regression_type: str, + regression_variables: List[Tuple], + data: Dict[str, pd.DataFrame], + datasets: Dict[pd.DataFrame, Any], + entity_effects: bool = False, + time_effects: bool = False, +) -> Tuple[DataFrame, Any, List[Any], Any]: + """Based on the regression type, this function decides what regression to run. + + Parameters + ---------- + regression_type: str + The type of regression you wish to execute. + regression_variables : list + The regressions variables entered where the first variable is + the dependent variable. + data : dict + A dictionary containing the datasets. + datasets: dict + A dictionary containing the column and dataset names of + each column/dataset combination. + entity_effects: bool + Whether to apply Fixed Effects on entities. + time_effects: bool + Whether to apply Fixed Effects on time. + + Returns + ------- + The dataset used, the dependent variable, the independent variable and + the regression model. + """ + if regression_type == "OLS": + return get_ols(regression_variables, data, datasets, False) + if regression_type == "POLS": + return get_pols(regression_variables, data, datasets) + if regression_type == "RE": + return get_re(regression_variables, data, datasets) + if regression_type == "BOLS": + return get_bols(regression_variables, data, datasets) + if regression_type == "FE": + return get_fe( + regression_variables, data, datasets, entity_effects, time_effects + ) + if regression_type == "FDOLS": + return get_fdols(regression_variables, data, datasets) + + return console.print(f"{regression_type} is not an option.") + + +def get_regression_data( + regression_variables: List[tuple], + data: Dict[str, pd.DataFrame], + datasets: Dict[pd.DataFrame, Any], + regression_type: str = "", +) -> Tuple[DataFrame, Any, List[Any]]: + """This function creates a DataFrame with the required regression data as + well sets up the dependent and independent variables. + + Parameters + ---------- + regression_variables : list + The regressions variables entered where the first variable is + the dependent variable. + data : dict + A dictionary containing the datasets. + datasets: dict + A dictionary containing the column and dataset names of + each column/dataset combination. + regression_type: str + The type of regression that is executed. + + Returns + ------- + The dataset used, the dependent variable, the independent variable and + the OLS model. + """ + + regression = {} + independent_variables = [] + dependent_variable = None + + for variable in regression_variables: + column, dataset = datasets[variable].keys() + regression[f"{column}_{dataset}"] = data[dataset][column] + + if variable == regression_variables[0]: + dependent_variable = f"{column}_{dataset}" + elif variable in regression_variables[1:]: + independent_variables.append(f"{column}_{dataset}") + + regression_df = pd.DataFrame(regression) + nan_values = regression_df.isnull().sum().sum() + + if nan_values > 0: + regression_df = regression_df.dropna(how="any", axis="index") + + if regression_df.empty: + console.print( + f"The resulting DataFrame only consists of NaN values. This is usually due to an index " + f"mismatch. Therefore, no {regression_type} regression can be performed. Consider revisiting your " + "dataset(s) and adjust accordingly." + ) + else: + console.print( + f"The resulting DataFrame has {nan_values} NaN values. This is usually due to " + f"an index mismatch. Rows that contain NaNs are dropped to be able to perform the {regression_type} " + f"regression. Consider revisiting your dataset(s) and adjust accordingly." + ) + + return regression_df, dependent_variable, independent_variables + + +@log_start_end(log=logger) +def get_ols( + regression_variables: List[Tuple], + data: Dict[str, pd.DataFrame], + datasets: Dict[pd.DataFrame, Any], + show_regression: bool = True, + export: str = "", +) -> Tuple[DataFrame, Any, List[Any], Any]: + """Performs an OLS regression on timeseries data. [Source: Statsmodels] + + Parameters + ---------- + regression_variables : list + The regressions variables entered where the first variable is + the dependent variable. + data : dict + A dictionary containing the datasets. + datasets: dict + A dictionary containing the column and dataset names of + each column/dataset combination. + show_regression: bool + Whether to show the regression results table. + export: str + Format to export data + + Returns + ------- + The dataset used, the dependent variable, the independent variable and + the OLS model. + """ + + regression_df, dependent_variable, independent_variables = get_regression_data( + regression_variables, data, datasets, "OLS" + ) + + if regression_df.empty: + model = None + else: + with warnings.catch_warnings(record=True) as warning_messages: + model = sm.OLS( + regression_df[dependent_variable], regression_df[independent_variables] + ).fit() + + if show_regression: + console.print(model.summary()) + console.print("") + if len(warning_messages) > 0: + console.print("Warnings:") + for warning in warning_messages: + console.print(f"[red]{warning.message}[/red]".replace("\n", "")) + + if export: + results_as_html = model.summary().tables[1].as_html() + df = pd.read_html(results_as_html, header=0, index_col=0)[0] + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + f"{dependent_variable}_ols_regression", + df, + ) + else: + console.print("") + + return regression_df, dependent_variable, independent_variables, model + + +@log_start_end(log=logger) +def get_pols( + regression_variables: List[Tuple], + data: Dict[str, pd.DataFrame], + datasets: Dict[pd.DataFrame, Any], +) -> Tuple[DataFrame, Any, List[Any], Any]: + """PooledOLS is just plain OLS that understands that various panel data structures. + It is useful as a base model. [Source: LinearModels] + + Parameters + ---------- + regression_variables : list + The regressions variables entered where the first variable is + the dependent variable. + data : dict + A dictionary containing the datasets. + datasets: dict + A dictionary containing the column and dataset names of + each column/dataset combination. + + Returns + ------- + The dataset used, the dependent variable, the independent variable and + the Pooled OLS model. + """ + + regression_df, dependent_variable, independent_variables = get_regression_data( + regression_variables, data, datasets, "POLS" + ) + + if regression_df.empty: + model = None + else: + with warnings.catch_warnings(record=True) as warning_messages: + exogenous = add_constant(regression_df[independent_variables]) + model = PooledOLS(regression_df[dependent_variable], exogenous).fit() + console.print(model) + + if len(warning_messages) > 0: + console.print("Warnings:") + for warning in warning_messages: + console.print(f"[red]{warning.message}[/red]".replace("\n", "")) + + return regression_df, dependent_variable, independent_variables, model + + +@log_start_end(log=logger) +def get_re( + regression_variables: List[Tuple], + data: Dict[str, pd.DataFrame], + datasets: Dict[pd.DataFrame, Any], +) -> Tuple[DataFrame, Any, List[Any], Any]: + """The random effects model is virtually identical to the pooled OLS model except that is accounts for the + structure of the model and so is more efficient. Random effects uses a quasi-demeaning strategy which + subtracts the time average of the within entity values to account for the common shock. [Source: LinearModels] + + Parameters + ---------- + regression_variables : list + The regressions variables entered where the first variable is + the dependent variable. + data : dict + A dictionary containing the datasets. + datasets: dict + A dictionary containing the column and dataset names of + each column/dataset combination. + + Returns + ------- + The dataset used, the dependent variable, the independent variable and + the RandomEffects model. + """ + + regression_df, dependent_variable, independent_variables = get_regression_data( + regression_variables, data, datasets, "RE" + ) + + if regression_df.empty: + model = None + else: + with warnings.catch_warnings(record=True) as warning_messages: + exogenous = add_constant(regression_df[independent_variables]) + model = RandomEffects(regression_df[dependent_variable], exogenous).fit() + console.print(model) + + if len(warning_messages) > 0: + console.print("Warnings:") + for warning in warning_messages: + console.print(f"[red]{warning.message}[/red]".replace("\n", "")) + + return regression_df, dependent_variable, independent_variables, model + + +@log_start_end(log=logger) +def get_bols( + regression_variables: List[Tuple], + data: Dict[str, pd.DataFrame], + datasets: Dict[pd.DataFrame, Any], +) -> Tuple[DataFrame, Any, List[Any], Any]: + """The between estimator is an alternative, usually less efficient estimator, can can be used to + estimate model parameters. It is particular simple since it first computes the time averages of + y and x and then runs a simple regression using these averages. [Source: LinearModels] + + Parameters + ---------- + regression_variables : list + The regressions variables entered where the first variable is + the dependent variable. + data : dict + A dictionary containing the datasets. + datasets: dict + A dictionary containing the column and dataset names of + each column/dataset combination. + + Returns + ------- + The dataset used, the dependent variable, the independent variable and + the Between OLS model. + """ + + regression_df, dependent_variable, independent_variables = get_regression_data( + regression_variables, data, datasets, "BOLS" + ) + + if regression_df.empty: + model = None + else: + with warnings.catch_warnings(record=True) as warning_messages: + exogenous = add_constant(regression_df[independent_variables]) + model = BetweenOLS(regression_df[dependent_variable], exogenous).fit() + console.print(model) + + if len(warning_messages) > 0: + console.print("Warnings:") + for warning in warning_messages: + console.print(f"[red]{warning.message}[/red]".replace("\n", "")) + + return regression_df, dependent_variable, independent_variables, model + + +@log_start_end(log=logger) +def get_fe( + regression_variables: List[Tuple], + data: Dict[str, pd.DataFrame], + datasets: Dict[pd.DataFrame, Any], + entity_effects: bool = False, + time_effects: bool = False, +) -> Tuple[DataFrame, Any, List[Any], Any]: + """When effects are correlated with the regressors the RE and BE estimators are not consistent. + The usual solution is to use Fixed Effects which are called entity_effects when applied to + entities and time_effects when applied to the time dimension. [Source: LinearModels] + + Parameters + ---------- + regression_variables : list + The regressions variables entered where the first variable is + the dependent variable. + data : dict + A dictionary containing the datasets. + datasets: dict + A dictionary containing the column and dataset names of + each column/dataset combination. + entity_effects : bool + Whether to include entity effects + time_effects : bool + Whether to include time effects + + Returns + ------- + The dataset used, the dependent variable, the independent variable and + the OLS model. + """ + + regression_df, dependent_variable, independent_variables = get_regression_data( + regression_variables, data, datasets, "FE" + ) + + if regression_df.empty: + model = None + else: + with warnings.catch_warnings(record=True) as warning_messages: + exogenous = add_constant(regression_df[independent_variables]) + model = PanelOLS( + regression_df[dependent_variable], + exogenous, + entity_effects=entity_effects, + time_effects=time_effects, + ).fit() + console.print(model) + + if len(warning_messages) > 0: + console.print("Warnings:") + for warning in warning_messages: + console.print(f"[red]{warning.message}[/red]".replace("\n", "")) + + return regression_df, dependent_variable, independent_variables, model + + +@log_start_end(log=logger) +def get_fdols( + regression_variables: List[Tuple], + data: Dict[str, pd.DataFrame], + datasets: Dict[pd.DataFrame, Any], +) -> Tuple[DataFrame, Any, List[Any], Any]: + """First differencing is an alternative to using fixed effects when there might be correlation. + When using first differences, time-invariant variables must be excluded. Additionally, + only one linear time-trending variable can be included since this will look like a constant. + This variable will soak up all time-trends in the data, and so interpretations of + these variable can be challenging. [Source: LinearModels] + + Parameters + ---------- + regression_variables : list + The regressions variables entered where the first variable is + the dependent variable. + data : dict + A dictionary containing the datasets. + datasets: dict + A dictionary containing the column and dataset names of + each column/dataset combination. + + Returns + ------- + The dataset used, the dependent variable, the independent variable and + the OLS model. + """ + + regression_df, dependent_variable, independent_variables = get_regression_data( + regression_variables, data, datasets, "FDOLS" + ) + + if regression_df.empty: + model = None + else: + with warnings.catch_warnings(record=True) as warning_messages: + model = FirstDifferenceOLS( + regression_df[dependent_variable], regression_df[independent_variables] + ).fit() + console.print(model) + + if len(warning_messages) > 0: + console.print("Warnings:") + for warning in warning_messages: + console.print(f"[red]{warning.message}[/red]".replace("\n", "")) + + return regression_df, dependent_variable, independent_variables, model + + +@log_start_end(log=logger) +def get_comparison(regressions, export: str = ""): + """Compare regression results between Panel Data regressions. + + Parameters + ---------- + regressions : Dict + Dictionary with regression results. + export : str + Format to export data + + Returns + ------- + Returns a PanelModelComparison which shows an overview of the different regression results. + """ + comparison = {} + + for regression_type, data in regressions.items(): + if regression_type == "OLS": + continue + if data["model"]: + comparison[regression_type] = data["model"] + + if not comparison: + # When the dictionary is empty, it means no Panel regression + # estimates are available and thus the function will have no output + return console.print( + "No Panel regression estimates available. Please use the " + "command 'panel' before using this command." + ) + + comparison_result = compare(comparison) + console.print(comparison_result) + + if export: + results_as_html = comparison_result.summary.tables[0].as_html() + df = pd.read_html(results_as_html, header=0, index_col=0)[0] + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "regressions_compare", + df, + ) + + return comparison_result + + +@log_start_end(log=logger) +def get_dwat(residual: pd.DataFrame) -> pd.DataFrame: + """Calculate test statistics for Durbing Watson autocorrelation + + Parameters + ---------- + residual : OLS Model + Model containing residual values. + + Returns + ------- + Test statistic of the Durbin Watson test. + """ + # Durbin Watson test: The test statistic is approximately equal to 2*(1-r) where r is the + # sample autocorrelation of the residuals. Thus, for r == 0, indicating no serial correlation, + # the test statistic equals 2. This statistic will always be between 0 and 4. The closer + # to 0 the statistic, the more evidence for positive serial correlation. The closer to 4, + # the more evidence for negative serial correlation. + result = durbin_watson(residual) + + return round(result, 2) + + +@log_start_end(log=logger) +def get_bgod(model: pd.DataFrame, lags: int) -> tuple: + """Calculate test statistics for autocorrelation + + Parameters + ---------- + model : OLS Model + Model containing residual values. + lags : int + The amount of lags. + + Returns + ------- + Test results from the Breusch-Godfrey Test + """ + + lm_stat, p_value, f_stat, fp_value = acorr_breusch_godfrey(model, nlags=lags) + + return lm_stat, p_value, f_stat, fp_value + + +@log_start_end(log=logger) +def get_bpag(model: pd.DataFrame) -> tuple: + """Calculate test statistics for heteroscedasticity + + Parameters + ---------- + model : OLS Model + Model containing residual values. + + Returns + ------- + Test results from the Breusch-Pagan Test + """ + + lm_stat, p_value, f_stat, fp_value = het_breuschpagan(model.resid, model.model.exog) + + return lm_stat, p_value, f_stat, fp_value diff --git a/gamestonk_terminal/econometrics/regression_view.py b/gamestonk_terminal/econometrics/regression_view.py new file mode 100644 index 00000000000..47aaacb11c0 --- /dev/null +++ b/gamestonk_terminal/econometrics/regression_view.py @@ -0,0 +1,238 @@ +"""Regression View""" +__docformat__ = "numpy" + +from typing import Optional, List, Tuple, Dict, Any +import os +import logging +import pandas as pd +from matplotlib import pyplot as plt + +from gamestonk_terminal.config_plot import PLOT_DPI +from gamestonk_terminal.decorators import log_start_end +from gamestonk_terminal.helper_funcs import plot_autoscale, export_data +from gamestonk_terminal.rich_config import console +from gamestonk_terminal.econometrics import regression_model +from gamestonk_terminal.helper_funcs import ( + print_rich_table, +) +from gamestonk_terminal.config_terminal import theme + +logger = logging.getLogger(__name__) + + +@log_start_end(log=logger) +def display_panel( + regression_type: str, + regression_variables: List[Tuple], + data: Dict[str, pd.DataFrame], + datasets: Dict[pd.DataFrame, Any], + entity_effects: bool = False, + time_effects: bool = False, + export: str = "", +): + """Based on the regression type, this function decides what regression to run. + + Parameters + ---------- + regression_type: str + The type of regression you wish to execute. + regression_variables : list + The regressions variables entered where the first variable is + the dependent variable. + data : dict + A dictionary containing the datasets. + datasets: dict + A dictionary containing the column and dataset names of + each column/dataset combination. + entity_effects: bool + Whether to apply Fixed Effects on entities. + time_effects: bool + Whether to apply Fixed Effects on time. + export : str + Format to export data + + Returns + ------- + The dataset used, the dependent variable, the independent variable and + the regression model. + """ + ( + regression_df, + dependent, + independent, + model, + ) = regression_model.get_regressions_results( + regression_type, + regression_variables, + data, + datasets, + entity_effects, + time_effects, + ) + + if export: + results_as_html = model.summary.tables[1].as_html() + df = pd.read_html(results_as_html, header=0, index_col=0)[0] + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + f"{dependent}_{regression_type}_regression", + df, + ) + + return regression_df, dependent, independent, model + + +@log_start_end(log=logger) +def display_dwat( + dependent_variable: pd.Series, + residual: pd.DataFrame, + plot: bool = False, + export: str = "", + external_axes: Optional[List[plt.axes]] = None, +): + """Show Durbin-Watson autocorrelation tests + + Parameters + ---------- + dependent_variable : pd.Series + The dependent variable. + residual : OLS Model + The residual of an OLS model. + plot : bool + Whether to plot the residuals + export : str + Format to export data + external_axes: Optional[List[plt.axes]] + External axes to plot on + """ + autocorrelation = regression_model.get_dwat(residual) + + if 1.5 < autocorrelation < 2.5: + console.print( + f"The result {autocorrelation} is within the range 1.5 and 2.5 which therefore indicates " + f"autocorrelation not to be problematic." + ) + else: + console.print( + f"The result {autocorrelation} is outside the range 1.5 and 2.5 and therefore autocorrelation " + f"can be problematic. Please consider lags of the dependent or independent variable." + ) + + if plot: + if external_axes is None: + _, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI) + else: + ax = external_axes[0] + + ax.scatter(dependent_variable, residual) + ax.axhline(y=0, color="r", linestyle="-") + ax.set_ylabel("Residual") + ax.set_xlabel(dependent_variable.name.capitalize()) + ax.set_title("Plot of Residuals") + theme.style_primary_axis(ax) + + if external_axes is None: + theme.visualize_output() + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + f"{dependent_variable.name}_dwat", + autocorrelation, + ) + + console.print() + + +@log_start_end(log=logger) +def display_bgod(model: pd.DataFrame, lags: int, export: str = ""): + """Show Breusch-Godfrey autocorrelation test + + Parameters + ---------- + model : OLS Model + Model containing residual values. + lags : int + The amount of lags included. + export : str + Format to export data + """ + ( + lm_stat, + p_value, + f_stat, + fp_value, + ) = regression_model.get_bgod(model, lags) + + df = pd.DataFrame( + [lm_stat, p_value, f_stat, fp_value], + index=["LM-stat", "p-value", "f-stat", "fp-value"], + ) + + print_rich_table( + df, + headers=list(["Breusch-Godfrey"]), + show_index=True, + title=f"Breusch-Godfrey autocorrelation test [Lags: {lags}]", + ) + + if p_value > 0.05: + console.print( + f"The result {round(p_value, 2)} indicates the existence of autocorrelation. Consider re-estimating " + f"with clustered standard errors and applying the Random Effects or Fixed Effects model." + ) + else: + console.print( + f"The result {round(p_value, 2)} indicates no existence of autocorrelation." + ) + + export_data(export, os.path.dirname(os.path.abspath(__file__)), "results_bgod", df) + + console.print() + + +@log_start_end(log=logger) +def display_bpag(model: pd.DataFrame, export: str = ""): + """Show Breusch-Pagan heteroscedasticity test + + Parameters + ---------- + model : OLS Model + Model containing residual values. + export : str + Format to export data + """ + ( + lm_stat, + p_value, + f_stat, + fp_value, + ) = regression_model.get_bpag(model) + + df = pd.DataFrame( + [lm_stat, p_value, f_stat, fp_value], + index=["lm-stat", "p-value", "f-stat", "fp-value"], + ) + + print_rich_table( + df, + headers=list(["Breusch-Pagan"]), + show_index=True, + title="Breusch-Pagan heteroscedasticity test", + ) + + if p_value > 0.05: + console.print( + f"The result {round(p_value, 2)} indicates the existence of heteroscedasticity. Consider taking the log " + f"or a rate for the dependent variable." + ) + else: + console.print( + f"The result {round(p_value, 2)} indicates no existence of heteroscedasticity." + ) + + export_data(export, os.path.dirname(os.path.abspath(__file__)), "results_bpag", df) + + console.print() diff --git a/poetry.lock b/poetry.lock index d3188dfacae..2c324d2ac45 100644 --- a/poetry.lock +++ b/poetry.lock @@ -158,6 +158,14 @@ python-versions = ">=3.7" [package.extras] tests = ["pytest", "pytest-asyncio", "mypy (>=0.800)"] +[[package]] +name = "astor" +version = "0.8.1" +description = "Read/rewrite/write Python ASTs" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" + [[package]] name = "astroid" version = "2.9.3" @@ -917,6 +925,29 @@ ufo = ["fs (>=2.2.0,<3)"] unicode = ["unicodedata2 (>=14.0.0)"] woff = ["zopfli (>=0.1.4)", "brotlicffi (>=0.8.0)", "brotli (>=1.0.1)"] +[[package]] +name = "formulaic" +version = "0.2.4" +description = "An implementation of Wilkinson formulas." +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +astor = "*" +interface-meta = ">=1.2" +numpy = "*" +pandas = "*" +scipy = "*" +wrapt = "*" + +[package.extras] +arrow = ["pyarrow"] +benchmarks = ["patsy", "rpy2", "uncertainties"] +calculus = ["sympy"] +docs = ["mkdocs-material", "pymdown-extensions", "pygments"] +test = ["flake8", "pytest", "pytest-cov"] + [[package]] name = "fred" version = "3.1" @@ -1160,6 +1191,14 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "interface-meta" +version = "1.2.4" +description = "InterfaceMeta" +category = "main" +optional = false +python-versions = ">=3.4" + [[package]] name = "investpy" version = "1.0.8" @@ -1595,6 +1634,26 @@ category = "main" optional = true python-versions = "*" +[[package]] +name = "linearmodels" +version = "4.25" +description = "Linear Panel, Instrumental Variable, Asset Pricing, and System Regression models for Python" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +Cython = ">=0.29.21" +formulaic = "*" +mypy_extensions = ">=0.4" +numpy = ">=1.16" +pandas = ">=0.24" +patsy = "*" +property_cached = ">=1.6.3" +pyhdfe = ">=0.1" +scipy = ">=1.2" +statsmodels = ">=0.11" + [[package]] name = "lxml" version = "4.8.0" @@ -2336,6 +2395,14 @@ python-versions = ">=3.6.2" [package.dependencies] wcwidth = "*" +[[package]] +name = "property-cached" +version = "1.6.4" +description = "A decorator for caching properties in classes (forked from cached-property)." +category = "main" +optional = false +python-versions = ">= 3.5" + [[package]] name = "protobuf" version = "3.19.4" @@ -2498,6 +2565,22 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "pyhdfe" +version = "0.1.0" +description = "High dimensional fixed effect absorption with Python 3" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +numpy = ">=1.12.0" +scipy = ">=1.0.0" + +[package.extras] +docs = ["sphinx", "ipython", "astunparse", "sphinx-rtd-theme", "nbsphinx", "jupyter-client"] +tests = ["pytest", "pytest-xdist"] + [[package]] name = "pyimgur" version = "0.6.0" @@ -3999,7 +4082,6 @@ prediction = ["tensorflow"] [metadata] lock-version = "1.1" python-versions = "^3.8,<3.10" -content-hash = "5627f70eca6b911461177c361ec7374f5f3576c96dbc9052887ab0c7749b4e5a" [metadata.files] absl-py = [ @@ -4143,6 +4225,10 @@ asgiref = [ {file = "asgiref-3.5.0-py3-none-any.whl", hash = "sha256:88d59c13d634dcffe0510be048210188edd79aeccb6a6c9028cdad6f31d730a9"}, {file = "asgiref-3.5.0.tar.gz", hash = "sha256:2f8abc20f7248433085eda803936d98992f1343ddb022065779f37c5da0181d0"}, ] +astor = [ + {file = "astor-0.8.1-py2.py3-none-any.whl", hash = "sha256:070a54e890cefb5b3739d19f30f5a5ec840ffc9c50ffa7d23cc9fc1a38ebbfc5"}, + {file = "astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e"}, +] astroid = [ {file = "astroid-2.9.3-py3-none-any.whl", hash = "sha256:506daabe5edffb7e696ad82483ad0228245a9742ed7d2d8c9cdb31537decf9f6"}, {file = "astroid-2.9.3.tar.gz", hash = "sha256:1efdf4e867d4d8ba4a9f6cf9ce07cd182c4c41de77f23814feb27ca93ca9d877"}, @@ -4591,6 +4677,10 @@ fonttools = [ {file = "fonttools-4.29.1-py3-none-any.whl", hash = "sha256:1933415e0fbdf068815cb1baaa1f159e17830215f7e8624e5731122761627557"}, {file = "fonttools-4.29.1.zip", hash = "sha256:2b18a172120e32128a80efee04cff487d5d140fe7d817deb648b2eee023a40e4"}, ] +formulaic = [ + {file = "formulaic-0.2.4-py3-none-any.whl", hash = "sha256:775620d93f24f01b33a17aa2cf65a04112003c5112f12015368e4e4605a5013b"}, + {file = "formulaic-0.2.4.tar.gz", hash = "sha256:15b71ea8972fb451f80684203cddd49620fc9ed5c2e35f31e0874e9c41910d1a"}, +] fred = [ {file = "fred-3.1.tar.gz", hash = "sha256:f31327d648917694b8d15d66ca4e82a082dbb88ca027bdcc9d56738cbc836a6a"}, ] @@ -4810,6 +4900,10 @@ iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, ] +interface-meta = [ + {file = "interface_meta-1.2.4-py2.py3-none-any.whl", hash = "sha256:8d11375064d51e73764a02b8225af87b1ed63c20c1df52d3867611a5e70a5fc0"}, + {file = "interface_meta-1.2.4.tar.gz", hash = "sha256:4c7725dd4b80f97b7eecfb26023e1a8a7cdbb6d6a7207a8e93f9d4bfef9ee566"}, +] investpy = [ {file = "investpy-1.0.8.tar.gz", hash = "sha256:6a7632a94b484ee07cd54afd416bdc759cd905ba60c62dbb8a8d157229b267c6"}, ] @@ -5008,6 +5102,31 @@ libclang = [ {file = "libclang-11.1.0-py2.py3-none-manylinux2014_aarch64.whl", hash = "sha256:39d07c8965a3c963fb2686496339b6dbacf42acbd32e4bc7361373a45e98cebe"}, {file = "libclang-11.1.0-py2.py3-none-win_amd64.whl", hash = "sha256:8cb0082a30b9e1e615d7f4211b0c428b607a9bd1e43ddc6c0cabdd9ea5b244bf"}, ] +linearmodels = [ + {file = "linearmodels-4.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e8d3b34c62357701b60d043356563c247096ad79b8b95ac9bbafb1820a455f48"}, + {file = "linearmodels-4.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b1b2e7e4e27b12e9d5ec4e2de41e9aeaa685405bc37beaff0f080a2ad3e24f61"}, + {file = "linearmodels-4.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6e107d3d97819cdc4bfe64c85870e0ed655f2e1bd04911e22127dee0e3fab8d2"}, + {file = "linearmodels-4.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:728d82fac702f65cc128742145b3702428b6aed5283450365ec5110f42e883dd"}, + {file = "linearmodels-4.25-cp310-cp310-win_amd64.whl", hash = "sha256:c0aec5de380c4daf0596bb3be647a8cc8d0081c06715465df7a87efced08014e"}, + {file = "linearmodels-4.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:db4c313127f3307a7c174ee12d9306fbc8dbb8a585b55234ebfa435fa5dd9ee9"}, + {file = "linearmodels-4.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:339f01a68e504db1cccb4be9d4167c38c92ea5700cd3eba03ad0352d869c15eb"}, + {file = "linearmodels-4.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f55f68eb675f863f80860526143451f516d9b77c580c0afb6c86f8bf7292da86"}, + {file = "linearmodels-4.25-cp37-cp37m-win32.whl", hash = "sha256:ab9cb6a6fcad05bc5e790341c321713232883a8757aab4c7ce038a0a1af55728"}, + {file = "linearmodels-4.25-cp37-cp37m-win_amd64.whl", hash = "sha256:f9fcb1eaaaf268ffcffbf4c2333bc9634d7a9ecf2ced0b5222bab6a8491d9fc6"}, + {file = "linearmodels-4.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:397201c401f1d21bbfa9b2f4c44694c2f8c557d69271c244f43ac2ec5c6f2376"}, + {file = "linearmodels-4.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e989cc12320e4cc599f3ceb83e8fa16e27af2584c3f76020bc56c20f76866839"}, + {file = "linearmodels-4.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c24f4aa2f44bf9e04606e15851b8874b2c8097f533c47bf11d6dab4954ecc6db"}, + {file = "linearmodels-4.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6843e0a8971d4d0539f22967ebf7dc9b381e55f087b6ee7bb32ad7ee728c91a7"}, + {file = "linearmodels-4.25-cp38-cp38-win32.whl", hash = "sha256:cced735e5c645902c3c2003826d75ff04dd5caa60096918e8f7f4fc0eb79ed31"}, + {file = "linearmodels-4.25-cp38-cp38-win_amd64.whl", hash = "sha256:4d5d401d1c2c9b8c2e8fd2dd8b064e513bf4cb0d6a30b9198f33f67163cbc7d8"}, + {file = "linearmodels-4.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3bd3ddc0753d29fcd26ff80d87957904f7d91c3f7d898c8839b13a226ee5fede"}, + {file = "linearmodels-4.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11b3f66bdf17434b04be916f16ddb319bf8dae54b89b8c268cb37a8ad7b0f4ee"}, + {file = "linearmodels-4.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5a1b691e840189a2ed17796a806960166e30e86e6970c80e60fe10762456005"}, + {file = "linearmodels-4.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4abd59e3dda544807676d94ba1ea2ceba87624ab30491ea561430f31379229bc"}, + {file = "linearmodels-4.25-cp39-cp39-win32.whl", hash = "sha256:061f2970191fcee284f600d5cc84a556a411729494325af8c557047ab733ae46"}, + {file = "linearmodels-4.25-cp39-cp39-win_amd64.whl", hash = "sha256:19f8cb6237b61badb687a4a020527552a70e077cf1b303959c33faeb8cdde285"}, + {file = "linearmodels-4.25.tar.gz", hash = "sha256:a73e94195f486f74be6176809a515bb498b5371d8acb9e4ae6f0e59a7c28210a"}, +] lxml = [ {file = "lxml-4.8.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:e1ab2fac607842ac36864e358c42feb0960ae62c34aa4caaf12ada0a1fb5d99b"}, {file = "lxml-4.8.0-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28d1af847786f68bec57961f31221125c29d6f52d9187c01cd34dc14e2b29430"}, @@ -5541,6 +5660,10 @@ prompt-toolkit = [ {file = "prompt_toolkit-3.0.28-py3-none-any.whl", hash = "sha256:30129d870dcb0b3b6a53efdc9d0a83ea96162ffd28ffe077e94215b233dc670c"}, {file = "prompt_toolkit-3.0.28.tar.gz", hash = "sha256:9f1cd16b1e86c2968f2519d7fb31dd9d669916f515612c269d14e9ed52b51650"}, ] +property-cached = [ + {file = "property-cached-1.6.4.zip", hash = "sha256:3e9c4ef1ed3653909147510481d7df62a3cfb483461a6986a6f1dcd09b2ebb73"}, + {file = "property_cached-1.6.4-py2.py3-none-any.whl", hash = "sha256:135fc059ec969c1646424a0db15e7fbe1b5f8c36c0006d0b3c91ba568c11e7d8"}, +] protobuf = [ {file = "protobuf-3.19.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f51d5a9f137f7a2cec2d326a74b6e3fc79d635d69ffe1b036d39fc7d75430d37"}, {file = "protobuf-3.19.4-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:09297b7972da685ce269ec52af761743714996b4381c085205914c41fcab59fb"}, @@ -5679,6 +5802,10 @@ pygments = [ {file = "Pygments-2.11.2-py3-none-any.whl", hash = "sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65"}, {file = "Pygments-2.11.2.tar.gz", hash = "sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"}, ] +pyhdfe = [ + {file = "pyhdfe-0.1.0-py3-none-any.whl", hash = "sha256:21c6f7d9f464929ce5acfce54d46684c4449a5bbe14d2986237ecb30a723b9ee"}, + {file = "pyhdfe-0.1.0.tar.gz", hash = "sha256:820a40722d70e94cec1dcd140d6c480f02578fee96660b722a2e722c2222e377"}, +] pyimgur = [ {file = "pyimgur-0.6.0-py2-none-any.whl", hash = "sha256:ad22deea062fe8e7412d0bdfc70cbf305a828c6390096d3523ed3d7dbeb2bdff"}, {file = "pyimgur-0.6.0.tar.gz", hash = "sha256:f776ca7f14663bd9ac14a1380db62c87ed32231d159d2d167ad1cb817dcb9144"}, diff --git a/pyproject.toml b/pyproject.toml index 0968911d228..0b8a985663d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -87,6 +87,7 @@ PyNaCl = {version = "^1.5.0", optional = true} ascii-magic = "^1.6" squarify = "^0.4.3" finnhub-python = "^2.4.10" +linearmodels = "^4.25" [tool.poetry.dev-dependencies] diff --git a/requirements-full.txt b/requirements-full.txt index 6c07a52bf35..96de2012e3a 100644 --- a/requirements-full.txt +++ b/requirements-full.txt @@ -7,33 +7,34 @@ ansiwrap==0.8.4; python_version >= "3.6" anyio==3.5.0; python_full_version >= "3.6.2" and python_version >= "3.7" appdirs==1.4.4; python_full_version >= "3.6.2" and python_version >= "3.8" appnope==0.1.2; platform_system == "Darwin" and python_version >= "3.8" and sys_platform == "darwin" -argon2-cffi-bindings==21.2.0; python_version >= "3.6" +argon2-cffi-bindings==21.2.0; python_version >= "3.7" argon2-cffi==21.3.0; python_version >= "3.7" ascii-magic==1.6; python_version >= "3.5" +astor==0.8.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7" astroid==2.9.3; python_full_version >= "3.6.2" asttokens==2.0.5; python_version >= "3.8" astunparse==1.6.3 async-timeout==4.0.2; python_version >= "3.6" atomicwrites==1.4.0; python_version >= "3.7" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.4.0" -attrs==21.4.0; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.5.0" and python_version >= "3.7" and python_version < "4.0" +attrs==21.4.0; python_full_version >= "3.7.0" and python_version >= "3.7" and python_version < "4.0" babel==2.9.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7" backcall==0.2.0; python_version >= "3.8" backports.zoneinfo==0.2.1; python_version < "3.9" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") bandit==1.7.2; python_version >= "3.7" beartype==0.7.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0" -beautifulsoup4==4.10.0; python_full_version > "3.0.0" and python_version >= "3.5" +beautifulsoup4==4.10.0; python_full_version > "3.0.0" and python_version >= "3.7" black==21.7b0; python_full_version >= "3.6.2" bleach==4.1.0; python_version >= "3.7" bs4==0.0.1 bt==0.2.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0") cachetools==5.0.0; python_version >= "3.7" and python_version < "4.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") -certifi==2021.10.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" -cffi==1.15.0; implementation_name == "pypy" and python_version >= "3.6" +certifi==2021.10.8; python_full_version >= "3.7.1" and python_version >= "3.8" and python_version < "4.0" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") +cffi==1.15.0; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.7.0" cfgv==3.3.1; python_full_version >= "3.6.1" -charset-normalizer==2.0.12; python_full_version >= "3.6.0" and python_version >= "3.6" +charset-normalizer==2.0.12; python_full_version >= "3.7.1" and python_version >= "3.8" and python_version < "4.0" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") click==8.0.4; python_version >= "3.8" and python_full_version >= "3.6.2" codespell==2.1.0; python_version >= "3.5" -colorama==0.4.4; python_full_version >= "3.6.2" and python_full_version < "4.0.0" and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5") and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.5.0") and sys_platform == "win32" and (python_version >= "3.7" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.5.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.5.0") and (python_version >= "2.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.5.0" and platform_system == "Windows") and (python_version >= "3.6" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.6" and python_full_version >= "3.5.0") and (python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.8" and python_full_version >= "3.5.0") +colorama==0.4.4; python_full_version >= "3.6.2" and python_full_version < "4.0.0" and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5") and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.5.0") and sys_platform == "win32" and (python_version >= "3.7" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.5.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.5.0") and (python_version >= "3.6" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.5.0" and platform_system == "Windows" and python_version >= "3.6") and platform_system == "Windows" and python_version >= "3.6" and (python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.8" and python_full_version >= "3.5.0") commonmark==0.9.1; python_full_version >= "3.6.2" and python_full_version < "4.0.0" convertdate==2.4.0; python_version >= "3.7" and python_version < "4" coverage==6.3.2; python_version >= "3.7" @@ -54,7 +55,7 @@ distlib==0.3.4; python_full_version >= "3.6.1" dnspython==2.2.0; python_version >= "3.6" and python_version < "4.0" docutils==0.16; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7" ecos==2.0.10; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" -entrypoints==0.4; python_full_version >= "3.6.1" and python_version >= "3.7" +entrypoints==0.4; python_full_version >= "3.7.0" and python_version >= "3.7" et-xmlfile==1.1.0; python_version >= "3.6" exchange-calendars==3.6; python_version >= "3.7" and python_full_version >= "3.7.0" executing==0.8.2; python_version >= "3.8" @@ -68,6 +69,7 @@ finvizfinance==0.9.10; python_version >= "3.5" flake8==3.9.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0") flatbuffers==2.0 fonttools==4.29.1; python_version >= "3.7" +formulaic==0.2.4; python_version >= "3.7" fred==3.1 fredapi==0.4.3 frozendict==2.3.0; python_version >= "3.6" @@ -85,27 +87,28 @@ h5py==3.6.0; python_version >= "3.7" hijri-converter==2.2.3; python_version >= "3.6" holidays==0.11.3.1; python_version >= "3.6" identify==2.4.11; python_version >= "3.7" and python_full_version >= "3.6.1" -idna==3.3; python_full_version >= "3.6.2" and python_version >= "3.7" +idna==3.3; python_full_version >= "3.7.1" and python_version >= "3.8" and python_version < "4.0" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") imagesize==1.3.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7" importlib-metadata==4.11.1; python_version < "3.10" and python_version >= "3.7" inflection==0.5.1; python_version >= "3.6" iniconfig==1.1.1; python_version >= "3.7" +interface-meta==1.2.4; python_version >= "3.7" investpy==1.0.8; python_version >= "3.7" ipykernel==6.9.1; python_version >= "3.7" ipympl==0.8.8 -ipython-genutils==0.2.0; python_version >= "3.7" +ipython-genutils==0.2.0; python_full_version >= "3.7.0" and python_version >= "3.7" ipython==8.0.1; python_version >= "3.8" ipywidgets==7.6.5 iso8601==0.1.16 isort==5.10.1; python_full_version >= "3.6.2" and python_version < "4.0" jedi==0.18.1; python_version >= "3.8" jinja2==3.0.3; python_version >= "3.7" -joblib==1.1.0; python_version >= "3.7" -json5==0.9.6; python_version >= "3.6" +joblib==1.1.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7" +json5==0.9.6; python_version >= "3.7" jsonschema==3.2.0 jupyter-client==7.1.2; python_full_version >= "3.7.0" and python_version >= "3.7" jupyter-console==6.4.0; python_version >= "3.6" -jupyter-core==4.9.2; python_full_version >= "3.6.1" and python_version >= "3.7" +jupyter-core==4.9.2; python_full_version >= "3.7.0" and python_version >= "3.7" jupyter-server==1.13.5; python_version >= "3.7" jupyter==1.0.0 jupyterlab-pygments==0.1.2; python_version >= "3.7" @@ -118,6 +121,7 @@ kiwisolver==1.3.2; python_version >= "3.7" korean-lunar-calendar==0.2.1; python_version >= "3.7" and python_full_version >= "3.7.0" lazy-object-proxy==1.7.1; python_version >= "3.6" and python_full_version >= "3.6.2" libclang==11.1.0 +linearmodels==4.25; python_version >= "3.7" lxml==4.8.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7" m2r2==0.2.8; python_version >= "3.7" markdown-it-py==1.1.0; python_version >= "3.6" and python_version < "4.0" @@ -173,20 +177,22 @@ prawcore==2.3.0; python_version >= "3.6" and python_version < "4.0" pre-commit==2.17.0; python_full_version >= "3.6.1" prometheus-client==0.13.1; python_version >= "3.7" prompt-toolkit==3.0.28; python_full_version >= "3.6.2" +property-cached==1.6.4; python_version >= "3.7" protobuf==3.19.4; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.6" psaw==0.0.12; python_version >= "3" ptyprocess==0.7.0; os_name != "nt" and python_version >= "3.8" and sys_platform != "win32" pure-eval==0.2.2; python_version >= "3.8" -py==1.11.0; python_version >= "3.7" and python_full_version < "3.0.0" and implementation_name == "pypy" or python_full_version >= "3.5.0" and python_version >= "3.7" and implementation_name == "pypy" +py==1.11.0; python_full_version >= "3.7.0" and python_version >= "3.7" and implementation_name == "pypy" pyally==1.1.2 pyasn1-modules==0.2.8; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" pyasn1==0.4.8; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") or python_full_version >= "3.6.0" and python_version >= "3.6" and python_version < "4" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") pycodestyle==2.7.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" pycoingecko==2.2.0 -pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" +pycparser==2.21; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.7.0" pyex==0.5.0 pyflakes==2.3.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" pygments==2.11.2; python_version >= "3.5" +pyhdfe==0.1.0; python_version >= "3.7" pylint==2.12.2; python_full_version >= "3.6.2" pyluach==1.4.0; python_version >= "3.7" and python_full_version >= "3.7.0" pymeeus==0.5.11; python_version >= "3.7" and python_version < "4" @@ -204,16 +210,16 @@ pytest-recording==0.12.0; python_version >= "3.5" pytest==6.2.5; python_version >= "3.6" python-binance==1.0.15 python-coinmarketcap==0.2 -python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5") +python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5") python-dotenv==0.19.2; python_version >= "3.5" pytrends==4.8.0 pytz-deprecation-shim==0.1.0.post0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" -pytz==2021.3; python_full_version >= "3.7.1" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7") +pytz==2021.3; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7") pyupgrade==2.31.0; python_full_version >= "3.6.1" -pywin32==303; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.6" +pywin32==303; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.7" and python_full_version >= "3.7.0" pywinpty==1.1.6; os_name == "nt" and python_version >= "3.7" pyyaml==6.0; python_version >= "3.7" and python_full_version >= "3.6.1" -pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.7" +pyzmq==22.3.0; python_full_version >= "3.7.0" and python_version >= "3.7" qdldl==0.1.5.post0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" qtconsole==5.2.2; python_version >= "3.6" qtpy==2.0.1; python_version >= "3.6" @@ -227,7 +233,7 @@ rich==10.16.2; python_full_version >= "3.6.2" and python_full_version < "4.0.0" robin-stocks==2.1.0; python_version >= "3" rsa==4.8; python_version >= "3.6" and python_version < "4" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") scikit-learn==1.0.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7" -scipy==1.8.0; python_version >= "3.8" and python_version < "3.11" and python_full_version >= "3.6.1" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") +scipy==1.8.0; python_version >= "3.8" and python_version < "3.11" and python_full_version >= "3.6.1" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") screeninfo==0.6.7 scs==3.2.0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" seaborn==0.11.2; python_version >= "3.6" @@ -235,7 +241,7 @@ selenium==3.141.0 send2trash==1.8.0; python_version >= "3.7" sentiment-investor==2.1.0; python_version >= "3.8" and python_version < "4.0" setuptools-scm==6.4.2; python_version >= "3.7" -six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") and (python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8") +six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") and (python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8") smmap==5.0.0; python_version >= "3.7" sniffio==1.2.0; python_full_version >= "3.6.2" and python_version >= "3.7" snowballstemmer==2.2.0; python_version >= "3.7" @@ -268,12 +274,12 @@ testpath==0.5.0; python_version >= "3.7" textwrap3==0.9.2; python_version >= "3.6" tf-estimator-nightly==2.8.0.dev2021122109 thepassiveinvestor==1.0.10 -threadpoolctl==3.1.0; python_version >= "3.7" +threadpoolctl==3.1.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7" tokenize-rt==4.2.1; python_full_version >= "3.6.1" toml==0.10.2; python_full_version >= "3.6.2" and python_version >= "3.6" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") tomli==1.2.3; python_version >= "3.8" and python_full_version >= "3.6.2" toolz==0.11.2; python_version >= "3.7" and python_full_version >= "3.7.0" -tornado==6.1; python_full_version >= "3.6.1" and python_version >= "3.7" +tornado==6.1; python_full_version >= "3.7.0" and python_version >= "3.7" tqdm==4.62.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" tradingview-ta==3.2.10; python_version >= "3.6" traitlets==5.1.1; python_full_version >= "3.7.0" and python_version >= "3.8" @@ -289,20 +295,20 @@ tzlocal==4.1; python_version >= "3.6" ujson==5.1.0; python_version >= "3.7" unidecode==1.3.3; python_version >= "3.7" update-checker==0.18.0; python_version >= "3.6" and python_version < "4.0" -urllib3==1.26.8; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7" +urllib3==1.26.8; python_full_version >= "3.7.1" and python_version < "4" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") user-agent==0.1.10 vadersentiment==3.3.2 valinvest==0.0.2; python_version >= "3.6" vcrpy==4.1.1; python_version >= "3.5" virtualenv==20.13.1; python_full_version >= "3.6.1" voila==0.3.2; python_version >= "3.7" -wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.6" +wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.8" webencodings==0.5.1; python_version >= "3.7" websocket-client==1.2.3; python_version >= "3.8" and python_version < "4.0" websockets==9.1; python_full_version >= "3.6.1" and python_version >= "3.7" werkzeug==2.0.3; python_version >= "3.6" widgetsnbextension==3.5.2 -wrapt==1.13.3; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5") +wrapt==1.13.3; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7") yarl==1.7.2; python_version >= "3.6" yfinance==0.1.70 zipp==3.7.0; python_version < "3.10" and python_version >= "3.7" diff --git a/requirements.txt b/requirements.txt index 9e3f06b0225..c2476127d18 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,26 +6,27 @@ ansiwrap==0.8.4; python_version >= "3.6" anyio==3.5.0; python_full_version >= "3.6.2" and python_version >= "3.7" appdirs==1.4.4; python_full_version >= "3.6.2" and python_version >= "3.8" appnope==0.1.2; platform_system == "Darwin" and python_version >= "3.8" and sys_platform == "darwin" -argon2-cffi-bindings==21.2.0; python_version >= "3.6" +argon2-cffi-bindings==21.2.0; python_version >= "3.7" argon2-cffi==21.3.0; python_version >= "3.7" ascii-magic==1.6; python_version >= "3.5" +astor==0.8.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7" asttokens==2.0.5; python_version >= "3.8" async-timeout==4.0.2; python_version >= "3.6" -attrs==21.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6" +attrs==21.4.0; python_full_version >= "3.7.0" and python_version >= "3.7" babel==2.9.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7" backcall==0.2.0; python_version >= "3.8" backports.zoneinfo==0.2.1; python_version < "3.9" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") beartype==0.7.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0" -beautifulsoup4==4.10.0; python_full_version > "3.0.0" and python_version >= "3.5" +beautifulsoup4==4.10.0; python_full_version > "3.0.0" and python_version >= "3.7" black==21.7b0; python_full_version >= "3.6.2" bleach==4.1.0; python_version >= "3.7" bs4==0.0.1 bt==0.2.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0") -certifi==2021.10.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" -cffi==1.15.0; implementation_name == "pypy" and python_version >= "3.6" -charset-normalizer==2.0.12; python_full_version >= "3.6.0" and python_version >= "3.6" +certifi==2021.10.8; python_full_version >= "3.7.1" and python_version >= "3.8" and python_version < "4.0" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") +cffi==1.15.0; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.7.0" +charset-normalizer==2.0.12; python_full_version >= "3.7.1" and python_version >= "3.8" and python_version < "4.0" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") click==8.0.4; python_version >= "3.8" and python_full_version >= "3.6.2" -colorama==0.4.4; python_full_version >= "3.6.2" and python_full_version < "4.0.0" and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5") and (python_version >= "3.7" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.5.0") and (python_version >= "2.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.5.0" and platform_system == "Windows") and (python_version >= "3.6" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.6" and python_full_version >= "3.5.0") and (python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.8" and python_full_version >= "3.5.0") +colorama==0.4.4; python_full_version >= "3.6.2" and python_full_version < "4.0.0" and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5") and (python_version >= "3.7" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.5.0") and (python_version >= "3.6" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.5.0" and platform_system == "Windows" and python_version >= "3.6") and platform_system == "Windows" and python_version >= "3.6" and (python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.8" and python_full_version >= "3.5.0") commonmark==0.9.1; python_full_version >= "3.6.2" and python_full_version < "4.0.0" convertdate==2.4.0; python_version >= "3.7" and python_version < "4" cryptography==36.0.1; python_version >= "3.6" @@ -44,7 +45,7 @@ detecta==0.0.5; python_version >= "3.6" dnspython==2.2.0; python_version >= "3.6" and python_version < "4.0" docutils==0.16; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7" ecos==2.0.10; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" -entrypoints==0.4; python_full_version >= "3.6.1" and python_version >= "3.7" +entrypoints==0.4; python_full_version >= "3.7.0" and python_version >= "3.7" et-xmlfile==1.1.0; python_version >= "3.6" executing==0.8.2; python_version >= "3.8" fear-greed-index==0.1.4; python_version >= "3.7" @@ -54,6 +55,7 @@ finnhub-python==2.4.10 finviz==1.4.3 finvizfinance==0.9.10; python_version >= "3.5" fonttools==4.29.1; python_version >= "3.7" +formulaic==0.2.4; python_version >= "3.7" fred==3.1 fredapi==0.4.3 frozendict==2.3.0; python_version >= "3.6" @@ -65,24 +67,25 @@ gitpython==3.1.27; python_version >= "3.7" grpcio==1.44.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.6" hijri-converter==2.2.3; python_version >= "3.6" holidays==0.11.3.1; python_version >= "3.6" -idna==3.3; python_full_version >= "3.6.2" and python_version >= "3.7" +idna==3.3; python_full_version >= "3.7.1" and python_version >= "3.8" and python_version < "4.0" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") imagesize==1.3.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7" inflection==0.5.1; python_version >= "3.6" +interface-meta==1.2.4; python_version >= "3.7" investpy==1.0.8; python_version >= "3.7" ipykernel==6.9.1; python_version >= "3.7" ipympl==0.8.8 -ipython-genutils==0.2.0; python_version >= "3.7" +ipython-genutils==0.2.0; python_full_version >= "3.7.0" and python_version >= "3.7" ipython==8.0.1; python_version >= "3.8" ipywidgets==7.6.5 iso8601==0.1.16 jedi==0.18.1; python_version >= "3.8" jinja2==3.0.3; python_version >= "3.7" -joblib==1.1.0; python_version >= "3.7" -json5==0.9.6; python_version >= "3.6" +joblib==1.1.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7" +json5==0.9.6; python_version >= "3.7" jsonschema==3.2.0 jupyter-client==7.1.2; python_full_version >= "3.7.0" and python_version >= "3.7" jupyter-console==6.4.0; python_version >= "3.6" -jupyter-core==4.9.2; python_full_version >= "3.6.1" and python_version >= "3.7" +jupyter-core==4.9.2; python_full_version >= "3.7.0" and python_version >= "3.7" jupyter-server==1.13.5; python_version >= "3.7" jupyter==1.0.0 jupyterlab-pygments==0.1.2; python_version >= "3.7" @@ -91,6 +94,7 @@ jupyterlab-widgets==1.0.2; python_version >= "3.6" jupyterlab==3.2.9; python_version >= "3.6" kiwisolver==1.3.2; python_version >= "3.7" korean-lunar-calendar==0.2.1; python_version >= "3.6" +linearmodels==4.25; python_version >= "3.7" lxml==4.8.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7" m2r2==0.2.8; python_version >= "3.7" markupsafe==2.1.0; python_version >= "3.7" @@ -133,16 +137,18 @@ praw==7.5.0; python_version >= "3.6" and python_version < "4.0" prawcore==2.3.0; python_version >= "3.6" and python_version < "4.0" prometheus-client==0.13.1; python_version >= "3.7" prompt-toolkit==3.0.28; python_full_version >= "3.6.2" +property-cached==1.6.4; python_version >= "3.7" protobuf==3.19.4; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.5" psaw==0.0.12; python_version >= "3" ptyprocess==0.7.0; os_name != "nt" and python_version >= "3.8" and sys_platform != "win32" pure-eval==0.2.2; python_version >= "3.8" -py==1.11.0; python_version >= "3.6" and python_full_version < "3.0.0" and implementation_name == "pypy" or implementation_name == "pypy" and python_version >= "3.6" and python_full_version >= "3.5.0" +py==1.11.0; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.7.0" pyally==1.1.2 pycoingecko==2.2.0 -pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" +pycparser==2.21; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.7.0" pyex==0.5.0 pygments==2.11.2; python_version >= "3.5" +pyhdfe==0.1.0; python_version >= "3.7" pymeeus==0.5.11; python_version >= "3.7" and python_version < "4" pymongo==3.11.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") pyobjc-core==8.2; python_version >= "3.6" and sys_platform == "darwin" @@ -154,15 +160,15 @@ pyprind==2.11.3; python_version >= "2.7" and python_full_version < "3.0.0" or py pyrsistent==0.18.1; python_version >= "3.7" python-binance==1.0.15 python-coinmarketcap==0.2 -python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5") +python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5") python-dotenv==0.19.2; python_version >= "3.5" pytrends==4.8.0 pytz-deprecation-shim==0.1.0.post0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6" -pytz==2021.3; python_full_version >= "3.7.1" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7") -pywin32==303; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.6" +pytz==2021.3; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7") +pywin32==303; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.7" and python_full_version >= "3.7.0" pywinpty==1.1.6; os_name == "nt" and python_version >= "3.7" pyyaml==6.0; python_version >= "3.6" -pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.7" +pyzmq==22.3.0; python_full_version >= "3.7.0" and python_version >= "3.7" qdldl==0.1.5.post0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" qtconsole==5.2.2; python_version >= "3.6" qtpy==2.0.1; python_version >= "3.6" @@ -175,7 +181,7 @@ requests==2.27.1; (python_version >= "2.7" and python_full_version < "3.0.0") or rich==10.16.2; python_full_version >= "3.6.2" and python_full_version < "4.0.0" robin-stocks==2.1.0; python_version >= "3" scikit-learn==1.0.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7" -scipy==1.8.0; python_version >= "3.8" and python_version < "3.11" and python_full_version >= "3.6.1" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") +scipy==1.8.0; python_version >= "3.8" and python_version < "3.11" and python_full_version >= "3.6.1" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") screeninfo==0.6.7 scs==3.2.0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6" seaborn==0.11.2; python_version >= "3.6" @@ -183,7 +189,7 @@ selenium==3.141.0 send2trash==1.8.0; python_version >= "3.7" sentiment-investor==2.1.0; python_version >= "3.8" and python_version < "4.0" setuptools-scm==6.4.2; python_version >= "3.7" -six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8") +six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8") smmap==5.0.0; python_version >= "3.7" sniffio==1.2.0; python_full_version >= "3.6.2" and python_version >= "3.7" snowballstemmer==2.2.0; python_version >= "3.7" @@ -208,9 +214,9 @@ terminado==0.13.1; python_version >= "3.7" testpath==0.5.0; python_version >= "3.7" textwrap3==0.9.2; python_version >= "3.6" thepassiveinvestor==1.0.10 -threadpoolctl==3.1.0; python_version >= "3.7" +threadpoolctl==3.1.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7" tomli==1.2.3; python_version >= "3.8" and python_full_version >= "3.6.2" -tornado==6.1; python_full_version >= "3.6.1" and python_version >= "3.7" +tornado==6.1; python_full_version >= "3.7.0" and python_version >= "3.7" tqdm==4.62.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" tradingview-ta==3.2.10; python_version >= "3.6" traitlets==5.1.1; python_full_version >= "3.7.0" and python_version >= "3.8" @@ -220,17 +226,17 @@ tzlocal==4.1; python_version >= "3.6" ujson==5.1.0; python_version >= "3.7" unidecode==1.3.3; python_version >= "3.7" update-checker==0.18.0; python_version >= "3.6" and python_version < "4.0" -urllib3==1.26.8; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7" +urllib3==1.26.8; python_full_version >= "3.7.1" and python_version < "4" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") user-agent==0.1.10 vadersentiment==3.3.2 valinvest==0.0.2; python_version >= "3.6" voila==0.3.2; python_version >= "3.7" -wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.6" +wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.8" webencodings==0.5.1; python_version >= "3.7" websocket-client==1.2.3; python_version >= "3.8" and python_version < "4.0" websockets==9.1; python_full_version >= "3.6.1" and python_version >= "3.7" widgetsnbextension==3.5.2 -wrapt==1.13.3; python_full_version >= "3.7.1" and python_full_version < "4.0.0" +wrapt==1.13.3; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7") yarl==1.7.2; python_version >= "3.6" yfinance==0.1.70 zope.interface==5.4.0; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5" diff --git a/scripts/test_econometrics_panel.gst b/scripts/test_econometrics_panel.gst new file mode 100644 index 00000000000..166e9f0db3a --- /dev/null +++ b/scripts/test_econometrics_panel.gst @@ -0,0 +1,30 @@ +econometrics +load wage_panel wp +options +options wp +show wp +index wp nr year +clean wp -f cfill +clean wp -d rdrop +type +type year-wp category +desc wp +modify -a dummy_married_educ-wp married-wp * educ-wp +modify -d married-wp +load wage_panel wp2 +index wp2 nr year +modify -c wp married-wp2 +modify -r wp married_wp2 married +remove wp2 +panel lwage-wp black-wp hisp-wp exper-wp expersq-wp married-wp educ-wp union-wp year-wp +panel lwage-wp black-wp hisp-wp exper-wp married-wp educ-wp union-wp -t bols +panel lwage-wp black-wp hisp-wp exper-wp expersq-wp married-wp educ-wp union-wp year-wp -t re +panel lwage-wp expersq-wp union-wp married-wp year-wp -t fe +panel lwage-wp expersq-wp union-wp married-wp year-wp -t fe -ee +panel lwage-wp expersq-wp union-wp married-wp -t fe -te +panel lwage-wp expersq-wp union-wp married-wp -t fe -te -ee +panel lwage-wp exper-wp expersq-wp union-wp married-wp -t fdols +dwat -p +bgod +granger married-wp educ-wp +coint black-wp hisp-wp exper-wp expersq-wp married-wp educ-wp union-wp diff --git a/scripts/test_econometrics_ts.gst b/scripts/test_econometrics_ts.gst new file mode 100644 index 00000000000..8e2febca06a --- /dev/null +++ b/scripts/test_econometrics_ts.gst @@ -0,0 +1,26 @@ +econometrics +load longley ll +load longley ll2 +options +options ll +show ll +index ll year +plot pop-ll +clean ll -f cfill +clean ll -d rdrop +type +type year-ll category +desc ll +modify -a emp_ratio-ll totemp-ll div pop-ll +modify -d totemp-ll +index ll2 year +modify -c ll totemp-ll2 +modify -r ll totemp_ll2 totemp +remove ll2 +ols totemp-ll gnpdefl-ll gnp-ll unemp-ll armed-ll pop-ll year-ll +norm totemp-ll +root unemp-ll +dwat -p +bgod +granger gnp-ll pop-ll +coint totemp-ll gnpdefl-ll gnp-ll unemp-ll armed-ll pop-ll year-ll diff --git a/terminal.py b/terminal.py index fecae1c8645..1390377708c 100644 --- a/terminal.py +++ b/terminal.py @@ -61,7 +61,7 @@ class TerminalController(BaseController): "jupyter", "funds", "alternative", - "custom", + "econometrics", ] PATH = "/" @@ -122,7 +122,7 @@ class TerminalController(BaseController): > alternative > portfolio > jupyter -> custom[/menu] +> econometrics[/menu] """, menu="Home", ) @@ -199,13 +199,13 @@ class TerminalController(BaseController): self.queue = self.load_class(AlternativeDataController, self.queue) - def call_custom(self, _): - """Process custom command""" - from gamestonk_terminal.custom.custom_controller import ( - CustomDataController, + def call_econometrics(self, _): + """Process econometrics command""" + from gamestonk_terminal.econometrics.econometrics_controller import ( + EconometricsController, ) - self.queue = CustomDataController(self.queue).menu() + self.queue = EconometricsController(self.queue).menu() def call_portfolio(self, _): """Process portfolio command""" diff --git a/tests/FIXTURES.md b/tests/FIXTURES.md index 8185b1d006b..02cfe28cd3a 100644 --- a/tests/FIXTURES.md +++ b/tests/FIXTURES.md @@ -351,4 +351,34 @@ def test_function(recorder): recorder.record_mode = "rewrite" recorder.capture(some_text) -``` \ No newline at end of file +``` + + +**EXTRA ARGUMENTS - PD.TO_CSV** +If you capture a DataFrame it will be exported as a CSV using the function `pandas.DataFrame.to_csv`. + +This function contains arguments that can be useful to the test builder. + +Everything you pass as extra `kwargs` to the `capture` function will be passed to this `to_csv` function. + +Example : +```python +import random + +def test_function(recorder): + table_of_floats = pd.DataFrame( + np.random.uniform(low=1, high=10, size=(5,)), + columns=["numbers"], + ) + + recorder.capture(table_of_floats, float_format="%.2f") + # This will truncate the numbers +``` + + +**EXTRA ARGUMENTS - JSON.DUMPS** +If you capture a TUPLE, LIST, DICT... it will be exported as a json using the function `json.dumps`. + +This function contains arguments that can be useful to the test builder. + +Everything you pass as extra `kwargs` to the `capture` function will be passed to this `dumps` function. diff --git a/tests/conftest.py b/tests/conftest.py index d650a5473ba..705a0d37638 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -33,7 +33,7 @@ EXTENSIONS_MATCHING: Dict[str, List[Type]] = { class Record: @staticmethod - def extract_string(data: Any) -> str: + def extract_string(data: Any, **kwargs) -> str: if isinstance(data, tuple(EXTENSIONS_MATCHING["txt"])): string_value = data elif isinstance(data, tuple(EXTENSIONS_MATCHING["csv"])): @@ -41,9 +41,10 @@ class Record: encoding="utf-8", line_terminator="\n", # date_format="%Y-%m-%d %H:%M:%S", + **kwargs, ) elif isinstance(data, tuple(EXTENSIONS_MATCHING["json"])): - string_value = json.dumps(data) + string_value = json.dumps(data, **kwargs) else: raise AttributeError(f"Unsupported type : {type(data)}") @@ -99,8 +100,9 @@ class Record: captured: Any, record_path: str, strip: bool = False, + **kwargs, ) -> None: - self.__captured = self.extract_string(data=captured) + self.__captured = self.extract_string(data=captured, **kwargs) self.__record_path = record_path self.__strip = strip @@ -201,7 +203,7 @@ class Recorder: self.__record_list: List[Record] = list() - def capture(self, captured: Any, strip: bool = False): + def capture(self, captured: Any, strip: bool = False, **kwargs): record_list = self.__record_list record_path = self.__path_template.build_path_by_data( data=captured, @@ -211,6 +213,7 @@ class Recorder: captured=captured, record_path=record_path, strip=strip, + **kwargs, ) self.__record_list.append(record) diff --git a/tests/gamestonk_terminal/econometrics/__init__.py b/tests/gamestonk_terminal/econometrics/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset0-rfill-None-5].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset0-rfill-None-5].csv new file mode 100644 index 00000000000..bbb3be7deeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset0-rfill-None-5].csv @@ -0,0 +1,17 @@ +,TOTEMP,GNPDEFL,GNP,UNEMP,ARMED,POP,YEAR +0,60323.0,83.0,234289.0,2356.0,1590.0,107608.0,1947.0 +1,61122.0,88.5,259426.0,2325.0,1456.0,108632.0,1948.0 +2,60171.0,88.2,258054.0,3682.0,1616.0,109773.0,1949.0 +3,61187.0,89.5,284599.0,3351.0,1650.0,110929.0,1950.0 +4,63221.0,96.2,328975.0,2099.0,3099.0,112075.0,1951.0 +5,63639.0,98.1,346999.0,1932.0,3594.0,113270.0,1952.0 +6,64989.0,99.0,365385.0,1870.0,3547.0,115094.0,1953.0 +7,63761.0,100.0,363112.0,3578.0,3350.0,116219.0,1954.0 +8,66019.0,101.2,397469.0,2904.0,3048.0,117388.0,1955.0 +9,67857.0,104.6,419180.0,2822.0,2857.0,118734.0,1956.0 +10,68169.0,108.4,442769.0,2936.0,2798.0,120445.0,1957.0 +11,66513.0,110.8,444546.0,4681.0,2637.0,121950.0,1958.0 +12,68655.0,112.6,482704.0,3813.0,2552.0,123366.0,1959.0 +13,69564.0,114.2,502601.0,3931.0,2514.0,125368.0,1960.0 +14,69331.0,115.7,518173.0,4806.0,2572.0,127852.0,1961.0 +15,70551.0,116.9,554894.0,4007.0,2827.0,130081.0,1962.0 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset1-cfill-None-5].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset1-cfill-None-5].csv new file mode 100644 index 00000000000..bbb3be7deeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset1-cfill-None-5].csv @@ -0,0 +1,17 @@ +,TOTEMP,GNPDEFL,GNP,UNEMP,ARMED,POP,YEAR +0,60323.0,83.0,234289.0,2356.0,1590.0,107608.0,1947.0 +1,61122.0,88.5,259426.0,2325.0,1456.0,108632.0,1948.0 +2,60171.0,88.2,258054.0,3682.0,1616.0,109773.0,1949.0 +3,61187.0,89.5,284599.0,3351.0,1650.0,110929.0,1950.0 +4,63221.0,96.2,328975.0,2099.0,3099.0,112075.0,1951.0 +5,63639.0,98.1,346999.0,1932.0,3594.0,113270.0,1952.0 +6,64989.0,99.0,365385.0,1870.0,3547.0,115094.0,1953.0 +7,63761.0,100.0,363112.0,3578.0,3350.0,116219.0,1954.0 +8,66019.0,101.2,397469.0,2904.0,3048.0,117388.0,1955.0 +9,67857.0,104.6,419180.0,2822.0,2857.0,118734.0,1956.0 +10,68169.0,108.4,442769.0,2936.0,2798.0,120445.0,1957.0 +11,66513.0,110.8,444546.0,4681.0,2637.0,121950.0,1958.0 +12,68655.0,112.6,482704.0,3813.0,2552.0,123366.0,1959.0 +13,69564.0,114.2,502601.0,3931.0,2514.0,125368.0,1960.0 +14,69331.0,115.7,518173.0,4806.0,2572.0,127852.0,1961.0 +15,70551.0,116.9,554894.0,4007.0,2827.0,130081.0,1962.0 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset10-rfill-None-10].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset10-rfill-None-10].csv new file mode 100644 index 00000000000..bbb3be7deeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset10-rfill-None-10].csv @@ -0,0 +1,17 @@ +,TOTEMP,GNPDEFL,GNP,UNEMP,ARMED,POP,YEAR +0,60323.0,83.0,234289.0,2356.0,1590.0,107608.0,1947.0 +1,61122.0,88.5,259426.0,2325.0,1456.0,108632.0,1948.0 +2,60171.0,88.2,258054.0,3682.0,1616.0,109773.0,1949.0 +3,61187.0,89.5,284599.0,3351.0,1650.0,110929.0,1950.0 +4,63221.0,96.2,328975.0,2099.0,3099.0,112075.0,1951.0 +5,63639.0,98.1,346999.0,1932.0,3594.0,113270.0,1952.0 +6,64989.0,99.0,365385.0,1870.0,3547.0,115094.0,1953.0 +7,63761.0,100.0,363112.0,3578.0,3350.0,116219.0,1954.0 +8,66019.0,101.2,397469.0,2904.0,3048.0,117388.0,1955.0 +9,67857.0,104.6,419180.0,2822.0,2857.0,118734.0,1956.0 +10,68169.0,108.4,442769.0,2936.0,2798.0,120445.0,1957.0 +11,66513.0,110.8,444546.0,4681.0,2637.0,121950.0,1958.0 +12,68655.0,112.6,482704.0,3813.0,2552.0,123366.0,1959.0 +13,69564.0,114.2,502601.0,3931.0,2514.0,125368.0,1960.0 +14,69331.0,115.7,518173.0,4806.0,2572.0,127852.0,1961.0 +15,70551.0,116.9,554894.0,4007.0,2827.0,130081.0,1962.0 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset11-None-rdrop-10].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset11-None-rdrop-10].csv new file mode 100644 index 00000000000..bbb3be7deeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset11-None-rdrop-10].csv @@ -0,0 +1,17 @@ +,TOTEMP,GNPDEFL,GNP,UNEMP,ARMED,POP,YEAR +0,60323.0,83.0,234289.0,2356.0,1590.0,107608.0,1947.0 +1,61122.0,88.5,259426.0,2325.0,1456.0,108632.0,1948.0 +2,60171.0,88.2,258054.0,3682.0,1616.0,109773.0,1949.0 +3,61187.0,89.5,284599.0,3351.0,1650.0,110929.0,1950.0 +4,63221.0,96.2,328975.0,2099.0,3099.0,112075.0,1951.0 +5,63639.0,98.1,346999.0,1932.0,3594.0,113270.0,1952.0 +6,64989.0,99.0,365385.0,1870.0,3547.0,115094.0,1953.0 +7,63761.0,100.0,363112.0,3578.0,3350.0,116219.0,1954.0 +8,66019.0,101.2,397469.0,2904.0,3048.0,117388.0,1955.0 +9,67857.0,104.6,419180.0,2822.0,2857.0,118734.0,1956.0 +10,68169.0,108.4,442769.0,2936.0,2798.0,120445.0,1957.0 +11,66513.0,110.8,444546.0,4681.0,2637.0,121950.0,1958.0 +12,68655.0,112.6,482704.0,3813.0,2552.0,123366.0,1959.0 +13,69564.0,114.2,502601.0,3931.0,2514.0,125368.0,1960.0 +14,69331.0,115.7,518173.0,4806.0,2572.0,127852.0,1961.0 +15,70551.0,116.9,554894.0,4007.0,2827.0,130081.0,1962.0 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset2-rbfill-None-5].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset2-rbfill-None-5].csv new file mode 100644 index 00000000000..bbb3be7deeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset2-rbfill-None-5].csv @@ -0,0 +1,17 @@ +,TOTEMP,GNPDEFL,GNP,UNEMP,ARMED,POP,YEAR +0,60323.0,83.0,234289.0,2356.0,1590.0,107608.0,1947.0 +1,61122.0,88.5,259426.0,2325.0,1456.0,108632.0,1948.0 +2,60171.0,88.2,258054.0,3682.0,1616.0,109773.0,1949.0 +3,61187.0,89.5,284599.0,3351.0,1650.0,110929.0,1950.0 +4,63221.0,96.2,328975.0,2099.0,3099.0,112075.0,1951.0 +5,63639.0,98.1,346999.0,1932.0,3594.0,113270.0,1952.0 +6,64989.0,99.0,365385.0,1870.0,3547.0,115094.0,1953.0 +7,63761.0,100.0,363112.0,3578.0,3350.0,116219.0,1954.0 +8,66019.0,101.2,397469.0,2904.0,3048.0,117388.0,1955.0 +9,67857.0,104.6,419180.0,2822.0,2857.0,118734.0,1956.0 +10,68169.0,108.4,442769.0,2936.0,2798.0,120445.0,1957.0 +11,66513.0,110.8,444546.0,4681.0,2637.0,121950.0,1958.0 +12,68655.0,112.6,482704.0,3813.0,2552.0,123366.0,1959.0 +13,69564.0,114.2,502601.0,3931.0,2514.0,125368.0,1960.0 +14,69331.0,115.7,518173.0,4806.0,2572.0,127852.0,1961.0 +15,70551.0,116.9,554894.0,4007.0,2827.0,130081.0,1962.0 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset3-cbfill-None-5].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset3-cbfill-None-5].csv new file mode 100644 index 00000000000..bbb3be7deeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset3-cbfill-None-5].csv @@ -0,0 +1,17 @@ +,TOTEMP,GNPDEFL,GNP,UNEMP,ARMED,POP,YEAR +0,60323.0,83.0,234289.0,2356.0,1590.0,107608.0,1947.0 +1,61122.0,88.5,259426.0,2325.0,1456.0,108632.0,1948.0 +2,60171.0,88.2,258054.0,3682.0,1616.0,109773.0,1949.0 +3,61187.0,89.5,284599.0,3351.0,1650.0,110929.0,1950.0 +4,63221.0,96.2,328975.0,2099.0,3099.0,112075.0,1951.0 +5,63639.0,98.1,346999.0,1932.0,3594.0,113270.0,1952.0 +6,64989.0,99.0,365385.0,1870.0,3547.0,115094.0,1953.0 +7,63761.0,100.0,363112.0,3578.0,3350.0,116219.0,1954.0 +8,66019.0,101.2,397469.0,2904.0,3048.0,117388.0,1955.0 +9,67857.0,104.6,419180.0,2822.0,2857.0,118734.0,1956.0 +10,68169.0,108.4,442769.0,2936.0,2798.0,120445.0,1957.0 +11,66513.0,110.8,444546.0,4681.0,2637.0,121950.0,1958.0 +12,68655.0,112.6,482704.0,3813.0,2552.0,123366.0,1959.0 +13,69564.0,114.2,502601.0,3931.0,2514.0,125368.0,1960.0 +14,69331.0,115.7,518173.0,4806.0,2572.0,127852.0,1961.0 +15,70551.0,116.9,554894.0,4007.0,2827.0,130081.0,1962.0 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset4-rffill-None-5].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset4-rffill-None-5].csv new file mode 100644 index 00000000000..bbb3be7deeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset4-rffill-None-5].csv @@ -0,0 +1,17 @@ +,TOTEMP,GNPDEFL,GNP,UNEMP,ARMED,POP,YEAR +0,60323.0,83.0,234289.0,2356.0,1590.0,107608.0,1947.0 +1,61122.0,88.5,259426.0,2325.0,1456.0,108632.0,1948.0 +2,60171.0,88.2,258054.0,3682.0,1616.0,109773.0,1949.0 +3,61187.0,89.5,284599.0,3351.0,1650.0,110929.0,1950.0 +4,63221.0,96.2,328975.0,2099.0,3099.0,112075.0,1951.0 +5,63639.0,98.1,346999.0,1932.0,3594.0,113270.0,1952.0 +6,64989.0,99.0,365385.0,1870.0,3547.0,115094.0,1953.0 +7,63761.0,100.0,363112.0,3578.0,3350.0,116219.0,1954.0 +8,66019.0,101.2,397469.0,2904.0,3048.0,117388.0,1955.0 +9,67857.0,104.6,419180.0,2822.0,2857.0,118734.0,1956.0 +10,68169.0,108.4,442769.0,2936.0,2798.0,120445.0,1957.0 +11,66513.0,110.8,444546.0,4681.0,2637.0,121950.0,1958.0 +12,68655.0,112.6,482704.0,3813.0,2552.0,123366.0,1959.0 +13,69564.0,114.2,502601.0,3931.0,2514.0,125368.0,1960.0 +14,69331.0,115.7,518173.0,4806.0,2572.0,127852.0,1961.0 +15,70551.0,116.9,554894.0,4007.0,2827.0,130081.0,1962.0 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset5-cffill-None-5].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset5-cffill-None-5].csv new file mode 100644 index 00000000000..bbb3be7deeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset5-cffill-None-5].csv @@ -0,0 +1,17 @@ +,TOTEMP,GNPDEFL,GNP,UNEMP,ARMED,POP,YEAR +0,60323.0,83.0,234289.0,2356.0,1590.0,107608.0,1947.0 +1,61122.0,88.5,259426.0,2325.0,1456.0,108632.0,1948.0 +2,60171.0,88.2,258054.0,3682.0,1616.0,109773.0,1949.0 +3,61187.0,89.5,284599.0,3351.0,1650.0,110929.0,1950.0 +4,63221.0,96.2,328975.0,2099.0,3099.0,112075.0,1951.0 +5,63639.0,98.1,346999.0,1932.0,3594.0,113270.0,1952.0 +6,64989.0,99.0,365385.0,1870.0,3547.0,115094.0,1953.0 +7,63761.0,100.0,363112.0,3578.0,3350.0,116219.0,1954.0 +8,66019.0,101.2,397469.0,2904.0,3048.0,117388.0,1955.0 +9,67857.0,104.6,419180.0,2822.0,2857.0,118734.0,1956.0 +10,68169.0,108.4,442769.0,2936.0,2798.0,120445.0,1957.0 +11,66513.0,110.8,444546.0,4681.0,2637.0,121950.0,1958.0 +12,68655.0,112.6,482704.0,3813.0,2552.0,123366.0,1959.0 +13,69564.0,114.2,502601.0,3931.0,2514.0,125368.0,1960.0 +14,69331.0,115.7,518173.0,4806.0,2572.0,127852.0,1961.0 +15,70551.0,116.9,554894.0,4007.0,2827.0,130081.0,1962.0 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset6-None-rdrop-5].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset6-None-rdrop-5].csv new file mode 100644 index 00000000000..bbb3be7deeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset6-None-rdrop-5].csv @@ -0,0 +1,17 @@ +,TOTEMP,GNPDEFL,GNP,UNEMP,ARMED,POP,YEAR +0,60323.0,83.0,234289.0,2356.0,1590.0,107608.0,1947.0 +1,61122.0,88.5,259426.0,2325.0,1456.0,108632.0,1948.0 +2,60171.0,88.2,258054.0,3682.0,1616.0,109773.0,1949.0 +3,61187.0,89.5,284599.0,3351.0,1650.0,110929.0,1950.0 +4,63221.0,96.2,328975.0,2099.0,3099.0,112075.0,1951.0 +5,63639.0,98.1,346999.0,1932.0,3594.0,113270.0,1952.0 +6,64989.0,99.0,365385.0,1870.0,3547.0,115094.0,1953.0 +7,63761.0,100.0,363112.0,3578.0,3350.0,116219.0,1954.0 +8,66019.0,101.2,397469.0,2904.0,3048.0,117388.0,1955.0 +9,67857.0,104.6,419180.0,2822.0,2857.0,118734.0,1956.0 +10,68169.0,108.4,442769.0,2936.0,2798.0,120445.0,1957.0 +11,66513.0,110.8,444546.0,4681.0,2637.0,121950.0,1958.0 +12,68655.0,112.6,482704.0,3813.0,2552.0,123366.0,1959.0 +13,69564.0,114.2,502601.0,3931.0,2514.0,125368.0,1960.0 +14,69331.0,115.7,518173.0,4806.0,2572.0,127852.0,1961.0 +15,70551.0,116.9,554894.0,4007.0,2827.0,130081.0,1962.0 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset7-None-cdrop-5].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset7-None-cdrop-5].csv new file mode 100644 index 00000000000..bbb3be7deeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset7-None-cdrop-5].csv @@ -0,0 +1,17 @@ +,TOTEMP,GNPDEFL,GNP,UNEMP,ARMED,POP,YEAR +0,60323.0,83.0,234289.0,2356.0,1590.0,107608.0,1947.0 +1,61122.0,88.5,259426.0,2325.0,1456.0,108632.0,1948.0 +2,60171.0,88.2,258054.0,3682.0,1616.0,109773.0,1949.0 +3,61187.0,89.5,284599.0,3351.0,1650.0,110929.0,1950.0 +4,63221.0,96.2,328975.0,2099.0,3099.0,112075.0,1951.0 +5,63639.0,98.1,346999.0,1932.0,3594.0,113270.0,1952.0 +6,64989.0,99.0,365385.0,1870.0,3547.0,115094.0,1953.0 +7,63761.0,100.0,363112.0,3578.0,3350.0,116219.0,1954.0 +8,66019.0,101.2,397469.0,2904.0,3048.0,117388.0,1955.0 +9,67857.0,104.6,419180.0,2822.0,2857.0,118734.0,1956.0 +10,68169.0,108.4,442769.0,2936.0,2798.0,120445.0,1957.0 +11,66513.0,110.8,444546.0,4681.0,2637.0,121950.0,1958.0 +12,68655.0,112.6,482704.0,3813.0,2552.0,123366.0,1959.0 +13,69564.0,114.2,502601.0,3931.0,2514.0,125368.0,1960.0 +14,69331.0,115.7,518173.0,4806.0,2572.0,127852.0,1961.0 +15,70551.0,116.9,554894.0,4007.0,2827.0,130081.0,1962.0 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset8-rfill-rdrop-5].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset8-rfill-rdrop-5].csv new file mode 100644 index 00000000000..bbb3be7deeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset8-rfill-rdrop-5].csv @@ -0,0 +1,17 @@ +,TOTEMP,GNPDEFL,GNP,UNEMP,ARMED,POP,YEAR +0,60323.0,83.0,234289.0,2356.0,1590.0,107608.0,1947.0 +1,61122.0,88.5,259426.0,2325.0,1456.0,108632.0,1948.0 +2,60171.0,88.2,258054.0,3682.0,1616.0,109773.0,1949.0 +3,61187.0,89.5,284599.0,3351.0,1650.0,110929.0,1950.0 +4,63221.0,96.2,328975.0,2099.0,3099.0,112075.0,1951.0 +5,63639.0,98.1,346999.0,1932.0,3594.0,113270.0,1952.0 +6,64989.0,99.0,365385.0,1870.0,3547.0,115094.0,1953.0 +7,63761.0,100.0,363112.0,3578.0,3350.0,116219.0,1954.0 +8,66019.0,101.2,397469.0,2904.0,3048.0,117388.0,1955.0 +9,67857.0,104.6,419180.0,2822.0,2857.0,118734.0,1956.0 +10,68169.0,108.4,442769.0,2936.0,2798.0,120445.0,1957.0 +11,66513.0,110.8,444546.0,4681.0,2637.0,121950.0,1958.0 +12,68655.0,112.6,482704.0,3813.0,2552.0,123366.0,1959.0 +13,69564.0,114.2,502601.0,3931.0,2514.0,125368.0,1960.0 +14,69331.0,115.7,518173.0,4806.0,2572.0,127852.0,1961.0 +15,70551.0,116.9,554894.0,4007.0,2827.0,130081.0,1962.0 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset9-rfill-cdrop-5].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset9-rfill-cdrop-5].csv new file mode 100644 index 00000000000..bbb3be7deeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_clean[dataset9-rfill-cdrop-5].csv @@ -0,0 +1,17 @@ +,TOTEMP,GNPDEFL,GNP,UNEMP,ARMED,POP,YEAR +0,60323.0,83.0,234289.0,2356.0,1590.0,107608.0,1947.0 +1,61122.0,88.5,259426.0,2325.0,1456.0,108632.0,1948.0 +2,60171.0,88.2,258054.0,3682.0,1616.0,109773.0,1949.0 +3,61187.0,89.5,284599.0,3351.0,1650.0,110929.0,1950.0 +4,63221.0,96.2,328975.0,2099.0,3099.0,112075.0,1951.0 +5,63639.0,98.1,346999.0,1932.0,3594.0,113270.0,1952.0 +6,64989.0,99.0,365385.0,1870.0,3547.0,115094.0,1953.0 +7,63761.0,100.0,363112.0,3578.0,3350.0,116219.0,1954.0 +8,66019.0,101.2,397469.0,2904.0,3048.0,117388.0,1955.0 +9,67857.0,104.6,419180.0,2822.0,2857.0,118734.0,1956.0 +10,68169.0,108.4,442769.0,2936.0,2798.0,120445.0,1957.0 +11,66513.0,110.8,444546.0,4681.0,2637.0,121950.0,1958.0 +12,68655.0,112.6,482704.0,3813.0,2552.0,123366.0,1959.0 +13,69564.0,114.2,502601.0,3931.0,2514.0,125368.0,1960.0 +14,69331.0,115.7,518173.0,4806.0,2572.0,127852.0,1961.0 +15,70551.0,116.9,554894.0,4007.0,2827.0,130081.0,1962.0 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_engle_granger_two_step_cointegration_test[y0-x0].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_engle_granger_two_step_cointegration_test[y0-x0].csv new file mode 100644 index 00000000000..1cb8e34ddeb --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_engle_granger_two_step_cointegration_test[y0-x0].csv @@ -0,0 +1,6 @@ +,0 +0,-0.00313 +1,0.15451 +2,-1.28840 +3,-13.12366 +4,0.00000 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_engle_granger_two_step_cointegration_test[y0-x0]_1.csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_engle_granger_two_step_cointegration_test[y0-x0]_1.csv new file mode 100644 index 00000000000..a2ac3931635 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_engle_granger_two_step_cointegration_test[y0-x0]_1.csv @@ -0,0 +1,108 @@ +,0 +0,-0.01283 +1,0.00917 +2,0.01449 +3,0.00596 +4,-0.01234 +5,0.00481 +6,0.02672 +7,-0.01485 +8,-0.00099 +9,0.01034 +10,0.03060 +11,-0.02100 +12,-0.00427 +13,-0.00161 +14,0.02876 +15,-0.02854 +16,-0.00238 +17,0.00869 +18,0.01547 +19,-0.02213 +20,0.00424 +21,0.00426 +22,0.02932 +23,-0.02129 +24,0.00387 +25,0.01130 +26,0.01862 +27,-0.02491 +28,-0.00573 +29,0.01672 +30,0.02227 +31,-0.02483 +32,0.00340 +33,0.00545 +34,0.02028 +35,-0.03373 +36,-0.00358 +37,0.00377 +38,0.02833 +39,-0.03186 +40,-0.00728 +41,0.01109 +42,0.02348 +43,-0.02848 +44,-0.01272 +45,0.00943 +46,0.02485 +47,-0.03530 +48,-0.01459 +49,0.00446 +50,0.02974 +51,-0.03797 +52,-0.01030 +53,0.01047 +54,0.03057 +55,-0.02662 +56,-0.00524 +57,0.00674 +58,0.02832 +59,-0.02757 +60,-0.00740 +61,-0.00472 +62,0.03075 +63,-0.03078 +64,-0.00522 +65,-0.00209 +66,0.03187 +67,-0.02883 +68,-0.00838 +69,0.00197 +70,0.02843 +71,-0.02701 +72,-0.00881 +73,-0.00406 +74,0.01668 +75,-0.02424 +76,0.00649 +77,0.00400 +78,0.03269 +79,-0.02232 +80,-0.00058 +81,0.00837 +82,0.02220 +83,-0.01751 +84,0.00024 +85,-0.00162 +86,0.02554 +87,-0.02182 +88,-0.00673 +89,-0.00024 +90,0.02046 +91,-0.02622 +92,-0.00227 +93,0.00359 +94,0.01922 +95,-0.02435 +96,-0.01189 +97,0.00044 +98,0.01961 +99,-0.02050 +100,-0.01209 +101,-0.00087 +102,0.01949 +103,-0.01878 +104,-0.00618 +105,-0.00073 +106,0.02118 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_normality[data0].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_normality[data0].csv new file mode 100644 index 00000000000..630d9f9b541 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_normality[data0].csv @@ -0,0 +1,3 @@ +,Kurtosis,Skewness,Jarque-Bera,Shapiro-Wilk,Kolmogorov-Smirnov +Statistic,1.47991,6.17020,52.21623,0.90912,0.97114 +p-value,0.13890,0.00000,0.00000,0.00000,0.00000 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_normality[data1].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_normality[data1].csv new file mode 100644 index 00000000000..99af6406f0f --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_normality[data1].csv @@ -0,0 +1,3 @@ +,Kurtosis,Skewness,Jarque-Bera,Shapiro-Wilk,Kolmogorov-Smirnov +Statistic,3.80111,4.03782,60.66372,0.91086,0.78828 +p-value,0.00014,0.00005,0.00000,0.00000,0.00000 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_normality[data2].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_normality[data2].csv new file mode 100644 index 00000000000..b7e859e3fe5 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_normality[data2].csv @@ -0,0 +1,3 @@ +,Kurtosis,Skewness,Jarque-Bera,Shapiro-Wilk,Kolmogorov-Smirnov +Statistic,3.55614,4.17188,68.87032,0.88711,1.00000 +p-value,0.00038,0.00003,0.00000,0.00004,0.00000 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df0-c-c].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df0-c-c].csv new file mode 100644 index 00000000000..ffa6808ca88 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df0-c-c].csv @@ -0,0 +1,6 @@ +,ADF,KPSS +Test Statistic,-2.83778,0.66987 +P-Value,0.05308,0.01628 +NLags,8.00000,7.00000 +Nobs,300.00000,0.00000 +ICBest,2430.50034,0.00000 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df1-c-ct].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df1-c-ct].csv new file mode 100644 index 00000000000..c6468620265 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df1-c-ct].csv @@ -0,0 +1,6 @@ +,ADF,KPSS +Test Statistic,-2.83778,0.11583 +P-Value,0.05308,0.10000 +NLags,8.00000,7.00000 +Nobs,300.00000,0.00000 +ICBest,2430.50034,0.00000 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df2-ct-c].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df2-ct-c].csv new file mode 100644 index 00000000000..ddb02d88bd1 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df2-ct-c].csv @@ -0,0 +1,6 @@ +,ADF,KPSS +Test Statistic,-2.92437,0.66987 +P-Value,0.15447,0.01628 +NLags,8.00000,7.00000 +Nobs,300.00000,0.00000 +ICBest,2431.97673,0.00000 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df3-ctt-c].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df3-ctt-c].csv new file mode 100644 index 00000000000..33d1f2a171d --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df3-ctt-c].csv @@ -0,0 +1,6 @@ +,ADF,KPSS +Test Statistic,-3.00490,0.66987 +P-Value,0.29285,0.01628 +NLags,8.00000,7.00000 +Nobs,300.00000,0.00000 +ICBest,2432.53846,0.00000 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df4-nc-c].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df4-nc-c].csv new file mode 100644 index 00000000000..9e8d71b3e3d --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_get_root[df4-nc-c].csv @@ -0,0 +1,6 @@ +,ADF,KPSS +Test Statistic,-0.75222,0.66987 +P-Value,0.39061,0.01628 +NLags,8.00000,7.00000 +Nobs,300.00000,0.00000 +ICBest,2436.91406,0.00000 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_load[sunspots-file_types1-data_files1-data_examples1].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_load[sunspots-file_types1-data_files1-data_examples1].csv new file mode 100644 index 00000000000..c06e7df44fa --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_load[sunspots-file_types1-data_files1-data_examples1].csv @@ -0,0 +1,310 @@ +,YEAR,SUNACTIVITY +0,1700.0,5.0 +1,1701.0,11.0 +2,1702.0,16.0 +3,1703.0,23.0 +4,1704.0,36.0 +5,1705.0,58.0 +6,1706.0,29.0 +7,1707.0,20.0 +8,1708.0,10.0 +9,1709.0,8.0 +10,1710.0,3.0 +11,1711.0,0.0 +12,1712.0,0.0 +13,1713.0,2.0 +14,1714.0,11.0 +15,1715.0,27.0 +16,1716.0,47.0 +17,1717.0,63.0 +18,1718.0,60.0 +19,1719.0,39.0 +20,1720.0,28.0 +21,1721.0,26.0 +22,1722.0,22.0 +23,1723.0,11.0 +24,1724.0,21.0 +25,1725.0,40.0 +26,1726.0,78.0 +27,1727.0,122.0 +28,1728.0,103.0 +29,1729.0,73.0 +30,1730.0,47.0 +31,1731.0,35.0 +32,1732.0,11.0 +33,1733.0,5.0 +34,1734.0,16.0 +35,1735.0,34.0 +36,1736.0,70.0 +37,1737.0,81.0 +38,1738.0,111.0 +39,1739.0,101.0 +40,1740.0,73.0 +41,1741.0,40.0 +42,1742.0,20.0 +43,1743.0,16.0 +44,1744.0,5.0 +45,1745.0,11.0 +46,1746.0,22.0 +47,1747.0,40.0 +48,1748.0,60.0 +49,1749.0,80.9 +50,1750.0,83.4 +51,1751.0,47.7 +52,1752.0,47.8 +53,1753.0,30.7 +54,1754.0,12.2 +55,1755.0,9.6 +56,1756.0,10.2 +57,1757.0,32.4 +58,1758.0,47.6 +59,1759.0,54.0 +60,1760.0,62.9 +61,1761.0,85.9 +62,1762.0,61.2 +63,1763.0,45.1 +64,1764.0,36.4 +65,1765.0,20.9 +66,1766.0,11.4 +67,1767.0,37.8 +68,1768.0,69.8 +69,1769.0,106.1 +70,1770.0,100.8 +71,1771.0,81.6 +72,1772.0,66.5 +73,1773.0,34.8 +74,1774.0,30.6 +75,1775.0,7.0 +76,1776.0,19.8 +77,1777.0,92.5 +78,1778.0,154.4 +79,1779.0,125.9 +80,1780.0,84.8 +81,1781.0,68.1 +82,1782.0,38.5 +83,1783.0,22.8 +84,1784.0,10.2 +85,1785.0,24.1 +86,1786.0,82.9 +87,1787.0,132.0 +88,1788.0,130.9 +89,1789.0,118.1 +90,1790.0,89.9 +91,1791.0,66.6 +92,1792.0,60.0 +93,1793.0,46.9 +94,1794.0,41.0 +95,1795.0,21.3 +96,1796.0,16.0 +97,1797.0,6.4 +98,1798.0,4.1 +99,1799.0,6.8 +100,1800.0,14.5 +101,1801.0,34.0 +102,1802.0,45.0 +103,1803.0,43.1 +104,1804.0,47.5 +105,1805.0,42.2 +106,1806.0,28.1 +107,1807.0,10.1 +108,1808.0,8.1 +109,1809.0,2.5 +110,1810.0,0.0 +111,1811.0,1.4 +112,1812.0,5.0 +113,1813.0,12.2 +114,1814.0,13.9 +115,1815.0,35.4 +116,1816.0,45.8 +117,1817.0,41.1 +118,1818.0,30.1 +119,1819.0,23.9 +120,1820.0,15.6 +121,1821.0,6.6 +122,1822.0,4.0 +123,1823.0,1.8 +124,1824.0,8.5 +125,1825.0,16.6 +126,1826.0,36.3 +127,1827.0,49.6 +128,1828.0,64.2 +129,1829.0,67.0 +130,1830.0,70.9 +131,1831.0,47.8 +132,1832.0,27.5 +133,1833.0,8.5 +134,1834.0,13.2 +135,1835.0,56.9 +136,1836.0,121.5 +137,1837.0,138.3 +138,1838.0,103.2 +139,1839.0,85.7 +140,1840.0,64.6 +141,1841.0,36.7 +142,1842.0,24.2 +143,1843.0,10.7 +144,1844.0,15.0 +145,1845.0,40.1 +146,1846.0,61.5 +147,1847.0,98.5 +148,1848.0,124.7 +149,1849.0,96.3 +150,1850.0,66.6 +151,1851.0,64.5 +152,1852.0,54.1 +153,1853.0,39.0 +154,1854.0,20.6 +155,1855.0,6.7 +156,1856.0,4.3 +157,1857.0,22.7 +158,1858.0,54.8 +159,1859.0,93.8 +160,1860.0,95.8 +161,1861.0,77.2 +162,1862.0,59.1 +163,1863.0,44.0 +164,1864.0,47.0 +165,1865.0,30.5 +166,1866.0,16.3 +167,1867.0,7.3 +168,1868.0,37.6 +169,1869.0,74.0 +170,1870.0,139.0 +171,1871.0,111.2 +172,1872.0,101.6 +173,1873.0,66.2 +174,1874.0,44.7 +175,1875.0,17.0 +176,1876.0,11.3 +177,1877.0,12.4 +178,1878.0,3.4 +179,1879.0,6.0 +180,1880.0,32.3 +181,1881.0,54.3 +182,1882.0,59.7 +183,1883.0,63.7 +184,1884.0,63.5 +185,1885.0,52.2 +186,1886.0,25.4 +187,1887.0,13.1 +188,1888.0,6.8 +189,1889.0,6.3 +190,1890.0,7.1 +191,1891.0,35.6 +192,1892.0,73.0 +193,1893.0,85.1 +194,1894.0,78.0 +195,1895.0,64.0 +196,1896.0,41.8 +197,1897.0,26.2 +198,1898.0,26.7 +199,1899.0,12.1 +200,1900.0,9.5 +201,1901.0,2.7 +202,1902.0,5.0 +203,1903.0,24.4 +204,1904.0,42.0 +205,1905.0,63.5 +206,1906.0,53.8 +207,1907.0,62.0 +208,1908.0,48.5 +209,1909.0,43.9 +210,1910.0,18.6 +211,1911.0,5.7 +212,1912.0,3.6 +213,1913.0,1.4 +214,1914.0,9.6 +215,1915.0,47.4 +216,1916.0,57.1 +217,1917.0,103.9 +218,1918.0,80.6 +219,1919.0,63.6 +220,1920.0,37.6 +221,1921.0,26.1 +222,1922.0,14.2 +223,1923.0,5.8 +224,1924.0,16.7 +225,1925.0,44.3 +226,1926.0,63.9 +227,1927.0,69.0 +228,1928.0,77.8 +229,1929.0,64.9 +230,1930.0,35.7 +231,1931.0,21.2 +232,1932.0,11.1 +233,1933.0,5.7 +234,1934.0,8.7 +235,1935.0,36.1 +236,1936.0,79.7 +237,1937.0,114.4 +238,1938.0,109.6 +239,1939.0,88.8 +240,1940.0,67.8 +241,1941.0,47.5 +242,1942.0,30.6 +243,1943.0,16.3 +244,1944.0,9.6 +245,1945.0,33.2 +246,1946.0,92.6 +247,1947.0,151.6 +248,1948.0,136.3 +249,1949.0,134.7 +250,1950.0,83.9 +251,1951.0,69.4 +252,1952.0,31.5 +253,1953.0,13.9 +254,1954.0,4.4 +255,1955.0,38.0 +256,1956.0,141.7 +257,1957.0,190.2 +258,1958.0,184.8 +259,1959.0,159.0 +260,1960.0,112.3 +261,1961.0,53.9 +262,1962.0,37.6 +263,1963.0,27.9 +264,1964.0,10.2 +265,1965.0,15.1 +266,1966.0,47.0 +267,1967.0,93.8 +268,1968.0,105.9 +269,1969.0,105.5 +270,1970.0,104.5 +271,1971.0,66.6 +272,1972.0,68.9 +273,1973.0,38.0 +274,1974.0,34.5 +275,1975.0,15.5 +276,1976.0,12.6 +277,1977.0,27.5 +278,1978.0,92.5 +279,1979.0,155.4 +280,1980.0,154.6 +281,1981.0,140.4 +282,1982.0,115.9 +283,1983.0,66.6 +284,1984.0,45.9 +285,1985.0,17.9 +286,1986.0,13.4 +287,1987.0,29.4 +288,1988.0,100.2 +289,1989.0,157.6 +290,1990.0,142.6 +291,1991.0,145.7 +292,1992.0,94.3 +293,1993.0,54.6 +294,1994.0,29.9 +295,1995.0,17.5 +296,1996.0,8.6 +297,1997.0,21.5 +298,1998.0,64.3 +299,1999.0,93.3 +300,2000.0,119.6 +301,2001.0,111.0 +302,2002.0,104.0 +303,2003.0,63.7 +304,2004.0,40.4 +305,2005.0,29.8 +306,2006.0,15.2 +307,2007.0,7.5 +308,2008.0,2.9 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_load[wage_panel-file_types0-data_files0-data_examples0].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_load[wage_panel-file_types0-data_files0-data_examples0].csv new file mode 100644 index 00000000000..83cd8f5d32c --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_load[wage_panel-file_types0-data_files0-data_examples0].csv @@ -0,0 +1,4361 @@ +,nr,year,black,exper,hisp,hours,married,educ,union,lwage,expersq,occupation +0,13,1980,0,1,0,2672,0,14,0,1.19754,1,9 +1,13,1981,0,2,0,2320,0,14,1,1.85306,4,9 +2,13,1982,0,3,0,2940,0,14,0,1.344462,9,9 +3,13,1983,0,4,0,2960,0,14,0,1.4332129999999998,16,9 +4,13,1984,0,5,0,3071,0,14,0,1.568125,25,5 +5,13,1985,0,6,0,2864,0,14,0,1.699891,36,2 +6,13,1986,0,7,0,2994,0,14,0,-0.7202626,49,2 +7,13,1987,0,8,0,2640,0,14,0,1.669188,64,2 +8,17,1980,0,4,0,2484,0,13,0,1.675962,16,2 +9,17,1981,0,5,0,2804,0,13,0,1.518398,25,2 +10,17,1982,0,6,0,2530,0,13,0,1.559191,36,2 +11,17,1983,0,7,0,2340,0,13,0,1.72541,49,2 +12,17,1984,0,8,0,2486,0,13,0,1.622022,64,2 +13,17,1985,0,9,0,2164,0,13,0,1.608588,81,7 +14,17,1986,0,10,0,2749,0,13,0,1.572385,100,7 +15,17,1987,0,11,0,2476,0,13,0,1.820334,121,5 +16,18,1980,0,4,0,2332,1,12,0,1.515963,16,4 +17,18,1981,0,5,0,2116,1,12,0,1.735379,25,4 +18,18,1982,0,6,0,2500,1,12,0,1.631744,36,2 +19,18,1983,0,7,0,2474,1,12,0,1.998229,49,3 +20,18,1984,0,8,0,2362,1,12,0,2.184014,64,3 +21,18,1985,0,9,0,2340,1,12,0,2.266662,81,3 +22,18,1986,0,10,0,2340,1,12,0,2.069944,100,3 +23,18,1987,0,11,0,2340,1,12,0,2.873161,121,3 +24,45,1980,0,2,0,1864,0,12,1,1.894115,4,7 +25,45,1981,0,3,0,2021,0,12,1,1.471159,9,6 +26,45,1982,0,4,0,2274,0,12,0,1.473498,16,6 +27,45,1983,0,5,0,2112,0,12,0,1.740914,25,6 +28,45,1984,0,6,0,1920,0,12,0,1.823214,36,6 +29,45,1985,0,7,0,2205,0,12,0,1.908273,49,6 +30,45,1986,0,8,0,2551,0,12,0,1.742447,64,4 +31,45,1987,0,9,0,2860,1,12,0,2.135689,81,4 +32,110,1980,0,5,0,2080,0,12,1,1.948775,25,4 +33,110,1981,0,6,0,2080,0,12,0,1.962259,36,4 +34,110,1982,0,7,0,2639,0,12,0,1.963297,49,2 +35,110,1983,0,8,0,2223,0,12,0,2.202516,64,2 +36,110,1984,0,9,0,2150,1,12,0,2.134954,81,1 +37,110,1985,0,10,0,1532,1,12,0,2.125823,100,1 +38,110,1986,0,11,0,2080,1,12,0,1.991017,121,4 +39,110,1987,0,12,0,2080,1,12,0,2.112393,144,4 +40,120,1980,0,2,0,1025,0,10,0,0.2585549,4,9 +41,120,1981,0,3,0,1496,0,10,0,1.319972,9,9 +42,120,1982,0,4,0,1394,0,10,0,1.462085,16,9 +43,120,1983,0,5,0,2924,0,10,0,1.320287,25,9 +44,120,1984,0,6,0,3564,0,10,0,1.703647,36,9 +45,120,1985,0,7,0,3979,0,10,0,1.4458030000000002,49,9 +46,120,1986,0,8,0,4351,0,10,0,1.806364,64,4 +47,120,1987,0,9,0,3568,0,10,0,2.14812,81,4 +48,126,1980,0,2,0,3115,0,13,0,1.7372849999999995,4,3 +49,126,1981,0,3,0,2735,0,13,0,1.989601,9,2 +50,126,1982,0,4,0,2390,0,13,0,2.189917,16,2 +51,126,1983,0,5,0,2340,0,13,0,1.855463,25,3 +52,126,1984,0,6,0,2250,0,13,0,1.922438,36,3 +53,126,1985,0,7,0,2340,1,13,0,2.061024,49,3 +54,126,1986,0,8,0,2941,1,13,0,1.782202,64,3 +55,126,1987,0,9,0,2847,1,13,0,2.414682,81,2 +56,150,1980,0,2,0,1876,0,12,0,1.208735,4,6 +57,150,1981,0,3,0,2327,0,12,0,1.19404,9,6 +58,150,1982,0,4,0,2006,0,12,0,1.170441,16,6 +59,150,1983,0,5,0,1826,0,12,0,1.097965,25,6 +60,150,1984,0,6,0,3414,0,12,0,0.7658162,36,9 +61,150,1985,0,7,0,3928,0,12,0,1.119026,49,9 +62,150,1986,0,8,0,4000,0,12,0,1.119367,64,6 +63,150,1987,0,9,0,4992,0,12,1,0.8314594999999999,81,9 +64,162,1980,0,2,0,1874,0,11,1,0.5024701,4,4 +65,162,1981,0,3,0,1710,0,11,0,1.064912,9,4 +66,162,1982,0,4,0,1488,0,11,0,1.189498,16,3 +67,162,1983,0,5,0,939,0,11,0,1.5398889999999998,25,7 +68,162,1984,0,6,0,1980,0,11,0,1.598286,36,2 +69,162,1985,0,7,0,2735,0,11,0,1.737321,49,2 +70,162,1986,0,8,0,2720,0,11,0,1.988456,64,2 +71,162,1987,0,9,0,2795,0,11,0,2.158679,81,2 +72,166,1980,0,2,0,1296,0,10,1,1.005294,4,7 +73,166,1981,0,3,0,1942,0,10,1,0.9376874,9,7 +74,166,1982,0,4,0,1245,0,10,1,1.3674879999999998,16,7 +75,166,1983,0,5,0,1196,0,10,1,1.378009,25,4 +76,166,1984,0,6,0,2387,0,10,1,1.170184,36,4 +77,166,1985,0,7,0,2160,0,10,0,1.728221,49,5 +78,166,1986,0,8,0,2336,1,10,0,1.7098650000000002,64,2 +79,166,1987,0,9,0,2301,1,10,0,1.851075,81,5 +80,189,1980,0,2,0,520,0,14,0,1.130545,4,4 +81,189,1981,0,3,0,520,0,14,0,0.836248,9,4 +82,189,1982,0,4,0,520,0,14,0,1.46736,16,4 +83,189,1983,0,5,0,520,0,14,0,1.071484,25,3 +84,189,1984,0,6,0,1400,0,14,0,1.44592,36,4 +85,189,1985,0,7,0,1754,0,14,0,1.685116,49,3 +86,189,1986,0,8,0,1840,0,14,0,1.686175,64,4 +87,189,1987,0,9,0,1872,0,14,0,1.75513,81,4 +88,193,1980,0,2,0,980,0,14,0,1.565692,4,1 +89,193,1981,0,3,0,925,0,14,0,2.493875,9,1 +90,193,1982,0,4,0,2187,0,14,0,1.822662,16,1 +91,193,1983,0,5,0,2080,0,14,0,2.380336,25,1 +92,193,1984,0,6,0,2346,0,14,0,2.217129,36,1 +93,193,1985,0,7,0,2487,1,14,0,2.272032,49,1 +94,193,1986,0,8,0,2328,1,14,0,2.353799,64,1 +95,193,1987,0,9,0,2132,1,14,0,2.42945,81,1 +96,209,1980,0,3,0,2340,0,11,0,1.918003,9,9 +97,209,1981,0,4,0,1935,0,11,0,0.7654076999999999,16,9 +98,209,1982,0,5,0,2080,0,11,0,1.978185,25,9 +99,209,1983,0,6,0,2080,0,11,0,1.948554,36,9 +100,209,1984,0,7,0,2280,0,11,0,2.037026,49,9 +101,209,1985,0,8,0,2520,0,11,0,1.902575,64,2 +102,209,1986,0,9,0,2395,0,11,0,1.972604,81,2 +103,209,1987,0,10,0,2145,0,11,0,2.186982,100,2 +104,212,1980,0,2,0,2080,0,11,0,1.784472,4,5 +105,212,1981,0,3,0,2080,0,11,0,2.179983,9,6 +106,212,1982,0,4,0,2110,0,11,1,1.963865,16,6 +107,212,1983,0,5,0,2550,0,11,0,2.0449330000000003,25,6 +108,212,1984,0,6,0,2560,0,11,0,2.012861,36,4 +109,212,1985,0,7,0,2704,0,11,0,2.096986,49,6 +110,212,1986,0,8,0,2856,1,11,0,2.143966,64,6 +111,212,1987,0,9,0,2912,1,11,1,2.241284,81,6 +112,218,1980,0,2,0,2080,0,15,0,2.013313,4,1 +113,218,1981,0,3,0,2530,0,15,0,1.962152,9,1 +114,218,1982,0,4,0,2240,0,15,0,2.275641,16,4 +115,218,1983,0,5,0,2520,1,15,0,2.194918,25,1 +116,218,1984,0,6,0,2405,1,15,0,2.428337,36,1 +117,218,1985,0,7,0,2130,1,15,0,2.723037,49,4 +118,218,1986,0,8,0,2080,1,15,0,2.966396,64,2 +119,218,1987,0,9,0,2080,1,15,0,3.065052,81,2 +120,243,1980,0,4,0,2000,0,12,0,1.564181,16,5 +121,243,1981,0,5,0,2080,0,12,0,1.683546,25,2 +122,243,1982,0,6,0,2080,0,12,0,1.690503,36,2 +123,243,1983,0,7,0,2080,1,12,0,1.660872,49,2 +124,243,1984,0,8,0,2080,1,12,0,1.6980509999999998,64,2 +125,243,1985,0,9,0,2168,1,12,0,1.671768,81,2 +126,243,1986,0,10,0,2161,1,12,0,1.635718,100,2 +127,243,1987,0,11,0,2080,1,12,0,1.786971,121,2 +128,259,1980,0,3,0,1984,1,12,1,2.10719,9,5 +129,259,1981,0,4,0,2080,1,12,1,2.089011,16,5 +130,259,1982,0,5,0,1755,1,12,1,2.042724,25,5 +131,259,1983,0,6,0,3157,1,12,1,1.308156,36,5 +132,259,1984,0,7,0,2100,1,12,0,1.488152,49,6 +133,259,1985,0,8,0,2080,1,12,0,1.542818,64,6 +134,259,1986,0,9,0,2996,1,12,0,1.535135,81,5 +135,259,1987,0,10,0,3243,1,12,0,1.454336,100,6 +136,260,1980,0,2,0,815,0,11,1,1.629912,4,4 +137,260,1981,0,3,0,1898,0,11,1,1.7751130000000002,9,7 +138,260,1982,0,4,0,2208,0,11,0,1.967256,16,6 +139,260,1983,0,5,0,2080,1,11,0,2.075186,25,1 +140,260,1984,0,6,0,2080,1,11,0,2.128834,36,1 +141,260,1985,0,7,0,2080,1,11,0,2.268419,49,1 +142,260,1986,0,8,0,2710,1,11,0,1.992139,64,6 +143,260,1987,0,9,0,2262,1,11,0,2.421555,81,5 +144,309,1980,0,3,0,3560,0,12,0,1.7860759999999998,9,6 +145,309,1981,0,4,0,2780,0,12,0,2.280766,16,6 +146,309,1982,0,5,0,2500,0,12,0,2.264266,25,6 +147,309,1983,0,6,0,2400,1,12,0,2.275456,36,5 +148,309,1984,0,7,0,2690,1,12,0,2.208133,49,6 +149,309,1985,0,8,0,3070,1,12,0,2.199852,64,5 +150,309,1986,0,9,0,2915,1,12,0,2.2069,81,6 +151,309,1987,0,10,0,2670,1,12,0,2.476867,100,6 +152,351,1980,0,3,0,2053,0,12,0,1.643387,9,4 +153,351,1981,0,4,0,1998,0,12,0,1.33558,16,4 +154,351,1982,0,5,0,1853,1,12,0,1.522818,25,4 +155,351,1983,0,6,0,1943,1,12,0,1.418851,36,4 +156,351,1984,0,7,0,1416,1,12,0,0.9039274,49,4 +157,351,1985,0,8,0,1840,1,12,0,1.888564,64,4 +158,351,1986,0,9,0,3005,1,12,0,1.78345,81,1 +159,351,1987,0,10,0,2565,1,12,0,1.6980080000000002,100,1 +160,353,1980,0,3,0,2112,0,12,0,1.838197,9,6 +161,353,1981,0,4,0,2080,0,12,1,1.817077,16,6 +162,353,1982,0,5,0,2310,0,12,0,1.6717400000000002,25,5 +163,353,1983,0,6,0,2120,0,12,0,1.572831,36,6 +164,353,1984,0,7,0,2080,0,12,0,1.682546,49,5 +165,353,1985,0,8,0,2080,0,12,0,1.58364,64,5 +166,353,1986,0,9,0,2080,0,12,0,1.773293,81,5 +167,353,1987,0,10,0,2080,0,12,0,1.861079,100,5 +168,383,1980,1,2,0,2080,0,12,0,1.462888,4,6 +169,383,1981,1,3,0,2080,0,12,0,1.570217,9,6 +170,383,1982,1,4,0,2080,0,12,1,1.656602,16,6 +171,383,1983,1,5,0,2080,0,12,0,1.72541,25,4 +172,383,1984,1,6,0,2080,0,12,0,1.772159,36,4 +173,383,1985,1,7,0,2080,0,12,0,2.011084,49,5 +174,383,1986,1,8,0,2080,0,12,0,1.991017,64,5 +175,383,1987,1,9,0,2080,0,12,0,1.952051,81,5 +176,408,1980,0,2,0,2120,0,11,0,1.652095,4,5 +177,408,1981,0,3,0,2295,1,11,0,1.489535,9,6 +178,408,1982,0,4,0,2120,1,11,0,1.881176,16,5 +179,408,1983,0,5,0,2184,1,11,0,2.061032,25,5 +180,408,1984,0,6,0,2496,1,11,1,2.488836,36,5 +181,408,1985,0,7,0,2496,1,11,1,2.4309380000000003,49,5 +182,408,1986,0,8,0,1838,1,11,1,2.53456,64,5 +183,408,1987,0,9,0,3176,1,11,1,2.069602,81,5 +184,424,1980,0,5,0,2080,1,12,0,2.165839,25,5 +185,424,1981,0,6,0,2080,1,12,0,2.3254,36,5 +186,424,1982,0,7,0,2080,1,12,0,2.383651,49,5 +187,424,1983,0,8,0,2080,1,12,0,2.337212,64,6 +188,424,1984,0,9,0,2080,1,12,0,2.4125080000000003,81,5 +189,424,1985,0,10,0,2080,1,12,0,2.384146,100,5 +190,424,1986,0,11,0,2080,1,12,0,2.35203,121,5 +191,424,1987,0,12,0,2080,1,12,0,2.577757,144,5 +192,464,1980,0,2,0,3279,0,13,0,0.9726263,4,2 +193,464,1981,0,3,0,3374,0,13,0,1.003104,9,3 +194,464,1982,0,4,0,3380,1,13,0,1.099635,16,2 +195,464,1983,0,5,0,3380,1,13,0,1.214584,25,4 +196,464,1984,0,6,0,3524,1,13,0,1.319242,36,6 +197,464,1985,0,7,0,3392,1,13,0,1.389742,49,3 +198,464,1986,0,8,0,3295,1,13,0,1.573538,64,3 +199,464,1987,0,9,0,2380,1,13,0,1.9007,81,3 +200,483,1980,0,5,0,1645,0,12,0,1.682627,25,5 +201,483,1981,0,6,0,2050,0,12,0,1.661706,36,2 +202,483,1982,0,7,0,2080,0,12,0,1.7550419999999998,49,5 +203,483,1983,0,8,0,2080,0,12,1,1.753451,64,7 +204,483,1984,0,9,0,2080,0,12,0,1.618008,81,6 +205,483,1985,0,10,0,2080,0,12,0,1.648179,100,4 +206,483,1986,0,11,0,2080,0,12,0,1.7458939999999998,121,6 +207,483,1987,0,12,0,2265,0,12,0,1.727082,144,6 +208,556,1980,0,2,0,1298,0,14,0,1.939345,4,9 +209,556,1981,0,3,0,2592,0,14,0,2.120264,9,1 +210,556,1982,0,4,0,2600,0,14,0,2.160507,16,1 +211,556,1983,0,5,0,2150,0,14,0,2.4892540000000003,25,2 +212,556,1984,0,6,0,2080,0,14,0,2.375694,36,1 +213,556,1985,0,7,0,2510,0,14,0,2.295887,49,2 +214,556,1986,0,8,0,3170,0,14,0,2.29909,64,1 +215,556,1987,0,9,0,2505,0,14,0,2.5818790000000003,81,2 +216,560,1980,0,2,0,2000,0,12,0,1.386847,4,9 +217,560,1981,0,3,0,1906,0,12,0,2.127582,9,9 +218,560,1982,0,4,0,1110,0,12,0,0.9688702,16,9 +219,560,1983,0,5,0,2280,0,12,0,1.163599,25,3 +220,560,1984,0,6,0,1981,0,12,0,1.356619,36,1 +221,560,1985,0,7,0,2459,0,12,0,1.416253,49,2 +222,560,1986,0,8,0,3930,0,12,1,1.214983,64,2 +223,560,1987,0,9,0,3709,0,12,0,1.639359,81,1 +224,569,1980,0,2,0,2680,0,12,0,0.6837251,4,2 +225,569,1981,0,3,0,2230,0,12,0,1.078989,9,3 +226,569,1982,0,4,0,2825,0,12,0,0.8396357,16,2 +227,569,1983,0,5,0,2069,0,12,0,1.5075690000000002,25,3 +228,569,1984,0,6,0,2520,0,12,0,1.020652,36,2 +229,569,1985,0,7,0,2160,0,12,0,0.5425978,49,3 +230,569,1986,0,8,0,2480,0,12,0,0.1147163,64,3 +231,569,1987,0,9,0,2795,0,12,0,0.3128518,81,1 +232,583,1980,0,4,0,2070,0,12,0,1.626772,16,2 +233,583,1981,0,5,0,2110,0,12,0,1.880875,25,5 +234,583,1982,0,6,0,2080,0,12,1,1.741197,36,5 +235,583,1983,0,7,0,2000,0,12,1,2.194788,49,6 +236,583,1984,0,8,0,2080,1,12,0,2.083836,64,5 +237,583,1985,0,9,0,2520,1,12,0,1.918448,81,5 +238,583,1986,0,10,0,2180,1,12,0,2.156714,100,5 +239,583,1987,0,11,0,2450,0,12,0,1.985041,121,5 +240,647,1980,0,2,0,2080,0,12,1,1.396706,4,6 +241,647,1981,0,3,0,1960,1,12,1,1.519826,9,4 +242,647,1982,0,4,0,2200,1,12,1,1.509153,16,4 +243,647,1983,0,5,0,2208,1,12,1,1.645042,25,4 +244,647,1984,0,6,0,2080,0,12,1,1.549015,36,4 +245,647,1985,0,7,0,2120,1,12,1,1.826956,49,4 +246,647,1986,0,8,0,2215,1,12,1,1.88368,64,4 +247,647,1987,0,9,0,2273,1,12,1,2.023661,81,4 +248,658,1980,0,4,0,2209,0,12,1,1.7314169999999998,16,4 +249,658,1981,0,5,0,2113,0,12,0,1.813759,25,4 +250,658,1982,0,6,0,2280,0,12,1,1.700048,36,6 +251,658,1983,0,7,0,2256,0,12,1,1.939649,49,4 +252,658,1984,0,8,0,2523,0,12,0,1.935753,64,4 +253,658,1985,0,9,0,2400,0,12,0,2.099785,81,6 +254,658,1986,0,10,0,2145,0,12,0,2.192047,100,4 +255,658,1987,0,11,0,2487,0,12,0,2.005143,121,4 +256,684,1980,0,2,0,600,0,12,0,2.8217830000000004,4,6 +257,684,1981,0,3,0,2080,0,12,0,2.179983,9,6 +258,684,1982,0,4,0,1840,1,12,0,2.309427,16,5 +259,684,1983,0,5,0,2080,1,12,0,2.251321,25,6 +260,684,1984,0,6,0,2080,1,12,0,2.352297,36,6 +261,684,1985,0,7,0,2472,1,12,0,2.313848,49,7 +262,684,1986,0,8,0,2226,1,12,0,2.25342,64,7 +263,684,1987,0,9,0,2184,1,12,0,2.405353,81,1 +264,711,1980,0,2,0,1807,0,11,0,1.232025,4,7 +265,711,1981,0,3,0,2040,0,11,0,1.366492,9,7 +266,711,1982,0,4,0,2080,0,11,0,1.690503,16,2 +267,711,1983,0,5,0,2080,0,11,0,1.660872,25,5 +268,711,1984,0,6,0,2656,0,11,0,1.555876,36,7 +269,711,1985,0,7,0,2760,0,11,0,-0.7141255999999999,49,3 +270,711,1986,0,8,0,2745,0,11,0,1.468481,64,3 +271,711,1987,0,9,0,2860,0,11,0,0.5130058,81,3 +272,729,1980,0,2,0,2120,1,13,1,1.95958,4,7 +273,729,1981,0,3,0,1325,0,13,0,1.893339,9,7 +274,729,1982,0,4,0,680,1,13,1,3.096216,16,2 +275,729,1983,0,5,0,1080,1,13,1,1.910813,25,7 +276,729,1984,0,6,0,2920,1,13,0,1.615264,36,3 +277,729,1985,0,7,0,2880,1,13,0,2.076528,49,3 +278,729,1986,0,8,0,3300,1,13,0,2.10754,64,2 +279,729,1987,0,9,0,3025,1,13,0,2.155585,81,3 +280,731,1980,0,4,0,1352,0,12,0,1.655639,16,2 +281,731,1981,0,5,0,1480,1,12,0,1.464256,25,8 +282,731,1982,0,6,0,2470,1,12,0,1.0078280000000002,36,8 +283,731,1983,0,7,0,3330,1,12,0,1.477949,49,9 +284,731,1984,0,8,0,1130,1,12,0,0.6187201999999999,64,5 +285,731,1985,0,9,0,2700,0,12,0,2.2256240000000003,81,7 +286,731,1986,0,10,0,2600,0,12,0,2.657731,100,9 +287,731,1987,0,11,0,2250,0,12,0,2.139192,121,6 +288,732,1980,0,3,0,1980,0,12,0,1.497271,9,6 +289,732,1981,0,4,0,2080,0,12,0,1.601716,16,6 +290,732,1982,0,5,0,1920,0,12,0,1.504843,25,6 +291,732,1983,0,6,0,2575,0,12,0,1.7980470000000002,36,6 +292,732,1984,0,7,0,3080,0,12,0,1.6528900000000002,49,6 +293,732,1985,0,8,0,2850,0,12,0,1.7633849999999998,64,6 +294,732,1986,0,9,0,3075,0,12,0,1.722682,81,6 +295,732,1987,0,10,0,3062,0,12,0,1.762061,100,6 +296,793,1980,0,2,0,1270,0,14,0,0.8915284,4,4 +297,793,1981,0,3,0,1740,0,14,0,1.931022,9,9 +298,793,1982,0,4,0,2804,0,14,0,1.90265,16,9 +299,793,1983,0,5,0,2548,0,14,0,1.885375,25,9 +300,793,1984,0,6,0,3132,0,14,0,1.678708,36,1 +301,793,1985,0,7,0,2130,0,14,0,1.896358,49,2 +302,793,1986,0,8,0,2215,0,14,0,1.78837,64,2 +303,793,1987,0,9,0,2400,0,14,0,1.563827,81,9 +304,797,1980,0,3,0,1476,0,10,0,0.992524,9,7 +305,797,1981,0,4,0,1840,0,10,1,2.345145,16,5 +306,797,1982,0,5,0,2800,0,10,1,1.680934,25,2 +307,797,1983,0,6,0,2126,1,10,0,1.989654,36,7 +308,797,1984,0,7,0,2600,1,10,1,2.448014,49,6 +309,797,1985,0,8,0,2600,1,10,1,2.45018,64,6 +310,797,1986,0,9,0,3542,1,10,1,2.172239,81,6 +311,797,1987,0,10,0,3520,1,10,1,2.415984,100,6 +312,800,1980,0,2,0,2080,0,11,1,1.587762,4,9 +313,800,1981,0,3,0,2080,0,11,1,1.609438,9,9 +314,800,1982,0,4,0,2080,0,11,1,1.508182,16,9 +315,800,1983,0,5,0,2080,0,11,1,1.555511,25,9 +316,800,1984,0,6,0,2080,0,11,1,1.549015,36,9 +317,800,1985,0,7,0,2080,0,11,0,1.61643,49,9 +318,800,1986,0,8,0,2080,1,11,1,1.825937,64,9 +319,800,1987,0,9,0,2080,1,11,1,1.990435,81,5 +320,813,1980,0,2,0,840,0,13,0,1.5562129999999998,4,7 +321,813,1981,0,3,0,1000,0,13,0,0.422912,9,1 +322,813,1982,0,4,0,2115,0,13,0,0.7104341,16,4 +323,813,1983,0,5,0,1725,0,13,0,0.9317217,25,1 +324,813,1984,0,6,0,1980,0,13,0,-3.579079,36,1 +325,813,1985,0,7,0,1260,0,13,0,1.322756,49,1 +326,813,1986,0,8,0,1320,0,13,0,1.3897,64,4 +327,813,1987,0,9,0,1905,0,13,0,1.5435,81,1 +328,823,1980,0,3,0,492,0,10,0,-0.3726614,9,9 +329,823,1981,0,4,0,1527,0,10,0,0.6063144,16,4 +330,823,1982,0,5,0,1408,0,10,0,0.8648805,25,3 +331,823,1983,0,6,0,2060,0,10,0,0.5121712,36,9 +332,823,1984,0,7,0,1780,0,10,0,0.6839116,49,9 +333,823,1985,0,8,0,2177,0,10,0,0.9997493,64,3 +334,823,1986,0,9,0,2208,0,10,0,1.4348610000000002,81,2 +335,823,1987,0,10,0,1963,0,10,0,1.177036,100,3 +336,827,1980,0,2,0,1280,0,12,0,0.8836852,4,5 +337,827,1981,0,3,0,712,0,12,0,1.424867,9,5 +338,827,1982,0,4,0,729,0,12,0,1.365904,16,9 +339,827,1983,0,5,0,726,0,12,0,1.391689,25,9 +340,827,1984,0,6,0,2330,0,12,0,1.7921900000000002,36,3 +341,827,1985,0,7,0,2600,0,12,0,1.948283,49,3 +342,827,1986,0,8,0,2410,1,12,0,2.263612,64,3 +343,827,1987,0,9,0,2160,1,12,0,2.628964,81,3 +344,847,1980,1,1,0,2040,0,14,1,1.562728,1,9 +345,847,1981,1,2,0,2120,0,14,1,1.664498,4,1 +346,847,1982,1,3,0,2080,0,14,0,1.770546,9,5 +347,847,1983,1,4,0,2080,0,14,0,1.7860349999999998,16,5 +348,847,1984,1,5,0,2080,0,14,0,2.001,25,5 +349,847,1985,1,6,0,2080,0,14,1,1.648179,36,4 +350,847,1986,1,7,0,2055,0,14,0,2.125711,49,2 +351,847,1987,1,8,0,4120,1,14,1,1.688419,64,4 +352,851,1980,0,2,0,2080,0,12,0,1.875813,4,6 +353,851,1981,0,3,0,2080,0,12,0,1.956676,9,6 +354,851,1982,0,4,0,2080,1,12,0,1.867254,16,6 +355,851,1983,0,5,0,2080,1,12,0,2.1745330000000003,25,5 +356,851,1984,0,6,0,1806,1,12,0,1.914497,36,7 +357,851,1985,0,7,0,1976,1,12,1,2.017926,49,5 +358,851,1986,0,8,0,1976,1,12,1,2.117659,64,5 +359,851,1987,0,9,0,2336,0,12,1,1.977629,81,5 +360,863,1980,0,2,0,2650,0,12,0,1.570451,4,1 +361,863,1981,0,3,0,2600,0,12,0,1.562185,9,1 +362,863,1982,0,4,0,2190,0,12,0,1.569977,16,1 +363,863,1983,0,5,0,2080,0,12,0,1.7941200000000002,25,1 +364,863,1984,0,6,0,2105,0,12,0,1.837172,36,1 +365,863,1985,0,7,0,2313,1,12,0,1.813935,49,4 +366,863,1986,0,8,0,2760,1,12,0,2.038396,64,1 +367,863,1987,0,9,0,3220,1,12,0,1.905904,81,1 +368,873,1980,0,2,0,1218,0,10,1,0.5968629,4,9 +369,873,1981,0,3,0,1300,0,10,0,0.4749912,9,9 +370,873,1982,0,4,0,1390,0,10,0,1.090265,16,9 +371,873,1983,0,5,0,1638,0,10,1,1.000002,25,9 +372,873,1984,0,6,0,2204,0,10,1,0.8330530999999999,36,9 +373,873,1985,0,7,0,3195,0,10,1,1.401281,49,1 +374,873,1986,0,8,0,2280,0,10,1,1.734129,64,1 +375,873,1987,0,9,0,1425,0,10,1,1.882872,81,1 +376,891,1980,0,2,0,2000,0,12,1,2.000044,4,6 +377,891,1981,0,3,0,1751,1,12,1,2.307712,9,6 +378,891,1982,0,4,0,2010,1,12,1,2.308813,16,6 +379,891,1983,0,5,0,1670,0,12,1,1.880416,25,6 +380,891,1984,0,6,0,3072,1,12,0,1.869901,36,6 +381,891,1985,0,7,0,3168,1,12,1,2.079198,49,3 +382,891,1986,0,8,0,3310,1,12,1,1.88745,64,3 +383,891,1987,0,9,0,3640,0,12,0,1.809427,81,1 +384,908,1980,0,2,0,576,0,10,1,0.9975806,4,9 +385,908,1981,0,3,0,1016,0,10,1,0.2309867,9,9 +386,908,1982,0,4,0,976,0,10,1,0.4322609,16,9 +387,908,1983,0,5,0,496,0,10,1,0.9741553,25,9 +388,908,1984,0,6,0,1676,0,10,1,0.5122099,36,9 +389,908,1985,0,7,0,2434,0,10,0,0.9484363,49,1 +390,908,1986,0,8,0,2020,0,10,0,1.2826879999999998,64,7 +391,908,1987,0,9,0,1927,1,10,0,1.377867,81,7 +392,910,1980,1,2,0,2080,0,13,0,1.865393,4,6 +393,910,1981,1,3,0,1420,0,13,0,2.13425,9,4 +394,910,1982,1,4,0,2310,0,13,0,1.040897,16,3 +395,910,1983,1,5,0,3008,0,13,0,1.761968,25,1 +396,910,1984,1,6,0,2360,0,13,0,1.919158,36,2 +397,910,1985,1,7,0,2475,0,13,0,2.257066,49,1 +398,910,1986,1,8,0,2404,0,13,0,2.111954,64,1 +399,910,1987,1,9,0,2928,0,13,0,1.892331,81,1 +400,916,1980,0,2,0,1120,0,13,0,1.175441,4,6 +401,916,1981,0,3,0,585,0,13,0,1.411612,9,6 +402,916,1982,0,4,0,1515,0,13,0,1.615795,16,6 +403,916,1983,0,5,0,2080,0,13,0,1.688941,25,7 +404,916,1984,0,6,0,2080,0,13,0,1.96155,36,5 +405,916,1985,0,7,0,2400,0,13,0,1.910543,49,5 +406,916,1986,0,8,0,2200,0,13,0,2.018309,64,2 +407,916,1987,0,9,0,2080,0,13,0,2.282292,81,5 +408,919,1980,0,3,0,1236,1,12,0,1.568009,9,5 +409,919,1981,0,4,0,2080,1,12,1,1.395864,16,9 +410,919,1982,0,5,0,2080,1,12,1,1.380348,25,9 +411,919,1983,0,6,0,2080,1,12,1,1.494423,36,9 +412,919,1984,0,7,0,2080,1,12,1,1.394864,49,9 +413,919,1985,0,8,0,2080,1,12,1,1.440539,64,9 +414,919,1986,0,9,0,2080,1,12,1,1.596362,81,9 +415,919,1987,0,10,0,2080,1,12,1,1.619917,100,9 +416,922,1980,0,2,0,1604,0,12,0,1.602506,4,2 +417,922,1981,0,3,0,2300,0,12,0,2.03499,9,7 +418,922,1982,0,4,0,2084,0,12,0,2.238628,16,6 +419,922,1983,0,5,0,2066,0,12,0,2.217671,25,2 +420,922,1984,0,6,0,2540,0,12,0,2.4478310000000003,36,5 +421,922,1985,0,7,0,2600,0,12,0,2.6036900000000003,49,2 +422,922,1986,0,8,0,3140,0,12,0,2.35569,64,5 +423,922,1987,0,9,0,3575,1,12,0,2.186982,81,5 +424,924,1980,0,1,0,248,0,11,0,0.8535584999999999,1,1 +425,924,1981,0,2,0,970,0,11,0,0.892167,4,4 +426,924,1982,0,3,0,1189,0,11,0,0.8500413,9,1 +427,924,1983,0,4,0,2136,0,11,0,0.5909376999999999,16,1 +428,924,1984,0,5,0,2520,0,11,0,1.2029729999999998,25,3 +429,924,1985,0,6,0,2284,0,11,0,1.554618,36,3 +430,924,1986,0,7,0,2294,0,11,0,1.802116,49,3 +431,924,1987,0,8,0,2332,1,11,0,1.69793,64,4 +432,925,1980,0,2,0,2040,0,15,0,2.135247,4,1 +433,925,1981,0,3,0,2080,0,15,0,2.222542,9,1 +434,925,1982,0,4,0,2310,0,15,0,2.13567,16,1 +435,925,1983,0,5,0,2340,0,15,0,2.236236,25,1 +436,925,1984,0,6,0,2340,0,15,0,2.347523,36,1 +437,925,1985,0,7,0,2175,1,15,0,2.414448,49,1 +438,925,1986,0,8,0,2080,1,15,0,0.0494449,64,1 +439,925,1987,0,9,0,2080,1,15,0,2.623219,81,1 +440,944,1980,0,2,0,702,0,13,0,0.8193908999999999,4,4 +441,944,1981,0,3,0,1535,0,13,0,0.5895946999999999,9,4 +442,944,1982,0,4,0,2040,0,13,0,1.399767,16,4 +443,944,1983,0,5,0,2080,0,13,0,1.555511,25,4 +444,944,1984,0,6,0,2080,0,13,0,1.618008,36,4 +445,944,1985,0,7,0,1624,0,13,0,1.607972,49,1 +446,944,1986,0,8,0,1456,0,13,0,1.610093,64,4 +447,944,1987,0,9,0,2308,0,13,0,1.19745,81,4 +448,945,1980,0,1,0,1721,0,14,0,1.039625,1,7 +449,945,1981,0,2,0,2300,0,14,0,1.359861,4,4 +450,945,1982,0,3,0,2558,0,14,0,1.260502,9,4 +451,945,1983,0,4,0,2528,0,14,0,1.32271,16,1 +452,945,1984,0,5,0,2006,0,14,0,1.7187720000000002,25,1 +453,945,1985,0,6,0,3827,0,14,0,1.310399,36,1 +454,945,1986,0,7,0,3406,0,14,0,1.411625,49,1 +455,945,1987,0,8,0,3185,0,14,0,1.386204,64,1 +456,947,1980,0,3,0,2080,0,13,1,2.236457,9,6 +457,947,1981,0,4,0,2080,0,13,1,2.376693,16,5 +458,947,1982,0,5,0,2074,1,13,1,2.386539,25,5 +459,947,1983,0,6,0,2488,1,13,0,2.384628,36,1 +460,947,1984,0,7,0,2410,1,13,0,2.400285,49,1 +461,947,1985,0,8,0,2340,1,13,0,2.471379,64,6 +462,947,1986,0,9,0,2340,1,13,0,2.2641,81,4 +463,947,1987,0,10,0,2340,1,13,0,2.282292,100,4 +464,955,1980,0,4,0,2120,0,12,1,2.070805,16,1 +465,955,1981,0,5,0,2080,0,12,1,1.988927,25,4 +466,955,1982,0,6,0,2080,0,12,1,1.978185,36,5 +467,955,1983,0,7,0,2080,0,12,1,2.088315,49,6 +468,955,1984,0,8,0,2080,0,12,1,2.128834,64,6 +469,955,1985,0,9,0,2080,0,12,1,2.207794,81,6 +470,955,1986,0,10,0,1560,0,12,1,2.475409,100,5 +471,955,1987,0,11,0,2080,0,12,1,2.217754,121,5 +472,965,1980,0,5,0,2080,0,12,0,1.41754,25,4 +473,965,1981,0,6,0,2080,0,12,0,1.478102,36,4 +474,965,1982,0,7,0,2080,0,12,0,1.384884,49,4 +475,965,1983,0,8,0,2080,0,12,0,1.517771,64,7 +476,965,1984,0,9,0,2080,1,12,0,1.427654,81,7 +477,965,1985,0,10,0,2080,1,12,0,1.440539,100,4 +478,965,1986,0,11,0,2080,1,12,0,1.420472,121,4 +479,965,1987,0,12,0,2080,1,12,0,1.381506,144,4 +480,996,1980,0,2,0,3728,1,11,0,1.557643,4,5 +481,996,1981,0,3,0,3270,1,11,0,1.482438,9,7 +482,996,1982,0,4,0,2600,1,11,0,1.244216,16,5 +483,996,1983,0,5,0,2840,1,11,0,0.7208266999999999,25,5 +484,996,1984,0,6,0,3120,1,11,0,0.8070776,36,5 +485,996,1985,0,7,0,3560,1,11,0,0.8231040000000001,49,2 +486,996,1986,0,8,0,2840,1,11,0,1.109036,64,5 +487,996,1987,0,9,0,2716,1,11,0,2.238644,81,5 +488,1007,1980,0,4,0,2080,0,12,0,1.4480000000000002,16,5 +489,1007,1981,0,5,0,2080,0,12,0,1.7525389999999998,25,1 +490,1007,1982,0,6,0,2080,0,12,0,1.547403,36,5 +491,1007,1983,0,7,0,2080,0,12,0,2.043864,49,5 +492,1007,1984,0,8,0,2154,0,12,0,2.152144,64,5 +493,1007,1985,0,9,0,2100,0,12,0,2.267218,81,5 +494,1007,1986,0,10,0,2080,1,12,0,2.747343,100,2 +495,1007,1987,0,11,0,2420,1,12,0,2.57718,121,5 +496,1054,1980,0,3,0,3430,0,10,0,0.7246637,9,5 +497,1054,1981,0,4,0,1995,0,10,0,1.7942630000000002,16,5 +498,1054,1982,0,5,0,1882,0,10,0,1.161928,25,4 +499,1054,1983,0,6,0,2035,1,10,0,1.4596,36,9 +500,1054,1984,0,7,0,2501,1,10,0,1.02822,49,7 +501,1054,1985,0,8,0,3120,1,10,0,1.303338,64,8 +502,1054,1986,0,9,0,2544,1,10,0,1.6498849999999998,81,1 +503,1054,1987,0,10,0,1720,1,10,1,1.309185,100,8 +504,1064,1980,0,4,0,2530,1,12,0,1.903118,16,7 +505,1064,1981,0,5,0,2224,1,12,0,2.021071,25,4 +506,1064,1982,0,6,0,2090,1,12,0,1.895428,36,4 +507,1064,1983,0,7,0,2080,1,12,0,2.122507,49,4 +508,1064,1984,0,8,0,2080,1,12,0,1.880372,64,6 +509,1064,1985,0,9,0,2080,1,12,0,1.992477,81,4 +510,1064,1986,0,10,0,2420,1,12,0,1.964025,100,4 +511,1064,1987,0,11,0,2220,1,12,0,1.929471,121,4 +512,1081,1980,0,2,0,1118,0,10,0,1.087997,4,5 +513,1081,1981,0,3,0,1147,0,10,0,1.2491450000000002,9,5 +514,1081,1982,0,4,0,832,0,10,0,1.547403,16,4 +515,1081,1983,0,5,0,1488,0,10,0,1.351703,25,4 +516,1081,1984,0,6,0,2016,0,10,0,1.426117,36,9 +517,1081,1985,0,7,0,3171,0,10,0,1.056601,49,9 +518,1081,1986,0,8,0,3180,0,10,0,1.264223,64,2 +519,1081,1987,0,9,0,2155,0,10,0,2.00001,81,5 +520,1085,1980,0,1,0,1743,0,12,0,1.887124,1,5 +521,1085,1981,0,2,0,2182,0,12,0,1.481521,4,5 +522,1085,1982,0,3,0,2743,0,12,0,1.217642,9,5 +523,1085,1983,0,4,0,3491,0,12,0,0.7375861,16,5 +524,1085,1984,0,5,0,2891,1,12,0,1.288773,25,5 +525,1085,1985,0,6,0,2340,1,12,0,1.0735059999999998,36,5 +526,1085,1986,0,7,0,3016,1,12,0,1.317172,49,5 +527,1085,1987,0,8,0,3305,0,12,0,2.01705,64,5 +528,1091,1980,0,6,0,2591,0,9,1,1.111003,36,7 +529,1091,1981,0,7,0,2600,1,9,0,1.162093,49,7 +530,1091,1982,0,8,0,2600,1,9,1,1.061895,64,7 +531,1091,1983,0,9,0,2600,1,9,0,1.127573,81,6 +532,1091,1984,0,10,0,2555,1,9,0,1.18918,100,7 +533,1091,1985,0,11,0,2586,1,9,1,1.222795,121,7 +534,1091,1986,0,12,0,2583,1,9,0,1.164667,144,7 +535,1091,1987,0,13,0,2208,1,9,0,1.395895,169,7 +536,1094,1980,0,3,0,2080,1,12,0,1.342639,9,5 +537,1094,1981,0,4,0,1960,1,12,0,1.406497,16,5 +538,1094,1982,0,5,0,2280,1,12,0,1.529703,25,6 +539,1094,1983,0,6,0,2140,1,12,0,1.757597,36,5 +540,1094,1984,0,7,0,2080,1,12,0,1.90569,49,5 +541,1094,1985,0,8,0,2270,1,12,0,1.966232,64,5 +542,1094,1986,0,9,0,2025,1,12,0,2.140417,81,5 +543,1094,1987,0,10,0,2025,1,12,0,2.175559,100,6 +544,1096,1980,0,6,0,3000,0,11,0,1.264077,36,5 +545,1096,1981,0,7,0,3120,0,11,0,1.278081,49,8 +546,1096,1982,0,8,0,3320,0,11,0,0.999763,64,5 +547,1096,1983,0,9,0,3180,0,11,0,0.9654241,81,5 +548,1096,1984,0,10,0,3500,0,11,0,1.02862,100,5 +549,1096,1985,0,11,0,3435,0,11,0,1.012998,121,5 +550,1096,1986,0,12,0,2750,1,11,0,1.28434,144,5 +551,1096,1987,0,13,0,2960,1,11,1,1.408174,169,5 +552,1098,1980,0,1,0,1495,0,14,0,1.551968,1,1 +553,1098,1981,0,2,0,1000,0,14,0,2.128232,4,1 +554,1098,1982,0,3,0,456,0,14,0,2.757776,9,1 +555,1098,1983,0,4,0,1968,0,14,0,1.509607,16,1 +556,1098,1984,0,5,0,1920,0,14,0,1.933386,25,1 +557,1098,1985,0,6,0,1560,0,14,0,2.277676,36,1 +558,1098,1986,0,7,0,2248,0,14,0,2.2652240000000003,49,1 +559,1098,1987,0,8,0,2144,1,14,0,2.282759,64,1 +560,1102,1980,0,3,0,660,0,13,0,0.8810844999999999,9,4 +561,1102,1981,0,4,0,1820,0,13,0,2.040221,16,4 +562,1102,1982,0,5,0,2405,0,13,0,1.833003,25,3 +563,1102,1983,0,6,0,2600,0,13,0,1.7742,36,2 +564,1102,1984,0,7,0,2600,0,13,0,1.8223080000000005,49,3 +565,1102,1985,0,8,0,2180,0,13,0,2.657274,64,3 +566,1102,1986,0,9,0,2561,0,13,0,2.774627,81,2 +567,1102,1987,0,10,0,2648,0,13,0,2.851786,100,3 +568,1107,1980,0,5,0,2080,0,12,0,1.54331,25,5 +569,1107,1981,0,6,0,2080,1,12,0,1.570217,36,5 +570,1107,1982,0,7,0,2080,1,12,0,1.656602,49,5 +571,1107,1983,0,8,0,2080,1,12,0,1.660872,64,5 +572,1107,1984,0,9,0,2080,1,12,0,2.001,81,5 +573,1107,1985,0,10,0,2080,1,12,0,1.871322,100,5 +574,1107,1986,0,11,0,2080,1,12,0,1.890475,121,5 +575,1107,1987,0,12,0,2080,1,12,0,2.035432,144,5 +576,1142,1980,0,2,1,1400,0,14,0,1.413112,4,9 +577,1142,1981,0,3,1,2264,0,14,0,1.667773,9,2 +578,1142,1982,0,4,1,2310,0,14,0,1.922096,16,2 +579,1142,1983,0,5,1,2175,0,14,0,1.7413740000000002,25,2 +580,1142,1984,0,6,1,2340,0,14,0,2.01105,36,4 +581,1142,1985,0,7,1,2340,1,14,0,2.223543,49,2 +582,1142,1986,0,8,1,2748,1,14,0,2.088562,64,2 +583,1142,1987,0,9,1,2451,1,14,0,2.341308,81,2 +584,1156,1980,1,5,0,1924,0,12,0,1.302818,25,9 +585,1156,1981,1,6,0,1924,0,12,0,1.330724,36,9 +586,1156,1982,1,7,0,2050,0,12,0,1.299566,49,9 +587,1156,1983,1,8,0,2000,0,12,0,1.631099,64,9 +588,1156,1984,1,9,0,1730,0,12,0,1.659153,81,9 +589,1156,1985,1,10,0,1820,0,12,0,1.648179,100,9 +590,1156,1986,1,11,0,1960,0,12,0,1.554003,121,9 +591,1156,1987,1,12,0,1750,0,12,0,1.933748,144,9 +592,1180,1980,0,2,0,2080,0,13,0,1.853465,4,1 +593,1180,1981,0,3,0,2080,0,13,0,1.609438,9,5 +594,1180,1982,0,4,0,2080,0,13,1,1.690503,16,5 +595,1180,1983,0,5,0,2510,0,13,1,1.537495,25,5 +596,1180,1984,0,6,0,2180,1,13,0,2.041054,36,2 +597,1180,1985,0,7,0,2080,1,13,0,1.920112,49,4 +598,1180,1986,0,8,0,2080,1,13,0,2.113619,64,5 +599,1180,1987,0,9,0,2080,1,13,0,2.217754,81,4 +600,1190,1980,1,2,0,1368,0,12,0,1.510343,4,6 +601,1190,1981,1,3,0,1960,0,12,0,1.510857,9,6 +602,1190,1982,1,4,0,2080,0,12,0,1.061895,16,5 +603,1190,1983,1,5,0,2080,0,12,0,1.350717,25,6 +604,1190,1984,1,6,0,2280,0,12,0,1.216045,36,5 +605,1190,1985,1,7,0,1880,0,12,0,1.173911,49,7 +606,1190,1986,1,8,0,2080,0,12,0,1.340429,64,7 +607,1190,1987,1,9,0,2080,1,12,0,1.381506,81,6 +608,1204,1980,0,5,0,2160,0,8,0,1.622382,25,6 +609,1204,1981,0,6,0,2080,0,8,1,1.7525389999999998,36,6 +610,1204,1982,0,7,0,2080,0,8,1,1.934756,49,6 +611,1204,1983,0,8,0,2080,0,8,1,1.778595,64,6 +612,1204,1984,0,9,0,2080,0,8,1,1.868611,81,6 +613,1204,1985,0,10,0,2080,0,8,1,2.011084,100,6 +614,1204,1986,0,11,0,2080,0,8,1,2.251372,121,9 +615,1204,1987,0,12,0,2080,0,8,1,2.250544,144,1 +616,1249,1980,0,5,0,2585,0,11,0,1.530747,25,6 +617,1249,1981,0,6,0,3050,1,11,0,1.339993,36,6 +618,1249,1982,0,7,0,2460,0,11,0,1.6595689999999998,49,8 +619,1249,1983,0,8,0,2800,1,11,0,1.3834229999999998,64,6 +620,1249,1984,0,9,0,3085,1,11,0,1.511506,81,3 +621,1249,1985,0,10,0,2925,0,11,0,1.425035,100,6 +622,1249,1986,0,11,0,2188,1,11,0,1.44396,121,6 +623,1249,1987,0,12,0,2404,0,11,0,1.444379,144,5 +624,1272,1980,0,3,0,1560,1,12,0,1.750866,9,7 +625,1272,1981,0,4,0,1560,0,12,0,1.832376,16,7 +626,1272,1982,0,5,0,1560,0,12,1,1.7550419999999998,25,4 +627,1272,1983,0,6,0,1560,0,12,0,1.7821049999999998,36,4 +628,1272,1984,0,7,0,2020,0,12,0,1.7217669999999998,49,4 +629,1272,1985,0,8,0,2203,0,12,1,1.733311,64,7 +630,1272,1986,0,9,0,2104,1,12,0,1.764682,81,7 +631,1272,1987,0,10,0,2080,1,12,0,1.9075990000000005,100,7 +632,1311,1980,0,2,0,4057,0,15,0,0.5567801,4,2 +633,1311,1981,0,3,0,4732,0,15,0,1.554713,9,6 +634,1311,1982,0,4,0,4732,0,15,0,1.686834,16,1 +635,1311,1983,0,5,0,4932,0,15,0,1.644793,25,7 +636,1311,1984,0,6,0,3060,0,15,0,2.21279,36,1 +637,1311,1985,0,7,0,3860,0,15,0,1.894877,49,6 +638,1311,1986,0,8,0,4418,0,15,0,1.7910830000000002,64,6 +639,1311,1987,0,9,0,2845,0,15,0,2.058709,81,7 +640,1316,1980,0,4,0,2080,0,8,0,1.54331,16,5 +641,1316,1981,0,5,0,1920,0,8,0,1.6894810000000002,25,5 +642,1316,1982,0,6,0,1840,1,8,0,1.877644,36,5 +643,1316,1983,0,7,0,2055,1,8,0,2.589254,49,5 +644,1316,1984,0,8,0,2080,1,8,0,2.738599,64,5 +645,1316,1985,0,9,0,2310,1,8,0,1.861753,81,5 +646,1316,1986,0,10,0,2155,1,8,0,1.911142,100,5 +647,1316,1987,0,11,0,2080,1,8,0,1.9075990000000005,121,5 +648,1318,1980,0,8,0,1840,0,8,0,1.059776,64,7 +649,1318,1981,0,9,0,2028,0,8,0,1.467702,81,7 +650,1318,1982,0,10,0,2560,0,8,0,1.3397629999999998,100,8 +651,1318,1983,0,11,0,2600,0,8,0,1.294627,121,8 +652,1318,1984,0,12,0,2600,0,8,0,1.251763,144,7 +653,1318,1985,0,13,0,2318,0,8,0,1.332203,169,8 +654,1318,1986,0,14,0,2288,0,8,0,1.285941,196,7 +655,1318,1987,0,15,0,2288,0,8,0,1.286196,225,7 +656,1345,1980,0,4,0,1970,0,12,0,1.764698,16,5 +657,1345,1981,0,5,0,2310,1,12,0,-0.7239189,25,5 +658,1345,1982,0,6,0,2145,1,12,0,1.890843,36,5 +659,1345,1983,0,7,0,2080,1,12,0,2.088315,49,5 +660,1345,1984,0,8,0,2310,1,12,0,2.206275,64,5 +661,1345,1985,0,9,0,2340,1,12,0,2.159004,81,5 +662,1345,1986,0,10,0,2155,1,12,0,2.2212970000000003,100,5 +663,1345,1987,0,11,0,3790,1,12,0,1.583854,121,5 +664,1397,1980,0,5,0,2080,0,12,1,1.770083,25,6 +665,1397,1981,0,6,0,2080,0,12,1,1.601716,36,6 +666,1397,1982,0,7,0,2080,0,12,1,1.547403,49,5 +667,1397,1983,0,8,0,2080,0,12,1,1.7860349999999998,64,7 +668,1397,1984,0,9,0,2080,0,12,1,1.682546,81,6 +669,1397,1985,0,10,0,2080,0,12,1,1.7204990000000002,100,6 +670,1397,1986,0,11,0,2080,0,12,1,1.799961,121,6 +671,1397,1987,0,12,0,2080,0,12,1,1.760996,144,6 +672,1434,1980,0,2,0,2880,0,10,0,0.2062864,4,7 +673,1434,1981,0,3,0,2086,1,10,0,1.12105,9,5 +674,1434,1982,0,4,0,2284,1,10,1,1.086117,16,9 +675,1434,1983,0,5,0,2080,1,10,1,1.268915,25,9 +676,1434,1984,0,6,0,3028,1,10,1,1.099373,36,9 +677,1434,1985,0,7,0,2640,1,10,1,1.345229,49,7 +678,1434,1986,0,8,0,2080,1,10,0,1.900045,64,9 +679,1434,1987,0,9,0,2820,1,10,0,1.515392,81,9 +680,1492,1980,0,4,0,1328,0,13,0,2.036455,16,5 +681,1492,1981,0,5,0,2042,0,13,0,1.142368,25,5 +682,1492,1982,0,6,0,2008,0,13,0,1.378536,36,1 +683,1492,1983,0,7,0,2090,1,13,0,1.473754,49,1 +684,1492,1984,0,8,0,2080,0,13,0,1.474907,64,5 +685,1492,1985,0,9,0,2295,1,13,0,1.416282,81,5 +686,1492,1986,0,10,0,2220,1,13,0,1.498433,100,5 +687,1492,1987,0,11,0,2272,1,13,0,1.500853,121,5 +688,1496,1980,0,1,0,1144,0,12,1,1.178336,1,9 +689,1496,1981,0,2,0,1184,0,12,1,1.087287,4,9 +690,1496,1982,0,3,0,3432,0,12,0,0.0077342,9,5 +691,1496,1983,0,4,0,3850,0,12,0,0.7967049,16,2 +692,1496,1984,0,5,0,3470,0,12,0,1.037228,25,2 +693,1496,1985,0,6,0,3229,0,12,0,1.208374,36,2 +694,1496,1986,0,7,0,3773,0,12,0,1.204459,49,2 +695,1496,1987,0,8,0,2685,0,12,0,1.85708,64,3 +696,1506,1980,0,3,0,1670,0,12,0,0.9743966,9,5 +697,1506,1981,0,4,0,782,0,12,0,2.465104,16,5 +698,1506,1982,0,5,0,2487,0,12,0,1.055036,25,5 +699,1506,1983,0,6,0,2328,0,12,0,1.142765,36,9 +700,1506,1984,0,7,0,2540,0,12,0,1.0127469999999998,49,3 +701,1506,1985,0,8,0,2080,0,12,0,1.072815,64,6 +702,1506,1986,0,9,0,2065,0,12,0,1.059985,81,6 +703,1506,1987,0,10,0,3088,0,12,0,0.9269267,100,5 +704,1515,1980,0,2,0,2455,0,10,0,1.033779,4,3 +705,1515,1981,0,3,0,2340,0,10,1,1.292641,9,2 +706,1515,1982,0,4,0,2155,0,10,0,1.314466,16,2 +707,1515,1983,0,5,0,2489,0,10,0,1.258215,25,2 +708,1515,1984,0,6,0,2020,0,10,0,1.6472779999999998,36,6 +709,1515,1985,0,7,0,2080,0,10,0,1.7659619999999998,49,6 +710,1515,1986,0,8,0,2080,0,10,0,1.799961,64,4 +711,1515,1987,0,9,0,2500,1,10,0,1.810687,81,6 +712,1520,1980,1,5,0,2459,1,12,1,1.375923,25,6 +713,1520,1981,1,6,0,2479,1,12,1,1.353908,36,8 +714,1520,1982,1,7,0,2496,1,12,0,1.349577,49,6 +715,1520,1983,1,8,0,2457,1,12,0,1.351197,64,6 +716,1520,1984,1,9,0,2487,1,12,0,1.370306,81,6 +717,1520,1985,1,10,0,2496,1,12,0,1.401319,100,4 +718,1520,1986,1,11,0,2454,1,12,0,1.580543,121,7 +719,1520,1987,1,12,0,2481,1,12,1,1.635995,144,7 +720,1528,1980,1,4,0,1995,0,10,1,0.9788978000000002,16,9 +721,1528,1981,1,5,0,2080,0,10,0,1.2417129999999998,25,9 +722,1528,1982,1,6,0,2080,0,10,0,1.2597200000000002,36,9 +723,1528,1983,1,7,0,2080,0,10,0,1.032263,49,9 +724,1528,1984,1,8,0,1480,0,10,0,1.196194,64,9 +725,1528,1985,1,9,0,1996,0,10,0,1.168105,81,9 +726,1528,1986,1,10,0,1520,0,10,0,1.366405,100,9 +727,1528,1987,1,11,0,2360,0,10,0,1.398313,121,9 +728,1554,1980,0,2,0,2145,0,12,0,1.311867,4,6 +729,1554,1981,0,3,0,2120,1,12,0,1.222665,9,6 +730,1554,1982,0,4,0,2152,1,12,1,1.408867,16,4 +731,1554,1983,0,5,0,2268,1,12,0,1.574341,25,6 +732,1554,1984,0,6,0,2120,1,12,0,1.455859,36,5 +733,1554,1985,0,7,0,2280,1,12,0,1.874825,49,5 +734,1554,1986,0,8,0,2135,1,12,0,1.873946,64,5 +735,1554,1987,0,9,0,3060,1,12,0,1.733726,81,5 +736,1575,1980,0,3,0,2196,0,13,0,1.576051,9,3 +737,1575,1981,0,4,0,2102,1,13,0,1.742017,16,4 +738,1575,1982,0,5,0,2285,1,13,0,1.778827,25,2 +739,1575,1983,0,6,0,2135,1,13,0,1.871162,36,1 +740,1575,1984,0,7,0,3603,1,13,0,1.656396,49,4 +741,1575,1985,0,8,0,2840,1,13,0,1.78303,64,2 +742,1575,1986,0,9,0,3360,1,13,0,1.594825,81,2 +743,1575,1987,0,10,0,3465,1,13,0,1.995091,100,2 +744,1576,1980,0,2,0,2000,1,11,0,1.324701,4,5 +745,1576,1981,0,3,0,2080,1,11,0,1.347074,9,9 +746,1576,1982,0,4,0,2080,1,11,0,1.56267,16,9 +747,1576,1983,0,5,0,2230,1,11,0,3.200689,25,9 +748,1576,1984,0,6,0,2225,1,11,0,1.838301,36,5 +749,1576,1985,0,7,0,2290,0,11,0,1.8704490000000005,49,5 +750,1576,1986,0,8,0,2030,0,11,0,0.8257646999999999,64,5 +751,1576,1987,0,9,0,2215,0,11,0,1.844714,81,5 +752,1628,1980,0,3,0,2456,0,12,0,1.176473,9,6 +753,1628,1981,0,4,0,2128,0,12,0,1.324259,16,3 +754,1628,1982,0,5,0,1136,0,12,0,1.235966,25,7 +755,1628,1983,0,6,0,2048,0,12,0,1.592994,36,3 +756,1628,1984,0,7,0,2080,0,12,0,1.725366,49,9 +757,1628,1985,0,8,0,2080,0,12,0,1.820029,64,9 +758,1628,1986,0,9,0,2080,0,12,0,1.836141,81,9 +759,1628,1987,0,10,0,2080,0,12,0,1.861079,100,2 +760,1641,1980,0,4,1,2260,0,12,0,2.111691,16,2 +761,1641,1981,0,5,1,2191,1,12,0,2.1705520000000003,25,2 +762,1641,1982,0,6,1,2223,1,12,0,2.134839,36,2 +763,1641,1983,0,7,1,2196,1,12,0,2.07243,49,2 +764,1641,1984,0,8,1,2272,1,12,0,2.040541,64,2 +765,1641,1985,0,9,1,2288,1,12,0,2.018958,81,2 +766,1641,1986,0,10,1,1213,1,12,0,2.167382,100,2 +767,1641,1987,0,11,1,2250,1,12,0,1.873488,121,3 +768,1644,1980,0,1,1,1515,0,12,1,0.5609791999999999,1,2 +769,1644,1981,0,2,1,2045,0,12,0,1.546365,4,3 +770,1644,1982,0,3,1,2080,0,12,0,1.531898,9,4 +771,1644,1983,0,4,1,2080,0,12,0,1.591879,16,4 +772,1644,1984,0,5,1,2080,0,12,0,1.685168,25,1 +773,1644,1985,0,6,1,2080,0,12,0,1.648179,36,4 +774,1644,1986,0,7,1,2490,0,12,0,1.565979,49,3 +775,1644,1987,0,8,1,2415,1,12,0,2.068423,64,4 +776,1653,1980,0,2,0,1950,0,15,1,-0.3845819,4,4 +777,1653,1981,0,3,0,1820,0,15,1,1.88607,9,7 +778,1653,1982,0,4,0,2164,0,15,1,1.987385,16,4 +779,1653,1983,0,5,0,2068,0,15,1,2.136661,25,4 +780,1653,1984,0,6,0,2187,0,15,1,1.804234,36,4 +781,1653,1985,0,7,0,2810,0,15,0,2.130121,49,3 +782,1653,1986,0,8,0,2860,0,15,0,2.631413,64,3 +783,1653,1987,0,9,0,2730,0,15,0,2.793118,81,3 +784,1654,1980,0,4,0,2074,0,11,0,1.624842,16,2 +785,1654,1981,0,5,0,2144,0,11,0,1.616873,25,5 +786,1654,1982,0,6,0,1080,0,11,0,1.429619,36,5 +787,1654,1983,0,7,0,1800,0,11,0,1.73646,49,5 +788,1654,1984,0,8,0,2080,0,11,0,1.7160419999999998,64,5 +789,1654,1985,0,9,0,2080,1,11,0,1.809021,81,5 +790,1654,1986,0,10,0,2080,1,11,0,1.799961,100,5 +791,1654,1987,0,11,0,2080,1,11,0,2.183852,121,5 +792,1721,1980,0,5,1,2080,0,11,0,1.784472,25,7 +793,1721,1981,0,6,1,2080,0,11,1,1.93486,36,5 +794,1721,1982,0,7,1,2080,0,11,0,2.026976,49,5 +795,1721,1983,0,8,1,2080,0,11,0,2.1098220000000003,64,5 +796,1721,1984,0,9,1,2080,0,11,0,2.128834,81,5 +797,1721,1985,0,10,1,2080,0,11,1,2.094466,100,5 +798,1721,1986,0,11,1,2080,0,11,0,2.25672,121,5 +799,1721,1987,0,12,1,2080,0,11,0,2.910901,144,5 +800,1742,1980,0,2,0,2770,0,12,1,1.461625,4,4 +801,1742,1981,0,3,0,2230,0,12,1,1.682905,9,4 +802,1742,1982,0,4,0,2080,1,12,0,1.872825,16,5 +803,1742,1983,0,5,0,2080,1,12,0,2.043864,25,5 +804,1742,1984,0,6,0,2000,0,12,0,2.350376,36,1 +805,1742,1985,0,7,0,2080,0,12,0,2.387136,49,5 +806,1742,1986,0,8,0,2080,0,12,0,2.410871,64,5 +807,1742,1987,0,9,0,1920,0,12,0,2.480118,81,5 +808,1744,1980,0,2,0,2080,0,11,1,1.630321,4,7 +809,1744,1981,0,3,0,2080,0,11,1,1.683546,9,5 +810,1744,1982,0,4,0,1520,0,11,1,1.781017,16,5 +811,1744,1983,0,5,0,1100,0,11,1,1.3816389999999998,25,5 +812,1744,1984,0,6,0,1285,0,11,1,2.030624,36,4 +813,1744,1985,0,7,0,1989,0,11,1,1.810698,49,5 +814,1744,1986,0,8,0,2036,0,11,1,2.012398,64,9 +815,1744,1987,0,9,0,1690,0,11,1,2.320033,81,5 +816,1763,1980,0,1,1,1860,0,11,0,0.6435003,1,6 +817,1763,1981,0,2,1,1760,0,11,0,0.8979415999999999,4,9 +818,1763,1982,0,3,1,1800,0,11,1,1.278797,9,9 +819,1763,1983,0,4,1,1536,0,11,1,1.335449,16,9 +820,1763,1984,0,5,1,1064,0,11,0,1.5262,25,9 +821,1763,1985,0,6,1,760,0,11,0,1.434204,36,9 +822,1763,1986,0,7,1,2164,0,11,0,0.0603746999999999,49,9 +823,1763,1987,0,8,1,1296,0,11,0,1.393776,64,9 +824,1777,1980,0,1,0,1985,0,15,0,1.3893879999999998,1,1 +825,1777,1981,0,2,0,2080,0,15,0,1.2417129999999998,4,4 +826,1777,1982,0,3,0,2665,0,15,0,0.9859088,9,4 +827,1777,1983,0,4,0,2790,1,15,0,1.144054,16,4 +828,1777,1984,0,5,0,2540,1,15,0,1.6546009999999998,25,7 +829,1777,1985,0,6,0,2600,0,15,1,1.648179,36,1 +830,1777,1986,0,7,0,2270,0,15,1,1.33306,49,1 +831,1777,1987,0,8,0,1680,0,15,0,1.7381810000000002,64,9 +832,1843,1980,0,2,0,2080,1,15,0,2.36429,4,1 +833,1843,1981,0,3,0,2080,1,15,0,2.337618,9,2 +834,1843,1982,0,4,0,2080,1,15,0,2.41644,16,4 +835,1843,1983,0,5,0,2080,1,15,0,2.513867,25,1 +836,1843,1984,0,6,0,2080,1,15,0,2.647627,36,2 +837,1843,1985,0,7,0,2178,1,15,0,2.636213,49,1 +838,1843,1986,0,8,0,2184,1,15,0,2.718755,64,6 +839,1843,1987,0,9,0,2118,1,15,0,2.768744,81,1 +840,1891,1980,0,2,0,2080,0,12,1,0.937174,4,6 +841,1891,1981,0,3,0,1704,0,12,0,1.01883,9,6 +842,1891,1982,0,4,0,1472,0,12,0,1.119959,16,6 +843,1891,1983,0,5,0,2020,0,12,0,0.8383898000000001,25,9 +844,1891,1984,0,6,0,2000,0,12,0,1.246248,36,9 +845,1891,1985,0,7,0,2080,0,12,0,1.197978,49,9 +846,1891,1986,0,8,0,2080,0,12,0,1.253418,64,9 +847,1891,1987,0,9,0,2080,0,12,0,1.3014629999999998,81,9 +848,1895,1980,0,2,0,2115,0,13,0,1.654456,4,6 +849,1895,1981,0,3,0,2285,1,13,0,1.589548,9,6 +850,1895,1982,0,4,0,2080,1,13,1,1.7487720000000002,16,9 +851,1895,1983,0,5,0,2080,1,13,1,1.870592,25,9 +852,1895,1984,0,6,0,2080,1,13,1,2.05411,36,9 +853,1895,1985,0,7,0,2416,1,13,1,1.903898,49,9 +854,1895,1986,0,8,0,2184,1,13,1,2.083877,64,9 +855,1895,1987,0,9,0,2080,1,13,1,2.282292,81,9 +856,1899,1980,0,3,0,2080,0,12,0,1.4480000000000002,9,7 +857,1899,1981,0,4,0,2080,0,12,0,1.2417129999999998,16,4 +858,1899,1982,0,5,0,2080,1,12,0,1.380348,25,7 +859,1899,1983,0,6,0,2080,1,12,0,0.9809696,36,6 +860,1899,1984,0,7,0,2080,1,12,0,1.394864,49,6 +861,1899,1985,0,8,0,2080,1,12,0,1.401319,64,6 +862,1899,1986,0,9,0,2080,1,12,0,1.49458,81,7 +863,1899,1987,0,10,0,2120,1,12,0,1.362458,100,4 +864,1925,1980,0,2,0,2752,0,11,0,1.005991,4,2 +865,1925,1981,0,3,0,2008,0,11,0,1.63741,9,3 +866,1925,1982,0,4,0,2501,0,11,0,1.570719,16,6 +867,1925,1983,0,5,0,2265,0,11,0,1.757986,25,6 +868,1925,1984,0,6,0,2188,1,11,0,1.90386,36,5 +869,1925,1985,0,7,0,2484,1,11,0,1.833582,49,5 +870,1925,1986,0,8,0,2228,1,11,0,1.985459,64,5 +871,1925,1987,0,9,0,2904,1,11,0,1.948571,81,5 +872,1930,1980,0,2,0,907,0,11,0,1.074008,4,9 +873,1930,1981,0,3,0,1217,0,11,0,0.966762,9,6 +874,1930,1982,0,4,0,800,0,11,0,1.324259,16,6 +875,1930,1983,0,5,0,1250,0,11,0,0.560658,25,6 +876,1930,1984,0,6,0,2080,0,11,0,1.682546,36,6 +877,1930,1985,0,7,0,2080,0,11,0,1.858744,49,2 +878,1930,1986,0,8,0,2080,0,11,0,1.991017,64,2 +879,1930,1987,0,9,0,2080,1,11,0,2.148761,81,3 +880,1961,1980,0,4,0,2912,1,12,0,1.166016,16,5 +881,1961,1981,0,5,0,2610,1,12,0,1.862029,25,5 +882,1961,1982,0,6,0,2600,1,12,0,1.850352,36,6 +883,1961,1983,0,7,0,2682,1,12,0,1.834121,49,5 +884,1961,1984,0,8,0,2745,1,12,0,1.928381,64,5 +885,1961,1985,0,9,0,2630,1,12,0,1.85985,81,5 +886,1961,1986,0,10,0,2220,1,12,0,2.009259,100,5 +887,1961,1987,0,11,0,2430,1,12,0,2.298619,121,5 +888,1963,1980,0,2,0,3328,0,11,0,1.508624,4,6 +889,1963,1981,0,3,0,3016,0,11,0,1.506138,9,6 +890,1963,1982,0,4,0,1928,1,11,0,1.914808,16,6 +891,1963,1983,0,5,0,2129,1,11,0,1.819909,25,6 +892,1963,1984,0,6,0,2444,1,11,0,1.693128,36,1 +893,1963,1985,0,7,0,2639,1,11,0,1.68208,49,1 +894,1963,1986,0,8,0,2858,1,11,0,1.7158220000000002,64,6 +895,1963,1987,0,9,0,3330,1,11,0,1.747149,81,3 +896,1979,1980,0,4,0,2040,1,12,1,2.023542,16,6 +897,1979,1981,0,5,0,1880,0,12,1,2.004294,25,6 +898,1979,1982,0,6,0,760,0,12,1,1.86106,36,6 +899,1979,1983,0,7,0,1840,0,12,1,2.071156,49,6 +900,1979,1984,0,8,0,2325,1,12,1,1.995277,64,5 +901,1979,1985,0,9,0,1945,1,12,1,1.991969,81,1 +902,1979,1986,0,10,0,2000,1,12,1,2.021504,100,5 +903,1979,1987,0,11,0,2080,1,12,1,1.997938,121,6 +904,1988,1980,0,2,0,2040,0,12,0,-0.2473808,4,7 +905,1988,1981,0,3,0,2120,0,12,0,2.283537,9,6 +906,1988,1982,0,4,0,2060,0,12,1,1.2947,16,6 +907,1988,1983,0,5,0,2080,0,12,0,1.150046,25,6 +908,1988,1984,0,6,0,2180,0,12,0,1.571051,36,5 +909,1988,1985,0,7,0,2130,0,12,0,-0.742699,49,7 +910,1988,1986,0,8,0,2080,0,12,0,1.851255,64,6 +911,1988,1987,0,9,0,2480,0,12,0,1.97287,81,5 +912,2000,1980,0,3,0,2160,0,11,1,1.904956,9,6 +913,2000,1981,0,4,0,2260,0,11,0,1.879262,16,6 +914,2000,1982,0,5,0,1987,1,11,1,1.746196,25,6 +915,2000,1983,0,6,0,1620,1,11,0,2.093135,36,5 +916,2000,1984,0,7,0,3316,1,11,0,1.844764,49,6 +917,2000,1985,0,8,0,3154,1,11,0,1.678162,64,6 +918,2000,1986,0,9,0,3229,1,11,0,1.765622,81,6 +919,2000,1987,0,10,0,3288,1,11,1,1.759842,100,5 +920,2014,1980,0,2,0,920,0,12,1,2.359059,4,5 +921,2014,1981,0,3,0,1520,0,12,0,1.923095,9,3 +922,2014,1982,0,4,0,1476,0,12,0,1.404927,16,2 +923,2014,1983,0,5,0,2625,0,12,0,0.7995498999999999,25,5 +924,2014,1984,0,6,0,2255,0,12,0,1.314082,36,5 +925,2014,1985,0,7,0,2871,0,12,0,1.261348,49,6 +926,2014,1986,0,8,0,2072,0,12,0,1.498433,64,6 +927,2014,1987,0,9,0,1960,0,12,0,1.550129,81,6 +928,2025,1980,0,2,0,3010,0,13,0,1.483892,4,2 +929,2025,1981,0,3,0,3610,1,13,0,1.233989,9,9 +930,2025,1982,0,4,0,3393,1,13,0,1.532616,16,2 +931,2025,1983,0,5,0,3336,1,13,0,1.6584709999999998,25,2 +932,2025,1984,0,6,0,2502,1,13,0,1.816278,36,5 +933,2025,1985,0,7,0,2880,1,13,0,2.015903,49,6 +934,2025,1986,0,8,0,2949,1,13,0,2.3565720000000003,64,5 +935,2025,1987,0,9,0,4268,1,13,1,1.316655,81,5 +936,2038,1980,0,2,0,398,0,10,0,0.8943958000000001,4,9 +937,2038,1981,0,3,0,620,0,10,0,1.04335,9,9 +938,2038,1982,0,4,0,784,0,10,0,1.34246,16,9 +939,2038,1983,0,5,0,787,0,10,0,1.311011,25,9 +940,2038,1984,0,6,0,1067,0,10,0,1.012559,36,9 +941,2038,1985,0,7,0,1680,0,10,0,1.329874,49,4 +942,2038,1986,0,8,0,1790,0,10,0,1.838888,64,1 +943,2038,1987,0,9,0,2080,0,10,0,2.217754,81,1 +944,2075,1980,0,5,0,2140,1,12,1,2.00568,25,6 +945,2075,1981,0,6,0,1514,1,12,1,1.759997,36,6 +946,2075,1982,0,7,0,2264,1,12,1,1.873217,49,6 +947,2075,1983,0,8,0,1898,1,12,0,1.816977,64,1 +948,2075,1984,0,9,0,2480,1,12,0,1.869561,81,1 +949,2075,1985,0,10,0,2340,1,12,0,2.058447,100,6 +950,2075,1986,0,11,0,2340,1,12,0,2.2342470000000003,121,6 +951,2075,1987,0,12,0,2340,1,12,0,2.225134,144,1 +952,2101,1980,0,3,0,2080,0,12,0,2.007615,9,5 +953,2101,1981,0,4,0,2080,0,12,0,2.263364,16,5 +954,2101,1982,0,5,0,2080,0,12,0,2.24055,25,5 +955,2101,1983,0,6,0,2080,0,12,1,2.348437,36,6 +956,2101,1984,0,7,0,2080,0,12,0,2.488045,49,5 +957,2101,1985,0,8,0,2290,0,12,1,2.468286,64,5 +958,2101,1986,0,9,0,2535,1,12,1,2.346576,81,5 +959,2101,1987,0,10,0,2270,1,12,0,2.490345,100,5 +960,2106,1980,0,4,0,1655,0,12,1,1.676566,16,5 +961,2106,1981,0,5,0,2004,0,12,1,1.572434,25,7 +962,2106,1982,0,6,0,2060,0,12,1,1.764704,36,6 +963,2106,1983,0,7,0,2080,1,12,1,1.815022,49,4 +964,2106,1984,0,8,0,2080,1,12,1,1.772159,64,4 +965,2106,1985,0,9,0,2080,1,12,1,1.846004,81,4 +966,2106,1986,0,10,0,2040,1,12,1,1.845355,100,7 +967,2106,1987,0,11,0,2080,1,12,1,1.812289,121,4 +968,2107,1980,0,2,0,1210,0,10,0,1.2966,4,6 +969,2107,1981,0,3,0,1910,0,10,0,1.61466,9,6 +970,2107,1982,0,4,0,1098,0,10,1,1.250571,16,6 +971,2107,1983,0,5,0,2463,0,10,1,1.491859,25,6 +972,2107,1984,0,6,0,2080,1,10,0,1.890576,36,9 +973,2107,1985,0,7,0,2080,1,10,0,1.943643,49,9 +974,2107,1986,0,8,0,2080,1,10,0,2.054196,64,9 +975,2107,1987,0,9,0,2080,1,10,0,2.035432,81,9 +976,2108,1980,0,2,0,1938,0,12,0,1.467418,4,6 +977,2108,1981,0,3,0,2250,0,12,1,1.961658,9,6 +978,2108,1982,0,4,0,2367,1,12,1,2.072073,16,4 +979,2108,1983,0,5,0,2578,1,12,1,2.105471,25,1 +980,2108,1984,0,6,0,3010,1,12,1,2.051931,36,1 +981,2108,1985,0,7,0,2490,1,12,1,2.3332610000000003,49,1 +982,2108,1986,0,8,0,2160,1,12,1,2.471034,64,1 +983,2108,1987,0,9,0,2080,1,12,1,2.454143,81,1 +984,2147,1980,0,2,0,1898,0,11,0,-0.021081,4,9 +985,2147,1981,0,3,0,1880,0,11,0,-0.1488456,9,9 +986,2147,1982,0,4,0,1820,0,11,0,0.1806953,16,9 +987,2147,1983,0,5,0,1892,0,11,0,-0.0361545,25,2 +988,2147,1984,0,6,0,1692,0,11,0,0.3973481,36,4 +989,2147,1985,0,7,0,1916,0,11,0,0.9726213,49,4 +990,2147,1986,0,8,0,1961,0,11,0,0.5630944,64,2 +991,2147,1987,0,9,0,1938,0,11,0,0.75907,81,9 +992,2157,1980,0,5,0,2256,0,11,0,1.462084,25,5 +993,2157,1981,0,6,0,4212,1,11,0,0.3267932,36,6 +994,2157,1982,0,7,0,2156,1,11,0,1.563962,49,5 +995,2157,1983,0,8,0,2254,1,11,0,1.113193,64,5 +996,2157,1984,0,9,0,2180,1,11,1,1.209603,81,5 +997,2157,1985,0,10,0,2293,1,11,0,1.129472,100,5 +998,2157,1986,0,11,0,1880,1,11,0,1.354514,121,2 +999,2157,1987,0,12,0,2920,1,11,0,0.4922438,144,2 +1000,2163,1980,0,4,0,2328,1,12,1,2.168267,16,6 +1001,2163,1981,0,5,0,1536,1,12,1,2.483169,25,6 +1002,2163,1982,0,6,0,2080,1,12,1,1.900224,36,6 +1003,2163,1983,0,7,0,1000,1,12,1,2.60296,49,6 +1004,2163,1984,0,8,0,2248,1,12,1,2.328792,64,7 +1005,2163,1985,0,9,0,2496,1,12,1,2.189776,81,6 +1006,2163,1986,0,10,0,2496,1,12,1,2.228549,100,6 +1007,2163,1987,0,11,0,2496,1,12,1,2.323114,121,6 +1008,2173,1980,0,2,0,2080,0,12,0,1.342639,4,6 +1009,2173,1981,0,3,0,2080,0,12,0,1.29578,9,5 +1010,2173,1982,0,4,0,2080,0,12,0,1.233745,16,6 +1011,2173,1983,0,5,0,2080,1,12,0,1.204113,25,6 +1012,2173,1984,0,6,0,2080,1,12,0,1.3078530000000002,36,5 +1013,2173,1985,0,7,0,2080,1,12,0,1.4782799999999998,49,5 +1014,2173,1986,0,8,0,2080,1,12,0,1.458212,64,5 +1015,2173,1987,0,9,0,2080,1,12,0,1.6497700000000002,81,5 +1016,2180,1980,0,2,0,1887,0,10,0,1.188704,4,6 +1017,2180,1981,0,3,0,1865,0,10,0,1.485739,9,5 +1018,2180,1982,0,4,0,1991,0,10,0,1.223409,16,7 +1019,2180,1983,0,5,0,2080,0,10,0,1.6474490000000002,25,4 +1020,2180,1984,0,6,0,2080,1,10,0,1.800329,36,5 +1021,2180,1985,0,7,0,2080,1,10,0,1.871322,49,5 +1022,2180,1986,0,8,0,2120,1,10,0,1.832206,64,5 +1023,2180,1987,0,9,0,2120,1,10,0,1.975562,81,6 +1024,2183,1980,0,1,0,2210,0,13,0,1.387375,1,5 +1025,2183,1981,0,2,0,2496,0,13,0,1.464857,4,7 +1026,2183,1982,0,3,0,2104,0,13,0,1.273566,9,6 +1027,2183,1983,0,4,0,2500,1,13,0,1.443047,16,6 +1028,2183,1984,0,5,0,2600,1,13,0,1.631253,25,5 +1029,2183,1985,0,6,0,2600,1,13,0,1.948283,36,5 +1030,2183,1986,0,7,0,2190,1,13,0,2.062085,49,5 +1031,2183,1987,0,8,0,2200,1,13,0,2.1277630000000003,64,2 +1032,2216,1980,0,1,0,4264,1,12,0,1.646451,1,5 +1033,2216,1981,0,2,0,3212,1,12,0,1.094869,4,5 +1034,2216,1982,0,3,0,2040,0,12,0,2.092914,9,5 +1035,2216,1983,0,4,0,3280,0,12,0,1.387718,16,5 +1036,2216,1984,0,5,0,2210,1,12,1,1.845065,25,5 +1037,2216,1985,0,6,0,2080,1,12,0,2.171427,36,5 +1038,2216,1986,0,7,0,1840,0,12,0,2.341966,49,5 +1039,2216,1987,0,8,0,3224,1,12,0,2.015888,64,5 +1040,2220,1980,0,2,0,1250,0,14,1,1.957224,4,4 +1041,2220,1981,0,3,0,2275,0,14,1,1.7274650000000005,9,4 +1042,2220,1982,0,4,0,2400,0,14,1,2.058228,16,6 +1043,2220,1983,0,5,0,2340,1,14,0,2.390386,25,1 +1044,2220,1984,0,6,0,2340,1,14,1,2.429761,36,1 +1045,2220,1985,0,7,0,2340,0,14,0,2.629008,49,1 +1046,2220,1986,0,8,0,2545,0,14,0,2.342639,64,1 +1047,2220,1987,0,9,0,2600,1,14,0,2.400075,81,1 +1048,2227,1980,0,3,0,2080,1,12,0,1.091325,9,5 +1049,2227,1981,0,4,0,1960,1,12,0,1.445718,16,7 +1050,2227,1982,0,5,0,2080,1,12,1,1.450553,25,5 +1051,2227,1983,0,6,0,2080,1,12,0,1.47855,36,7 +1052,2227,1984,0,7,0,2080,1,12,0,1.549015,49,5 +1053,2227,1985,0,8,0,2080,1,12,0,1.4782799999999998,64,5 +1054,2227,1986,0,9,0,2080,0,12,0,1.49458,81,7 +1055,2227,1987,0,10,0,2080,1,12,1,1.589145,100,5 +1056,2264,1980,1,2,0,2000,0,12,0,1.056437,4,6 +1057,2264,1981,1,3,0,2000,0,12,0,1.029619,9,6 +1058,2264,1982,1,4,0,1224,0,12,1,1.381417,16,6 +1059,2264,1983,1,5,0,2080,0,12,1,1.437728,25,6 +1060,2264,1984,1,6,0,2080,0,12,1,1.618008,36,6 +1061,2264,1985,1,7,0,2080,0,12,0,-0.5937816999999999,49,6 +1062,2264,1986,1,8,0,2080,1,12,0,1.640534,64,6 +1063,2264,1987,1,9,0,2080,1,12,1,1.6497700000000002,81,6 +1064,2306,1980,0,3,0,1700,0,9,0,1.6497389999999998,9,7 +1065,2306,1981,0,4,0,480,1,9,0,-0.4054650999999999,16,7 +1066,2306,1982,0,5,0,1650,1,9,0,1.0058049999999998,25,6 +1067,2306,1983,0,6,0,2305,1,9,0,1.152694,36,5 +1068,2306,1984,0,7,0,2195,1,9,0,1.421093,49,5 +1069,2306,1985,0,8,0,2080,1,9,1,1.273485,64,5 +1070,2306,1986,0,9,0,1920,1,9,0,1.23815,81,5 +1071,2306,1987,0,10,0,2080,1,9,0,1.7069279999999998,100,5 +1072,2312,1980,0,2,0,2117,1,13,0,1.637382,4,4 +1073,2312,1981,0,3,0,2150,1,13,0,1.719439,9,1 +1074,2312,1982,0,4,0,2080,1,13,0,1.926892,16,1 +1075,2312,1983,0,5,0,2290,1,13,0,1.992132,25,1 +1076,2312,1984,0,6,0,2340,0,13,0,2.176565,36,1 +1077,2312,1985,0,7,0,2555,0,13,0,2.071103,49,1 +1078,2312,1986,0,8,0,2280,0,13,0,2.401301,64,2 +1079,2312,1987,0,9,0,2080,0,13,0,2.342917,81,1 +1080,2314,1980,0,5,0,2080,0,12,0,2.035786,25,5 +1081,2314,1981,0,6,0,2440,0,12,0,1.929381,36,5 +1082,2314,1982,0,7,0,3040,0,12,0,1.8988,49,5 +1083,2314,1983,0,8,0,2080,1,12,0,2.088315,64,5 +1084,2314,1984,0,9,0,2080,1,12,1,2.023473,81,5 +1085,2314,1985,0,10,0,2080,1,12,1,2.011084,100,5 +1086,2314,1986,0,11,0,2080,1,12,1,2.074398,121,5 +1087,2314,1987,0,12,0,2080,1,12,1,2.055235,144,5 +1088,2329,1980,0,1,0,1370,1,14,0,1.379098,1,6 +1089,2329,1981,0,2,0,2058,1,14,0,1.7631720000000002,4,5 +1090,2329,1982,0,3,0,1644,1,14,0,2.108061,9,5 +1091,2329,1983,0,4,0,1990,1,14,0,1.811385,16,5 +1092,2329,1984,0,5,0,2080,1,14,0,1.7431709999999998,25,5 +1093,2329,1985,0,6,0,2080,1,14,0,1.947357,36,5 +1094,2329,1986,0,7,0,2500,1,14,0,2.137336,49,5 +1095,2329,1987,0,8,0,3081,1,14,0,1.812896,64,5 +1096,2335,1980,0,5,0,1845,0,12,0,1.567888,25,3 +1097,2335,1981,0,6,0,2060,0,12,0,1.539057,36,3 +1098,2335,1982,0,7,0,2080,0,12,0,1.285038,49,3 +1099,2335,1983,0,8,0,2080,0,12,0,1.437728,64,4 +1100,2335,1984,0,9,0,2040,0,12,0,1.762589,81,4 +1101,2335,1985,0,10,0,2080,0,12,0,1.514647,100,4 +1102,2335,1986,0,11,0,2080,0,12,0,1.49458,121,2 +1103,2335,1987,0,12,0,2080,1,12,0,1.3014629999999998,144,4 +1104,2341,1980,0,2,0,2298,0,11,0,0.9020412,4,3 +1105,2341,1981,0,3,0,2448,0,11,1,1.07881,9,4 +1106,2341,1982,0,4,0,1970,0,11,1,1.562516,16,4 +1107,2341,1983,0,5,0,1824,0,11,1,1.844167,25,4 +1108,2341,1984,0,6,0,1976,0,11,1,1.90569,36,4 +1109,2341,1985,0,7,0,1976,0,11,1,2.062377,49,4 +1110,2341,1986,0,8,0,1935,0,11,1,2.166461,64,4 +1111,2341,1987,0,9,0,1924,0,11,1,2.3602540000000003,81,4 +1112,2351,1980,1,2,0,2080,0,11,0,1.224856,4,7 +1113,2351,1981,1,3,0,1728,0,11,0,0.9346399,9,6 +1114,2351,1982,1,4,0,1992,0,11,0,1.105123,16,6 +1115,2351,1983,1,5,0,1556,0,11,0,1.440295,25,7 +1116,2351,1984,1,6,0,1880,0,11,0,1.208278,36,5 +1117,2351,1985,1,7,0,2080,0,11,0,0.9550316,49,7 +1118,2351,1986,1,8,0,280,0,11,0,1.554003,64,6 +1119,2351,1987,1,9,0,2000,0,11,0,1.494835,81,5 +1120,2386,1980,0,2,1,1470,0,10,1,1.197268,4,4 +1121,2386,1981,0,3,1,1023,0,10,1,0.6295857,9,9 +1122,2386,1982,0,4,1,1753,0,10,0,0.5838036999999999,16,4 +1123,2386,1983,0,5,1,1490,0,10,0,0.9254099,25,4 +1124,2386,1984,0,6,1,2070,0,10,0,1.112002,36,4 +1125,2386,1985,0,7,1,1982,0,10,0,1.0756139999999998,49,4 +1126,2386,1986,0,8,1,2058,0,10,0,1.476225,64,4 +1127,2386,1987,0,9,1,2348,1,10,0,1.528574,81,2 +1128,2401,1980,0,5,0,2350,1,12,1,1.18669,25,7 +1129,2401,1981,0,6,0,1950,1,12,1,1.306252,36,5 +1130,2401,1982,0,7,0,1640,1,12,1,1.735641,49,6 +1131,2401,1983,0,8,0,2322,1,12,0,1.682248,64,6 +1132,2401,1984,0,9,0,2579,1,12,1,1.872978,81,5 +1133,2401,1985,0,10,0,2220,1,12,1,1.905983,100,6 +1134,2401,1986,0,11,0,1920,0,12,1,2.026608,121,6 +1135,2401,1987,0,12,0,2740,0,12,0,2.006702,144,5 +1136,2413,1980,0,4,0,2228,0,12,1,2.185739,16,4 +1137,2413,1981,0,5,0,2104,0,12,1,2.190017,25,2 +1138,2413,1982,0,6,0,2080,1,12,1,2.1892560000000003,36,5 +1139,2413,1983,0,7,0,2230,1,12,1,2.102063,49,4 +1140,2413,1984,0,8,0,2460,1,12,1,2.143362,64,4 +1141,2413,1985,0,9,0,2285,1,12,1,2.113796,81,4 +1142,2413,1986,0,10,0,2098,1,12,1,2.17911,100,7 +1143,2413,1987,0,11,0,2080,1,12,1,2.282292,121,4 +1144,2421,1980,0,3,0,2675,0,12,0,1.37874,9,8 +1145,2421,1981,0,4,0,3920,0,12,0,1.049822,16,8 +1146,2421,1982,0,5,0,3400,0,12,0,1.312425,25,8 +1147,2421,1983,0,6,0,3120,1,12,0,1.228378,36,8 +1148,2421,1984,0,7,0,3120,1,12,0,1.14355,49,8 +1149,2421,1985,0,8,0,3540,1,12,0,1.266993,64,8 +1150,2421,1986,0,9,0,4080,1,12,0,1.126232,81,8 +1151,2421,1987,0,10,0,4160,1,12,0,1.067848,100,8 +1152,2445,1980,0,4,0,1640,1,12,1,1.462528,16,7 +1153,2445,1981,0,5,0,1532,0,12,0,1.547507,25,6 +1154,2445,1982,0,6,0,2671,1,12,0,1.335058,36,4 +1155,2445,1983,0,7,0,3364,1,12,0,1.219329,49,2 +1156,2445,1984,0,8,0,1754,1,12,0,1.478322,64,2 +1157,2445,1985,0,9,0,2220,1,12,0,2.021294,81,6 +1158,2445,1986,0,10,0,2676,1,12,0,1.734704,100,6 +1159,2445,1987,0,11,0,3205,1,12,0,1.78541,121,6 +1160,2451,1980,0,2,0,2496,1,12,0,1.60215,4,2 +1161,2451,1981,0,3,0,2496,1,12,0,1.634756,9,2 +1162,2451,1982,0,4,0,2496,1,12,0,1.739294,16,2 +1163,2451,1983,0,5,0,2496,1,12,0,1.781121,25,2 +1164,2451,1984,0,6,0,2496,1,12,0,1.805087,36,2 +1165,2451,1985,0,7,0,2152,1,12,0,2.099657,49,2 +1166,2451,1986,0,8,0,2432,1,12,0,2.066472,64,2 +1167,2451,1987,0,9,0,2496,1,12,0,1.930072,81,2 +1168,2494,1980,0,4,0,1214,0,13,0,0.3398261,16,9 +1169,2494,1981,0,5,0,2080,1,13,0,0.7121954,25,9 +1170,2494,1982,0,6,0,1676,1,13,1,1.144321,36,5 +1171,2494,1983,0,7,0,2053,1,13,0,0.9807901,49,5 +1172,2494,1984,0,8,0,2570,1,13,1,1.588791,64,9 +1173,2494,1985,0,9,0,2405,1,13,1,1.82145,81,9 +1174,2494,1986,0,10,0,2135,1,13,1,1.964918,100,9 +1175,2494,1987,0,11,0,2440,1,13,1,1.989131,121,9 +1176,2508,1980,0,3,0,2080,0,13,0,1.918003,9,5 +1177,2508,1981,0,4,0,2080,1,13,0,1.847849,16,1 +1178,2508,1982,0,5,0,2080,1,13,0,1.973173,25,5 +1179,2508,1983,0,6,0,2080,1,13,0,2.101275,36,1 +1180,2508,1984,0,7,0,2080,1,13,0,2.045452,49,1 +1181,2508,1985,0,8,0,2080,1,13,0,2.110339,64,5 +1182,2508,1986,0,9,0,2300,1,13,0,2.087186,81,5 +1183,2508,1987,0,10,0,2235,1,13,0,2.0768880000000003,100,5 +1184,2535,1980,0,4,0,2318,1,12,1,1.711226,16,7 +1185,2535,1981,0,5,0,2476,1,12,1,1.6555939999999998,25,7 +1186,2535,1982,0,6,0,2128,1,12,0,1.680934,36,7 +1187,2535,1983,0,7,0,2080,1,12,0,1.562671,49,7 +1188,2535,1984,0,8,0,2080,1,12,0,1.641203,64,6 +1189,2535,1985,0,9,0,2080,1,12,0,1.53585,81,6 +1190,2535,1986,0,10,0,2080,1,12,1,1.563573,100,8 +1191,2535,1987,0,11,0,2145,1,12,0,1.618998,121,6 +1192,2540,1980,0,2,0,2399,0,10,0,0.9486405,4,8 +1193,2540,1981,0,3,0,2201,0,10,0,1.0673860000000002,9,8 +1194,2540,1982,0,4,0,1995,0,10,1,1.275469,16,6 +1195,2540,1983,0,5,0,1940,0,10,0,1.219726,25,8 +1196,2540,1984,0,6,0,2520,0,10,0,1.069442,36,5 +1197,2540,1985,0,7,0,2530,1,10,0,1.244688,49,6 +1198,2540,1986,0,8,0,2600,1,10,0,1.030274,64,6 +1199,2540,1987,0,9,0,2260,1,10,0,1.44161,81,5 +1200,2685,1980,0,2,0,2080,0,13,0,1.840042,4,1 +1201,2685,1981,0,3,0,2080,0,13,0,1.7981490000000002,9,1 +1202,2685,1982,0,4,0,2120,0,13,0,2.0988990000000003,16,1 +1203,2685,1983,0,5,0,2080,0,13,0,2.267007,25,1 +1204,2685,1984,0,6,0,2080,0,13,0,2.369424,36,1 +1205,2685,1985,0,7,0,2080,0,13,0,2.396051,49,1 +1206,2685,1986,0,8,0,2080,0,13,0,2.452835,64,1 +1207,2685,1987,0,9,0,2080,0,13,0,2.577757,81,1 +1208,2711,1980,0,2,0,2288,1,12,1,1.219387,4,6 +1209,2711,1981,0,3,0,2848,1,12,0,1.295189,9,6 +1210,2711,1982,0,4,0,3457,0,12,1,1.039369,16,6 +1211,2711,1983,0,5,0,3110,0,12,0,1.115516,25,6 +1212,2711,1984,0,6,0,2751,0,12,1,1.233051,36,6 +1213,2711,1985,0,7,0,2080,1,12,0,1.3604969999999998,49,6 +1214,2711,1986,0,8,0,2080,0,12,0,1.570747,64,6 +1215,2711,1987,0,9,0,2080,0,12,1,1.589145,81,6 +1216,2718,1980,1,3,0,2080,1,11,1,2.141147,9,6 +1217,2718,1981,1,4,0,2408,1,11,1,2.156157,16,5 +1218,2718,1982,1,5,0,2192,0,11,1,2.262211,25,6 +1219,2718,1983,1,6,0,2080,0,11,1,2.285026,36,6 +1220,2718,1984,1,7,0,2080,0,11,1,2.436318,49,6 +1221,2718,1985,1,8,0,2080,0,11,1,2.309577,64,6 +1222,2718,1986,1,9,0,2080,0,11,1,2.35203,81,6 +1223,2718,1987,1,10,0,2080,0,11,1,2.313064,100,6 +1224,2721,1980,0,6,0,2080,1,9,0,1.54331,36,7 +1225,2721,1981,0,7,0,2080,1,9,0,1.562185,49,5 +1226,2721,1982,0,8,0,1840,1,9,1,1.502951,64,5 +1227,2721,1983,0,9,0,3176,1,9,0,0.880942,81,5 +1228,2721,1984,0,10,0,2220,1,9,1,0.2311127,100,7 +1229,2721,1985,0,11,0,2440,1,9,0,1.200867,121,6 +1230,2721,1986,0,12,0,2080,1,9,0,0.9096462,144,5 +1231,2721,1987,0,13,0,1650,1,9,0,1.020701,169,6 +1232,2733,1980,1,4,0,2080,0,12,0,0.7548524,16,6 +1233,2733,1981,1,5,0,2424,0,12,0,1.088662,25,6 +1234,2733,1982,1,6,0,2496,1,12,1,1.017159,36,6 +1235,2733,1983,1,7,0,2496,1,12,0,0.9897033000000002,49,6 +1236,2733,1984,1,8,0,2496,1,12,1,1.010018,64,6 +1237,2733,1985,1,9,0,2120,1,12,0,1.053766,81,6 +1238,2733,1986,1,10,0,2626,1,12,0,0.9250136999999998,100,6 +1239,2733,1987,1,11,0,3100,1,12,0,0.9024289,121,6 +1240,2741,1980,0,5,0,2080,1,12,0,1.4480000000000002,25,6 +1241,2741,1981,0,6,0,2080,1,12,0,1.347074,36,6 +1242,2741,1982,0,7,0,2080,1,12,0,1.285038,49,6 +1243,2741,1983,0,8,0,2080,1,12,0,1.350717,64,6 +1244,2741,1984,0,9,0,2080,1,12,1,1.435686,81,6 +1245,2741,1985,0,10,0,2080,1,12,0,1.440539,100,6 +1246,2741,1986,0,11,0,2080,1,12,0,1.628111,121,6 +1247,2741,1987,0,12,0,2080,1,12,0,1.678757,144,6 +1248,2745,1980,0,3,0,1480,0,12,0,1.788325,9,2 +1249,2745,1981,0,4,0,2080,0,12,1,1.683546,16,7 +1250,2745,1982,0,5,0,2080,0,12,0,1.872825,25,4 +1251,2745,1983,0,6,0,2080,1,12,0,1.660872,36,4 +1252,2745,1984,0,7,0,2080,1,12,0,1.618008,49,4 +1253,2745,1985,0,8,0,2080,1,12,0,1.648179,64,4 +1254,2745,1986,0,9,0,2080,0,12,0,1.688736,81,4 +1255,2745,1987,0,10,0,2080,0,12,0,1.760996,100,4 +1256,2751,1980,1,4,0,2496,0,12,1,1.60215,16,5 +1257,2751,1981,1,5,0,2496,1,12,0,1.570217,25,5 +1258,2751,1982,1,6,0,2128,1,12,1,1.667689,36,5 +1259,2751,1983,1,7,0,2448,1,12,1,1.354867,49,5 +1260,2751,1984,1,8,0,2144,1,12,1,1.51871,64,5 +1261,2751,1985,1,9,0,2080,1,12,1,1.514647,81,6 +1262,2751,1986,1,10,0,2080,1,12,0,1.7458939999999998,100,5 +1263,2751,1987,1,11,0,2080,1,12,1,1.952051,121,5 +1264,2774,1980,0,3,0,2080,1,14,0,1.978628,9,5 +1265,2774,1981,0,4,0,2080,1,14,0,2.149075,16,5 +1266,2774,1982,0,5,0,1360,1,14,0,2.297708,25,5 +1267,2774,1983,0,6,0,680,1,14,0,2.085755,36,5 +1268,2774,1984,0,7,0,1728,1,14,0,2.186403,49,7 +1269,2774,1985,0,8,0,2080,1,14,0,2.011084,64,5 +1270,2774,1986,0,9,0,2080,1,14,0,2.033576,81,5 +1271,2774,1987,0,10,0,2080,1,14,0,1.9075990000000005,100,5 +1272,2801,1980,0,2,0,1313,0,10,1,1.109545,4,7 +1273,2801,1981,0,3,0,2220,1,10,0,1.281934,9,4 +1274,2801,1982,0,4,0,2575,1,10,0,1.253878,16,5 +1275,2801,1983,0,5,0,2060,0,10,0,1.265068,25,6 +1276,2801,1984,0,6,0,2080,0,10,0,1.261333,36,4 +1277,2801,1985,0,7,0,2174,1,10,0,1.273736,49,4 +1278,2801,1986,0,8,0,2100,1,10,0,1.371682,64,4 +1279,2801,1987,0,9,0,2150,1,10,1,1.524297,81,2 +1280,2813,1980,0,2,0,806,1,13,0,0.6240821,4,5 +1281,2813,1981,0,3,0,1586,1,13,0,1.261551,9,5 +1282,2813,1982,0,4,0,2215,1,13,0,1.627619,16,1 +1283,2813,1983,0,5,0,2378,1,13,0,1.62229,25,8 +1284,2813,1984,0,6,0,2352,1,13,0,1.620273,36,8 +1285,2813,1985,0,7,0,2466,1,13,0,1.595732,49,7 +1286,2813,1986,0,8,0,2496,1,13,0,1.717723,64,8 +1287,2813,1987,0,9,0,2741,1,13,0,1.631644,81,8 +1288,2833,1980,0,2,0,2470,1,12,0,1.891335,4,6 +1289,2833,1981,0,3,0,2340,1,12,0,1.788906,9,6 +1290,2833,1982,0,4,0,2340,1,12,0,1.835085,16,2 +1291,2833,1983,0,5,0,2199,1,12,0,1.887906,25,6 +1292,2833,1984,0,6,0,2316,1,12,0,1.847006,36,6 +1293,2833,1985,0,7,0,2340,1,12,0,1.888944,49,6 +1294,2833,1986,0,8,0,2130,1,12,0,1.922811,64,6 +1295,2833,1987,0,9,0,2240,1,12,0,1.833491,81,6 +1296,2839,1980,0,3,0,2080,0,13,0,1.554879,9,1 +1297,2839,1981,0,4,0,2080,0,13,0,1.6471779999999998,16,1 +1298,2839,1982,0,5,0,2080,0,13,0,1.686495,25,5 +1299,2839,1983,0,6,0,2080,0,13,0,1.6405330000000002,36,1 +1300,2839,1984,0,7,0,2080,0,13,0,1.7431709999999998,49,1 +1301,2839,1985,0,8,0,1960,0,13,0,2.026056,64,1 +1302,2839,1986,0,9,0,2080,0,13,0,1.946565,81,1 +1303,2839,1987,0,10,0,2080,0,13,0,1.973557,100,1 +1304,2842,1980,0,4,0,504,0,13,0,1.479252,16,9 +1305,2842,1981,0,5,0,2191,0,13,0,1.825712,25,4 +1306,2842,1982,0,6,0,2355,0,13,0,1.6914939999999998,36,1 +1307,2842,1983,0,7,0,2392,0,13,0,1.808792,49,1 +1308,2842,1984,0,8,0,2215,0,13,0,1.982567,64,1 +1309,2842,1985,0,9,0,1860,0,13,0,1.983114,81,4 +1310,2842,1986,0,10,0,2040,0,13,0,2.826184,100,2 +1311,2842,1987,0,11,0,2000,0,13,0,2.411125,121,3 +1312,2866,1980,0,3,0,2464,0,9,0,1.33685,9,6 +1313,2866,1981,0,4,0,2185,1,9,1,1.494379,16,6 +1314,2866,1982,0,5,0,2540,1,9,0,2.040754,25,5 +1315,2866,1983,0,6,0,2686,1,9,0,1.992973,36,6 +1316,2866,1984,0,7,0,3168,1,9,0,1.939213,49,5 +1317,2866,1985,0,8,0,3180,1,9,0,2.088663,64,5 +1318,2866,1986,0,9,0,2360,1,9,0,2.284577,81,2 +1319,2866,1987,0,10,0,3306,1,9,0,1.936704,100,7 +1320,2868,1980,0,3,0,759,0,13,1,2.293602,9,7 +1321,2868,1981,0,4,0,1855,0,13,0,1.5657370000000002,16,7 +1322,2868,1982,0,5,0,2209,0,13,0,1.812653,25,6 +1323,2868,1983,0,6,0,2296,1,13,0,1.898543,36,7 +1324,2868,1984,0,7,0,2395,1,13,0,2.007621,49,4 +1325,2868,1985,0,8,0,2218,1,13,0,2.143557,64,4 +1326,2868,1986,0,9,0,709,1,13,0,3.397526,81,2 +1327,2868,1987,0,10,0,2729,1,13,0,2.07135,100,3 +1328,2874,1980,0,4,1,727,0,9,0,0.3789327,16,7 +1329,2874,1981,0,5,1,1365,0,9,0,1.07514,25,3 +1330,2874,1982,0,6,1,1782,0,9,0,0.7465227,36,5 +1331,2874,1983,0,7,1,2184,0,9,0,1.206616,49,5 +1332,2874,1984,0,8,1,2222,0,9,0,1.185724,64,5 +1333,2874,1985,0,9,1,2236,0,9,0,1.327397,81,6 +1334,2874,1986,0,10,1,2198,0,9,0,1.198238,100,7 +1335,2874,1987,0,11,1,1744,0,9,0,1.408657,121,5 +1336,2916,1980,0,2,0,650,0,12,0,1.184034,4,6 +1337,2916,1981,0,3,0,1291,0,12,0,1.718664,9,4 +1338,2916,1982,0,4,0,2040,0,12,0,1.696498,16,4 +1339,2916,1983,0,5,0,2080,0,12,0,1.72541,25,4 +1340,2916,1984,0,6,0,1630,0,12,0,1.975124,36,4 +1341,2916,1985,0,7,0,922,0,12,0,0.9419309,49,4 +1342,2916,1986,0,8,0,2080,0,12,0,1.420472,64,4 +1343,2916,1987,0,9,0,1915,0,12,0,1.646478,81,2 +1344,2951,1980,1,6,0,1660,0,9,0,1.162724,36,6 +1345,2951,1981,1,7,0,1920,0,9,0,1.203973,49,2 +1346,2951,1982,1,8,0,2296,0,9,0,1.080877,64,6 +1347,2951,1983,1,9,0,2508,0,9,0,0.8325664,81,4 +1348,2951,1984,1,10,0,2144,0,9,0,1.182237,100,7 +1349,2951,1985,1,11,0,2080,0,9,0,1.3604969999999998,121,6 +1350,2951,1986,1,12,0,1875,0,9,0,1.357177,144,6 +1351,2951,1987,1,13,0,2080,0,9,0,1.381506,169,7 +1352,2980,1980,0,2,0,1120,1,15,0,1.666561,4,1 +1353,2980,1981,0,3,0,1890,1,15,0,1.337504,9,1 +1354,2980,1982,0,4,0,1620,1,15,0,1.3724610000000002,16,1 +1355,2980,1983,0,5,0,1356,1,15,0,1.577875,25,1 +1356,2980,1984,0,6,0,1996,1,15,0,1.114503,36,1 +1357,2980,1985,0,7,0,1800,1,15,0,1.708019,49,1 +1358,2980,1986,0,8,0,2790,1,15,0,1.800527,64,1 +1359,2980,1987,0,9,0,2600,1,15,0,1.960709,81,1 +1360,2994,1980,0,3,0,3120,0,12,0,1.304899,9,5 +1361,2994,1981,0,4,0,1930,0,12,0,1.316561,16,5 +1362,2994,1982,0,5,0,2395,1,12,0,1.7318099999999998,25,2 +1363,2994,1983,0,6,0,3000,1,12,0,1.531016,36,4 +1364,2994,1984,0,7,0,2460,1,12,0,1.920218,49,5 +1365,2994,1985,0,8,0,3485,1,12,0,1.578366,64,2 +1366,2994,1986,0,9,0,3410,1,12,0,2.050057,81,2 +1367,2994,1987,0,10,0,2910,1,12,0,1.946507,100,4 +1368,2997,1980,0,3,0,2400,0,12,0,1.400209,9,5 +1369,2997,1981,0,4,0,2345,0,12,0,1.625932,16,5 +1370,2997,1982,0,5,0,2031,0,12,0,1.907714,25,5 +1371,2997,1983,0,6,0,2481,0,12,0,1.705051,36,2 +1372,2997,1984,0,7,0,2496,0,12,0,1.818679,49,5 +1373,2997,1985,0,8,0,2582,1,12,0,1.772909,64,5 +1374,2997,1986,0,9,0,2600,1,12,0,1.723421,81,5 +1375,2997,1987,0,10,0,2600,1,12,0,2.043401,100,5 +1376,3017,1980,0,1,0,2265,0,14,1,1.458103,1,7 +1377,3017,1981,0,2,0,2202,1,14,1,1.7600790000000002,4,4 +1378,3017,1982,0,3,0,2514,1,14,1,1.788678,9,4 +1379,3017,1983,0,4,0,2436,1,14,1,2.052928,16,3 +1380,3017,1984,0,5,0,1835,1,14,0,2.436478,25,1 +1381,3017,1985,0,6,0,1485,1,14,0,2.901423,36,1 +1382,3017,1986,0,7,0,3045,1,14,0,3.07957,49,1 +1383,3017,1987,0,8,0,3000,1,14,0,2.624699,64,1 +1384,3037,1980,0,4,0,2080,0,12,1,2.068576,16,4 +1385,3037,1981,0,5,0,2080,1,12,1,2.158004,25,4 +1386,3037,1982,0,6,0,2080,1,12,1,2.201329,36,4 +1387,3037,1983,0,7,0,2080,1,12,1,2.092654,49,4 +1388,3037,1984,0,8,0,2000,1,12,1,2.475539,64,4 +1389,3037,1985,0,9,0,2429,1,12,1,2.216986,81,4 +1390,3037,1986,0,10,0,2264,1,12,1,2.267265,100,4 +1391,3037,1987,0,11,0,2156,1,12,1,2.277177,121,4 +1392,3059,1980,0,5,0,2470,0,12,1,1.863936,25,7 +1393,3059,1981,0,6,0,2858,0,12,1,1.617106,36,7 +1394,3059,1982,0,7,0,1976,0,12,1,1.86696,49,7 +1395,3059,1983,0,8,0,2456,0,12,1,1.782387,64,5 +1396,3059,1984,0,9,0,2266,1,12,1,1.868832,81,7 +1397,3059,1985,0,10,0,2449,1,12,1,1.803321,100,7 +1398,3059,1986,0,11,0,2880,1,12,1,1.6655939999999998,121,7 +1399,3059,1987,0,12,0,2860,1,12,1,1.716979,144,5 +1400,3062,1980,0,2,0,2080,0,15,0,2.141147,4,1 +1401,3062,1981,0,3,0,2080,0,15,0,2.201489,9,1 +1402,3062,1982,0,4,0,2080,0,15,0,2.181126,16,1 +1403,3062,1983,0,5,0,2080,0,15,0,2.267007,25,1 +1404,3062,1984,0,6,0,2080,0,15,0,2.421503,36,3 +1405,3062,1985,0,7,0,2080,0,15,0,2.4309380000000003,49,2 +1406,3062,1986,0,8,0,2000,0,15,0,2.583623,64,2 +1407,3062,1987,0,9,0,2080,0,15,0,2.649536,81,3 +1408,3100,1980,0,4,0,2080,1,12,0,1.515658,16,1 +1409,3100,1981,0,5,0,2512,1,12,0,1.293767,25,4 +1410,3100,1982,0,6,0,3064,1,12,0,1.367689,36,4 +1411,3100,1983,0,7,0,2458,1,12,0,1.6762130000000002,49,4 +1412,3100,1984,0,8,0,2080,1,12,1,1.975542,64,9 +1413,3100,1985,0,9,0,2080,1,12,1,2.133687,81,9 +1414,3100,1986,0,10,0,2080,1,12,1,2.113619,100,9 +1415,3100,1987,0,11,0,2080,1,12,1,2.183852,121,9 +1416,3102,1980,0,1,0,490,0,12,0,0.5911323,1,9 +1417,3102,1981,0,2,0,2410,0,12,0,0.6889892,4,7 +1418,3102,1982,0,3,0,3224,0,12,0,0.8467833,9,1 +1419,3102,1983,0,4,0,2658,0,12,0,1.192522,16,1 +1420,3102,1984,0,5,0,2940,0,12,0,0.9618112,25,1 +1421,3102,1985,0,6,0,3064,0,12,0,0.8861319,36,7 +1422,3102,1986,0,7,0,2436,0,12,0,1.000118,49,9 +1423,3102,1987,0,8,0,1364,0,12,0,1.723409,64,9 +1424,3127,1980,0,2,0,1364,0,10,0,0.4836515,4,6 +1425,3127,1981,0,3,0,1552,0,10,0,0.0304592,9,6 +1426,3127,1982,0,4,0,1890,0,10,0,0.6876821999999999,16,6 +1427,3127,1983,0,5,0,2080,0,10,0,0.675588,25,6 +1428,3127,1984,0,6,0,2198,0,10,0,0.6465371999999999,36,6 +1429,3127,1985,0,7,0,2080,0,10,0,0.9550316,49,4 +1430,3127,1986,0,8,0,2080,0,10,0,1.563573,64,6 +1431,3127,1987,0,9,0,2080,1,10,0,1.3014629999999998,81,3 +1432,3136,1980,0,3,0,2080,0,12,1,1.630321,9,9 +1433,3136,1981,0,4,0,2080,0,12,1,1.93486,16,9 +1434,3136,1982,0,5,0,2080,0,12,1,1.926892,25,9 +1435,3136,1983,0,6,0,2080,0,12,1,1.62005,36,5 +1436,3136,1984,0,7,0,2080,0,12,1,2.045452,49,4 +1437,3136,1985,0,8,0,2080,0,12,1,2.133687,64,9 +1438,3136,1986,0,9,0,2080,0,12,1,1.946565,81,7 +1439,3136,1987,0,10,0,2080,0,12,1,2.035432,100,7 +1440,3137,1980,0,2,0,1224,0,14,0,1.978243,4,3 +1441,3137,1981,0,3,0,2378,0,14,0,1.74381,9,2 +1442,3137,1982,0,4,0,2184,0,14,0,1.929395,16,2 +1443,3137,1983,0,5,0,2184,0,14,0,2.061032,25,2 +1444,3137,1984,0,6,0,1816,1,14,0,2.264565,36,2 +1445,3137,1985,0,7,0,2080,0,14,0,2.152735,49,2 +1446,3137,1986,0,8,0,2080,0,14,0,2.28951,64,2 +1447,3137,1987,0,9,0,2080,0,14,0,2.313064,81,3 +1448,3138,1980,0,4,0,1960,0,12,1,1.602733,16,6 +1449,3138,1981,0,5,0,2040,0,12,1,2.199401,25,7 +1450,3138,1982,0,6,0,1355,0,12,1,1.608244,36,7 +1451,3138,1983,0,7,0,1840,0,12,0,1.378009,49,7 +1452,3138,1984,0,8,0,2080,0,12,1,1.854397,64,7 +1453,3138,1985,0,9,0,2080,0,12,0,1.514647,81,7 +1454,3138,1986,0,10,0,1760,0,12,0,1.661634,100,5 +1455,3138,1987,0,11,0,1600,0,12,1,2.3747580000000004,121,7 +1456,3140,1980,0,3,0,2080,0,13,0,1.740221,9,4 +1457,3140,1981,0,4,0,2168,0,13,0,1.853758,16,4 +1458,3140,1982,0,5,0,2301,1,13,0,1.926,25,4 +1459,3140,1983,0,6,0,2150,1,13,0,2.010764,36,1 +1460,3140,1984,0,7,0,2280,1,13,0,2.016823,49,2 +1461,3140,1985,0,8,0,2304,1,13,0,2.046675,64,4 +1462,3140,1986,0,9,0,2436,1,13,0,2.238492,81,1 +1463,3140,1987,0,10,0,2562,1,13,0,2.245722,100,2 +1464,3193,1980,0,2,0,1876,0,11,0,0.9163473,4,9 +1465,3193,1981,0,3,0,1878,0,11,0,1.449234,9,9 +1466,3193,1982,0,4,0,2080,0,11,0,1.926892,16,5 +1467,3193,1983,0,5,0,2080,0,11,0,2.043864,25,5 +1468,3193,1984,0,6,0,2080,0,11,0,2.148636,36,5 +1469,3193,1985,0,7,0,2080,1,11,0,2.171427,49,5 +1470,3193,1986,0,8,0,2080,1,11,0,2.239913,64,1 +1471,3193,1987,0,9,0,2080,1,11,0,2.282292,81,1 +1472,3196,1980,0,3,0,2080,0,12,1,1.978628,9,2 +1473,3196,1981,0,4,0,2080,0,12,1,1.93486,16,2 +1474,3196,1982,0,5,0,2440,0,12,1,1.818555,25,4 +1475,3196,1983,0,6,0,2080,0,12,1,1.943541,36,7 +1476,3196,1984,0,7,0,2080,0,12,1,1.866637,49,2 +1477,3196,1985,0,8,0,2000,0,12,1,2.019397,64,2 +1478,3196,1986,0,9,0,3036,0,12,1,1.943085,81,7 +1479,3196,1987,0,10,0,3369,0,12,0,1.553184,100,2 +1480,3200,1980,0,7,0,1090,0,8,1,1.496353,49,6 +1481,3200,1981,0,8,0,1960,0,8,1,1.778061,64,6 +1482,3200,1982,0,9,0,2000,0,8,1,1.832702,81,7 +1483,3200,1983,0,10,0,1360,0,8,1,1.972959,100,6 +1484,3200,1984,0,11,0,1800,0,8,1,1.02862,121,4 +1485,3200,1985,0,12,0,2148,0,8,0,1.493842,144,4 +1486,3200,1986,0,13,0,2080,0,8,0,1.340429,169,5 +1487,3200,1987,0,14,0,2000,1,8,0,1.9003,196,5 +1488,3202,1980,0,3,0,2096,0,12,1,1.790994,9,6 +1489,3202,1981,0,4,0,1640,0,12,1,1.84711,16,6 +1490,3202,1982,0,5,0,2116,1,12,1,1.68065,25,6 +1491,3202,1983,0,6,0,1920,1,12,1,1.7777599999999998,36,6 +1492,3202,1984,0,7,0,2424,1,12,1,1.789453,49,6 +1493,3202,1985,0,8,0,2080,1,12,1,1.793361,64,5 +1494,3202,1986,0,9,0,1960,1,12,1,2.192091,81,6 +1495,3202,1987,0,10,0,2568,1,12,1,1.844475,100,5 +1496,3207,1980,0,4,0,2110,1,12,0,1.696044,16,4 +1497,3207,1981,0,5,0,2080,1,12,0,1.586091,25,3 +1498,3207,1982,0,6,0,2080,1,12,0,1.56267,36,3 +1499,3207,1983,0,7,0,2080,1,12,0,1.57749,49,4 +1500,3207,1984,0,8,0,2080,1,12,0,1.584106,64,4 +1501,3207,1985,0,9,0,2520,1,12,0,1.391749,81,7 +1502,3207,1986,0,10,0,2600,1,12,0,1.602793,100,3 +1503,3207,1987,0,11,0,2534,1,12,0,1.614858,121,4 +1504,3208,1980,0,3,0,2304,0,12,1,1.8763490000000005,9,5 +1505,3208,1981,0,4,0,2332,1,12,1,1.820502,16,4 +1506,3208,1982,0,5,0,1272,1,12,1,1.872126,25,9 +1507,3208,1983,0,6,0,2160,1,12,1,2.093135,36,5 +1508,3208,1984,0,7,0,2379,1,12,1,2.272153,49,5 +1509,3208,1985,0,8,0,2340,1,12,0,2.152315,64,5 +1510,3208,1986,0,9,0,2266,1,12,0,2.23561,81,9 +1511,3208,1987,0,10,0,2236,1,12,0,2.299584,100,5 +1512,3210,1980,0,2,0,1040,0,10,1,1.64685,4,9 +1513,3210,1981,0,3,0,1427,0,10,1,1.819177,9,4 +1514,3210,1982,0,4,0,1772,0,10,1,1.627619,16,4 +1515,3210,1983,0,5,0,1694,0,10,1,2.153829,25,4 +1516,3210,1984,0,6,0,886,0,10,1,2.733778,36,7 +1517,3210,1985,0,7,0,1179,0,10,1,2.333663,49,4 +1518,3210,1986,0,8,0,1960,0,10,0,1.622996,64,6 +1519,3210,1987,0,9,0,2410,0,10,0,1.7603400000000002,81,6 +1520,3215,1980,0,4,0,832,0,12,0,1.641714,16,7 +1521,3215,1981,0,5,0,1072,0,12,1,1.573733,25,7 +1522,3215,1982,0,6,0,1966,0,12,0,0.9106222,36,7 +1523,3215,1983,0,7,0,2080,0,12,1,1.150046,49,7 +1524,3215,1984,0,8,0,2080,0,12,1,1.504466,64,7 +1525,3215,1985,0,9,0,2080,0,12,1,1.574532,81,7 +1526,3215,1986,0,10,0,2080,0,12,1,1.508764,100,9 +1527,3215,1987,0,11,0,2080,0,12,1,1.678757,121,7 +1528,3219,1980,0,2,0,1300,0,11,0,1.320166,4,5 +1529,3219,1981,0,3,0,2020,0,11,1,0.6998573,9,5 +1530,3219,1982,0,4,0,2080,0,11,0,1.285038,16,5 +1531,3219,1983,0,5,0,2080,0,11,0,1.660872,25,5 +1532,3219,1984,0,6,0,2080,0,11,1,1.565942,36,5 +1533,3219,1985,0,7,0,2080,0,11,1,1.7088029999999998,49,5 +1534,3219,1986,0,8,0,2295,0,11,0,1.75289,64,5 +1535,3219,1987,0,9,0,2820,0,11,0,1.690241,81,1 +1536,3226,1980,0,3,0,1800,0,13,0,1.206918,9,1 +1537,3226,1981,0,4,0,680,0,13,0,1.443453,16,3 +1538,3226,1982,0,5,0,460,0,13,0,0.6258807,25,4 +1539,3226,1983,0,6,0,1136,0,13,0,1.860261,36,4 +1540,3226,1984,0,7,0,1921,0,13,0,2.167533,49,1 +1541,3226,1985,0,8,0,2017,0,13,0,2.273643,64,1 +1542,3226,1986,0,9,0,2010,1,13,0,2.370996,81,1 +1543,3226,1987,0,10,0,2068,1,13,0,2.333888,100,1 +1544,3235,1980,0,2,0,2000,0,12,0,1.233231,4,6 +1545,3235,1981,0,3,0,2040,1,12,0,1.315198,9,6 +1546,3235,1982,0,4,0,2728,1,12,1,1.276202,16,6 +1547,3235,1983,0,5,0,3015,1,12,0,1.5520040000000002,25,6 +1548,3235,1984,0,6,0,2700,1,12,0,1.288131,36,6 +1549,3235,1985,0,7,0,2450,1,12,0,1.276819,49,6 +1550,3235,1986,0,8,0,2130,1,12,0,1.396718,64,9 +1551,3235,1987,0,9,0,1848,1,12,0,1.768034,81,6 +1552,3239,1980,1,1,0,258,0,11,0,1.208285,1,4 +1553,3239,1981,1,2,0,228,0,11,0,1.255266,4,4 +1554,3239,1982,1,3,0,492,0,11,0,-0.2690495999999999,9,1 +1555,3239,1983,1,4,0,532,0,11,0,0.7217661999999999,16,4 +1556,3239,1984,1,5,0,676,0,11,0,0.3703599999999999,25,4 +1557,3239,1985,1,6,0,2080,0,11,0,1.015656,36,4 +1558,3239,1986,1,7,0,1840,0,11,0,1.057566,49,4 +1559,3239,1987,1,8,0,1183,0,11,1,1.683456,64,1 +1560,3271,1980,0,6,0,1720,0,7,1,1.638043,36,7 +1561,3271,1981,0,7,0,3176,0,7,1,1.106141,49,7 +1562,3271,1982,0,8,0,3056,0,7,0,1.593446,64,7 +1563,3271,1983,0,9,0,1790,0,7,0,1.58788,81,7 +1564,3271,1984,0,10,0,1890,0,7,0,2.001481,100,7 +1565,3271,1985,0,11,0,2040,0,7,0,1.728221,121,7 +1566,3271,1986,0,12,0,1720,0,7,0,1.684623,144,6 +1567,3271,1987,0,13,0,2080,0,7,0,1.930072,169,7 +1568,3275,1980,0,1,0,660,0,12,0,1.39191,1,6 +1569,3275,1981,0,2,0,648,0,12,0,1.820159,4,6 +1570,3275,1982,0,3,0,1635,0,12,0,0.6094725999999999,9,4 +1571,3275,1983,0,4,0,1970,0,12,0,1.492062,16,6 +1572,3275,1984,0,5,0,2295,0,12,0,1.807325,25,1 +1573,3275,1985,0,6,0,2125,0,12,0,1.849918,36,1 +1574,3275,1986,0,7,0,2270,0,12,0,1.986986,49,1 +1575,3275,1987,0,8,0,675,0,12,0,3.343164,64,2 +1576,3282,1980,0,3,1,455,0,10,0,1.358387,9,7 +1577,3282,1981,0,4,1,2080,0,10,0,1.376632,16,4 +1578,3282,1982,0,5,1,1920,0,10,0,1.547403,25,6 +1579,3282,1983,0,6,1,2080,0,10,1,1.843193,36,9 +1580,3282,1984,0,7,1,2080,0,10,0,2.128834,49,9 +1581,3282,1985,0,8,1,2080,0,10,0,2.053644,64,9 +1582,3282,1986,0,9,1,1905,0,10,0,1.776622,81,9 +1583,3282,1987,0,10,1,1975,0,10,1,2.4093150000000003,100,9 +1584,3289,1980,0,1,0,1833,0,15,0,1.231923,1,9 +1585,3289,1981,0,2,0,2470,0,15,1,1.175223,4,1 +1586,3289,1982,0,3,0,1820,0,15,0,1.558332,9,1 +1587,3289,1983,0,4,0,2000,1,15,0,1.631099,16,1 +1588,3289,1984,0,5,0,2008,1,15,0,1.889625,25,2 +1589,3289,1985,0,6,0,2056,1,15,0,2.065249,36,2 +1590,3289,1986,0,7,0,2080,1,15,0,2.074398,49,2 +1591,3289,1987,0,8,0,2080,1,15,0,2.282292,64,2 +1592,3290,1980,0,1,0,1052,0,12,0,1.238076,1,7 +1593,3290,1981,0,2,0,1408,0,12,0,1.306488,4,4 +1594,3290,1982,0,3,0,1322,0,12,1,1.6329,9,4 +1595,3290,1983,0,4,0,2129,0,12,0,1.5542049999999998,16,4 +1596,3290,1984,0,5,0,2470,0,12,0,1.78263,25,4 +1597,3290,1985,0,6,0,1998,1,12,0,1.960334,36,4 +1598,3290,1986,0,7,0,2024,1,12,0,2.140911,49,4 +1599,3290,1987,0,8,0,2080,1,12,0,2.217754,64,4 +1600,3307,1980,1,3,0,1844,0,14,1,1.973895,9,4 +1601,3307,1981,1,4,0,1904,0,14,1,2.390996,16,4 +1602,3307,1982,1,5,0,1924,0,14,0,2.356251,25,4 +1603,3307,1983,1,6,0,1689,0,14,1,2.56225,36,4 +1604,3307,1984,1,7,0,1754,0,14,1,2.635775,49,4 +1605,3307,1985,1,8,0,2020,0,14,1,2.64253,64,4 +1606,3307,1986,1,9,0,2080,0,14,1,2.806766,81,3 +1607,3307,1987,1,10,0,1912,0,14,1,2.812798,100,4 +1608,3333,1980,0,1,0,1578,0,12,0,0.5202364,1,7 +1609,3333,1981,0,2,0,2250,0,12,0,0.0578495,4,9 +1610,3333,1982,0,3,0,2116,0,12,0,1.111225,9,9 +1611,3333,1983,0,4,0,2080,0,12,0,1.182083,16,9 +1612,3333,1984,0,5,0,2080,0,12,0,1.318163,25,9 +1613,3333,1985,0,6,0,2120,0,12,0,1.341448,36,9 +1614,3333,1986,0,7,0,1024,0,12,0,2.040712,49,9 +1615,3333,1987,0,8,0,1296,1,12,0,1.81537,64,9 +1616,3353,1980,0,3,0,1824,0,10,0,1.356192,9,9 +1617,3353,1981,0,4,0,1900,0,10,0,1.080913,16,6 +1618,3353,1982,0,5,0,1218,0,10,0,0.6162232,25,7 +1619,3353,1983,0,6,0,1772,0,10,0,0.9848826,36,7 +1620,3353,1984,0,7,0,2360,0,10,0,0.7715383000000001,49,6 +1621,3353,1985,0,8,0,2016,0,10,0,1.2094280000000002,64,6 +1622,3353,1986,0,9,0,1200,0,10,0,2.044626,81,6 +1623,3353,1987,0,10,0,2204,0,10,0,1.6490220000000002,100,6 +1624,3380,1980,0,2,0,1990,0,12,0,1.451411,4,6 +1625,3380,1981,0,3,0,2317,0,12,0,1.42149,9,5 +1626,3380,1982,0,4,0,2263,0,12,0,1.565358,16,6 +1627,3380,1983,0,5,0,2372,1,12,0,1.99951,25,5 +1628,3380,1984,0,6,0,2560,1,12,0,1.722743,36,5 +1629,3380,1985,0,7,0,2516,1,12,0,1.820782,49,5 +1630,3380,1986,0,8,0,2576,1,12,0,2.04285,64,6 +1631,3380,1987,0,9,0,2765,1,12,0,1.933081,81,6 +1632,3381,1980,0,2,0,2205,0,10,0,1.227121,4,5 +1633,3381,1981,0,3,0,2340,0,10,0,1.529395,9,6 +1634,3381,1982,0,4,0,2120,0,10,0,1.735681,16,6 +1635,3381,1983,0,5,0,2290,0,10,0,1.741438,25,6 +1636,3381,1984,0,6,0,2340,1,10,0,1.949175,36,5 +1637,3381,1985,0,7,0,2340,1,10,0,2.175534,49,6 +1638,3381,1986,0,8,0,2340,1,10,0,1.976418,64,5 +1639,3381,1987,0,9,0,2340,1,10,0,2.099971,81,5 +1640,3389,1980,0,3,0,3307,0,12,0,1.572113,9,2 +1641,3389,1981,0,4,0,2264,0,12,0,2.21782,16,9 +1642,3389,1982,0,5,0,3372,0,12,0,0.9842217,25,9 +1643,3389,1983,0,6,0,2382,0,12,0,1.302155,36,3 +1644,3389,1984,0,7,0,2210,1,12,0,1.845065,49,2 +1645,3389,1985,0,8,0,2500,1,12,0,1.910543,64,2 +1646,3389,1986,0,9,0,2600,1,12,0,2.3212580000000003,81,2 +1647,3389,1987,0,10,0,2600,1,12,0,2.464614,100,2 +1648,3394,1980,1,2,0,1880,0,15,0,1.934358,4,7 +1649,3394,1981,1,3,0,2080,0,15,0,2.040221,9,9 +1650,3394,1982,1,4,0,2080,0,15,0,1.978185,16,9 +1651,3394,1983,1,5,0,2080,0,15,0,2.020874,25,9 +1652,3394,1984,1,6,0,2080,1,15,0,2.168054,36,9 +1653,3394,1985,1,7,0,2080,1,15,0,2.094466,49,9 +1654,3394,1986,1,8,0,1980,1,15,0,1.578942,64,4 +1655,3394,1987,1,9,0,1980,1,15,0,1.168413,81,2 +1656,3401,1980,0,2,0,2080,0,11,0,1.18012,4,2 +1657,3401,1981,0,3,0,1852,0,11,0,0.9523498,9,2 +1658,3401,1982,0,4,0,2252,0,11,0,1.387909,16,6 +1659,3401,1983,0,5,0,2688,1,11,0,1.468981,25,5 +1660,3401,1984,0,6,0,2640,1,11,0,1.929643,36,5 +1661,3401,1985,0,7,0,2274,1,11,0,2.044514,49,7 +1662,3401,1986,0,8,0,2114,1,11,0,1.883831,64,5 +1663,3401,1987,0,9,0,2080,1,11,0,2.112393,81,5 +1664,3414,1980,0,1,0,2090,0,16,0,1.337843,1,6 +1665,3414,1981,0,2,0,2110,0,16,0,2.208222,4,5 +1666,3414,1982,0,3,0,2550,0,16,0,1.997604,9,1 +1667,3414,1983,0,4,0,2710,0,16,0,2.055537,16,6 +1668,3414,1984,0,5,0,1965,0,16,0,1.873734,25,5 +1669,3414,1985,0,6,0,2444,1,16,0,2.010159,36,5 +1670,3414,1986,0,7,0,2255,1,16,0,2.032837,49,1 +1671,3414,1987,0,8,0,2340,1,16,0,2.195281,64,1 +1672,3420,1980,0,2,0,1802,0,13,0,2.122098,4,9 +1673,3420,1981,0,3,0,1040,0,13,0,0.6539265000000001,9,9 +1674,3420,1982,0,4,0,1854,0,13,0,1.582382,16,9 +1675,3420,1983,0,5,0,1920,0,13,0,1.335449,25,9 +1676,3420,1984,0,6,0,2560,0,13,0,1.921194,36,9 +1677,3420,1985,0,7,0,1886,0,13,0,0.7652591999999999,49,9 +1678,3420,1986,0,8,0,2130,0,13,0,1.539819,64,3 +1679,3420,1987,0,9,0,2080,0,13,0,2.035432,81,9 +1680,3440,1980,0,2,0,1370,0,11,0,0.2561188,4,7 +1681,3440,1981,0,3,0,1410,0,11,0,-1.25988,9,6 +1682,3440,1982,0,4,0,2080,1,11,1,1.547403,16,9 +1683,3440,1983,0,5,0,2080,1,11,1,1.591879,25,9 +1684,3440,1984,0,6,0,2000,1,11,1,1.657229,36,9 +1685,3440,1985,0,7,0,2080,1,11,1,1.58364,49,9 +1686,3440,1986,0,8,0,2080,0,11,0,1.596362,64,9 +1687,3440,1987,0,9,0,2080,1,11,1,1.524607,81,9 +1688,3461,1980,0,2,0,1345,0,11,0,1.190826,4,9 +1689,3461,1981,0,3,0,1950,0,11,0,1.5728799999999998,9,4 +1690,3461,1982,0,4,0,2238,0,11,0,2.167335,16,9 +1691,3461,1983,0,5,0,2786,0,11,0,1.859256,25,4 +1692,3461,1984,0,6,0,2738,0,11,0,2.036295,36,9 +1693,3461,1985,0,7,0,2544,0,11,0,2.139956,49,9 +1694,3461,1986,0,8,0,2361,0,11,0,2.194541,64,9 +1695,3461,1987,0,9,0,2235,0,11,0,2.0768880000000003,81,9 +1696,3468,1980,0,1,0,1712,0,14,0,1.601883,1,2 +1697,3468,1981,0,2,0,1979,0,14,0,1.376647,4,4 +1698,3468,1982,0,3,0,2050,0,14,0,1.348356,9,9 +1699,3468,1983,0,4,0,2120,0,14,0,1.216156,16,2 +1700,3468,1984,0,5,0,2255,0,14,0,1.253978,25,1 +1701,3468,1985,0,6,0,2144,0,14,0,1.505544,36,1 +1702,3468,1986,0,7,0,2330,0,14,0,1.527033,49,4 +1703,3468,1987,0,8,0,2682,0,14,0,1.697856,64,2 +1704,3482,1980,0,3,0,2312,0,13,0,2.130712,9,5 +1705,3482,1981,0,4,0,2160,0,13,0,2.002481,16,5 +1706,3482,1982,0,5,0,2080,0,13,0,2.160507,25,5 +1707,3482,1983,0,6,0,2720,0,13,0,1.980394,36,1 +1708,3482,1984,0,7,0,2664,0,13,0,2.159004,49,1 +1709,3482,1985,0,8,0,2152,0,13,0,2.2427580000000003,64,5 +1710,3482,1986,0,9,0,2080,0,13,0,2.3212580000000003,81,5 +1711,3482,1987,0,10,0,1440,1,13,0,2.551577,100,5 +1712,3495,1980,0,5,0,2080,0,12,1,1.679111,25,6 +1713,3495,1981,0,6,0,2000,0,12,1,1.534714,36,6 +1714,3495,1982,0,7,0,1880,0,12,1,1.660047,49,6 +1715,3495,1983,0,8,0,2080,0,12,1,1.7000919999999995,64,6 +1716,3495,1984,0,9,0,1600,0,12,1,1.48644,81,6 +1717,3495,1985,0,10,0,1885,0,12,1,1.68208,100,6 +1718,3495,1986,0,11,0,2264,1,12,0,1.478807,121,7 +1719,3495,1987,0,12,0,2305,1,12,1,1.547057,144,4 +1720,3503,1980,0,4,0,2080,0,12,1,2.165839,16,5 +1721,3503,1981,0,5,0,2080,0,12,1,2.089011,25,1 +1722,3503,1982,0,6,0,2080,0,12,1,2.126562,36,5 +1723,3503,1983,0,7,0,2080,0,12,1,2.130875,49,5 +1724,3503,1984,0,8,0,2080,0,12,1,2.128834,64,6 +1725,3503,1985,0,9,0,2080,0,12,1,2.094466,81,5 +1726,3503,1986,0,10,0,2080,1,12,1,2.074398,100,1 +1727,3503,1987,0,11,0,2080,1,12,0,2.035432,121,1 +1728,3525,1980,0,1,0,941,0,14,1,0.9318463,1,9 +1729,3525,1981,0,2,0,790,0,14,0,1.958489,4,9 +1730,3525,1982,0,3,0,1400,0,14,0,1.7392029999999998,9,4 +1731,3525,1983,0,4,0,2010,0,14,0,1.877426,16,4 +1732,3525,1984,0,5,0,1560,0,14,0,2.529844,25,3 +1733,3525,1985,0,6,0,880,0,14,0,3.449363,36,3 +1734,3525,1986,0,7,0,1702,0,14,0,2.862749,49,2 +1735,3525,1987,0,8,0,1560,0,14,0,3.016262,64,1 +1736,3526,1980,0,4,0,2080,0,12,0,1.710364,16,6 +1737,3526,1981,0,5,0,2080,1,12,0,1.609438,25,6 +1738,3526,1982,0,6,0,2080,1,12,0,1.592523,36,6 +1739,3526,1983,0,7,0,2080,1,12,0,1.591879,49,6 +1740,3526,1984,0,8,0,1880,1,12,1,1.692075,64,1 +1741,3526,1985,0,9,0,2080,1,12,1,1.871322,81,9 +1742,3526,1986,0,10,0,2080,1,12,1,1.851255,100,9 +1743,3526,1987,0,11,0,2080,1,12,1,1.952051,121,9 +1744,3538,1980,1,5,0,2080,1,12,1,2.063185,25,7 +1745,3538,1981,1,6,0,2080,1,12,1,2.040221,36,2 +1746,3538,1982,1,7,0,2080,1,12,1,2.201329,49,2 +1747,3538,1983,1,8,0,2080,1,12,1,2.066337,64,7 +1748,3538,1984,1,9,0,2080,1,12,1,1.978011,81,4 +1749,3538,1985,1,10,0,2120,1,12,1,1.924595,100,4 +1750,3538,1986,1,11,0,1898,0,12,1,2.149836,121,7 +1751,3538,1987,1,12,0,2080,0,12,0,1.921143,144,2 +1752,3563,1980,0,3,0,2080,0,11,1,1.671143,9,6 +1753,3563,1981,0,4,0,2080,0,11,1,1.609438,16,6 +1754,3563,1982,0,5,0,1520,0,11,0,1.821839,25,6 +1755,3563,1983,0,6,0,2080,0,11,0,1.843193,36,6 +1756,3563,1984,0,7,0,2080,1,11,1,1.931699,49,6 +1757,3563,1985,0,8,0,1800,1,11,1,1.943333,64,6 +1758,3563,1986,0,9,0,2432,1,11,0,1.901923,81,6 +1759,3563,1987,0,10,0,2216,1,11,1,2.001267,100,6 +1760,3575,1980,0,4,0,2110,0,12,0,1.964308,16,6 +1761,3575,1981,0,5,0,2080,1,12,0,2.064914,25,6 +1762,3575,1982,0,6,0,2080,1,12,0,2.026976,36,6 +1763,3575,1983,0,7,0,2080,1,12,0,2.088315,49,6 +1764,3575,1984,0,8,0,2080,1,12,0,2.088012,64,6 +1765,3575,1985,0,9,0,2080,1,12,0,2.207794,81,6 +1766,3575,1986,0,10,0,2080,1,12,0,2.187727,100,6 +1767,3575,1987,0,11,0,2080,1,12,0,2.148761,121,6 +1768,3580,1980,0,2,0,2090,0,12,0,1.443203,4,4 +1769,3580,1981,0,3,0,2424,0,12,0,1.417166,9,4 +1770,3580,1982,0,4,0,2160,0,12,0,1.6527630000000002,16,4 +1771,3580,1983,0,5,0,2080,0,12,0,1.693661,25,4 +1772,3580,1984,0,6,0,2080,0,12,0,1.682546,36,4 +1773,3580,1985,0,7,0,2080,0,12,0,1.678223,49,7 +1774,3580,1986,0,8,0,1505,0,12,0,1.481683,64,4 +1775,3580,1987,0,9,0,2058,1,12,0,1.43726,81,5 +1776,3581,1980,0,2,0,373,0,14,0,1.126323,4,2 +1777,3581,1981,0,3,0,635,0,14,0,0.2309867,9,5 +1778,3581,1982,0,4,0,1800,0,14,0,2.227127,16,4 +1779,3581,1983,0,5,0,2080,0,14,0,2.171697,25,6 +1780,3581,1984,0,6,0,2194,1,14,0,2.220441,36,1 +1781,3581,1985,0,7,0,2288,1,14,0,2.181477,49,5 +1782,3581,1986,0,8,0,2080,1,14,0,2.439041,64,1 +1783,3581,1987,0,9,0,2080,1,14,0,2.510423,81,6 +1784,3589,1980,0,2,0,2496,1,12,1,1.671143,4,6 +1785,3589,1981,0,3,0,2112,1,12,1,2.024953,9,6 +1786,3589,1982,0,4,0,2448,1,12,1,-0.4873031,16,6 +1787,3589,1983,0,5,0,2496,1,12,1,1.861542,25,7 +1788,3589,1984,0,6,0,2400,1,12,1,1.944911,36,6 +1789,3589,1985,0,7,0,2496,1,12,1,1.871322,49,6 +1790,3589,1986,0,8,0,2496,1,12,1,1.942237,64,6 +1791,3589,1987,0,9,0,2496,1,12,1,2.03343,81,6 +1792,3591,1980,0,2,0,2168,0,12,0,1.11888,4,7 +1793,3591,1981,0,3,0,2365,0,12,0,1.83924,9,5 +1794,3591,1982,0,4,0,2496,1,12,1,1.892764,16,5 +1795,3591,1983,0,5,0,2496,1,12,1,1.957348,25,7 +1796,3591,1984,0,6,0,2136,1,12,1,2.032702,36,7 +1797,3591,1985,0,7,0,1942,1,12,1,2.188393,49,5 +1798,3591,1986,0,8,0,1924,0,12,1,2.303775,64,5 +1799,3591,1987,0,9,0,1924,0,12,1,2.277212,81,5 +1800,3598,1980,0,3,0,2864,0,12,0,1.7669979999999998,9,5 +1801,3598,1981,0,4,0,2560,0,12,0,1.801297,16,6 +1802,3598,1982,0,5,0,2496,0,12,0,1.925883,25,5 +1803,3598,1983,0,6,0,2496,0,12,0,2.043864,36,5 +1804,3598,1984,0,7,0,2244,0,12,0,2.129902,49,6 +1805,3598,1985,0,8,0,2184,1,12,0,2.159004,64,6 +1806,3598,1986,0,9,0,2436,1,12,0,2.223894,81,6 +1807,3598,1987,0,10,0,2496,1,12,1,2.130743,100,5 +1808,3602,1980,0,5,0,2608,0,12,1,2.010241,25,6 +1809,3602,1981,0,6,0,2144,0,12,1,2.072186,36,6 +1810,3602,1982,0,7,0,1880,0,12,0,2.261603,49,5 +1811,3602,1983,0,8,0,2080,1,12,1,2.210918,64,5 +1812,3602,1984,0,9,0,2080,1,12,1,2.242162,81,1 +1813,3602,1985,0,10,0,2408,1,12,1,2.080082,100,5 +1814,3602,1986,0,11,0,2496,1,12,0,2.138937,121,6 +1815,3602,1987,0,12,0,2496,1,12,1,2.1605950000000003,144,1 +1816,3607,1980,0,7,0,893,0,10,0,0.9072418,49,6 +1817,3607,1981,0,8,0,3712,0,10,0,0.0747235,64,1 +1818,3607,1982,0,9,0,2660,0,10,0,0.1715795,81,1 +1819,3607,1983,0,10,0,990,0,10,0,0.9480026,100,1 +1820,3607,1984,0,11,0,1025,0,10,0,1.227071,121,1 +1821,3607,1985,0,12,0,1530,0,10,0,0.4354531,144,1 +1822,3607,1986,0,13,0,1818,0,10,0,0.6388119999999999,169,1 +1823,3607,1987,0,14,0,714,0,10,0,1.677556,196,1 +1824,3621,1980,0,4,0,1860,0,12,0,1.508498,16,6 +1825,3621,1981,0,5,0,2050,0,12,1,1.831605,25,6 +1826,3621,1982,0,6,0,2000,0,12,1,1.50658,36,6 +1827,3621,1983,0,7,0,2570,0,12,1,1.631655,49,6 +1828,3621,1984,0,8,0,1790,0,12,1,1.545017,64,6 +1829,3621,1985,0,9,0,2080,0,12,1,1.820029,81,7 +1830,3621,1986,0,10,0,2295,0,12,1,1.6419580000000005,100,6 +1831,3621,1987,0,11,0,2200,0,12,0,1.688991,121,7 +1832,3628,1980,0,3,0,2384,1,14,0,1.842216,9,4 +1833,3628,1981,0,4,0,2960,1,14,0,1.73619,16,1 +1834,3628,1982,0,5,0,2690,1,14,0,2.291992,25,5 +1835,3628,1983,0,6,0,3020,1,14,0,1.838029,36,2 +1836,3628,1984,0,7,0,2920,1,14,0,2.331942,49,4 +1837,3628,1985,0,8,0,2740,1,14,0,2.288879,64,2 +1838,3628,1986,0,9,0,2809,1,14,0,2.510144,81,5 +1839,3628,1987,0,10,0,2827,1,14,0,2.4609520000000003,100,2 +1840,3653,1980,0,2,0,2414,1,12,0,1.670646,4,2 +1841,3653,1981,0,3,0,2485,1,12,0,1.939277,9,2 +1842,3653,1982,0,4,0,2324,1,12,0,2.049585,16,2 +1843,3653,1983,0,5,0,2288,1,12,0,2.010247,25,2 +1844,3653,1984,0,6,0,2288,1,12,0,2.091792,36,2 +1845,3653,1985,0,7,0,2546,0,12,0,2.023339,49,2 +1846,3653,1986,0,8,0,2296,0,12,0,1.975598,64,2 +1847,3653,1987,0,9,0,2496,1,12,0,1.853111,81,2 +1848,3706,1980,0,4,0,2322,0,13,0,1.674411,16,1 +1849,3706,1981,0,5,0,2000,0,13,0,1.791759,25,5 +1850,3706,1982,0,6,0,2305,0,13,0,1.518798,36,3 +1851,3706,1983,0,7,0,2340,0,13,0,1.72541,49,2 +1852,3706,1984,0,8,0,2340,0,13,0,1.648645,64,2 +1853,3706,1985,0,9,0,2170,0,13,0,1.77767,81,1 +1854,3706,1986,0,10,0,2080,0,13,0,1.773293,100,4 +1855,3706,1987,0,11,0,2080,1,13,0,1.812289,121,4 +1856,3707,1980,0,2,0,1600,0,13,0,-1.103047,4,4 +1857,3707,1981,0,3,0,1985,1,13,0,1.863826,9,2 +1858,3707,1982,0,4,0,2628,1,13,0,1.74433,16,3 +1859,3707,1983,0,5,0,2206,1,13,0,2.112884,25,3 +1860,3707,1984,0,6,0,1920,1,13,0,2.081043,36,3 +1861,3707,1985,0,7,0,2080,1,13,0,2.401951,49,3 +1862,3707,1986,0,8,0,2080,1,13,0,2.493109,64,3 +1863,3707,1987,0,9,0,2080,1,13,0,2.72858,81,2 +1864,3708,1980,0,1,0,2143,0,12,0,1.680525,1,4 +1865,3708,1981,0,2,0,2695,0,12,0,1.703229,4,6 +1866,3708,1982,0,3,0,2664,0,12,1,1.6688490000000002,9,6 +1867,3708,1983,0,4,0,2414,0,12,1,2.018772,16,6 +1868,3708,1984,0,5,0,2495,0,12,1,2.023874,25,6 +1869,3708,1985,0,6,0,2080,0,12,1,2.122081,36,6 +1870,3708,1986,0,7,0,2120,0,12,1,2.014528,49,6 +1871,3708,1987,0,8,0,2080,0,12,1,2.148761,64,9 +1872,3743,1980,0,1,0,504,0,11,0,1.256109,1,5 +1873,3743,1981,0,2,0,1150,0,11,0,1.716536,4,6 +1874,3743,1982,0,3,0,1345,0,11,0,1.721012,9,2 +1875,3743,1983,0,4,0,2375,0,11,0,1.764631,16,5 +1876,3743,1984,0,5,0,2405,1,11,0,2.14747,25,1 +1877,3743,1985,0,6,0,2634,1,11,0,2.089442,36,1 +1878,3743,1986,0,7,0,2936,1,11,0,2.148428,49,1 +1879,3743,1987,0,8,0,2790,1,11,0,2.160469,64,2 +1880,3777,1980,0,2,0,2080,1,12,1,1.948775,4,7 +1881,3777,1981,0,3,0,2080,1,12,1,2.040221,9,7 +1882,3777,1982,0,4,0,2080,1,12,1,2.066517,16,4 +1883,3777,1983,0,5,0,2080,1,12,1,2.210918,25,4 +1884,3777,1984,0,6,0,2080,1,12,1,2.084045,36,2 +1885,3777,1985,0,7,0,2080,1,12,1,2.094466,49,2 +1886,3777,1986,0,8,0,2285,1,12,1,1.9804,64,2 +1887,3777,1987,0,9,0,2505,1,12,1,1.997931,81,2 +1888,3831,1980,0,3,0,1872,0,11,0,1.173124,9,9 +1889,3831,1981,0,4,0,1626,0,11,0,1.318882,16,9 +1890,3831,1982,0,5,0,1882,0,11,0,1.480381,25,9 +1891,3831,1983,0,6,0,2035,0,11,0,1.613751,36,9 +1892,3831,1984,0,7,0,2158,0,11,0,1.40684,49,9 +1893,3831,1985,0,8,0,2184,1,11,0,1.391749,64,9 +1894,3831,1986,0,9,0,2184,1,11,0,1.291639,81,9 +1895,3831,1987,0,10,0,2184,1,11,0,1.332716,100,9 +1896,3844,1980,0,3,0,2515,0,11,0,1.440416,9,6 +1897,3844,1981,0,4,0,2140,0,11,0,1.413946,16,1 +1898,3844,1982,0,5,0,2080,0,11,0,1.547403,25,4 +1899,3844,1983,0,6,0,2080,0,11,0,1.768829,36,4 +1900,3844,1984,0,7,0,2080,0,11,0,1.766428,49,4 +1901,3844,1985,0,8,0,2080,0,11,0,1.871322,64,4 +1902,3844,1986,0,9,0,3000,0,11,0,1.710272,81,2 +1903,3844,1987,0,10,0,2100,0,11,0,1.610347,100,2 +1904,3847,1980,0,3,0,1960,0,12,1,2.24936,9,5 +1905,3847,1981,0,4,0,2040,0,12,1,2.359744,16,5 +1906,3847,1982,0,5,0,1000,1,12,1,2.27977,25,5 +1907,3847,1983,0,6,0,2080,1,12,1,2.320117,36,5 +1908,3847,1984,0,7,0,2080,1,12,1,2.304466,49,5 +1909,3847,1985,0,8,0,2080,1,12,1,2.401951,64,5 +1910,3847,1986,0,9,0,2080,1,12,1,2.439041,81,5 +1911,3847,1987,0,10,0,2080,1,12,1,2.454143,100,5 +1912,3848,1980,0,2,0,960,0,12,0,1.998046,4,4 +1913,3848,1981,0,3,0,1265,0,12,0,1.89316,9,4 +1914,3848,1982,0,4,0,2005,0,12,0,1.85239,16,4 +1915,3848,1983,0,5,0,2310,0,12,0,1.62053,25,4 +1916,3848,1984,0,6,0,2565,0,12,0,1.996204,36,4 +1917,3848,1985,0,7,0,3050,0,12,0,1.583859,49,2 +1918,3848,1986,0,8,0,2710,1,12,0,1.849038,64,2 +1919,3848,1987,0,9,0,2600,1,12,0,2.059149,81,2 +1920,3882,1980,0,1,0,1465,0,15,1,0.5945394,1,9 +1921,3882,1981,0,2,0,1390,0,15,0,0.546165,4,9 +1922,3882,1982,0,3,0,870,0,15,0,0.9526954,9,1 +1923,3882,1983,0,4,0,2025,0,15,0,0.7713791,16,7 +1924,3882,1984,0,5,0,1840,0,15,0,2.028292,25,1 +1925,3882,1985,0,6,0,1515,0,15,0,1.965131,36,2 +1926,3882,1986,0,7,0,1970,0,15,0,1.905589,49,1 +1927,3882,1987,0,8,0,3040,0,15,0,1.655943,64,1 +1928,3937,1980,1,3,0,2080,0,11,0,1.4480000000000002,9,4 +1929,3937,1981,1,4,0,2120,0,11,1,1.328025,16,6 +1930,3937,1982,1,5,0,2457,0,11,1,1.52393,25,4 +1931,3937,1983,1,6,0,2592,0,11,0,1.59496,36,4 +1932,3937,1984,1,7,0,2850,0,11,1,2.445154,49,2 +1933,3937,1985,1,8,0,3048,1,11,0,1.7360650000000002,64,1 +1934,3937,1986,1,9,0,3325,1,11,1,1.693307,81,1 +1935,3937,1987,1,10,0,3332,1,11,1,1.982938,100,1 +1936,4000,1980,0,9,0,2120,0,7,0,1.611273,81,5 +1937,4000,1981,0,10,0,2080,0,7,0,1.7525389999999998,100,5 +1938,4000,1982,0,11,0,2120,0,7,0,1.671455,121,5 +1939,4000,1983,0,12,0,2080,1,7,0,1.437728,144,7 +1940,4000,1984,0,13,0,2080,1,7,0,1.90569,169,5 +1941,4000,1985,0,14,0,2440,1,7,0,1.42401,196,5 +1942,4000,1986,0,15,0,2290,1,7,0,1.803861,225,5 +1943,4000,1987,0,16,0,2080,1,7,0,1.524607,256,5 +1944,4004,1980,0,4,0,2080,0,12,0,2.007615,16,1 +1945,4004,1981,0,5,0,2080,0,12,0,2.179983,25,1 +1946,4004,1982,0,6,0,2080,0,12,0,1.978185,36,1 +1947,4004,1983,0,7,0,2080,0,12,0,1.948554,49,6 +1948,4004,1984,0,8,0,2080,0,12,0,2.088012,64,5 +1949,4004,1985,0,9,0,2080,0,12,0,2.094466,81,1 +1950,4004,1986,0,10,0,2080,0,12,0,1.991017,100,1 +1951,4004,1987,0,11,0,2080,1,12,0,2.035432,121,4 +1952,4025,1980,0,2,0,2080,0,9,0,0.8568673000000001,4,5 +1953,4025,1981,0,3,0,2005,0,9,0,1.332504,9,5 +1954,4025,1982,0,4,0,2120,1,9,0,1.305211,16,5 +1955,4025,1983,0,5,0,2080,1,9,0,1.214584,25,5 +1956,4025,1984,0,6,0,2610,0,9,0,1.247925,36,1 +1957,4025,1985,0,7,0,2190,0,9,1,1.463114,49,3 +1958,4025,1986,0,8,0,2080,0,9,0,1.340429,64,6 +1959,4025,1987,0,9,0,990,0,9,0,2.0438810000000003,81,5 +1960,4032,1980,0,1,0,2376,0,11,1,1.314949,1,7 +1961,4032,1981,0,2,0,2904,0,11,0,1.194173,4,4 +1962,4032,1982,0,3,0,2993,0,11,0,0.9009272,9,6 +1963,4032,1983,0,4,0,2290,0,11,0,1.254533,16,6 +1964,4032,1984,0,5,0,1800,0,11,0,1.382889,25,7 +1965,4032,1985,0,6,0,2290,0,11,0,1.612619,36,6 +1966,4032,1986,0,7,0,2555,0,11,0,1.868714,49,6 +1967,4032,1987,0,8,0,2696,1,11,0,1.815252,64,6 +1968,4046,1980,0,6,0,2520,1,9,0,1.43843,36,5 +1969,4046,1981,0,7,0,2825,1,9,0,1.541708,49,5 +1970,4046,1982,0,8,0,2545,1,9,0,1.419748,64,5 +1971,4046,1983,0,9,0,2612,1,9,0,1.6799830000000002,81,5 +1972,4046,1984,0,10,0,2964,1,9,0,1.388999,100,5 +1973,4046,1985,0,11,0,2736,1,9,0,1.434674,121,5 +1974,4046,1986,0,12,0,2931,1,9,0,1.557069,144,5 +1975,4046,1987,0,13,0,3175,1,9,0,1.484659,169,5 +1976,4088,1980,0,4,0,2441,0,13,0,2.20425,16,5 +1977,4088,1981,0,5,0,2152,0,13,0,2.411656,25,3 +1978,4088,1982,0,6,0,2080,0,13,0,2.314658,36,3 +1979,4088,1983,0,7,0,2080,0,13,0,2.508169,49,3 +1980,4088,1984,0,8,0,2080,0,13,0,2.598837,64,3 +1981,4088,1985,0,9,0,2315,0,13,0,2.700374,81,3 +1982,4088,1986,0,10,0,2135,1,13,0,2.741447,100,3 +1983,4088,1987,0,11,0,2220,1,13,0,2.66344,121,2 +1984,4091,1980,0,3,0,2112,1,12,1,2.564134,9,6 +1985,4091,1981,0,4,0,2080,1,12,1,2.510224,16,6 +1986,4091,1982,0,5,0,2080,1,12,1,2.593371,25,6 +1987,4091,1983,0,6,0,2080,1,12,1,2.563739,36,6 +1988,4091,1984,0,7,0,2080,1,12,1,2.465306,49,5 +1989,4091,1985,0,8,0,2080,1,12,1,2.61326,64,7 +1990,4091,1986,0,9,0,1880,1,12,1,2.645498,81,6 +1991,4091,1987,0,10,0,2080,1,12,1,2.282292,100,7 +1992,4122,1980,0,0,0,2200,1,16,0,1.7771720000000002,0,1 +1993,4122,1981,0,1,0,2100,1,16,0,1.89712,1,1 +1994,4122,1982,0,2,0,2080,1,16,0,2.026976,4,1 +1995,4122,1983,0,3,0,2080,1,16,0,2.130875,9,1 +1996,4122,1984,0,4,0,2080,1,16,0,2.045452,16,2 +1997,4122,1985,0,5,0,2080,1,16,0,2.235965,25,1 +1998,4122,1986,0,6,0,2080,1,16,0,2.113619,36,1 +1999,4122,1987,0,7,0,2080,1,16,0,2.148761,49,1 +2000,4127,1980,0,2,0,1920,0,10,0,1.171367,4,9 +2001,4127,1981,0,3,0,1216,0,10,0,1.843053,9,9 +2002,4127,1982,0,4,0,1648,0,10,0,1.161169,16,4 +2003,4127,1983,0,5,0,1895,0,10,0,0.9177726,25,5 +2004,4127,1984,0,6,0,2020,0,10,0,0.9271024,36,5 +2005,4127,1985,0,7,0,2080,0,10,0,1.455807,49,3 +2006,4127,1986,0,8,0,2080,0,10,0,1.373219,64,7 +2007,4127,1987,0,9,0,2080,0,10,0,1.448445,81,5 +2008,4128,1980,0,4,0,2049,0,12,1,0.9933319,16,5 +2009,4128,1981,0,5,0,2600,0,12,1,0.984668,25,4 +2010,4128,1982,0,6,0,2207,0,12,1,1.242137,36,7 +2011,4128,1983,0,7,0,2450,0,12,1,1.784834,49,7 +2012,4128,1984,0,8,0,1900,0,12,1,1.833685,64,1 +2013,4128,1985,0,9,0,2075,0,12,0,1.517054,81,7 +2014,4128,1986,0,10,0,2600,0,12,1,1.628111,100,7 +2015,4128,1987,0,11,0,2600,0,12,1,1.426626,121,7 +2016,4159,1980,0,2,0,2308,0,11,1,1.6804580000000002,4,4 +2017,4159,1981,0,3,0,1280,0,11,1,2.290006,9,4 +2018,4159,1982,0,4,0,1780,0,11,1,2.028579,16,7 +2019,4159,1983,0,5,0,2515,1,11,1,1.758649,25,4 +2020,4159,1984,0,6,0,2170,1,11,1,2.003093,36,6 +2021,4159,1985,0,7,0,2165,0,11,0,1.474595,49,3 +2022,4159,1986,0,8,0,2080,1,11,0,2.35203,64,3 +2023,4159,1987,0,9,0,2860,1,11,0,1.388474,81,5 +2024,4204,1980,1,4,0,1606,0,11,1,1.1957950000000002,16,9 +2025,4204,1981,1,5,0,1978,0,11,0,1.397355,25,7 +2026,4204,1982,1,6,0,2080,0,11,0,1.517895,36,5 +2027,4204,1983,1,7,0,2080,1,11,0,1.7860349999999998,49,5 +2028,4204,1984,1,8,0,2300,0,11,0,1.251763,64,5 +2029,4204,1985,1,9,0,2196,0,11,0,1.306227,81,7 +2030,4204,1986,1,10,0,2490,0,11,0,1.4481959999999998,100,5 +2031,4204,1987,1,11,0,2440,0,11,1,1.364977,121,5 +2032,4229,1980,0,2,0,1645,0,12,0,1.459484,4,9 +2033,4229,1981,0,3,0,2440,0,12,0,1.592909,9,9 +2034,4229,1982,0,4,0,2600,0,12,0,1.398367,16,2 +2035,4229,1983,0,5,0,2600,0,12,0,1.82072,25,2 +2036,4229,1984,0,6,0,2600,0,12,0,1.682546,36,2 +2037,4229,1985,0,7,0,2846,0,12,0,1.557776,49,2 +2038,4229,1986,0,8,0,3120,0,12,0,1.340429,64,2 +2039,4229,1987,0,9,0,3228,0,12,0,1.210275,81,2 +2040,4258,1980,0,2,0,2114,0,12,1,2.117404,4,7 +2041,4258,1981,0,3,0,1898,0,12,1,2.267193,9,7 +2042,4258,1982,0,4,0,1940,0,12,1,1.991295,16,7 +2043,4258,1983,0,5,0,2056,0,12,1,2.140562,25,4 +2044,4258,1984,0,6,0,2080,0,12,1,2.168054,36,4 +2045,4258,1985,0,7,0,2046,0,12,1,1.936594,49,4 +2046,4258,1986,0,8,0,2805,0,12,1,1.601009,64,6 +2047,4258,1987,0,9,0,2416,0,12,1,1.711334,81,7 +2048,4261,1980,0,9,0,1940,1,6,0,1.854152,81,5 +2049,4261,1981,0,10,0,2105,1,6,0,1.80513,100,5 +2050,4261,1982,0,11,0,2080,0,6,0,1.872825,121,5 +2051,4261,1983,0,12,0,2080,1,6,0,1.978112,144,5 +2052,4261,1984,0,13,0,2080,0,6,1,1.999408,169,5 +2053,4261,1985,0,14,0,2120,0,6,0,2.188746,196,5 +2054,4261,1986,0,15,0,2080,0,6,0,2.074398,225,5 +2055,4261,1987,0,16,0,990,0,6,0,1.504885,256,5 +2056,4264,1980,0,4,1,2200,1,10,0,1.229391,16,6 +2057,4264,1981,0,5,1,2518,1,10,0,1.418341,25,7 +2058,4264,1982,0,6,1,2578,1,10,1,1.070392,36,7 +2059,4264,1983,0,7,1,2570,1,10,0,0.8207249,49,7 +2060,4264,1984,0,8,1,2640,1,10,0,1.2364959999999998,64,2 +2061,4264,1985,0,9,1,2600,1,10,0,1.291504,81,6 +2062,4264,1986,0,10,1,2600,1,10,0,1.360232,100,5 +2063,4264,1987,0,11,1,2716,0,10,0,1.034671,121,9 +2064,4278,1980,0,3,0,2525,1,12,0,1.802248,9,5 +2065,4278,1981,0,4,0,2080,1,12,0,1.7853290000000002,16,5 +2066,4278,1982,0,5,0,2080,1,12,0,1.815667,25,5 +2067,4278,1983,0,6,0,2080,1,12,0,1.875983,36,5 +2068,4278,1984,0,7,0,2080,1,12,0,1.800329,49,5 +2069,4278,1985,0,8,0,2080,1,12,0,1.820029,64,5 +2070,4278,1986,0,9,0,2120,1,12,0,1.475532,81,5 +2071,4278,1987,0,10,0,2600,1,12,0,1.800216,100,5 +2072,4297,1980,0,2,0,1605,0,12,1,2.112709,4,6 +2073,4297,1981,0,3,0,1980,0,12,0,2.229254,9,6 +2074,4297,1982,0,4,0,2920,1,12,0,1.533609,16,3 +2075,4297,1983,0,5,0,3120,1,12,0,1.638399,25,2 +2076,4297,1984,0,6,0,3069,1,12,0,1.699028,36,2 +2077,4297,1985,0,7,0,3284,0,12,0,1.617569,49,3 +2078,4297,1986,0,8,0,3565,1,12,0,1.630912,64,2 +2079,4297,1987,0,9,0,3475,1,12,0,1.704527,81,3 +2080,4302,1980,0,2,0,765,0,11,0,1.061953,4,4 +2081,4302,1981,0,3,0,955,0,11,0,1.016823,9,3 +2082,4302,1982,0,4,0,650,0,11,0,1.244216,16,4 +2083,4302,1983,0,5,0,680,0,11,0,1.1694639999999998,25,3 +2084,4302,1984,0,6,0,1620,0,11,0,1.10581,36,4 +2085,4302,1985,0,7,0,1250,0,11,0,0.6375774000000001,49,4 +2086,4302,1986,0,8,0,1800,0,11,0,0.6095416,64,3 +2087,4302,1987,0,9,0,2245,1,11,0,1.715748,81,1 +2088,4321,1980,0,1,1,1820,0,11,0,1.721293,1,6 +2089,4321,1981,0,2,1,1985,1,11,1,1.981609,4,7 +2090,4321,1982,0,3,1,3140,1,11,0,1.2096559999999998,9,6 +2091,4321,1983,0,4,1,2600,0,11,1,1.467287,16,6 +2092,4321,1984,0,5,1,2080,1,11,1,1.797548,25,6 +2093,4321,1985,0,6,1,2040,1,11,1,2.153105,36,5 +2094,4321,1986,0,7,1,2080,1,11,1,1.991017,49,4 +2095,4321,1987,0,8,1,2080,1,11,1,2.183852,64,4 +2096,4328,1980,0,4,0,1860,0,12,0,1.742113,16,5 +2097,4328,1981,0,5,0,1683,0,12,0,1.360413,25,6 +2098,4328,1982,0,6,0,2070,0,12,0,1.289858,36,6 +2099,4328,1983,0,7,0,2080,0,12,0,1.224947,49,7 +2100,4328,1984,0,8,0,2080,0,12,0,1.212543,64,7 +2101,4328,1985,0,9,0,2392,0,12,0,1.133723,81,7 +2102,4328,1986,0,10,0,2394,0,12,0,1.11282,100,7 +2103,4328,1987,0,11,0,2317,0,12,0,1.311341,121,7 +2104,4332,1980,0,2,0,501,0,12,0,0.4064125999999999,4,1 +2105,4332,1981,0,3,0,192,0,12,0,0.040822,9,1 +2106,4332,1982,0,4,0,893,0,12,0,0.9911405,16,4 +2107,4332,1983,0,5,0,2186,0,12,0,0.5125538,25,4 +2108,4332,1984,0,6,0,1682,0,12,0,0.7317799,36,9 +2109,4332,1985,0,7,0,2060,0,12,0,1.20764,49,9 +2110,4332,1986,0,8,0,2080,0,12,0,1.340429,64,9 +2111,4332,1987,0,9,0,2150,0,12,0,1.348406,81,2 +2112,4335,1980,0,3,0,2080,1,11,0,1.54331,9,6 +2113,4335,1981,0,4,0,2080,1,11,0,1.683546,16,7 +2114,4335,1982,0,5,0,1800,1,11,0,1.479457,25,6 +2115,4335,1983,0,6,0,2080,1,11,0,1.150046,36,6 +2116,4335,1984,0,7,0,2120,1,11,0,1.142201,49,4 +2117,4335,1985,0,8,0,2080,1,11,0,1.7088029999999998,64,7 +2118,4335,1986,0,9,0,2080,1,11,0,1.7458939999999998,81,6 +2119,4335,1987,0,10,0,2080,1,11,0,1.7069279999999998,100,6 +2120,4357,1980,0,3,0,2080,0,12,1,2.141147,9,5 +2121,4357,1981,0,4,0,1320,0,12,1,2.064174,16,5 +2122,4357,1982,0,5,0,2080,1,12,0,1.4072559999999998,25,9 +2123,4357,1983,0,6,0,2080,1,12,0,1.486518,36,9 +2124,4357,1984,0,7,0,2080,1,12,0,1.512647,49,7 +2125,4357,1985,0,8,0,2080,1,12,0,1.61643,64,9 +2126,4357,1986,0,9,0,1760,1,12,1,1.730627,81,5 +2127,4357,1987,0,10,0,1880,1,12,1,1.913385,100,5 +2128,4365,1980,0,2,0,2750,0,11,0,-0.0352063,4,5 +2129,4365,1981,0,3,0,2410,0,11,0,0.2835241,9,6 +2130,4365,1982,0,4,0,1760,1,11,0,1.263471,16,1 +2131,4365,1983,0,5,0,2794,1,11,0,1.548087,25,5 +2132,4365,1984,0,6,0,984,1,11,0,2.068997,36,6 +2133,4365,1985,0,7,0,1826,1,11,0,1.490737,49,1 +2134,4365,1986,0,8,0,2020,1,11,0,1.775165,64,6 +2135,4365,1987,0,9,0,2480,1,11,0,1.125572,81,6 +2136,4380,1980,0,4,0,2080,0,13,1,1.810905,16,5 +2137,4380,1981,0,5,0,2080,0,13,1,1.95139,25,5 +2138,4380,1982,0,6,0,2290,1,13,1,1.977312,36,5 +2139,4380,1983,0,7,0,2466,1,13,1,2.114796,49,5 +2140,4380,1984,0,8,0,2176,1,13,1,2.197042,64,4 +2141,4380,1985,0,9,0,2100,1,13,0,2.198225,81,6 +2142,4380,1986,0,10,0,2860,1,13,0,1.938266,100,5 +2143,4380,1987,0,11,0,2780,0,13,0,1.960461,121,5 +2144,4394,1980,0,2,0,2080,0,11,0,1.630321,4,5 +2145,4394,1981,0,3,0,2080,0,11,1,2.089011,9,6 +2146,4394,1982,0,4,0,2305,0,11,0,2.015235,16,5 +2147,4394,1983,0,5,0,2100,0,11,1,2.034294,25,6 +2148,4394,1984,0,6,0,2080,0,11,0,2.088012,36,7 +2149,4394,1985,0,7,0,560,0,11,0,1.797214,49,6 +2150,4394,1986,0,8,0,1300,0,11,0,2.3212580000000003,64,3 +2151,4394,1987,0,9,0,2080,0,11,0,1.524607,81,6 +2152,4510,1980,0,2,0,120,0,13,0,1.304899,4,6 +2153,4510,1981,0,3,0,1880,0,13,1,1.630491,9,5 +2154,4510,1982,0,4,0,2162,0,13,0,1.651838,16,5 +2155,4510,1983,0,5,0,1301,0,13,0,2.255269,25,5 +2156,4510,1984,0,6,0,2080,0,13,0,1.90569,36,1 +2157,4510,1985,0,7,0,2215,0,13,0,1.703077,49,1 +2158,4510,1986,0,8,0,2135,0,13,0,2.0280970000000003,64,1 +2159,4510,1987,0,9,0,1840,1,13,0,2.3403560000000003,81,1 +2160,4559,1980,0,5,0,2355,0,12,0,1.323827,25,6 +2161,4559,1981,0,6,0,2250,1,12,0,1.450833,36,5 +2162,4559,1982,0,7,0,2260,1,12,0,1.297351,49,5 +2163,4559,1983,0,8,0,2536,1,12,0,1.393659,64,4 +2164,4559,1984,0,9,0,2815,1,12,0,1.005259,81,9 +2165,4559,1985,0,10,0,2050,1,12,0,1.491696,100,5 +2166,4559,1986,0,11,0,2000,1,12,0,1.568892,121,7 +2167,4559,1987,0,12,0,2188,1,12,0,1.59915,144,5 +2168,4563,1980,0,1,0,1816,0,11,1,0.890584,1,8 +2169,4563,1981,0,2,0,2216,0,11,0,0.9270628,4,4 +2170,4563,1982,0,3,0,2373,0,11,0,1.101958,9,4 +2171,4563,1983,0,4,0,2915,0,11,0,1.04788,16,5 +2172,4563,1984,0,5,0,1443,0,11,0,1.7605080000000002,25,5 +2173,4563,1985,0,6,0,2552,1,11,0,1.310138,36,5 +2174,4563,1986,0,7,0,2125,1,11,0,1.667332,49,5 +2175,4563,1987,0,8,0,1725,1,11,1,1.711748,64,5 +2176,4569,1980,0,1,0,1160,0,12,1,2.26702,1,7 +2177,4569,1981,0,2,0,2080,0,12,1,2.125205,4,7 +2178,4569,1982,0,3,0,2080,1,12,1,2.073496,9,7 +2179,4569,1983,0,4,0,2080,0,12,1,2.043864,16,3 +2180,4569,1984,0,5,0,1640,0,12,1,2.367185,25,7 +2181,4569,1985,0,6,0,2170,0,12,1,2.129068,36,7 +2182,4569,1986,0,7,0,2080,1,12,1,2.033576,49,7 +2183,4569,1987,0,8,0,2080,1,12,1,2.035432,64,2 +2184,4603,1980,0,2,0,2040,0,11,1,2.0552040000000003,4,7 +2185,4603,1981,0,3,0,1736,0,11,1,1.997862,9,7 +2186,4603,1982,0,4,0,1664,0,11,1,2.03881,16,3 +2187,4603,1983,0,5,0,1577,0,11,1,2.1741040000000003,25,4 +2188,4603,1984,0,6,0,1647,0,11,1,1.988279,36,4 +2189,4603,1985,0,7,0,2274,0,11,1,1.921912,49,7 +2190,4603,1986,0,8,0,2336,0,11,1,2.035287,64,4 +2191,4603,1987,0,9,0,2494,0,11,1,1.853912,81,2 +2192,4607,1980,0,2,0,1420,0,13,0,-0.696018,4,5 +2193,4607,1981,0,3,0,717,0,13,0,1.7189740000000002,9,9 +2194,4607,1982,0,4,0,865,0,13,0,1.805757,16,9 +2195,4607,1983,0,5,0,1060,0,13,0,1.236358,25,9 +2196,4607,1984,0,6,0,1112,0,13,0,1.83875,36,9 +2197,4607,1985,0,7,0,1880,0,13,0,1.615744,49,6 +2198,4607,1986,0,8,0,2040,1,13,0,1.582991,64,5 +2199,4607,1987,0,9,0,2360,1,13,1,1.948359,81,5 +2200,4633,1980,0,3,0,2285,0,12,0,1.759467,9,3 +2201,4633,1981,0,4,0,2120,0,12,0,1.4233360000000002,16,3 +2202,4633,1982,0,5,0,2123,0,12,0,1.446898,25,3 +2203,4633,1983,0,6,0,2175,0,12,0,1.547218,36,4 +2204,4633,1984,0,7,0,2092,0,12,0,1.543262,49,3 +2205,4633,1985,0,8,0,3270,1,12,0,1.51421,64,2 +2206,4633,1986,0,9,0,3770,1,12,0,1.518912,81,2 +2207,4633,1987,0,10,0,2710,1,12,1,2.559309,100,6 +2208,4676,1980,0,2,0,2342,0,10,0,0.636215,4,9 +2209,4676,1981,0,3,0,2196,0,10,0,0.8620211,9,6 +2210,4676,1982,0,4,0,1764,0,10,0,1.06416,16,6 +2211,4676,1983,0,5,0,2080,0,10,0,1.350717,25,6 +2212,4676,1984,0,6,0,2170,0,10,0,1.492267,36,5 +2213,4676,1985,0,7,0,2184,0,10,0,1.53485,49,5 +2214,4676,1986,0,8,0,2108,0,10,0,1.732522,64,5 +2215,4676,1987,0,9,0,2144,0,10,0,1.877294,81,5 +2216,4701,1980,0,2,0,1615,0,12,0,1.595672,4,4 +2217,4701,1981,0,3,0,2064,0,12,0,1.793051,9,5 +2218,4701,1982,0,4,0,2080,0,12,0,1.815667,16,1 +2219,4701,1983,0,5,0,2285,0,12,0,2.11692,25,1 +2220,4701,1984,0,6,0,2340,0,12,0,2.389487,36,1 +2221,4701,1985,0,7,0,2130,1,12,0,2.489422,49,4 +2222,4701,1986,0,8,0,2080,1,12,0,2.506181,64,2 +2223,4701,1987,0,9,0,2080,1,12,0,2.600746,81,2 +2224,4716,1980,0,3,0,3451,1,12,0,0.9417034,9,8 +2225,4716,1981,0,4,0,2100,1,12,1,1.243194,16,7 +2226,4716,1982,0,5,0,2080,1,12,1,1.380348,25,6 +2227,4716,1983,0,6,0,2892,1,12,1,1.140937,36,5 +2228,4716,1984,0,7,0,2080,1,12,1,1.474907,49,5 +2229,4716,1985,0,8,0,2080,1,12,1,1.4782799999999998,64,5 +2230,4716,1986,0,9,0,2080,1,12,1,1.596362,81,5 +2231,4716,1987,0,10,0,2080,1,12,1,1.7069279999999998,100,5 +2232,4720,1980,0,5,0,2080,1,12,1,2.089854,25,5 +2233,4720,1981,0,6,0,2080,1,12,0,2.179983,36,5 +2234,4720,1982,0,7,0,2080,1,12,1,2.349749,49,5 +2235,4720,1983,0,8,0,2080,1,12,1,2.171697,64,5 +2236,4720,1984,0,9,0,2000,1,12,1,2.2813830000000004,81,5 +2237,4720,1985,0,10,0,2080,1,12,1,2.207794,100,9 +2238,4720,1986,0,11,0,2080,1,12,0,2.25672,121,6 +2239,4720,1987,0,12,0,2080,1,12,1,2.217754,144,9 +2240,4759,1980,0,4,0,1920,0,12,1,1.790407,16,6 +2241,4759,1981,0,5,0,1600,1,12,1,1.871802,25,6 +2242,4759,1982,0,6,0,2190,1,12,1,1.328815,36,6 +2243,4759,1983,0,7,0,2782,1,12,1,1.6577509999999998,49,6 +2244,4759,1984,0,8,0,2252,1,12,1,1.774946,64,6 +2245,4759,1985,0,9,0,2080,1,12,1,1.85112,81,6 +2246,4759,1986,0,10,0,2080,1,12,1,1.900045,100,6 +2247,4759,1987,0,11,0,2080,1,12,0,1.952051,121,6 +2248,4791,1980,0,5,0,2240,1,12,1,1.961678,25,6 +2249,4791,1981,0,6,0,2600,1,12,1,1.6545580000000002,36,6 +2250,4791,1982,0,7,0,2280,1,12,1,1.7642099999999998,49,5 +2251,4791,1983,0,8,0,2400,1,12,1,1.7000919999999995,64,6 +2252,4791,1984,0,9,0,2460,1,12,1,1.781913,81,5 +2253,4791,1985,0,10,0,2460,1,12,1,1.752319,100,6 +2254,4791,1986,0,11,0,2460,1,12,1,1.865783,121,6 +2255,4791,1987,0,12,0,3262,1,12,1,1.767781,144,5 +2256,4811,1980,0,2,0,1532,0,12,0,0.7321422,4,6 +2257,4811,1981,0,3,0,1748,0,12,0,0.9762421,9,6 +2258,4811,1982,0,4,0,1856,0,12,0,0.745056,16,6 +2259,4811,1983,0,5,0,2276,0,12,0,1.059994,25,6 +2260,4811,1984,0,6,0,2740,0,12,1,1.578017,36,5 +2261,4811,1985,0,7,0,2634,0,12,0,1.7304970000000002,49,6 +2262,4811,1986,0,8,0,2600,0,12,0,1.723421,64,6 +2263,4811,1987,0,9,0,2600,0,12,1,1.934613,81,5 +2264,4828,1980,0,2,0,1416,0,11,0,0.9885614,4,9 +2265,4828,1981,0,3,0,2175,0,11,0,1.501264,9,9 +2266,4828,1982,0,4,0,3040,0,11,1,1.801637,16,4 +2267,4828,1983,0,5,0,2436,0,11,0,1.097417,25,2 +2268,4828,1984,0,6,0,3250,0,11,0,1.02862,36,2 +2269,4828,1985,0,7,0,1420,0,11,0,1.336743,49,9 +2270,4828,1986,0,8,0,1794,1,11,0,1.711493,64,9 +2271,4828,1987,0,9,0,1665,1,11,0,1.118541,81,9 +2272,4857,1980,0,3,0,1274,0,14,0,1.139698,9,9 +2273,4857,1981,0,4,0,1888,0,14,0,0.7507763000000001,16,3 +2274,4857,1982,0,5,0,1692,0,14,0,0.9806693,25,4 +2275,4857,1983,0,6,0,1249,0,14,0,1.072284,36,4 +2276,4857,1984,0,7,0,1729,0,14,0,0.7042202,49,9 +2277,4857,1985,0,8,0,1700,1,14,0,0.6867675999999999,64,7 +2278,4857,1986,0,9,0,1070,1,14,0,1.546273,81,3 +2279,4857,1987,0,10,0,832,1,14,0,1.524607,100,4 +2280,4858,1980,0,2,0,1956,0,12,0,1.286322,4,4 +2281,4858,1981,0,3,0,1693,0,12,1,1.64825,9,1 +2282,4858,1982,0,4,0,2080,1,12,0,2.296639,16,5 +2283,4858,1983,0,5,0,2080,1,12,0,2.285026,25,5 +2284,4858,1984,0,6,0,2080,1,12,0,2.520876,36,5 +2285,4858,1985,0,7,0,2080,1,12,0,2.513176,49,5 +2286,4858,1986,0,8,0,2080,1,12,0,2.593192,64,5 +2287,4858,1987,0,9,0,2080,1,12,0,2.577757,81,5 +2288,4859,1980,0,2,0,540,0,12,0,1.326878,4,9 +2289,4859,1981,0,3,0,1050,0,12,0,1.063067,9,9 +2290,4859,1982,0,4,0,2080,0,12,0,0.9973562,16,9 +2291,4859,1983,0,5,0,1920,0,12,0,1.196187,25,9 +2292,4859,1984,0,6,0,2080,0,12,0,1.261333,36,9 +2293,4859,1985,0,7,0,2080,0,12,0,1.273485,49,9 +2294,4859,1986,0,8,0,2080,0,12,0,1.340429,64,5 +2295,4859,1987,0,9,0,2080,0,12,0,1.342285,81,5 +2296,4866,1980,0,2,0,1948,0,14,1,1.695886,4,1 +2297,4866,1981,0,3,0,2080,1,14,1,1.817077,9,5 +2298,4866,1982,0,4,0,2140,1,14,1,1.929545,16,5 +2299,4866,1983,0,5,0,2122,1,14,1,1.9677830000000005,25,1 +2300,4866,1984,0,6,0,2080,1,14,1,2.259862,36,4 +2301,4866,1985,0,7,0,2080,1,14,1,2.4309380000000003,49,4 +2302,4866,1986,0,8,0,2080,0,14,1,2.410871,64,6 +2303,4866,1987,0,9,0,2080,0,14,1,2.454143,81,4 +2304,4881,1980,0,2,0,2466,1,14,0,1.37308,4,5 +2305,4881,1981,0,3,0,2136,1,14,0,1.502828,9,2 +2306,4881,1982,0,4,0,1928,1,14,0,1.255562,16,5 +2307,4881,1983,0,5,0,2242,1,14,0,1.3627280000000002,25,3 +2308,4881,1984,0,6,0,2095,1,14,0,1.675361,36,4 +2309,4881,1985,0,7,0,2080,1,14,0,1.820029,49,4 +2310,4881,1986,0,8,0,2080,1,14,0,1.900045,64,4 +2311,4881,1987,0,9,0,2200,1,14,0,1.895961,81,4 +2312,4884,1980,0,4,0,2288,0,12,0,1.575833,16,5 +2313,4884,1981,0,5,0,2288,0,12,0,1.570217,25,5 +2314,4884,1982,0,6,0,2132,1,12,0,1.52271,36,5 +2315,4884,1983,0,7,0,2416,1,12,0,1.543916,49,5 +2316,4884,1984,0,8,0,2168,1,12,0,1.6809310000000002,64,5 +2317,4884,1985,0,9,0,2080,1,12,1,1.7659619999999998,81,5 +2318,4884,1986,0,10,0,2080,1,12,1,1.7458939999999998,100,6 +2319,4884,1987,0,11,0,2080,1,12,1,1.760996,121,5 +2320,4888,1980,0,2,0,2202,0,12,1,1.466943,4,6 +2321,4888,1981,0,3,0,2096,1,12,1,1.434721,9,6 +2322,4888,1982,0,4,0,2260,1,12,0,1.392662,16,6 +2323,4888,1983,0,5,0,2288,1,12,1,1.481745,25,7 +2324,4888,1984,0,6,0,3856,1,12,1,1.091682,36,5 +2325,4888,1985,0,7,0,3336,1,12,0,1.447708,49,6 +2326,4888,1986,0,8,0,4212,1,12,0,1.240995,64,5 +2327,4888,1987,0,9,0,3418,1,12,0,1.410911,81,5 +2328,4901,1980,0,4,0,1760,1,11,1,1.168766,16,6 +2329,4901,1981,0,5,0,1880,1,11,1,1.225026,25,6 +2330,4901,1982,0,6,0,1480,1,11,1,1.027527,36,6 +2331,4901,1983,0,7,0,1840,1,11,1,1.378009,49,6 +2332,4901,1984,0,8,0,1960,1,11,1,1.710221,64,5 +2333,4901,1985,0,9,0,2550,1,11,1,1.562236,81,6 +2334,4901,1986,0,10,0,2600,1,11,1,1.576818,100,6 +2335,4901,1987,0,11,0,2600,0,11,1,1.537852,121,6 +2336,4917,1980,0,4,0,2080,0,12,0,1.199538,16,9 +2337,4917,1981,0,5,0,3255,0,12,0,0.8992493,25,9 +2338,4917,1982,0,6,0,2465,0,12,0,1.012074,36,9 +2339,4917,1983,0,7,0,2080,0,12,0,1.193531,49,9 +2340,4917,1984,0,8,0,2080,0,12,0,1.295228,64,9 +2341,4917,1985,0,9,0,2080,0,12,0,1.439539,81,9 +2342,4917,1986,0,10,0,2080,0,12,0,0.5823878,100,9 +2343,4917,1987,0,11,0,2080,0,12,0,1.326156,121,9 +2344,4926,1980,0,4,0,2188,0,12,1,1.652022,16,5 +2345,4926,1981,0,5,0,2270,1,12,1,1.596134,25,5 +2346,4926,1982,0,6,0,2475,1,12,0,1.5166309999999998,36,5 +2347,4926,1983,0,7,0,2586,1,12,1,1.625449,49,5 +2348,4926,1984,0,8,0,2516,1,12,0,1.492244,64,5 +2349,4926,1985,0,9,0,2580,1,12,0,1.432757,81,5 +2350,4926,1986,0,10,0,2370,1,12,0,1.46584,100,5 +2351,4926,1987,0,11,0,2080,1,12,1,1.861079,121,5 +2352,4982,1980,0,4,0,910,0,9,0,0.8883838,16,7 +2353,4982,1981,0,5,0,1840,0,9,0,1.069198,25,5 +2354,4982,1982,0,6,0,2080,0,9,0,1.380348,36,5 +2355,4982,1983,0,7,0,2080,0,9,0,1.255406,49,5 +2356,4982,1984,0,8,0,2080,0,9,0,1.394864,64,5 +2357,4982,1985,0,9,0,2080,1,9,0,1.273485,81,5 +2358,4982,1986,0,10,0,1760,1,9,0,1.102018,100,5 +2359,4982,1987,0,11,0,2205,1,9,0,1.060782,121,7 +2360,5017,1980,0,1,0,2120,0,13,0,1.886376,1,7 +2361,5017,1981,0,2,0,2248,0,13,0,2.048726,4,5 +2362,5017,1982,0,3,0,2226,0,13,0,2.348602,9,6 +2363,5017,1983,0,4,0,2184,1,13,0,2.400539,16,6 +2364,5017,1984,0,5,0,2184,1,13,0,2.493477,25,1 +2365,5017,1985,0,6,0,2184,0,13,0,2.515679,36,7 +2366,5017,1986,0,7,0,2184,0,13,0,2.567932,49,5 +2367,5017,1987,0,8,0,2184,1,13,0,2.545115,64,1 +2368,5033,1980,0,2,0,2080,0,12,0,1.948775,4,7 +2369,5033,1981,0,3,0,2080,0,12,0,2.201489,9,5 +2370,5033,1982,0,4,0,2080,0,12,0,2.366843,16,4 +2371,5033,1983,0,5,0,2080,0,12,0,2.309718,25,5 +2372,5033,1984,0,6,0,2520,1,12,0,2.119264,36,6 +2373,5033,1985,0,7,0,2170,1,12,0,2.501908,49,6 +2374,5033,1986,0,8,0,2080,1,12,0,2.3212580000000003,64,9 +2375,5033,1987,0,9,0,2080,1,12,0,2.454143,81,7 +2376,5048,1980,0,3,0,2816,0,11,0,0.5101718,9,3 +2377,5048,1981,0,4,0,3208,0,11,0,1.096115,16,2 +2378,5048,1982,0,5,0,1952,0,11,0,1.243191,25,2 +2379,5048,1983,0,6,0,2864,1,11,0,1.307119,36,3 +2380,5048,1984,0,7,0,3380,1,11,0,1.492503,49,2 +2381,5048,1985,0,8,0,3170,1,11,0,1.692905,64,2 +2382,5048,1986,0,9,0,3295,0,11,0,2.027793,81,2 +2383,5048,1987,0,10,0,3480,0,11,0,2.344943,100,2 +2384,5122,1980,0,3,0,1845,1,12,0,0.874741,9,5 +2385,5122,1981,0,4,0,2340,1,12,0,1.699294,16,5 +2386,5122,1982,0,5,0,2340,1,12,0,2.042724,25,5 +2387,5122,1983,0,6,0,2340,1,12,0,1.970533,36,5 +2388,5122,1984,0,7,0,2340,1,12,0,2.288682,49,5 +2389,5122,1985,0,8,0,2587,1,12,0,1.989663,64,5 +2390,5122,1986,0,9,0,2682,1,12,0,1.954734,81,5 +2391,5122,1987,0,10,0,2480,1,12,0,1.859542,100,5 +2392,5141,1980,0,2,1,2155,1,12,0,2.154514,4,6 +2393,5141,1981,0,3,1,2392,1,12,0,1.900459,9,6 +2394,5141,1982,0,4,1,2400,1,12,0,2.0174060000000003,16,6 +2395,5141,1983,0,5,1,2233,1,12,0,1.184428,25,6 +2396,5141,1984,0,6,1,2611,1,12,0,1.390643,36,6 +2397,5141,1985,0,7,1,2380,1,12,0,2.296206,49,6 +2398,5141,1986,0,8,1,2145,1,12,0,2.3212580000000003,64,6 +2399,5141,1987,0,9,1,2185,1,12,0,2.350827,81,6 +2400,5147,1980,0,4,1,2265,1,12,1,2.05594,16,6 +2401,5147,1981,0,5,1,2379,1,12,0,2.129052,25,6 +2402,5147,1982,0,6,1,2350,1,12,1,2.278132,36,6 +2403,5147,1983,0,7,1,2340,1,12,1,2.053914,49,6 +2404,5147,1984,0,8,1,2379,1,12,1,1.866688,64,6 +2405,5147,1985,0,9,1,2486,1,12,1,2.334869,81,6 +2406,5147,1986,0,10,1,2370,1,12,1,2.531663,100,6 +2407,5147,1987,0,11,1,2378,0,12,1,2.466854,121,6 +2408,5158,1980,0,3,0,1960,0,11,0,1.823693,9,6 +2409,5158,1981,0,4,0,2080,1,11,0,1.817077,16,5 +2410,5158,1982,0,5,0,2940,1,11,0,1.58085,25,5 +2411,5158,1983,0,6,0,2440,1,11,0,1.73763,36,5 +2412,5158,1984,0,7,0,1670,0,11,0,2.073941,49,5 +2413,5158,1985,0,8,0,1134,0,11,0,1.784792,64,5 +2414,5158,1986,0,9,0,2080,0,11,0,1.799961,81,5 +2415,5158,1987,0,10,0,2154,0,11,0,2.1761060000000003,100,5 +2416,5221,1980,0,3,1,2060,0,14,0,1.374715,9,8 +2417,5221,1981,0,4,1,2080,0,14,1,1.609438,16,5 +2418,5221,1982,0,5,1,2080,1,14,1,1.547403,25,7 +2419,5221,1983,0,6,1,2080,1,14,1,1.591879,36,1 +2420,5221,1984,0,7,1,2080,1,14,0,1.800329,49,8 +2421,5221,1985,0,8,1,2080,1,14,0,1.820029,64,7 +2422,5221,1986,0,9,1,2080,1,14,1,1.799961,81,7 +2423,5221,1987,0,10,1,1440,0,14,0,2.362335,100,5 +2424,5223,1980,0,3,0,2396,0,12,0,1.541165,9,4 +2425,5223,1981,0,4,0,2104,0,12,0,1.805605,16,3 +2426,5223,1982,0,5,0,2080,0,12,0,1.975682,25,3 +2427,5223,1983,0,6,0,2980,0,12,0,1.791939,36,2 +2428,5223,1984,0,7,0,2580,0,12,0,1.855317,49,2 +2429,5223,1985,0,8,0,2831,0,12,0,1.275378,64,3 +2430,5223,1986,0,9,0,2511,0,12,0,1.557581,81,5 +2431,5223,1987,0,10,0,2560,0,12,0,1.1346459999999998,100,4 +2432,5227,1980,0,5,0,720,0,12,0,2.691193,25,5 +2433,5227,1981,0,6,0,4096,0,12,0,0.4462871,36,6 +2434,5227,1982,0,7,0,2080,0,12,0,1.547403,49,7 +2435,5227,1983,0,8,0,2336,0,12,1,1.727121,64,5 +2436,5227,1984,0,9,0,1674,0,12,0,1.07302,81,5 +2437,5227,1985,0,10,0,2070,0,12,0,1.7707810000000002,100,5 +2438,5227,1986,0,11,0,2260,1,12,0,2.030622,121,5 +2439,5227,1987,0,12,0,2080,1,12,0,1.9075990000000005,144,7 +2440,5248,1980,0,2,0,3120,0,14,0,1.137845,4,8 +2441,5248,1981,0,3,0,2640,0,14,0,1.089582,9,8 +2442,5248,1982,0,4,0,938,0,14,0,2.030118,16,8 +2443,5248,1983,0,5,0,2720,0,14,1,1.044562,25,7 +2444,5248,1984,0,6,0,2856,0,14,0,1.1297700000000002,36,6 +2445,5248,1985,0,7,0,3066,0,14,0,1.195634,49,8 +2446,5248,1986,0,8,0,2742,0,14,0,1.574935,64,6 +2447,5248,1987,0,9,0,2270,1,14,0,1.907198,81,6 +2448,5252,1980,0,2,0,1525,0,10,0,0.4112994,4,6 +2449,5252,1981,0,3,0,2080,0,10,0,1.683546,9,5 +2450,5252,1982,0,4,0,2510,0,10,0,1.2794450000000002,16,5 +2451,5252,1983,0,5,0,2510,1,10,0,1.59812,25,5 +2452,5252,1984,0,6,0,3872,1,10,1,1.232993,36,5 +2453,5252,1985,0,7,0,2480,1,10,0,1.4722879999999998,49,5 +2454,5252,1986,0,8,0,3520,1,10,0,1.219801,64,5 +2455,5252,1987,0,9,0,2400,1,10,0,1.669188,81,5 +2456,5263,1980,0,3,0,2080,0,14,0,1.630321,9,7 +2457,5263,1981,0,4,0,2080,1,14,0,1.593934,16,4 +2458,5263,1982,0,5,0,2080,1,14,0,1.656602,25,3 +2459,5263,1983,0,6,0,2080,1,14,0,1.7860349999999998,36,2 +2460,5263,1984,0,7,0,2392,1,14,0,1.603409,49,2 +2461,5263,1985,0,8,0,2144,1,14,0,1.678498,64,2 +2462,5263,1986,0,9,0,2080,1,14,0,1.851255,81,2 +2463,5263,1987,0,10,0,2760,1,14,0,1.529426,100,2 +2464,5274,1980,0,2,0,1840,0,12,0,1.66573,4,6 +2465,5274,1981,0,3,0,220,1,12,0,2.9004220000000003,9,7 +2466,5274,1982,0,4,0,644,1,12,0,1.764315,16,3 +2467,5274,1983,0,5,0,3443,1,12,0,1.339218,25,3 +2468,5274,1984,0,6,0,3774,1,12,0,1.533066,36,5 +2469,5274,1985,0,7,0,3920,1,12,0,1.797214,49,9 +2470,5274,1986,0,8,0,3669,1,12,0,1.689169,64,9 +2471,5274,1987,0,9,0,2320,1,12,1,3.312527,81,3 +2472,5335,1980,0,3,0,2080,0,12,0,1.4480000000000002,9,7 +2473,5335,1981,0,4,0,2080,1,12,0,1.817077,16,7 +2474,5335,1982,0,5,0,2080,1,12,0,1.7550419999999998,25,7 +2475,5335,1983,0,6,0,2560,1,12,0,1.453232,36,4 +2476,5335,1984,0,7,0,2830,1,12,0,1.492421,49,2 +2477,5335,1985,0,8,0,3535,1,12,0,1.053295,64,2 +2478,5335,1986,0,9,0,2800,1,12,0,1.50271,81,2 +2479,5335,1987,0,10,0,2600,1,12,1,1.483785,100,2 +2480,5345,1980,0,2,0,1360,0,12,0,1.516208,4,1 +2481,5345,1981,0,3,0,1760,0,12,0,0.8209805,9,4 +2482,5345,1982,0,4,0,1820,0,12,0,1.256051,16,4 +2483,5345,1983,0,5,0,2045,0,12,0,1.109858,25,1 +2484,5345,1984,0,6,0,2080,0,12,0,1.394864,36,4 +2485,5345,1985,0,7,0,2285,0,12,0,1.420649,49,4 +2486,5345,1986,0,8,0,2750,0,12,0,1.977487,64,1 +2487,5345,1987,0,9,0,2860,1,12,0,1.963839,81,4 +2488,5359,1980,0,4,0,2080,0,12,0,0.2440268,16,6 +2489,5359,1981,0,5,0,2080,0,12,0,1.000915,25,6 +2490,5359,1982,0,6,0,1855,0,12,0,0.9820344,36,6 +2491,5359,1983,0,7,0,1820,0,12,0,1.060434,49,6 +2492,5359,1984,0,8,0,1882,0,12,0,1.024894,64,6 +2493,5359,1985,0,9,0,1846,0,12,0,1.099071,81,6 +2494,5359,1986,0,10,0,1949,0,12,0,1.281428,100,5 +2495,5359,1987,0,11,0,2012,0,12,0,1.121921,121,6 +2496,5368,1980,0,1,0,1129,0,12,0,1.117427,1,7 +2497,5368,1981,0,2,0,1695,0,12,0,0.7532511,4,5 +2498,5368,1982,0,3,0,983,1,12,0,1.300583,9,5 +2499,5368,1983,0,4,0,2900,1,12,0,1.453692,16,4 +2500,5368,1984,0,5,0,2640,1,12,0,1.50476,25,2 +2501,5368,1985,0,6,0,2600,1,12,0,1.48566,36,2 +2502,5368,1986,0,7,0,2270,1,12,0,1.601324,49,2 +2503,5368,1987,0,8,0,2400,1,12,0,1.506669,64,2 +2504,5377,1980,0,2,0,960,0,12,0,1.528042,4,4 +2505,5377,1981,0,3,0,2080,0,12,0,1.6322530000000002,9,6 +2506,5377,1982,0,4,0,2080,0,12,0,1.635695,16,6 +2507,5377,1983,0,5,0,2080,0,12,0,1.72541,25,6 +2508,5377,1984,0,6,0,2330,0,12,0,1.509296,36,5 +2509,5377,1985,0,7,0,2130,0,12,0,1.490893,49,5 +2510,5377,1986,0,8,0,2080,0,12,0,1.563573,64,5 +2511,5377,1987,0,9,0,2080,0,12,0,1.524607,81,5 +2512,5390,1980,0,2,0,2396,1,14,0,1.599236,4,5 +2513,5390,1981,0,3,0,2555,1,14,0,1.323711,9,5 +2514,5390,1982,0,4,0,2474,1,14,0,1.517035,16,5 +2515,5390,1983,0,5,0,2702,1,14,0,1.463786,25,5 +2516,5390,1984,0,6,0,2799,1,14,0,1.557502,36,5 +2517,5390,1985,0,7,0,2636,1,14,0,1.583134,49,5 +2518,5390,1986,0,8,0,2748,1,14,0,1.572749,64,5 +2519,5390,1987,0,9,0,2808,1,14,0,1.607494,81,5 +2520,5419,1980,0,2,0,1660,0,11,0,0.6518986,4,4 +2521,5419,1981,0,3,0,1444,0,11,0,0.9135168,9,4 +2522,5419,1982,0,4,0,1760,0,11,0,0.6535847,16,4 +2523,5419,1983,0,5,0,1590,0,11,0,1.1955360000000002,25,4 +2524,5419,1984,0,6,0,2022,0,11,0,1.626086,36,1 +2525,5419,1985,0,7,0,2300,0,11,0,1.819571,49,1 +2526,5419,1986,0,8,0,2340,1,11,1,1.936413,64,1 +2527,5419,1987,0,9,0,2180,1,11,1,2.008278,81,1 +2528,5435,1980,0,2,0,2600,0,11,0,1.1194959999999998,4,6 +2529,5435,1981,0,3,0,2216,0,11,0,1.260981,9,6 +2530,5435,1982,0,4,0,2280,0,11,0,1.193231,16,6 +2531,5435,1983,0,5,0,2190,1,11,0,1.203873,25,6 +2532,5435,1984,0,6,0,2088,1,11,0,1.399324,36,6 +2533,5435,1985,0,7,0,2416,1,11,0,1.290794,49,4 +2534,5435,1986,0,8,0,2576,1,11,0,1.28071,64,3 +2535,5435,1987,0,9,0,2600,1,11,0,1.3014629999999998,81,4 +2536,5437,1980,0,2,0,1928,1,12,0,1.562143,4,8 +2537,5437,1981,0,3,0,2064,1,12,0,1.4685709999999998,9,8 +2538,5437,1982,0,4,0,2080,1,12,0,1.297461,16,8 +2539,5437,1983,0,5,0,2315,1,12,0,1.296785,25,7 +2540,5437,1984,0,6,0,3065,1,12,0,1.450801,36,4 +2541,5437,1985,0,7,0,2905,1,12,0,1.522143,49,5 +2542,5437,1986,0,8,0,2860,1,12,0,1.6143809999999998,64,5 +2543,5437,1987,0,9,0,2705,1,12,0,1.830967,81,2 +2544,5497,1980,0,2,0,2080,1,12,0,1.339523,4,4 +2545,5497,1981,0,3,0,2080,1,12,0,1.486836,9,4 +2546,5497,1982,0,4,0,2300,1,12,0,1.520969,16,4 +2547,5497,1983,0,5,0,2555,1,12,0,1.407397,25,2 +2548,5497,1984,0,6,0,3030,1,12,0,1.324928,36,2 +2549,5497,1985,0,7,0,3120,1,12,0,1.387896,49,2 +2550,5497,1986,0,8,0,2520,1,12,0,1.623737,64,2 +2551,5497,1987,0,9,0,3330,1,12,0,1.390475,81,2 +2552,5525,1980,0,5,0,2265,0,8,0,1.093605,25,7 +2553,5525,1981,0,6,0,1753,0,8,0,1.412752,36,6 +2554,5525,1982,0,7,0,1530,0,8,0,1.235464,49,7 +2555,5525,1983,0,8,0,2090,0,8,0,1.2994,64,7 +2556,5525,1984,0,9,0,2860,1,8,0,1.033851,81,5 +2557,5525,1985,0,10,0,2645,1,8,0,1.323134,100,5 +2558,5525,1986,0,11,0,2600,1,8,0,1.55015,121,5 +2559,5525,1987,0,12,0,2600,1,8,0,1.563827,144,5 +2560,5529,1980,0,4,0,2000,1,10,0,1.264077,16,7 +2561,5529,1981,0,5,0,2725,1,10,0,1.339337,25,7 +2562,5529,1982,0,6,0,1875,1,10,0,1.72527,36,6 +2563,5529,1983,0,7,0,1920,1,10,0,1.597813,49,7 +2564,5529,1984,0,8,0,1920,1,10,0,1.6980509999999998,64,7 +2565,5529,1985,0,9,0,2080,1,10,0,1.7659619999999998,81,5 +2566,5529,1986,0,10,0,1784,1,10,0,2.0047650000000004,100,5 +2567,5529,1987,0,11,0,1912,1,10,0,2.036269,121,5 +2568,5531,1980,0,5,0,2128,0,12,0,1.6483279999999998,25,3 +2569,5531,1981,0,6,0,2240,0,12,0,1.53533,36,3 +2570,5531,1982,0,7,0,2522,0,12,0,1.530609,49,3 +2571,5531,1983,0,8,0,2810,0,12,0,1.830059,64,3 +2572,5531,1984,0,9,0,2680,1,12,0,2.057706,81,3 +2573,5531,1985,0,10,0,2600,1,12,0,2.235965,100,3 +2574,5531,1986,0,11,0,2600,1,12,0,2.393579,121,3 +2575,5531,1987,0,12,0,2600,1,12,0,2.176932,144,2 +2576,5579,1980,0,2,0,1220,0,10,0,1.288369,4,4 +2577,5579,1981,0,3,0,2115,0,10,0,1.512708,9,5 +2578,5579,1982,0,4,0,2120,0,10,0,1.26599,16,5 +2579,5579,1983,0,5,0,2080,0,10,0,1.350717,25,5 +2580,5579,1984,0,6,0,2080,1,10,0,1.474907,36,5 +2581,5579,1985,0,7,0,2040,1,10,0,1.482772,49,5 +2582,5579,1986,0,8,0,2080,1,10,0,1.563573,64,5 +2583,5579,1987,0,9,0,2080,1,10,0,1.628366,81,5 +2584,5588,1980,0,8,0,1940,0,9,0,1.412319,64,7 +2585,5588,1981,0,9,0,2200,1,9,0,1.984131,81,6 +2586,5588,1982,0,10,0,3965,1,9,0,1.66952,100,6 +2587,5588,1983,0,11,0,3973,1,9,0,1.138881,121,6 +2588,5588,1984,0,12,0,3900,1,9,0,1.474291,144,6 +2589,5588,1985,0,13,0,1743,1,9,0,1.4771530000000002,169,6 +2590,5588,1986,0,14,0,630,1,9,0,2.6889830000000003,196,6 +2591,5588,1987,0,15,0,3080,1,9,1,1.368434,225,6 +2592,5599,1980,0,2,0,1920,0,14,0,1.998046,4,4 +2593,5599,1981,0,3,0,2080,1,14,0,1.609438,9,1 +2594,5599,1982,0,4,0,1870,1,14,0,1.691572,16,1 +2595,5599,1983,0,5,0,1902,1,14,0,1.875497,25,1 +2596,5599,1984,0,6,0,2044,1,14,0,1.778123,36,1 +2597,5599,1985,0,7,0,1870,1,14,0,1.872391,49,1 +2598,5599,1986,0,8,0,2005,1,14,0,1.782618,64,2 +2599,5599,1987,0,9,0,2080,1,14,0,1.822239,81,1 +2600,5650,1980,0,2,0,1634,0,11,0,1.178511,4,7 +2601,5650,1981,0,3,0,1920,0,11,1,1.427116,9,7 +2602,5650,1982,0,4,0,1895,0,11,0,1.426978,16,6 +2603,5650,1983,0,5,0,2508,0,11,1,1.656075,25,6 +2604,5650,1984,0,6,0,2242,0,11,0,1.87948,36,7 +2605,5650,1985,0,7,0,2112,1,11,0,1.632911,49,7 +2606,5650,1986,0,8,0,2080,1,11,0,1.784046,64,6 +2607,5650,1987,0,9,0,2620,1,11,1,1.581482,81,5 +2608,5660,1980,0,2,0,2448,1,12,0,1.845683,4,5 +2609,5660,1981,0,3,0,2395,1,12,0,1.785477,9,5 +2610,5660,1982,0,4,0,2629,1,12,0,2.006314,16,3 +2611,5660,1983,0,5,0,2390,1,12,0,1.94939,25,3 +2612,5660,1984,0,6,0,2140,1,12,0,2.017014,36,3 +2613,5660,1985,0,7,0,2470,0,12,0,1.957906,49,3 +2614,5660,1986,0,8,0,2415,0,12,0,1.983336,64,3 +2615,5660,1987,0,9,0,2340,0,12,0,2.030978,81,3 +2616,5665,1980,0,3,0,2203,0,14,0,1.429768,9,3 +2617,5665,1981,0,4,0,1864,0,14,0,1.294198,16,2 +2618,5665,1982,0,5,0,2080,0,14,0,1.585143,25,2 +2619,5665,1983,0,6,0,2480,0,14,1,1.34188,36,2 +2620,5665,1984,0,7,0,2190,0,14,1,1.256319,49,2 +2621,5665,1985,0,8,0,2490,0,14,0,1.180582,64,2 +2622,5665,1986,0,9,0,2478,0,14,0,1.165345,81,2 +2623,5665,1987,0,10,0,3200,0,14,1,1.276145,100,6 +2624,5666,1980,0,1,0,1490,0,14,0,1.676231,1,5 +2625,5666,1981,0,2,0,1605,0,14,0,1.500957,4,8 +2626,5666,1982,0,3,0,2080,1,14,0,1.690503,9,2 +2627,5666,1983,0,4,0,2200,1,14,0,1.6693209999999998,16,2 +2628,5666,1984,0,5,0,2600,1,14,0,1.682546,25,3 +2629,5666,1985,0,6,0,2600,1,14,0,1.910543,36,3 +2630,5666,1986,0,7,0,2415,1,14,0,1.884245,49,3 +2631,5666,1987,0,8,0,2495,1,14,0,2.189984,64,3 +2632,5698,1980,0,4,0,1915,0,12,0,1.712971,16,4 +2633,5698,1981,0,5,0,1440,1,12,0,1.810109,25,4 +2634,5698,1982,0,6,0,2080,1,12,1,1.46736,36,4 +2635,5698,1983,0,7,0,1920,1,12,1,1.740914,49,4 +2636,5698,1984,0,8,0,2080,1,12,1,1.713318,64,4 +2637,5698,1985,0,9,0,2080,1,12,1,2.133687,81,4 +2638,5698,1986,0,10,0,2080,1,12,1,2.074398,100,4 +2639,5698,1987,0,11,0,2080,1,12,1,2.112393,121,4 +2640,5699,1980,0,2,0,2272,0,13,0,1.829711,4,4 +2641,5699,1981,0,3,0,2080,1,13,0,1.93486,9,6 +2642,5699,1982,0,4,0,1400,1,13,0,1.863256,16,3 +2643,5699,1983,0,5,0,1227,1,13,0,1.560059,25,4 +2644,5699,1984,0,6,0,2236,1,13,0,1.928679,36,3 +2645,5699,1985,0,7,0,2236,1,13,0,1.981323,49,2 +2646,5699,1986,0,8,0,2113,1,13,0,2.058657,64,4 +2647,5699,1987,0,9,0,2080,1,13,0,2.148761,81,4 +2648,5731,1980,0,3,1,2098,1,11,1,1.204926,9,6 +2649,5731,1981,0,4,1,2080,1,11,0,1.01857,16,5 +2650,5731,1982,0,5,1,2080,1,11,0,1.314597,25,7 +2651,5731,1983,0,6,1,2080,1,11,0,1.470518,36,4 +2652,5731,1984,0,7,1,2080,1,11,0,1.445478,49,4 +2653,5731,1985,0,8,1,2080,1,11,0,1.7088029999999998,64,4 +2654,5731,1986,0,9,1,2080,1,11,0,2.381883,81,4 +2655,5731,1987,0,10,1,2080,1,11,1,1.589145,100,7 +2656,5750,1980,0,5,1,1240,1,11,1,1.048965,25,6 +2657,5750,1981,0,6,1,2674,1,11,1,1.278188,36,4 +2658,5750,1982,0,7,1,2136,1,11,0,1.663936,49,4 +2659,5750,1983,0,8,1,2272,1,11,1,1.637118,64,4 +2660,5750,1984,0,9,1,2100,1,11,1,1.844827,81,2 +2661,5750,1985,0,10,1,2080,1,11,0,1.920112,100,2 +2662,5750,1986,0,11,1,2080,1,11,0,2.3212580000000003,121,4 +2663,5750,1987,0,12,1,2080,1,11,0,2.074653,144,2 +2664,5755,1980,0,4,1,1924,1,10,1,1.302818,16,9 +2665,5755,1981,0,5,1,2000,1,10,0,1.386294,25,9 +2666,5755,1982,0,6,1,2080,1,10,0,1.134215,36,7 +2667,5755,1983,0,7,1,2080,1,10,0,1.843193,49,5 +2668,5755,1984,0,8,1,2080,1,10,0,1.95448,64,5 +2669,5755,1985,0,9,1,2080,1,10,0,1.920112,81,5 +2670,5755,1986,0,10,1,2080,1,10,1,1.923575,100,5 +2671,5755,1987,0,11,1,2080,1,10,0,1.9075990000000005,121,5 +2672,5772,1980,0,4,1,3870,1,9,0,-0.8876854999999999,16,6 +2673,5772,1981,0,5,1,2800,1,9,0,1.232144,25,7 +2674,5772,1982,0,6,1,3315,1,9,0,1.349577,36,6 +2675,5772,1983,0,7,1,2588,1,9,0,1.624676,49,6 +2676,5772,1984,0,8,1,2604,1,9,0,1.629716,64,7 +2677,5772,1985,0,9,1,1230,1,9,0,2.345383,81,6 +2678,5772,1986,0,10,1,3684,1,9,0,0.9919415,100,6 +2679,5772,1987,0,11,1,2256,1,9,0,1.5685440000000002,121,6 +2680,5816,1980,0,3,1,2252,0,12,0,1.268728,9,6 +2681,5816,1981,0,4,1,2288,0,12,0,1.588236,16,6 +2682,5816,1982,0,5,1,2288,0,12,0,1.363681,25,6 +2683,5816,1983,0,6,1,2288,1,12,0,1.457234,36,6 +2684,5816,1984,0,7,1,2112,1,12,0,1.379597,49,4 +2685,5816,1985,0,8,1,1865,1,12,0,1.0809959999999998,64,6 +2686,5816,1986,0,9,1,2000,1,12,0,1.37965,81,5 +2687,5816,1987,0,10,1,2080,1,12,0,1.455614,100,5 +2688,5823,1980,0,3,1,2288,0,11,0,1.129546,9,7 +2689,5823,1981,0,4,1,2288,0,11,0,0.9640814,16,6 +2690,5823,1982,0,5,1,2136,0,11,1,1.258171,25,5 +2691,5823,1983,0,6,1,2080,0,11,0,1.150046,36,6 +2692,5823,1984,0,7,1,2080,0,11,0,1.474907,49,6 +2693,5823,1985,0,8,1,2080,0,11,0,1.514647,64,6 +2694,5823,1986,0,9,1,2576,0,11,0,1.28071,81,6 +2695,5823,1987,0,10,1,2650,0,11,0,1.213422,100,6 +2696,5851,1980,0,1,1,1213,0,13,0,-1.113822,1,7 +2697,5851,1981,0,2,1,797,0,13,0,1.501593,4,7 +2698,5851,1982,0,3,1,1160,0,13,0,1.175839,9,5 +2699,5851,1983,0,4,1,2020,0,13,0,1.491691,16,5 +2700,5851,1984,0,5,1,2080,0,13,0,1.864868,25,5 +2701,5851,1985,0,6,1,2430,0,13,0,1.764589,36,5 +2702,5851,1986,0,7,1,2160,0,13,0,1.813514,49,2 +2703,5851,1987,0,8,1,2080,0,13,0,1.952051,64,7 +2704,5857,1980,0,2,1,2292,0,12,0,0.4346519,4,6 +2705,5857,1981,0,3,1,2452,0,12,0,1.7703240000000002,9,6 +2706,5857,1982,0,4,1,1840,0,12,0,1.813106,16,6 +2707,5857,1983,0,5,1,2080,0,12,0,1.843193,25,6 +2708,5857,1984,0,6,1,2080,0,12,0,1.854397,36,6 +2709,5857,1985,0,7,1,2080,0,12,0,1.820029,49,6 +2710,5857,1986,0,8,1,2830,0,12,0,1.638656,64,5 +2711,5857,1987,0,9,1,2620,0,12,0,1.881587,81,6 +2712,5859,1980,0,2,0,980,1,15,0,1.222404,4,1 +2713,5859,1981,0,3,0,2040,1,15,0,2.322003,9,1 +2714,5859,1982,0,4,0,1958,1,15,0,1.870034,16,1 +2715,5859,1983,0,5,0,2134,1,15,0,1.124416,25,3 +2716,5859,1984,0,6,0,2324,1,15,0,1.363985,36,3 +2717,5859,1985,0,7,0,2208,1,15,0,1.811603,49,2 +2718,5859,1986,0,8,0,2096,1,15,0,1.843592,64,2 +2719,5859,1987,0,9,0,2144,1,15,0,1.781983,81,2 +2720,6016,1980,0,2,1,2080,0,12,0,1.856792,4,6 +2721,6016,1981,0,3,1,2080,0,12,0,1.824611,9,4 +2722,6016,1982,0,4,1,2000,0,12,0,1.88707,16,7 +2723,6016,1983,0,5,1,2080,0,12,0,1.928351,25,7 +2724,6016,1984,0,6,1,2080,0,12,0,2.088012,36,7 +2725,6016,1985,0,7,1,2080,0,12,0,2.053644,49,7 +2726,6016,1986,0,8,1,2080,0,12,0,2.113619,64,7 +2727,6016,1987,0,9,1,2080,0,12,0,2.148761,81,4 +2728,6020,1980,1,4,0,1596,0,10,0,0.676384,16,6 +2729,6020,1981,1,5,0,2277,0,10,0,0.5407809,25,7 +2730,6020,1982,1,6,0,2784,0,10,0,0.1950097,36,6 +2731,6020,1983,1,7,0,3485,0,10,0,0.3826314,49,3 +2732,6020,1984,1,8,0,2310,0,10,0,1.104257,64,6 +2733,6020,1985,1,9,0,2340,0,10,0,1.066374,81,6 +2734,6020,1986,1,10,0,2925,0,10,0,1.202443,100,6 +2735,6020,1987,1,11,0,3110,0,10,0,1.046191,121,4 +2736,6025,1980,1,3,0,1632,0,10,0,0.7742705,9,9 +2737,6025,1981,1,4,0,1198,0,10,0,0.2893501,16,9 +2738,6025,1982,1,5,0,2126,0,10,0,0.906489,25,9 +2739,6025,1983,1,6,0,2080,1,10,1,0.3391157,36,9 +2740,6025,1984,1,7,0,2080,1,10,1,1.212543,49,9 +2741,6025,1985,1,8,0,1504,1,10,1,1.502415,64,9 +2742,6025,1986,1,9,0,2770,0,10,0,1.277093,81,6 +2743,6025,1987,1,10,0,3084,0,10,1,-0.1910087,100,6 +2744,6056,1980,1,2,0,2080,0,12,0,1.091325,4,4 +2745,6056,1981,1,3,0,2295,0,12,0,0.9202046,9,4 +2746,6056,1982,1,4,0,2340,0,12,0,1.061895,16,2 +2747,6056,1983,1,5,0,2340,0,12,0,1.214584,25,4 +2748,6056,1984,1,6,0,2340,0,12,0,1.357124,36,2 +2749,6056,1985,1,7,0,1445,0,12,0,0.4206550999999999,49,3 +2750,6056,1986,1,8,0,2080,0,12,0,1.268396,64,4 +2751,6056,1987,1,9,0,2080,0,12,0,1.380505,81,4 +2752,6094,1980,1,4,0,2600,0,13,1,1.761349,16,2 +2753,6094,1981,1,5,0,2600,0,13,0,1.912387,25,2 +2754,6094,1982,1,6,0,3460,0,13,0,1.459234,36,9 +2755,6094,1983,1,7,0,3321,1,13,0,1.318137,49,2 +2756,6094,1984,1,8,0,3218,1,13,0,1.306779,64,2 +2757,6094,1985,1,9,0,2632,1,13,1,1.684736,81,9 +2758,6094,1986,1,10,0,2547,1,13,0,1.7575610000000002,100,2 +2759,6094,1987,1,11,0,3021,1,13,0,1.5343790000000002,121,2 +2760,6186,1980,1,2,0,2132,0,12,0,1.19087,4,6 +2761,6186,1981,1,3,0,2171,0,12,0,1.7489400000000002,9,5 +2762,6186,1982,1,4,0,2092,1,12,0,1.894471,16,9 +2763,6186,1983,1,5,0,2080,1,12,0,1.72541,25,5 +2764,6186,1984,1,6,0,2295,1,12,0,1.6448060000000002,36,5 +2765,6186,1985,1,7,0,2110,1,12,0,1.751642,49,1 +2766,6186,1986,1,8,0,2080,1,12,0,1.773293,64,5 +2767,6186,1987,1,9,0,2080,1,12,0,1.99461,81,1 +2768,6395,1980,1,7,0,2695,0,9,0,1.328731,49,8 +2769,6395,1981,1,8,0,1785,1,9,0,1.595333,64,6 +2770,6395,1982,1,9,0,2000,1,9,0,1.762514,81,5 +2771,6395,1983,1,10,0,2176,1,9,0,1.85214,100,7 +2772,6395,1984,1,11,0,2080,1,9,0,1.920579,121,5 +2773,6395,1985,1,12,0,2080,1,9,0,1.966632,144,6 +2774,6395,1986,1,13,0,2080,1,9,0,1.991017,169,6 +2775,6395,1987,1,14,0,2080,1,9,0,1.973557,196,6 +2776,6430,1980,1,5,0,1885,0,11,0,1.258758,25,6 +2777,6430,1981,1,6,0,2015,0,11,1,1.418043,36,6 +2778,6430,1982,1,7,0,2080,0,11,1,1.179678,49,6 +2779,6430,1983,1,8,0,1280,0,11,1,1.7208139999999998,64,6 +2780,6430,1984,1,9,0,1640,0,11,1,1.450214,81,9 +2781,6430,1985,1,10,0,2080,0,11,1,1.440539,100,7 +2782,6430,1986,1,11,0,2080,0,11,1,1.420472,121,6 +2783,6430,1987,1,12,0,2080,0,11,1,1.7069279999999998,144,6 +2784,6446,1980,0,2,0,2080,1,11,1,1.630321,4,5 +2785,6446,1981,0,3,0,2540,1,11,1,1.6419740000000005,9,5 +2786,6446,1982,0,4,0,2080,1,11,1,1.6496810000000002,16,1 +2787,6446,1983,0,5,0,2080,1,11,1,1.7128310000000002,25,1 +2788,6446,1984,0,6,0,2080,1,11,0,1.95448,36,1 +2789,6446,1985,0,7,0,2080,0,11,1,1.966632,49,1 +2790,6446,1986,0,8,0,2080,1,11,0,2.169708,64,1 +2791,6446,1987,0,9,0,2080,1,11,1,2.074653,81,1 +2792,6463,1980,0,7,0,1295,0,5,0,1.22871,49,5 +2793,6463,1981,0,8,0,1488,0,5,0,1.542747,64,7 +2794,6463,1982,0,9,0,1955,0,5,0,0.820061,81,7 +2795,6463,1983,0,10,0,2660,1,5,0,0.6527733,100,5 +2796,6463,1984,0,11,0,1680,1,5,0,0.9152912,121,5 +2797,6463,1985,0,12,0,1430,1,5,0,1.278432,144,5 +2798,6463,1986,0,13,0,1504,1,5,0,1.259204,169,5 +2799,6463,1987,0,14,0,2216,1,5,0,1.586434,196,5 +2800,6558,1980,0,2,0,1880,0,15,1,2.19095,4,2 +2801,6558,1981,0,3,0,2080,0,15,0,2.020018,9,3 +2802,6558,1982,0,4,0,2040,1,15,0,1.864072,16,3 +2803,6558,1983,0,5,0,2080,1,15,0,1.89726,25,4 +2804,6558,1984,0,6,0,2080,1,15,0,2.001,36,4 +2805,6558,1985,0,7,0,2080,1,15,0,2.094466,49,1 +2806,6558,1986,0,8,0,2080,1,15,0,2.151359,64,1 +2807,6558,1987,0,9,0,2080,1,15,0,2.148761,81,2 +2808,6559,1980,0,2,0,3271,0,15,0,1.471382,4,4 +2809,6559,1981,0,3,0,2260,1,15,0,1.4038389999999998,9,5 +2810,6559,1982,0,4,0,2200,1,15,0,1.402902,16,1 +2811,6559,1983,0,5,0,2080,1,15,0,1.893411,25,1 +2812,6559,1984,0,6,0,2080,1,15,0,1.999636,36,4 +2813,6559,1985,0,7,0,2080,1,15,0,2.086434,49,1 +2814,6559,1986,0,8,0,2080,1,15,0,2.151359,64,6 +2815,6559,1987,0,9,0,2080,1,15,0,2.112393,81,4 +2816,6561,1980,0,2,0,2361,0,15,0,1.7912860000000002,4,1 +2817,6561,1981,0,3,0,2370,0,15,0,2.005009,9,4 +2818,6561,1982,0,4,0,2340,0,15,0,2.083546,16,1 +2819,6561,1983,0,5,0,2290,0,15,0,2.188842,25,1 +2820,6561,1984,0,6,0,2340,1,15,0,2.226162,36,2 +2821,6561,1985,0,7,0,2250,1,15,0,2.293535,49,2 +2822,6561,1986,0,8,0,2570,1,15,0,2.281571,64,2 +2823,6561,1987,0,9,0,2470,1,15,0,2.494854,81,1 +2824,6574,1980,1,4,0,1880,0,12,1,1.401871,16,6 +2825,6574,1981,1,5,0,2080,0,12,1,1.2417129999999998,25,6 +2826,6574,1982,1,6,0,2000,0,12,1,1.218898,36,6 +2827,6574,1983,1,7,0,2080,0,12,1,1.437728,49,6 +2828,6574,1984,1,8,0,1960,0,12,1,1.271966,64,6 +2829,6574,1985,1,9,0,2080,0,12,1,0.8215002,81,6 +2830,6574,1986,1,10,0,2000,0,12,1,1.292638,100,6 +2831,6574,1987,1,11,0,2000,1,12,1,1.253672,121,5 +2832,6648,1980,1,2,0,2252,0,12,1,2.3618,4,6 +2833,6648,1981,1,3,0,2188,0,12,0,1.969398,9,5 +2834,6648,1982,1,4,0,2080,0,12,1,2.117947,16,6 +2835,6648,1983,1,5,0,2080,0,12,1,2.088315,25,6 +2836,6648,1984,1,6,0,1235,0,12,1,2.522297,36,5 +2837,6648,1985,1,7,0,2690,0,12,0,1.662939,49,6 +2838,6648,1986,1,8,0,2236,0,12,0,1.918696,64,6 +2839,6648,1987,1,9,0,2125,0,12,1,1.503203,81,6 +2840,6813,1980,1,3,0,2080,0,12,1,1.342639,9,9 +2841,6813,1981,1,4,0,2080,0,12,0,1.347074,16,9 +2842,6813,1982,1,5,0,2080,0,12,0,1.46736,25,9 +2843,6813,1983,1,6,0,2080,0,12,1,1.437728,36,9 +2844,6813,1984,1,7,0,2080,0,12,1,1.474907,49,9 +2845,6813,1985,1,8,0,2080,0,12,1,1.440539,64,9 +2846,6813,1986,1,9,0,2080,0,12,1,1.563573,81,9 +2847,6813,1987,1,10,0,2080,0,12,1,1.6497700000000002,100,9 +2848,6824,1980,0,4,1,2080,1,12,1,1.041834,16,4 +2849,6824,1981,0,5,1,2080,1,12,1,1.683546,25,6 +2850,6824,1982,0,6,1,2080,1,12,1,1.46736,36,7 +2851,6824,1983,0,7,1,2080,1,12,1,1.517771,49,6 +2852,6824,1984,0,8,1,2080,1,12,1,1.549015,64,7 +2853,6824,1985,0,9,1,2080,1,12,1,1.820029,81,7 +2854,6824,1986,0,10,1,2080,1,12,1,1.851255,100,6 +2855,6824,1987,0,11,1,2080,0,12,1,1.861079,121,7 +2856,6888,1980,0,7,1,3510,0,10,0,0.9247514,49,9 +2857,6888,1981,0,8,1,3273,0,10,1,0.9890447,64,9 +2858,6888,1982,0,9,1,3120,0,10,0,0.7742127,81,9 +2859,6888,1983,0,10,1,2300,0,10,0,1.049505,100,9 +2860,6888,1984,0,11,1,2120,0,10,0,1.529967,121,9 +2861,6888,1985,0,12,1,2080,1,10,0,1.7088029999999998,144,9 +2862,6888,1986,0,13,1,2000,1,10,0,1.727957,169,9 +2863,6888,1987,0,14,1,1976,1,10,0,1.701063,196,9 +2864,6942,1980,0,3,1,2623,0,10,1,1.311359,9,9 +2865,6942,1981,0,4,1,3348,0,10,0,1.276543,16,4 +2866,6942,1982,0,5,1,2336,0,10,0,1.862113,25,4 +2867,6942,1983,0,6,1,2140,0,10,0,1.757597,36,4 +2868,6942,1984,0,7,1,2066,0,10,0,1.720072,49,4 +2869,6942,1985,0,8,1,2080,0,10,0,1.7659619999999998,64,2 +2870,6942,1986,0,9,1,2120,0,10,0,1.927517,81,2 +2871,6942,1987,0,10,1,2080,1,10,0,1.952051,100,2 +2872,6954,1980,0,2,1,2203,1,13,0,1.860551,4,6 +2873,6954,1981,0,3,1,1928,1,13,0,2.048897,9,6 +2874,6954,1982,0,4,1,2060,1,13,0,1.992835,16,7 +2875,6954,1983,0,5,1,2240,1,13,0,1.874446,25,6 +2876,6954,1984,0,6,1,3778,1,13,0,1.203503,36,6 +2877,6954,1985,0,7,1,2140,1,13,0,1.619741,49,2 +2878,6954,1986,0,8,1,2080,1,13,0,2.074398,64,2 +2879,6954,1987,0,9,1,2380,1,13,0,1.772866,81,2 +2880,6955,1980,0,3,1,4002,0,11,1,1.192349,9,9 +2881,6955,1981,0,4,1,2509,0,11,0,2.241362,16,9 +2882,6955,1982,0,5,1,3204,0,11,0,2.311621,25,6 +2883,6955,1983,0,6,1,3206,0,11,1,1.816002,36,6 +2884,6955,1984,0,7,1,4106,0,11,0,1.533093,49,5 +2885,6955,1985,0,8,1,2984,0,11,0,1.846898,64,6 +2886,6955,1986,0,9,1,3760,0,11,0,1.977044,81,6 +2887,6955,1987,0,10,1,3704,1,11,0,1.765872,100,1 +2888,6964,1980,1,5,0,1040,0,8,1,1.379507,25,4 +2889,6964,1981,1,6,0,1080,0,8,0,1.779337,36,4 +2890,6964,1982,1,7,0,2165,0,8,0,1.223149,49,5 +2891,6964,1983,1,8,0,2080,0,8,0,1.255406,64,5 +2892,6964,1984,1,9,0,2000,0,8,0,1.544433,81,5 +2893,6964,1985,1,10,0,2520,0,8,0,1.301095,100,5 +2894,6964,1986,1,11,0,2080,1,8,0,1.563573,121,5 +2895,6964,1987,1,12,0,2000,1,8,1,1.800216,144,5 +2896,6987,1980,0,2,0,2255,0,15,0,2.46583,4,2 +2897,6987,1981,0,3,0,2520,0,15,0,2.541477,9,2 +2898,6987,1982,0,4,0,2130,1,15,0,3.085834,16,2 +2899,6987,1983,0,5,0,2080,1,15,0,3.229487,25,2 +2900,6987,1984,0,6,0,3155,1,15,0,2.620471,36,2 +2901,6987,1985,0,7,0,2290,1,15,0,2.6914290000000003,49,1 +2902,6987,1986,0,8,0,1955,1,15,0,2.60638,64,3 +2903,6987,1987,0,9,0,1975,1,15,0,2.235652,81,3 +2904,7025,1980,0,4,1,1918,0,12,1,1.7114060000000002,16,7 +2905,7025,1981,0,5,1,1960,0,12,1,1.937419,25,6 +2906,7025,1982,0,6,1,2080,0,12,1,2.026976,36,6 +2907,7025,1983,0,7,1,2080,1,12,1,2.2486580000000003,49,7 +2908,7025,1984,0,8,1,2296,1,12,1,2.069254,64,6 +2909,7025,1985,0,9,1,2144,1,12,1,2.279272,81,6 +2910,7025,1986,0,10,1,2080,1,12,1,2.151359,100,6 +2911,7025,1987,0,11,1,2192,1,12,1,2.165307,121,6 +2912,7043,1980,0,2,0,2066,0,12,0,1.349393,4,1 +2913,7043,1981,0,3,0,2080,1,12,0,1.683546,9,6 +2914,7043,1982,0,4,0,2080,1,12,0,1.690503,16,6 +2915,7043,1983,0,5,0,2080,1,12,0,1.7622240000000002,25,6 +2916,7043,1984,0,6,0,2080,1,12,0,1.772159,36,6 +2917,7043,1985,0,7,0,2080,1,12,0,1.952073,49,6 +2918,7043,1986,0,8,0,2080,1,12,0,1.946565,64,6 +2919,7043,1987,0,9,0,2080,1,12,0,1.7069279999999998,81,6 +2920,7060,1980,0,2,0,2080,0,12,0,1.918003,4,7 +2921,7060,1981,0,3,0,2080,0,12,1,1.609438,9,7 +2922,7060,1982,0,4,0,2080,0,12,1,1.621511,16,6 +2923,7060,1983,0,5,0,2080,0,12,1,1.660872,25,6 +2924,7060,1984,0,6,0,2080,0,12,0,1.682546,36,6 +2925,7060,1985,0,7,0,2080,0,12,1,1.7088029999999998,49,6 +2926,7060,1986,0,8,0,2080,0,12,1,1.7458939999999998,64,7 +2927,7060,1987,0,9,0,2080,0,12,1,1.760996,81,6 +2928,7087,1980,1,2,0,1353,0,11,0,0.5567871,4,9 +2929,7087,1981,1,3,0,1316,0,11,0,1.028316,9,9 +2930,7087,1982,1,4,0,1920,0,11,0,1.008406,16,9 +2931,7087,1983,1,5,0,2550,0,11,1,0.9463205,25,9 +2932,7087,1984,1,6,0,2032,0,11,1,1.195068,36,6 +2933,7087,1985,1,7,0,1780,0,11,1,1.110786,49,6 +2934,7087,1986,1,8,0,1946,0,11,0,1.224699,64,6 +2935,7087,1987,1,9,0,2412,0,11,0,1.066363,81,2 +2936,7238,1980,0,8,1,2080,0,6,1,1.342639,64,6 +2937,7238,1981,0,9,1,1395,0,6,0,1.389872,81,3 +2938,7238,1982,0,10,1,1540,1,6,0,1.480263,100,6 +2939,7238,1983,0,11,1,2040,1,6,0,1.370135,121,6 +2940,7238,1984,0,12,1,2285,1,6,0,1.118545,144,1 +2941,7238,1985,0,13,1,2165,1,6,0,1.400487,169,1 +2942,7238,1986,0,14,1,1360,1,6,0,1.111386,196,1 +2943,7238,1987,0,15,1,2080,1,6,0,1.9075990000000005,225,3 +2944,7279,1980,1,4,0,2040,0,12,1,1.328156,16,6 +2945,7279,1981,1,5,0,2080,0,12,1,1.347074,25,4 +2946,7279,1982,1,6,0,2080,0,12,1,1.380348,36,6 +2947,7279,1983,1,7,0,2080,0,12,1,1.350717,49,7 +2948,7279,1984,1,8,0,2080,0,12,1,1.435686,64,7 +2949,7279,1985,1,9,0,2080,0,12,1,1.58364,81,6 +2950,7279,1986,1,10,0,2080,0,12,1,1.253418,100,7 +2951,7279,1987,1,11,0,2080,0,12,1,1.589145,121,4 +2952,7342,1980,0,5,0,2496,0,12,0,1.376056,25,5 +2953,7342,1981,0,6,0,2032,0,12,0,1.390224,36,5 +2954,7342,1982,0,7,0,1640,0,12,0,1.4393280000000002,49,5 +2955,7342,1983,0,8,0,1760,0,12,0,1.604782,64,5 +2956,7342,1984,0,9,0,2080,0,12,0,1.490175,81,5 +2957,7342,1985,0,10,0,2080,0,12,0,1.440539,100,5 +2958,7342,1986,0,11,0,1560,0,12,0,1.222646,121,5 +2959,7342,1987,0,12,0,2265,0,12,0,1.296299,144,5 +2960,7343,1980,0,1,0,1489,0,15,0,1.35148,1,9 +2961,7343,1981,0,2,0,2327,0,15,1,1.417183,4,1 +2962,7343,1982,0,3,0,2430,0,15,0,1.599519,9,4 +2963,7343,1983,0,4,0,2778,1,15,0,1.6838830000000002,16,4 +2964,7343,1984,0,5,0,2602,1,15,0,1.681777,25,4 +2965,7343,1985,0,6,0,2770,1,15,1,1.6801529999999998,36,6 +2966,7343,1986,0,7,0,2315,1,15,1,1.967356,49,5 +2967,7343,1987,0,8,0,2485,1,15,1,1.934489,64,5 +2968,7411,1980,1,2,0,2240,0,12,1,1.150748,4,6 +2969,7411,1981,1,3,0,2596,0,12,1,1.442322,9,7 +2970,7411,1982,1,4,0,1584,0,12,1,0.8907529000000001,16,6 +2971,7411,1983,1,5,0,2080,0,12,0,1.150268,25,9 +2972,7411,1984,1,6,0,1960,0,12,0,1.220673,36,9 +2973,7411,1985,1,7,0,3616,0,12,0,0.8875389000000001,49,9 +2974,7411,1986,1,8,0,2264,1,12,1,1.409814,64,1 +2975,7411,1987,1,9,0,2080,1,12,1,1.589145,81,5 +2976,7424,1980,0,1,1,2145,0,11,0,1.2893940000000002,1,7 +2977,7424,1981,0,2,1,2155,0,11,0,1.4084139999999998,4,4 +2978,7424,1982,0,3,1,1420,0,11,1,1.6667490000000005,9,7 +2979,7424,1983,0,4,1,1288,0,11,1,2.172939,16,4 +2980,7424,1984,0,5,1,2056,0,11,1,1.89208,25,4 +2981,7424,1985,0,6,1,1788,1,11,1,2.460847,36,6 +2982,7424,1986,0,7,1,2340,0,11,1,2.401301,49,6 +2983,7424,1987,0,8,1,2376,0,11,1,2.404368,64,6 +2984,7429,1980,0,6,0,1400,1,8,0,1.939205,36,6 +2985,7429,1981,0,7,0,2165,0,8,1,1.307421,49,6 +2986,7429,1982,0,8,0,2180,0,8,0,1.420403,64,6 +2987,7429,1983,0,9,0,2930,0,8,0,0.5560970000000001,81,6 +2988,7429,1984,0,10,0,2490,0,8,0,1.404191,100,6 +2989,7429,1985,0,11,0,2600,0,8,0,1.7434889999999998,121,5 +2990,7429,1986,0,12,0,3020,0,8,0,1.478366,144,6 +2991,7429,1987,0,13,0,3246,0,8,0,1.462543,169,6 +2992,7454,1980,1,2,0,1723,0,15,0,1.381279,4,3 +2993,7454,1981,1,3,0,2205,0,15,0,1.660278,9,1 +2994,7454,1982,1,4,0,2235,0,15,0,1.828351,16,1 +2995,7454,1983,1,5,0,2358,0,15,0,1.980111,25,5 +2996,7454,1984,1,6,0,2116,0,15,0,2.153967,36,1 +2997,7454,1985,1,7,0,2296,0,15,0,2.090976,49,1 +2998,7454,1986,1,8,0,2530,0,15,0,2.125407,64,1 +2999,7454,1987,1,9,0,2080,0,15,0,2.169963,81,5 +3000,7472,1980,0,3,1,2612,0,10,1,1.315561,9,6 +3001,7472,1981,0,4,1,2636,1,10,0,1.372543,16,4 +3002,7472,1982,0,5,1,2220,1,10,0,1.482263,25,5 +3003,7472,1983,0,6,1,2080,1,10,0,1.591879,36,5 +3004,7472,1984,0,7,1,2080,1,10,0,1.682546,49,5 +3005,7472,1985,0,8,1,3942,1,10,1,1.414324,64,5 +3006,7472,1986,0,9,1,2384,1,10,0,1.937986,81,5 +3007,7472,1987,0,10,1,2080,1,10,1,2.035432,100,5 +3008,7474,1980,1,2,0,2620,0,12,0,1.339411,4,7 +3009,7474,1981,1,3,0,2080,0,12,1,1.93486,9,5 +3010,7474,1982,1,4,0,3136,0,12,1,1.2109299999999998,16,7 +3011,7474,1983,1,5,0,4872,0,12,1,0.9348981,25,7 +3012,7474,1984,1,6,0,2818,1,12,1,1.650821,36,6 +3013,7474,1985,1,7,0,2235,1,12,1,1.799449,49,7 +3014,7474,1986,1,8,0,2080,1,12,1,1.900045,64,5 +3015,7474,1987,1,9,0,2080,1,12,1,1.952051,81,5 +3016,7509,1980,1,5,0,2080,1,11,1,1.407178,25,6 +3017,7509,1981,1,6,0,2080,1,11,1,1.609438,36,5 +3018,7509,1982,1,7,0,2080,1,11,1,1.6349200000000002,49,6 +3019,7509,1983,1,8,0,2080,1,11,1,1.72541,64,5 +3020,7509,1984,1,9,0,2080,1,11,0,1.880372,81,6 +3021,7509,1985,1,10,0,2080,1,11,1,1.935892,100,4 +3022,7509,1986,1,11,0,2080,1,11,1,2.151359,121,5 +3023,7509,1987,1,12,0,2080,1,11,1,1.9075990000000005,144,6 +3024,7539,1980,0,1,1,1144,0,12,0,1.178336,1,6 +3025,7539,1981,0,2,1,2580,0,12,0,1.131652,4,5 +3026,7539,1982,0,3,1,3120,0,12,1,1.172243,9,9 +3027,7539,1983,0,4,1,3120,1,12,0,1.2352040000000002,16,9 +3028,7539,1984,0,5,1,2744,1,12,1,1.4408040000000002,25,9 +3029,7539,1985,0,6,1,4084,1,12,1,1.419757,36,9 +3030,7539,1986,0,7,1,4360,1,12,1,1.698937,49,9 +3031,7539,1987,0,8,1,4312,0,12,1,1.178565,64,9 +3032,7769,1980,0,2,0,2135,1,14,0,1.758373,4,9 +3033,7769,1981,0,3,0,2540,1,14,0,1.735064,9,9 +3034,7769,1982,0,4,0,2600,1,14,0,1.827363,16,2 +3035,7769,1983,0,5,0,2600,1,14,0,1.82072,25,2 +3036,7769,1984,0,6,0,2315,1,14,0,2.021792,36,9 +3037,7769,1985,0,7,0,2340,1,14,0,1.976683,49,9 +3038,7769,1986,0,8,0,2340,1,14,0,1.956615,64,9 +3039,7769,1987,0,9,0,2340,1,14,0,2.066069,81,9 +3040,7783,1980,0,3,0,1288,0,12,0,1.416451,9,9 +3041,7783,1981,0,4,0,2340,0,12,0,1.229291,16,5 +3042,7783,1982,0,5,0,1780,0,12,0,1.440793,25,2 +3043,7783,1983,0,6,0,856,0,12,0,2.405623,36,2 +3044,7783,1984,0,7,0,736,0,12,0,2.028292,49,9 +3045,7783,1985,0,8,0,1774,0,12,0,1.114163,64,7 +3046,7783,1986,0,9,0,1856,0,12,0,1.495195,81,9 +3047,7783,1987,0,10,0,1820,0,12,0,1.5150370000000002,100,9 +3048,7784,1980,0,1,0,2080,0,11,0,1.794139,1,9 +3049,7784,1981,0,2,0,2120,0,11,0,2.937463,4,2 +3050,7784,1982,0,3,0,1750,0,11,0,3.472707,9,3 +3051,7784,1983,0,4,0,1310,0,11,0,2.97051,16,2 +3052,7784,1984,0,5,0,1040,0,11,0,3.777492,25,3 +3053,7784,1985,0,6,0,940,0,11,0,4.05186,36,3 +3054,7784,1986,0,7,0,2460,0,11,0,3.292909,49,2 +3055,7784,1987,0,8,0,2880,0,11,0,3.096304,64,3 +3056,7801,1980,1,1,0,2150,0,13,0,0.904074,1,9 +3057,7801,1981,1,2,0,1220,0,13,0,1.187443,4,9 +3058,7801,1982,1,3,0,365,0,13,1,0.8537073000000001,9,9 +3059,7801,1983,1,4,0,1742,0,13,0,1.695105,16,9 +3060,7801,1984,1,5,0,1565,0,13,1,1.14035,25,3 +3061,7801,1985,1,6,0,1920,0,13,0,1.035074,36,7 +3062,7801,1986,1,7,0,2080,0,13,0,1.49458,49,2 +3063,7801,1987,1,8,0,2280,0,13,0,1.432799,64,2 +3064,7824,1980,0,2,1,2625,0,12,1,1.745915,4,6 +3065,7824,1981,0,3,1,2475,0,12,0,1.509673,9,6 +3066,7824,1982,0,4,1,1950,0,12,0,1.57272,16,6 +3067,7824,1983,0,5,1,3200,0,12,0,1.230089,25,5 +3068,7824,1984,0,6,1,2645,0,12,0,1.939223,36,2 +3069,7824,1985,0,7,1,2190,1,12,0,2.00211,49,2 +3070,7824,1986,0,8,1,2080,1,12,0,2.033576,64,5 +3071,7824,1987,0,9,1,2330,1,12,0,2.104254,81,2 +3072,7874,1980,0,2,0,1852,0,15,0,2.205955,4,1 +3073,7874,1981,0,3,0,2305,0,15,0,2.07727,9,1 +3074,7874,1982,0,4,0,2130,0,15,0,2.343089,16,1 +3075,7874,1983,0,5,0,2080,0,15,0,2.267007,25,1 +3076,7874,1984,0,6,0,2080,0,15,0,2.335848,36,2 +3077,7874,1985,0,7,0,2265,0,15,0,2.359916,49,2 +3078,7874,1986,0,8,0,2600,0,15,0,2.544402,64,1 +3079,7874,1987,0,9,0,2621,0,15,0,2.274248,81,1 +3080,7887,1980,0,4,0,2528,0,12,0,1.476083,16,2 +3081,7887,1981,0,5,0,1581,0,12,1,2.200802,25,4 +3082,7887,1982,0,6,0,2884,0,12,0,0.9582279,36,2 +3083,7887,1983,0,7,0,1503,0,12,0,1.965574,49,3 +3084,7887,1984,0,8,0,2109,1,12,0,1.636952,64,3 +3085,7887,1985,0,9,0,2310,1,12,0,1.649909,81,3 +3086,7887,1986,0,10,0,2267,1,12,0,1.943311,100,3 +3087,7887,1987,0,11,0,2288,1,12,0,2.017083,121,4 +3088,7923,1980,1,5,0,2014,1,12,0,2.222182,25,9 +3089,7923,1981,1,6,0,2120,0,12,1,2.244316,36,9 +3090,7923,1982,1,7,0,2080,0,12,1,2.160507,49,9 +3091,7923,1983,1,8,0,2080,0,12,1,2.210918,64,9 +3092,7923,1984,1,9,0,2080,0,12,1,2.343945,81,9 +3093,7923,1985,1,10,0,2080,0,12,1,2.4165490000000003,100,9 +3094,7923,1986,1,11,0,2080,0,12,1,2.410871,121,9 +3095,7923,1987,1,12,0,2080,1,12,1,2.357516,144,9 +3096,7926,1980,0,5,1,2000,1,12,1,1.841252,25,9 +3097,7926,1981,0,6,1,2080,1,12,1,1.7525389999999998,36,9 +3098,7926,1982,0,7,1,2080,1,12,1,1.815667,49,9 +3099,7926,1983,0,8,1,2080,1,12,1,1.843193,64,9 +3100,7926,1984,0,9,1,2080,1,12,1,1.800329,81,9 +3101,7926,1985,0,10,1,2080,1,12,0,1.7659619999999998,100,9 +3102,7926,1986,0,11,1,2080,1,12,1,1.851255,121,9 +3103,7926,1987,0,12,1,2250,1,12,1,1.733726,144,9 +3104,8021,1980,0,2,0,2285,0,15,0,1.396486,4,1 +3105,8021,1981,0,3,0,2135,0,15,0,1.583339,9,2 +3106,8021,1982,0,4,0,2080,0,15,0,1.91631,16,1 +3107,8021,1983,0,5,0,2840,0,15,0,1.899482,25,1 +3108,8021,1984,0,6,0,2750,0,15,0,2.157085,36,2 +3109,8021,1985,0,7,0,2600,0,15,0,2.207794,49,2 +3110,8021,1986,0,8,0,2654,0,15,0,2.300702,64,2 +3111,8021,1987,0,9,0,1830,0,15,0,2.682278,81,2 +3112,8087,1980,0,3,1,2080,0,12,0,2.035786,9,1 +3113,8087,1981,0,4,1,2080,0,12,0,1.906689,16,1 +3114,8087,1982,0,5,1,1640,0,12,0,2.215857,25,1 +3115,8087,1983,0,6,1,1440,0,12,0,0.3852569,36,5 +3116,8087,1984,0,7,1,2080,0,12,0,1.448721,49,1 +3117,8087,1985,0,8,1,2480,0,12,0,1.772393,64,1 +3118,8087,1986,0,9,1,2200,0,12,0,1.364382,81,1 +3119,8087,1987,0,10,1,2560,0,12,0,1.604649,100,1 +3120,8089,1980,0,3,0,2080,0,12,0,1.579028,9,4 +3121,8089,1981,0,4,0,2080,0,12,0,1.6247049999999998,16,1 +3122,8089,1982,0,5,0,2080,0,12,0,1.7297240000000005,25,2 +3123,8089,1983,0,6,0,2060,1,12,0,1.765844,36,4 +3124,8089,1984,0,7,0,2500,1,12,0,1.290984,49,3 +3125,8089,1985,0,8,0,1990,1,12,0,-0.8895563,64,3 +3126,8089,1986,0,9,0,2040,1,12,0,1.870673,81,1 +3127,8089,1987,0,10,0,2080,1,12,0,2.089921,100,1 +3128,8090,1980,0,2,0,1872,0,14,0,1.735682,4,4 +3129,8090,1981,0,3,0,2072,0,14,0,1.574071,9,4 +3130,8090,1982,0,4,0,2490,0,14,0,1.441596,16,2 +3131,8090,1983,0,5,0,2126,0,14,0,2.547256,25,3 +3132,8090,1984,0,6,0,2458,0,14,0,2.991473,36,3 +3133,8090,1985,0,7,0,2328,1,14,0,3.011444,49,3 +3134,8090,1986,0,8,0,2687,1,14,0,3.099275,64,3 +3135,8090,1987,0,9,0,2879,1,14,0,3.096662,81,2 +3136,8096,1980,0,11,1,2080,0,6,1,1.6948599999999998,121,9 +3137,8096,1981,0,12,1,2122,0,6,0,1.732548,144,9 +3138,8096,1982,0,13,1,2084,0,6,0,1.469597,169,9 +3139,8096,1983,0,14,1,2080,0,6,0,1.591879,196,9 +3140,8096,1984,0,15,1,2080,0,6,0,1.7431709999999998,225,9 +3141,8096,1985,0,16,1,2584,0,6,0,1.581781,256,9 +3142,8096,1986,0,17,1,1944,0,6,0,1.120367,289,2 +3143,8096,1987,0,18,1,2328,0,6,0,1.621686,324,9 +3144,8106,1980,0,9,1,2170,0,8,1,1.587962,81,6 +3145,8106,1981,0,10,1,2040,1,8,0,1.548813,100,6 +3146,8106,1982,0,11,1,1595,0,8,0,1.550532,121,5 +3147,8106,1983,0,12,1,1990,0,8,0,1.39495,144,6 +3148,8106,1984,0,13,1,2080,0,8,0,1.474907,169,5 +3149,8106,1985,0,14,1,2040,0,8,0,1.379915,196,5 +3150,8106,1986,0,15,1,2520,0,8,0,1.43622,225,6 +3151,8106,1987,0,16,1,2427,0,8,0,1.6580009999999998,256,5 +3152,8107,1980,0,11,1,2180,0,3,0,1.106672,121,5 +3153,8107,1981,0,12,1,2080,0,3,0,1.2417129999999998,144,6 +3154,8107,1982,0,13,1,2000,0,3,0,1.419569,169,6 +3155,8107,1983,0,14,1,2080,0,3,0,1.591879,196,6 +3156,8107,1984,0,15,1,1720,0,3,0,1.584908,225,6 +3157,8107,1985,0,16,1,2080,0,3,0,1.514647,256,6 +3158,8107,1986,0,17,1,2432,0,3,0,1.407227,289,6 +3159,8107,1987,0,18,1,2540,0,3,0,1.707803,324,6 +3160,8142,1980,0,2,1,2000,0,11,0,1.238759,4,4 +3161,8142,1981,0,3,1,2080,0,11,0,1.386294,9,4 +3162,8142,1982,0,4,1,2080,0,11,0,1.458992,16,4 +3163,8142,1983,0,5,1,2080,0,11,0,1.350717,25,4 +3164,8142,1984,0,6,1,3240,0,11,0,1.357124,36,4 +3165,8142,1985,0,7,1,2368,0,11,0,1.453962,49,4 +3166,8142,1986,0,8,1,2272,0,11,0,1.406287,64,4 +3167,8142,1987,0,9,1,2470,0,11,0,1.3527559999999998,81,2 +3168,8168,1980,0,2,1,1435,0,11,1,1.914513,4,4 +3169,8168,1981,0,3,1,1520,0,11,1,1.843053,9,4 +3170,8168,1982,0,4,1,2300,0,11,1,1.715125,16,6 +3171,8168,1983,0,5,1,2525,1,11,1,1.398005,25,5 +3172,8168,1984,0,6,1,2600,1,11,1,1.682546,36,5 +3173,8168,1985,0,7,1,2600,1,11,1,1.871322,49,6 +3174,8168,1986,0,8,1,2255,1,11,0,1.952794,64,6 +3175,8168,1987,0,9,1,1845,1,11,1,2.370432,81,6 +3176,8173,1980,0,9,1,2080,1,8,0,1.4480000000000002,81,9 +3177,8173,1981,0,10,1,2080,1,8,0,1.347074,100,9 +3178,8173,1982,0,11,1,1994,1,8,0,1.589628,121,9 +3179,8173,1983,0,12,1,1740,1,8,0,1.6449599999999998,144,9 +3180,8173,1984,0,13,1,2080,1,8,0,1.474907,169,9 +3181,8173,1985,0,14,1,2080,1,8,0,1.491525,196,9 +3182,8173,1986,0,15,1,2080,1,8,0,1.563573,225,9 +3183,8173,1987,0,16,1,2020,1,8,0,1.410776,256,9 +3184,8203,1980,0,2,1,2265,1,14,0,2.238261,4,6 +3185,8203,1981,0,3,1,1710,1,14,0,2.284885,9,6 +3186,8203,1982,0,4,1,2295,1,14,0,2.062142,16,4 +3187,8203,1983,0,5,1,2340,1,14,0,2.269026,25,4 +3188,8203,1984,0,6,1,2555,1,14,0,0.7837149,36,1 +3189,8203,1985,0,7,1,2250,1,14,0,3.239679,49,2 +3190,8203,1986,0,8,1,2710,1,14,0,2.3976040000000003,64,2 +3191,8203,1987,0,9,1,2540,1,14,0,3.221941,81,2 +3192,8211,1980,0,6,1,2315,0,8,1,0.424667,36,6 +3193,8211,1981,0,7,1,2080,1,8,0,1.442384,49,6 +3194,8211,1982,0,8,1,2510,0,8,0,1.433596,64,7 +3195,8211,1983,0,9,1,2600,0,8,0,1.396142,81,9 +3196,8211,1984,0,10,1,2600,0,8,1,1.421182,100,9 +3197,8211,1985,0,11,1,2370,0,8,1,1.384125,121,7 +3198,8211,1986,0,12,1,2145,0,8,1,1.309657,144,7 +3199,8211,1987,0,13,1,2290,0,8,0,0.9716644,169,7 +3200,8224,1980,1,5,0,3120,0,12,0,1.950793,25,6 +3201,8224,1981,1,6,0,3120,0,12,0,1.915413,36,6 +3202,8224,1982,1,7,0,2650,0,12,0,1.938935,49,5 +3203,8224,1983,1,8,0,2200,0,12,0,2.154829,64,6 +3204,8224,1984,1,9,0,1720,0,12,0,1.179443,81,7 +3205,8224,1985,1,10,0,2005,0,12,0,1.39722,100,5 +3206,8224,1986,1,11,0,3028,0,12,1,1.812193,121,5 +3207,8224,1987,1,12,0,2806,0,12,1,2.072512,144,5 +3208,8272,1980,0,3,1,2426,1,10,0,1.824752,9,6 +3209,8272,1981,0,4,1,2340,1,10,1,1.971228,16,5 +3210,8272,1982,0,5,1,2115,1,10,1,2.333062,25,5 +3211,8272,1983,0,6,1,2080,1,10,1,2.2486580000000003,36,5 +3212,8272,1984,0,7,1,2315,1,10,1,2.13512,49,5 +3213,8272,1985,0,8,1,2340,1,10,1,2.368725,64,6 +3214,8272,1986,0,9,1,2340,1,10,1,2.348657,81,5 +3215,8272,1987,0,10,1,1955,1,10,0,2.34427,100,5 +3216,8300,1980,0,0,1,2028,0,12,0,1.442858,0,1 +3217,8300,1981,0,1,1,2705,0,12,0,1.4208120000000002,1,1 +3218,8300,1982,0,2,1,2080,0,12,0,1.690503,4,1 +3219,8300,1983,0,3,1,2080,0,12,1,1.6474490000000002,9,1 +3220,8300,1984,0,4,1,2080,0,12,1,1.95448,16,1 +3221,8300,1985,0,5,1,2080,0,12,0,1.871322,25,1 +3222,8300,1986,0,6,1,1960,0,12,1,2.005988,36,1 +3223,8300,1987,0,7,1,1732,0,12,1,1.6737959999999998,49,1 +3224,8304,1980,0,2,1,2240,0,12,0,1.779357,4,6 +3225,8304,1981,0,3,1,2340,0,12,0,1.699294,9,6 +3226,8304,1982,0,4,1,2340,0,12,0,1.637259,16,6 +3227,8304,1983,0,5,1,2340,0,12,0,1.668252,25,6 +3228,8304,1984,0,6,1,2340,1,12,0,1.682546,36,6 +3229,8304,1985,0,7,1,2340,1,12,0,1.596885,49,2 +3230,8304,1986,0,8,1,2340,1,12,0,1.682178,64,8 +3231,8304,1987,0,9,1,2340,1,12,1,1.834268,81,2 +3232,8364,1980,0,3,1,2080,0,11,0,1.415166,9,6 +3233,8364,1981,0,4,1,2295,1,11,0,1.557002,16,5 +3234,8364,1982,0,5,1,1170,1,11,0,2.057613,25,6 +3235,8364,1983,0,6,1,1700,1,11,0,1.3517860000000002,36,5 +3236,8364,1984,0,7,1,1920,1,11,1,1.387896,49,6 +3237,8364,1985,0,8,1,2310,1,11,0,1.425922,64,7 +3238,8364,1986,0,9,1,2135,1,11,0,1.520667,81,7 +3239,8364,1987,0,10,1,2080,1,11,0,1.524607,100,7 +3240,8370,1980,0,3,0,2110,0,12,0,1.964308,9,5 +3241,8370,1981,0,4,0,2080,0,12,1,2.03017,16,5 +3242,8370,1982,0,5,0,2080,0,12,1,2.073496,25,5 +3243,8370,1983,0,6,0,2080,0,12,0,2.043864,36,5 +3244,8370,1984,0,7,0,2080,1,12,1,2.088012,49,5 +3245,8370,1985,0,8,0,2080,1,12,1,2.133687,64,5 +3246,8370,1986,0,9,0,2080,1,12,0,2.113619,81,5 +3247,8370,1987,0,10,0,2080,1,12,1,1.952051,100,5 +3248,8381,1980,0,2,1,1868,0,10,0,1.027866,4,7 +3249,8381,1981,0,3,1,2392,0,10,1,0.9841682,9,7 +3250,8381,1982,0,4,1,2278,0,10,0,1.456473,16,4 +3251,8381,1983,0,5,1,2885,0,10,0,1.333715,25,6 +3252,8381,1984,0,6,1,3050,0,10,0,1.417556,36,6 +3253,8381,1985,0,7,1,2990,0,10,0,1.557207,49,3 +3254,8381,1986,0,8,1,2305,0,10,0,1.6431810000000002,64,3 +3255,8381,1987,0,9,1,1630,0,10,0,1.950716,81,6 +3256,8388,1980,0,8,1,3016,1,8,0,1.391247,64,6 +3257,8388,1981,0,9,1,3016,1,8,0,1.494304,81,5 +3258,8388,1982,0,10,1,3016,1,8,0,1.440744,100,6 +3259,8388,1983,0,11,1,3016,1,8,0,1.400253,121,6 +3260,8388,1984,0,12,1,3016,1,8,0,1.474589,144,6 +3261,8388,1985,0,13,1,2881,1,8,0,1.406291,169,8 +3262,8388,1986,0,14,1,2974,1,8,0,1.463256,196,8 +3263,8388,1987,0,15,1,2842,1,8,0,1.567807,225,5 +3264,8406,1980,0,6,1,2185,1,8,1,1.293391,36,8 +3265,8406,1981,0,7,1,2080,1,8,0,1.609438,49,7 +3266,8406,1982,0,8,1,2080,1,8,0,1.46736,64,6 +3267,8406,1983,0,9,1,2080,1,8,0,1.547778,81,6 +3268,8406,1984,0,10,1,2080,1,8,0,1.611319,100,5 +3269,8406,1985,0,11,1,2080,1,8,0,1.576951,121,5 +3270,8406,1986,0,12,1,2080,1,8,0,1.706229,144,6 +3271,8406,1987,0,13,1,2080,1,8,0,1.7069279999999998,169,5 +3272,8415,1980,1,2,0,548,0,10,0,1.17241,4,8 +3273,8415,1981,1,3,0,2088,0,10,1,0.4269441,9,6 +3274,8415,1982,1,4,0,1744,0,10,0,1.510015,16,6 +3275,8415,1983,1,5,0,1565,0,10,1,-0.0695494,25,5 +3276,8415,1984,1,6,0,2080,0,10,1,1.827728,36,9 +3277,8415,1985,1,7,0,2080,1,10,1,1.793361,49,9 +3278,8415,1986,1,8,0,2080,1,10,1,1.991017,64,6 +3279,8415,1987,1,9,0,2080,1,10,1,1.952051,81,6 +3280,8496,1980,1,2,0,1145,0,12,0,1.351816,4,7 +3281,8496,1981,1,3,0,1040,0,12,0,1.196251,9,4 +3282,8496,1982,1,4,0,1980,0,12,0,0.6411621,16,4 +3283,8496,1983,1,5,0,2080,0,12,0,1.116144,25,3 +3284,8496,1984,1,6,0,2080,0,12,0,0.9893992,36,3 +3285,8496,1985,1,7,0,2080,0,12,0,1.137353,49,7 +3286,8496,1986,1,8,0,2080,0,12,0,1.052747,64,3 +3287,8496,1987,1,9,0,2080,1,12,0,1.214452,81,3 +3288,8501,1980,1,5,0,2028,0,10,0,0.9624918,25,4 +3289,8501,1981,1,6,0,1991,0,10,1,1.03413,36,9 +3290,8501,1982,1,7,0,1920,0,10,1,0.8542552999999999,49,9 +3291,8501,1983,1,8,0,1960,0,10,1,1.0916860000000002,64,9 +3292,8501,1984,1,9,0,2080,0,10,0,0.8558678,81,9 +3293,8501,1985,1,10,0,2080,0,10,0,0.8215002,100,9 +3294,8501,1986,1,11,0,2080,0,10,1,0.934964,121,9 +3295,8501,1987,1,12,0,2080,0,10,0,1.013781,144,9 +3296,8518,1980,0,5,0,2600,0,12,1,1.856128,25,5 +3297,8518,1981,0,6,0,2150,0,12,1,2.180612,36,6 +3298,8518,1982,0,7,0,1760,1,12,1,2.4266520000000003,49,5 +3299,8518,1983,0,8,0,840,1,12,1,2.372794,64,1 +3300,8518,1984,0,9,0,1920,1,12,1,2.703573,81,5 +3301,8518,1985,0,10,0,1640,1,12,1,2.9219,100,6 +3302,8518,1986,0,11,0,2280,1,12,0,2.164912,121,5 +3303,8518,1987,0,12,0,2896,1,12,0,1.886791,144,5 +3304,8520,1980,0,2,0,3050,0,15,0,0.5544003000000001,4,1 +3305,8520,1981,0,3,0,3276,0,15,1,1.115962,9,6 +3306,8520,1982,0,4,0,2825,0,15,0,1.3153700000000002,16,3 +3307,8520,1983,0,5,0,3106,1,15,0,1.259904,25,3 +3308,8520,1984,0,6,0,1530,1,15,0,1.296499,36,2 +3309,8520,1985,0,7,0,4290,1,15,0,-1.155182,49,3 +3310,8520,1986,0,8,0,4565,1,15,0,1.288348,64,2 +3311,8520,1987,0,9,0,4225,1,15,0,1.366002,81,7 +3312,8524,1980,0,1,0,1825,1,11,0,1.198259,1,5 +3313,8524,1981,0,2,0,2080,1,11,0,1.529395,4,7 +3314,8524,1982,0,3,0,1960,1,11,1,1.526783,9,7 +3315,8524,1983,0,4,0,1960,1,11,1,1.497151,16,7 +3316,8524,1984,0,5,0,2000,1,11,1,1.514128,25,9 +3317,8524,1985,0,6,0,1920,1,11,1,1.728221,36,5 +3318,8524,1986,0,7,0,2000,1,11,1,-0.6997916999999999,49,5 +3319,8524,1987,0,8,0,2360,1,11,1,1.580634,64,7 +3320,8548,1980,0,3,0,2090,0,8,0,1.194742,9,9 +3321,8548,1981,0,4,0,1960,0,8,0,1.183354,16,9 +3322,8548,1982,0,5,0,2080,0,8,0,1.137698,25,6 +3323,8548,1983,0,6,0,2080,0,8,0,1.367037,36,6 +3324,8548,1984,0,7,0,2310,1,8,0,1.344394,49,6 +3325,8548,1985,0,8,0,1270,0,8,0,1.5322639999999998,64,6 +3326,8548,1986,0,9,0,2210,0,8,0,1.192793,81,6 +3327,8548,1987,0,10,0,2080,0,8,0,1.067848,100,6 +3328,8556,1980,0,2,0,2236,0,11,0,1.638043,4,6 +3329,8556,1981,0,3,0,2152,0,11,0,1.783048,9,6 +3330,8556,1982,0,4,0,2191,0,11,0,1.638513,16,9 +3331,8556,1983,0,5,0,2236,1,11,0,1.7708720000000002,25,9 +3332,8556,1984,0,6,0,2236,1,11,0,1.973131,36,5 +3333,8556,1985,0,7,0,2236,1,11,0,2.022145,49,9 +3334,8556,1986,0,8,0,2128,1,11,0,1.92375,64,5 +3335,8556,1987,0,9,0,2080,1,11,0,2.035432,81,9 +3336,8564,1980,0,1,0,3940,0,11,0,0.8091868,1,3 +3337,8564,1981,0,2,0,2600,1,11,0,1.263692,4,6 +3338,8564,1982,0,3,0,2600,1,11,0,1.354564,9,6 +3339,8564,1983,0,4,0,2600,1,11,0,1.470518,16,6 +3340,8564,1984,0,5,0,3040,1,11,0,1.363681,25,6 +3341,8564,1985,0,6,0,2300,1,11,0,1.819571,36,6 +3342,8564,1986,0,7,0,2136,1,11,0,1.537006,49,7 +3343,8564,1987,0,8,0,2080,1,11,0,1.524607,64,4 +3344,8581,1980,1,3,0,1820,0,12,0,1.227709,9,9 +3345,8581,1981,1,4,0,1493,0,12,0,1.167828,16,9 +3346,8581,1982,1,5,0,1863,0,12,0,0.7084505,25,9 +3347,8581,1983,1,6,0,2530,0,12,0,0.9615011,36,9 +3348,8581,1984,1,7,0,2851,1,12,0,0.6740973000000001,49,9 +3349,8581,1985,1,8,0,2020,1,12,0,0.9843019,64,9 +3350,8581,1986,1,9,0,2240,1,12,0,0.7273246,81,6 +3351,8581,1987,1,10,0,3614,0,12,0,0.7490159000000001,100,6 +3352,8586,1980,1,3,0,2472,0,12,0,-0.7648809,9,6 +3353,8586,1981,1,4,0,2152,0,12,0,1.649516,16,6 +3354,8586,1982,1,5,0,2080,0,12,0,1.872825,25,6 +3355,8586,1983,1,6,0,2472,0,12,0,1.613375,36,6 +3356,8586,1984,1,7,0,2128,0,12,0,1.627983,49,7 +3357,8586,1985,1,8,0,2080,0,12,0,1.648179,64,6 +3358,8586,1986,1,9,0,2416,0,12,0,1.79682,81,6 +3359,8586,1987,1,10,0,2264,0,12,0,1.67623,100,7 +3360,8587,1980,1,3,0,1814,0,11,1,0.9920741,9,6 +3361,8587,1981,1,4,0,2012,0,11,0,0.8982360999999999,16,9 +3362,8587,1982,1,5,0,2075,0,11,0,0.9699908000000002,25,9 +3363,8587,1983,1,6,0,1960,0,11,0,0.8040043,36,9 +3364,8587,1984,1,7,0,2227,0,11,0,1.305523,49,7 +3365,8587,1985,1,8,0,2089,0,11,1,1.476625,64,6 +3366,8587,1986,1,9,0,2120,0,11,0,-0.9812042,81,6 +3367,8587,1987,1,10,0,2310,0,11,0,0.7911184,100,6 +3368,8597,1980,1,6,0,1160,0,10,1,1.521122,36,9 +3369,8597,1981,1,7,0,1800,0,10,1,1.13498,49,6 +3370,8597,1982,1,8,0,2080,0,10,1,1.7550419999999998,64,6 +3371,8597,1983,1,9,0,2080,0,10,1,1.7860349999999998,81,6 +3372,8597,1984,1,10,0,2080,0,10,1,1.854397,100,6 +3373,8597,1985,1,11,0,2080,0,10,1,1.920112,121,6 +3374,8597,1986,1,12,0,2080,0,10,1,1.946565,144,6 +3375,8597,1987,1,13,0,2080,0,10,1,1.952051,169,5 +3376,8656,1980,0,2,0,2340,0,12,0,1.224856,4,5 +3377,8656,1981,0,3,0,2266,0,12,0,1.3567360000000002,9,5 +3378,8656,1982,0,4,0,2101,0,12,0,1.537357,16,5 +3379,8656,1983,0,5,0,2285,1,12,0,1.749195,25,5 +3380,8656,1984,0,6,0,2507,1,12,1,1.667678,36,5 +3381,8656,1985,0,7,0,2424,1,12,0,1.495128,49,5 +3382,8656,1986,0,8,0,2310,1,12,0,1.235549,64,5 +3383,8656,1987,0,9,0,3355,1,12,0,0.8233792999999999,81,1 +3384,8722,1980,0,4,1,2100,0,12,0,1.700794,16,6 +3385,8722,1981,0,5,1,2088,0,12,0,1.550249,25,5 +3386,8722,1982,0,6,1,1682,0,12,0,1.679744,36,5 +3387,8722,1983,0,7,1,2080,0,12,0,1.7860349999999998,49,5 +3388,8722,1984,0,8,1,2080,0,12,0,1.682546,64,5 +3389,8722,1985,0,9,1,2080,0,12,0,1.622861,81,5 +3390,8722,1986,0,10,1,1760,0,12,0,1.85579,100,6 +3391,8722,1987,0,11,1,2000,0,12,0,1.688991,121,6 +3392,8743,1980,0,3,0,2744,1,12,0,1.615637,9,9 +3393,8743,1981,0,4,0,2430,1,12,0,1.980008,16,5 +3394,8743,1982,0,5,0,2925,1,12,0,1.844273,25,7 +3395,8743,1983,0,6,0,3128,1,12,0,1.622108,36,6 +3396,8743,1984,0,7,0,3117,1,12,0,1.801291,49,7 +3397,8743,1985,0,8,0,3043,1,12,0,1.586156,64,5 +3398,8743,1986,0,9,0,3100,1,12,0,1.547531,81,6 +3399,8743,1987,0,10,0,3120,1,12,0,1.546586,100,5 +3400,8749,1980,1,9,0,1684,1,8,0,1.659196,81,6 +3401,8749,1981,1,10,0,1912,1,8,0,1.325931,100,5 +3402,8749,1982,1,11,0,1800,1,8,0,1.5719,121,5 +3403,8749,1983,1,12,0,2080,1,8,0,1.437728,144,7 +3404,8749,1984,1,13,0,1880,1,8,0,1.515763,169,5 +3405,8749,1985,1,14,0,2080,1,8,0,1.432817,196,6 +3406,8749,1986,1,15,0,2080,1,8,0,1.529671,225,6 +3407,8749,1987,1,16,0,2080,1,8,0,1.74711,256,5 +3408,8758,1980,0,3,0,2340,1,12,0,1.425527,9,6 +3409,8758,1981,0,4,0,2655,1,12,0,1.198307,16,7 +3410,8758,1982,0,5,0,2925,1,12,0,1.520725,25,7 +3411,8758,1983,0,6,0,2781,1,12,0,1.994583,36,6 +3412,8758,1984,0,7,0,3200,1,12,0,1.709979,49,6 +3413,8758,1985,0,8,0,2260,1,12,0,1.829947,64,6 +3414,8758,1986,0,9,0,800,1,12,0,2.457209,81,6 +3415,8758,1987,0,10,0,2519,1,12,0,1.569501,100,6 +3416,8796,1980,0,2,0,1034,0,13,1,1.007498,4,7 +3417,8796,1981,0,3,0,1196,0,13,1,2.065973,9,7 +3418,8796,1982,0,4,0,1152,0,13,1,2.1979900000000003,16,4 +3419,8796,1983,0,5,0,1100,0,13,1,2.297929,25,7 +3420,8796,1984,0,6,0,1276,0,13,1,2.171184,36,7 +3421,8796,1985,0,7,0,1186,0,13,1,2.240732,49,7 +3422,8796,1986,0,8,0,1185,0,13,1,2.22755,64,7 +3423,8796,1987,0,9,0,1244,0,13,1,2.220964,81,7 +3424,8838,1980,0,3,0,2105,0,12,0,1.531362,9,9 +3425,8838,1981,0,4,0,1794,0,12,0,1.677315,16,9 +3426,8838,1982,0,5,0,2000,0,12,0,1.240877,25,9 +3427,8838,1983,0,6,0,1657,0,12,0,1.482766,36,9 +3428,8838,1984,0,7,0,3126,0,12,0,1.210621,49,9 +3429,8838,1985,0,8,0,2110,0,12,0,1.633859,64,9 +3430,8838,1986,0,9,0,2080,1,12,0,1.7569439999999998,81,9 +3431,8838,1987,0,10,0,2080,1,12,0,1.861079,100,9 +3432,8842,1980,0,2,0,2040,0,11,0,1.244274,4,7 +3433,8842,1981,0,3,0,694,0,11,0,0.8352870000000001,9,4 +3434,8842,1982,0,4,0,2080,0,11,0,1.179678,16,6 +3435,8842,1983,0,5,0,2315,1,11,0,1.243675,25,7 +3436,8842,1984,0,6,0,2095,1,11,0,1.675361,36,4 +3437,8842,1985,0,7,0,2374,1,11,0,1.633753,49,6 +3438,8842,1986,0,8,0,2556,1,11,0,1.593886,64,7 +3439,8842,1987,0,9,0,2600,1,11,0,1.537852,81,7 +3440,8846,1980,0,2,0,2080,1,12,1,1.297177,4,9 +3441,8846,1981,0,3,0,2080,1,12,1,1.326871,9,9 +3442,8846,1982,0,4,0,2080,1,12,1,1.28103,16,9 +3443,8846,1983,0,5,0,2080,1,12,1,1.342593,25,9 +3444,8846,1984,0,6,0,2080,1,12,1,1.33476,36,9 +3445,8846,1985,0,7,0,2530,1,12,1,1.489141,49,1 +3446,8846,1986,0,8,0,2278,1,12,1,1.760325,64,1 +3447,8846,1987,0,9,0,2264,1,12,1,1.627703,81,4 +3448,8860,1980,0,4,1,1650,0,13,1,1.230645,16,9 +3449,8860,1981,0,5,1,2080,0,13,1,1.326871,25,3 +3450,8860,1982,0,6,1,1850,0,13,0,1.285125,36,3 +3451,8860,1983,0,7,1,2040,0,13,0,1.1694639999999998,49,3 +3452,8860,1984,0,8,1,2080,1,13,0,1.226643,64,7 +3453,8860,1985,0,9,1,2080,1,13,0,1.273485,81,3 +3454,8860,1986,0,10,1,2080,1,13,1,1.262468,100,7 +3455,8860,1987,0,11,1,2288,1,13,0,1.119142,121,3 +3456,8862,1980,0,2,1,1587,0,13,0,1.26628,4,3 +3457,8862,1981,0,3,1,1990,0,13,0,1.397786,9,3 +3458,8862,1982,0,4,1,2010,0,13,0,1.504921,16,2 +3459,8862,1983,0,5,1,2080,0,13,0,1.517771,25,3 +3460,8862,1984,0,6,1,2472,0,13,0,1.509887,36,2 +3461,8862,1985,0,7,1,2112,0,13,0,1.888038,49,2 +3462,8862,1986,0,8,1,2384,0,13,0,1.7636330000000002,64,2 +3463,8862,1987,0,9,1,2496,0,13,0,1.892331,81,2 +3464,8880,1980,0,4,1,1769,0,12,0,2.058924,16,4 +3465,8880,1981,0,5,1,2136,0,12,0,2.292497,25,5 +3466,8880,1982,0,6,1,2260,0,12,1,2.298985,36,5 +3467,8880,1983,0,7,1,2208,0,12,1,2.402047,49,5 +3468,8880,1984,0,8,1,2229,1,12,1,2.390965,64,5 +3469,8880,1985,0,9,1,2101,1,12,1,2.406504,81,5 +3470,8880,1986,0,10,1,2080,1,12,1,2.519084,100,5 +3471,8880,1987,0,11,1,2142,1,12,1,2.524854,121,5 +3472,8886,1980,0,5,1,2080,0,12,0,1.429428,25,5 +3473,8886,1981,0,6,1,2080,0,12,0,1.442384,36,5 +3474,8886,1982,0,7,1,2080,0,12,0,1.579274,49,5 +3475,8886,1983,0,8,1,2272,0,12,0,1.490573,64,4 +3476,8886,1984,0,9,1,2104,0,12,0,1.788857,81,2 +3477,8886,1985,0,10,1,2080,1,12,0,1.602266,100,2 +3478,8886,1986,0,11,1,2285,1,12,0,1.498032,121,5 +3479,8886,1987,0,12,1,2220,0,12,0,2.118713,144,5 +3480,8903,1980,0,2,1,1890,0,11,0,0.9816717,4,9 +3481,8903,1981,0,3,1,898,1,11,0,-0.2209188,9,9 +3482,8903,1982,0,4,1,2068,0,11,0,1.185464,16,1 +3483,8903,1983,0,5,1,2000,1,11,0,1.3969129999999998,25,7 +3484,8903,1984,0,6,1,2080,1,11,0,1.3078530000000002,36,1 +3485,8903,1985,0,7,1,2200,1,11,0,1.652714,49,9 +3486,8903,1986,0,8,1,3536,1,11,0,1.158108,64,9 +3487,8903,1987,0,9,1,1408,1,11,0,0.4595170999999999,81,1 +3488,8908,1980,0,2,1,2430,0,12,1,1.241183,4,7 +3489,8908,1981,0,3,1,2580,1,12,1,1.271414,9,6 +3490,8908,1982,0,4,1,2354,1,12,0,1.4236540000000002,16,7 +3491,8908,1983,0,5,1,3889,1,12,0,1.160251,25,2 +3492,8908,1984,0,6,1,2867,1,12,0,1.228117,36,2 +3493,8908,1985,0,7,1,3048,1,12,0,1.383844,49,2 +3494,8908,1986,0,8,1,2768,1,12,1,1.149982,64,2 +3495,8908,1987,0,9,1,2704,1,12,1,1.156882,81,2 +3496,8911,1980,0,4,1,2080,0,12,0,1.0475219999999998,16,5 +3497,8911,1981,0,5,1,2080,0,12,1,1.12393,25,5 +3498,8911,1982,0,6,1,2080,0,12,1,1.061895,36,5 +3499,8911,1983,0,7,1,2080,0,12,0,0.9269024,49,5 +3500,8911,1984,0,8,1,2080,0,12,1,1.050024,64,1 +3501,8911,1985,0,9,1,2080,0,12,0,1.072815,81,5 +3502,8911,1986,0,10,1,2080,0,12,1,1.117286,100,5 +3503,8911,1987,0,11,1,2080,0,12,0,1.119142,121,5 +3504,8917,1980,0,4,1,3720,1,11,0,1.556034,16,6 +3505,8917,1981,0,5,1,3084,1,11,0,2.0005330000000003,25,6 +3506,8917,1982,0,6,1,3387,1,11,0,1.585919,36,6 +3507,8917,1983,0,7,1,2920,0,11,0,1.740366,49,6 +3508,8917,1984,0,8,1,3570,0,11,0,1.866268,64,6 +3509,8917,1985,0,9,1,3200,0,11,0,2.133687,81,6 +3510,8917,1986,0,10,1,2380,0,11,0,2.154777,100,5 +3511,8917,1987,0,11,1,2930,0,11,0,1.939658,121,6 +3512,8991,1980,1,3,0,2280,0,11,0,1.451502,9,2 +3513,8991,1981,1,4,0,2336,0,11,1,2.276037,16,6 +3514,8991,1982,1,5,0,3220,0,11,0,2.011176,25,6 +3515,8991,1983,1,6,0,2440,0,11,1,2.227178,36,6 +3516,8991,1984,1,7,0,2080,0,11,0,2.205795,49,5 +3517,8991,1985,1,8,0,2080,0,11,0,2.207794,64,6 +3518,8991,1986,1,9,0,2080,0,11,0,2.187727,81,6 +3519,8991,1987,1,10,0,2080,1,11,1,2.074653,100,5 +3520,8997,1980,1,2,0,2080,0,14,1,1.812643,4,7 +3521,8997,1981,1,3,0,2080,0,14,1,1.96765,9,5 +3522,8997,1982,1,4,0,2080,0,14,1,2.06894,16,5 +3523,8997,1983,1,5,0,2080,0,14,1,2.210918,25,5 +3524,8997,1984,1,6,0,2080,0,14,1,2.343945,36,5 +3525,8997,1985,1,7,0,2080,0,14,1,2.309577,49,5 +3526,8997,1986,1,8,0,2080,0,14,1,2.381883,64,5 +3527,8997,1987,1,9,0,2080,0,14,1,2.282292,81,4 +3528,9014,1980,1,4,0,1704,0,12,0,1.829711,16,4 +3529,9014,1981,1,5,0,2358,0,12,0,1.483992,25,4 +3530,9014,1982,1,6,0,1920,0,12,0,1.460391,36,4 +3531,9014,1983,1,7,0,2080,0,12,1,1.41241,49,4 +3532,9014,1984,1,8,0,3342,0,12,0,1.074813,64,4 +3533,9014,1985,1,9,0,2238,0,12,0,1.720146,81,4 +3534,9014,1986,1,10,0,1430,1,12,0,2.174655,100,4 +3535,9014,1987,1,11,0,2080,1,12,0,1.812289,121,4 +3536,9015,1980,1,7,0,3381,0,9,0,1.399806,49,4 +3537,9015,1981,1,8,0,3512,0,9,0,1.391407,64,7 +3538,9015,1982,1,9,0,3688,0,9,0,1.380151,81,4 +3539,9015,1983,1,10,0,2836,1,9,1,1.733837,100,7 +3540,9015,1984,1,11,0,2860,1,9,0,1.556777,121,6 +3541,9015,1985,1,12,0,2140,1,9,0,1.764923,144,4 +3542,9015,1986,1,13,0,3480,1,9,0,1.6730630000000002,169,4 +3543,9015,1987,1,14,0,4245,1,9,1,1.301856,196,4 +3544,9027,1980,0,3,0,2280,0,12,0,1.579336,9,2 +3545,9027,1981,0,4,0,2422,0,12,0,1.600313,16,2 +3546,9027,1982,0,5,0,2182,0,12,0,2.400315,25,6 +3547,9027,1983,0,6,0,2203,0,12,1,2.361105,36,6 +3548,9027,1984,0,7,0,1779,0,12,1,2.273077,49,5 +3549,9027,1985,0,8,0,1350,0,12,1,2.443347,64,6 +3550,9027,1986,0,9,0,2167,0,12,1,2.503426,81,6 +3551,9027,1987,0,10,0,2404,0,12,1,2.309376,100,6 +3552,9066,1980,1,1,0,1070,0,11,1,1.601883,1,9 +3553,9066,1981,1,2,0,3065,0,11,0,1.429398,4,9 +3554,9066,1982,1,3,0,3300,0,11,0,-1.2167370000000002,9,9 +3555,9066,1983,1,4,0,3378,0,11,0,1.106963,16,9 +3556,9066,1984,1,5,0,3419,0,11,1,1.246191,25,9 +3557,9066,1985,1,6,0,3116,0,11,0,1.415847,36,9 +3558,9066,1986,1,7,0,3120,0,11,0,1.6689330000000002,49,9 +3559,9066,1987,1,8,0,2830,0,11,1,1.727523,64,9 +3560,9082,1980,0,4,0,1905,0,8,0,-0.0735524999999999,16,8 +3561,9082,1981,0,5,0,2055,0,8,0,1.293026,25,7 +3562,9082,1982,0,6,0,1760,0,8,0,1.634414,36,7 +3563,9082,1983,0,7,0,1600,1,8,0,1.6885259999999995,49,7 +3564,9082,1984,0,8,0,2080,1,8,0,1.618008,64,7 +3565,9082,1985,0,9,0,2080,0,8,0,1.514647,81,5 +3566,9082,1986,0,10,0,2080,1,8,0,1.4685290000000002,100,5 +3567,9082,1987,0,11,0,2080,1,8,0,1.7069279999999998,121,7 +3568,9131,1980,0,9,0,2048,0,5,0,1.106829,81,5 +3569,9131,1981,0,10,0,2290,1,5,0,1.0277459999999998,100,5 +3570,9131,1982,0,11,0,2340,1,5,0,1.262565,121,7 +3571,9131,1983,0,12,0,2340,1,5,0,1.399988,144,5 +3572,9131,1984,0,13,0,2140,1,5,0,1.58957,169,5 +3573,9131,1985,0,14,0,2280,1,5,0,1.491833,196,5 +3574,9131,1986,0,15,0,2180,1,5,0,1.373515,225,7 +3575,9131,1987,0,16,0,2220,1,5,0,1.459467,256,7 +3576,9132,1980,0,7,0,2080,1,6,0,1.224856,49,5 +3577,9132,1981,0,8,0,1976,1,6,0,1.175223,64,5 +3578,9132,1982,0,9,0,1980,1,6,0,1.596674,81,5 +3579,9132,1983,0,10,0,2090,1,6,0,1.512975,100,5 +3580,9132,1984,0,11,0,2080,1,6,0,1.618008,121,5 +3581,9132,1985,0,12,0,2080,1,6,0,1.514647,144,5 +3582,9132,1986,0,13,0,2080,1,6,0,1.851255,169,5 +3583,9132,1987,0,14,0,2080,1,6,1,1.861079,196,5 +3584,9154,1980,0,2,0,1104,0,15,1,2.563854,4,9 +3585,9154,1981,0,3,0,1261,0,15,1,2.5306330000000004,9,9 +3586,9154,1982,0,4,0,1870,0,15,1,2.170793,16,9 +3587,9154,1983,0,5,0,1865,0,15,1,2.197423,25,9 +3588,9154,1984,0,6,0,1820,0,15,1,2.454637,36,9 +3589,9154,1985,0,7,0,3226,0,15,1,2.069024,49,9 +3590,9154,1986,0,8,0,2452,0,15,0,2.428656,64,9 +3591,9154,1987,0,9,0,2030,0,15,1,2.602089,81,9 +3592,9158,1980,0,4,0,2367,1,12,0,1.501066,16,6 +3593,9158,1981,0,5,0,2402,1,12,0,1.403629,25,6 +3594,9158,1982,0,6,0,2348,1,12,0,1.058482,36,2 +3595,9158,1983,0,7,0,2550,1,12,0,1.146991,49,6 +3596,9158,1984,0,8,0,2600,1,12,0,1.171721,64,6 +3597,9158,1985,0,9,0,2190,1,12,0,1.075348,81,6 +3598,9158,1986,0,10,0,2255,1,12,0,1.077325,100,6 +3599,9158,1987,0,11,0,2340,1,12,0,1.096669,121,6 +3600,9184,1980,0,3,0,3120,1,11,0,1.304899,9,6 +3601,9184,1981,0,4,0,3120,1,11,0,1.203973,16,6 +3602,9184,1982,0,5,0,3120,1,11,0,1.285038,25,6 +3603,9184,1983,0,6,0,3612,0,11,0,1.173516,36,6 +3604,9184,1984,0,7,0,3088,1,11,0,1.114524,49,4 +3605,9184,1985,0,8,0,3132,1,11,0,1.140435,64,5 +3606,9184,1986,0,9,0,2756,1,11,0,1.371391,81,6 +3607,9184,1987,0,10,0,3295,1,11,0,2.094188,100,3 +3608,9230,1980,1,1,0,1190,0,11,0,1.090123,1,9 +3609,9230,1981,1,2,0,1958,0,11,0,0.8966924000000001,4,9 +3610,9230,1982,1,3,0,2022,0,11,0,0.8024934,9,9 +3611,9230,1983,1,4,0,1219,0,11,0,1.6843830000000002,16,9 +3612,9230,1984,1,5,0,2444,0,11,0,1.164603,25,4 +3613,9230,1985,1,6,0,2181,0,11,0,1.729596,36,2 +3614,9230,1986,1,7,0,2080,0,11,1,1.946565,49,9 +3615,9230,1987,1,8,0,2080,0,11,1,2.074653,64,9 +3616,9265,1980,0,1,1,1610,0,11,0,1.2357280000000002,1,2 +3617,9265,1981,0,2,1,1770,0,11,0,0.9976364,4,2 +3618,9265,1982,0,3,1,2430,0,11,0,1.450438,9,1 +3619,9265,1983,0,4,1,2456,0,11,1,1.494705,16,5 +3620,9265,1984,0,5,1,2192,0,11,0,1.948554,25,1 +3621,9265,1985,0,6,1,2540,0,11,0,1.89467,36,1 +3622,9265,1986,0,7,1,2220,0,11,0,2.256119,49,1 +3623,9265,1987,0,8,1,2080,0,11,0,2.266544,64,5 +3624,9367,1980,1,2,0,1220,0,11,0,0.9316944,4,1 +3625,9367,1981,1,3,0,1450,0,11,0,0.7915871999999999,9,9 +3626,9367,1982,1,4,0,1312,0,11,0,1.315071,16,2 +3627,9367,1983,1,5,0,2584,0,11,0,1.4372120000000002,25,4 +3628,9367,1984,1,6,0,2308,0,11,0,1.480093,36,2 +3629,9367,1985,1,7,0,2080,0,11,0,1.67895,49,2 +3630,9367,1986,1,8,0,2280,0,11,0,1.654087,64,1 +3631,9367,1987,1,9,0,2240,0,11,0,1.920502,81,1 +3632,9390,1980,1,4,0,1720,0,12,0,-0.8876854999999999,16,5 +3633,9390,1981,1,5,0,2295,0,12,1,1.981077,25,7 +3634,9390,1982,1,6,0,2210,0,12,1,1.966351,36,5 +3635,9390,1983,1,7,0,2300,0,12,0,2.489866,49,7 +3636,9390,1984,1,8,0,2955,0,12,0,2.320027,64,7 +3637,9390,1985,1,9,0,2260,0,12,0,2.1937900000000004,81,7 +3638,9390,1986,1,10,0,2370,0,12,0,2.41388,100,7 +3639,9390,1987,1,11,0,2490,0,12,1,2.19199,121,5 +3640,9391,1980,1,3,0,1890,0,11,0,1.320647,9,6 +3641,9391,1981,1,4,0,1850,0,11,0,1.107581,16,9 +3642,9391,1982,1,5,0,2072,0,11,0,1.758895,25,4 +3643,9391,1983,1,6,0,3088,0,11,0,1.304937,36,5 +3644,9391,1984,1,7,0,2240,0,11,0,1.320756,49,7 +3645,9391,1985,1,8,0,2080,0,11,0,1.514647,64,7 +3646,9391,1986,1,9,0,1600,0,11,0,2.113619,81,6 +3647,9391,1987,1,10,0,1985,0,11,0,1.571356,100,6 +3648,9418,1980,1,2,0,1940,0,15,0,2.132865,4,1 +3649,9418,1981,1,3,0,1964,0,15,0,2.146396,9,1 +3650,9418,1982,1,4,0,1935,0,15,0,2.3689,16,1 +3651,9418,1983,1,5,0,2047,1,15,0,2.370011,25,1 +3652,9418,1984,1,6,0,2940,1,15,0,2.090276,36,1 +3653,9418,1985,1,7,0,2710,1,15,0,2.439651,49,1 +3654,9418,1986,1,8,0,2590,1,15,0,2.548255,64,1 +3655,9418,1987,1,9,0,2310,1,15,0,2.754728,81,1 +3656,9424,1980,0,3,1,2080,0,12,1,2.035786,9,6 +3657,9424,1981,0,4,1,2080,0,12,1,1.877702,16,5 +3658,9424,1982,0,5,1,2080,0,12,0,1.872825,25,6 +3659,9424,1983,0,6,1,2080,0,12,1,1.89726,36,4 +3660,9424,1984,0,7,1,2080,0,12,1,1.90569,49,4 +3661,9424,1985,0,8,1,2080,0,12,1,1.896015,64,6 +3662,9424,1986,0,9,1,2280,0,12,1,2.347234,81,5 +3663,9424,1987,0,10,1,2544,1,12,1,2.278748,100,5 +3664,9447,1980,0,3,0,774,0,14,0,1.050256,9,4 +3665,9447,1981,0,4,0,1685,0,14,0,1.406853,16,1 +3666,9447,1982,0,5,0,1595,0,14,0,0.8966059999999999,25,9 +3667,9447,1983,0,6,0,780,0,14,0,2.418557,36,9 +3668,9447,1984,0,7,0,1760,0,14,0,1.8496,49,9 +3669,9447,1985,0,8,0,2450,0,14,0,1.7563919999999995,64,2 +3670,9447,1986,0,9,0,3020,0,14,0,1.77847,81,2 +3671,9447,1987,0,10,0,3120,1,14,0,1.966439,100,2 +3672,9449,1980,0,2,0,653,0,15,0,1.000602,4,9 +3673,9449,1981,0,3,0,1712,0,15,0,1.1851040000000002,9,1 +3674,9449,1982,0,4,0,1999,0,15,0,1.507081,16,1 +3675,9449,1983,0,5,0,2595,0,15,0,1.296552,25,1 +3676,9449,1984,0,6,0,1852,0,15,0,1.6651169999999995,36,1 +3677,9449,1985,0,7,0,1615,1,15,0,1.901212,49,1 +3678,9449,1986,0,8,0,2574,1,15,1,1.820483,64,1 +3679,9449,1987,0,9,0,1940,1,15,1,2.021731,81,3 +3680,9453,1980,0,2,0,1870,0,15,1,2.043009,4,1 +3681,9453,1981,0,3,0,2025,0,15,1,1.989057,9,4 +3682,9453,1982,0,4,0,2080,0,15,1,1.872825,16,1 +3683,9453,1983,0,5,0,2080,0,15,1,1.973246,25,6 +3684,9453,1984,0,6,0,2080,0,15,1,2.023473,36,4 +3685,9453,1985,0,7,0,2010,1,15,1,2.242028,49,1 +3686,9453,1986,0,8,0,2465,1,15,1,2.017903,64,1 +3687,9453,1987,0,9,0,2635,1,15,0,2.045777,81,2 +3688,9468,1980,0,1,0,1368,0,16,0,1.420731,1,9 +3689,9468,1981,0,2,0,1671,0,16,0,1.342876,4,9 +3690,9468,1982,0,3,0,1824,0,16,0,1.416374,9,9 +3691,9468,1983,0,4,0,2560,0,16,0,1.578395,16,2 +3692,9468,1984,0,5,0,2440,0,16,0,1.885822,25,2 +3693,9468,1985,0,6,0,2290,1,16,0,2.037503,36,2 +3694,9468,1986,0,7,0,2340,1,16,0,2.203475,49,2 +3695,9468,1987,0,8,0,2340,1,16,0,2.164509,64,2 +3696,9502,1980,0,5,0,2000,1,12,1,2.075007,25,6 +3697,9502,1981,0,6,0,1840,1,12,1,2.11153,36,6 +3698,9502,1982,0,7,0,2050,1,12,1,1.992714,49,5 +3699,9502,1983,0,8,0,1860,1,12,1,2.46581,64,6 +3700,9502,1984,0,9,0,2385,1,12,0,2.1743240000000004,81,6 +3701,9502,1985,0,10,0,2454,1,12,0,1.705971,100,5 +3702,9502,1986,0,11,0,2724,1,12,0,1.514313,121,5 +3703,9502,1987,0,12,0,2900,1,12,0,1.619708,144,5 +3704,9505,1980,0,5,0,2080,0,8,0,1.1194959999999998,25,5 +3705,9505,1981,0,6,0,2080,0,8,0,1.079194,36,6 +3706,9505,1982,0,7,0,2080,0,8,0,0.9125242,49,7 +3707,9505,1983,0,8,0,2080,0,8,0,1.032263,64,5 +3708,9505,1984,0,9,0,2080,0,8,0,0.9893992,81,5 +3709,9505,1985,0,10,0,2080,0,8,0,1.072815,100,5 +3710,9505,1986,0,11,0,2080,0,8,0,1.052747,121,6 +3711,9505,1987,0,12,0,2080,0,8,0,0.9206907,144,6 +3712,9603,1980,0,7,0,2367,1,10,0,1.190911,49,6 +3713,9603,1981,0,8,0,1867,1,10,0,1.069446,64,6 +3714,9603,1982,0,9,0,2328,1,10,0,1.230666,81,5 +3715,9603,1983,0,10,0,2288,1,10,0,1.134778,100,5 +3716,9603,1984,0,11,0,2288,1,10,0,1.033851,121,5 +3717,9603,1985,0,12,0,2288,1,10,0,1.010294,144,5 +3718,9603,1986,0,13,0,2360,0,10,0,1.108775,169,5 +3719,9603,1987,0,14,0,2342,0,10,0,1.211575,196,5 +3720,9643,1980,0,2,1,1340,0,12,0,1.7823369999999998,4,9 +3721,9643,1981,0,3,1,1280,0,12,0,1.139434,9,9 +3722,9643,1982,0,4,1,550,0,12,0,1.961317,16,9 +3723,9643,1983,0,5,1,1335,0,12,0,1.188017,25,9 +3724,9643,1984,0,6,1,1280,0,12,0,1.960415,36,9 +3725,9643,1985,0,7,1,1675,0,12,0,1.6570939999999998,49,9 +3726,9643,1986,0,8,1,2200,0,12,0,1.795165,64,9 +3727,9643,1987,0,9,1,1660,0,12,0,1.527013,81,9 +3728,9667,1980,0,1,1,746,0,13,0,1.557106,1,4 +3729,9667,1981,0,2,1,1331,0,13,0,1.6881509999999995,4,1 +3730,9667,1982,0,3,1,2080,0,13,1,2.160507,9,1 +3731,9667,1983,0,4,1,2080,0,13,0,2.237485,16,1 +3732,9667,1984,0,5,1,2310,1,13,0,2.566278,25,1 +3733,9667,1985,0,6,1,2510,1,13,0,2.599698,36,1 +3734,9667,1986,0,7,1,2385,1,13,0,2.923384,49,1 +3735,9667,1987,0,8,1,2200,1,13,0,3.0371330000000003,64,4 +3736,9683,1980,1,5,0,3944,0,12,0,0.7028115,25,6 +3737,9683,1981,1,6,0,3500,1,12,1,1.391992,36,7 +3738,9683,1982,1,7,0,4368,1,12,0,1.184955,49,6 +3739,9683,1983,1,8,0,2016,1,12,0,0.929984,64,6 +3740,9683,1984,1,9,0,3324,1,12,0,0.9260633,81,2 +3741,9683,1985,1,10,0,4332,1,12,0,0.0878386999999999,100,4 +3742,9683,1986,1,11,0,2468,1,12,0,2.23983,121,7 +3743,9683,1987,1,12,0,2602,0,12,1,1.81152,144,7 +3744,9694,1980,0,1,0,1223,0,15,0,1.650557,1,1 +3745,9694,1981,0,2,0,2080,0,15,0,1.988927,4,1 +3746,9694,1982,0,3,0,2080,0,15,0,2.026976,9,1 +3747,9694,1983,0,4,0,2080,1,15,0,2.053454,16,1 +3748,9694,1984,0,5,0,2080,1,15,0,2.311155,25,1 +3749,9694,1985,0,6,0,2080,1,15,0,2.299853,36,1 +3750,9694,1986,0,7,0,2080,1,15,0,2.30233,49,1 +3751,9694,1987,0,8,0,2080,1,15,0,2.342917,64,1 +3752,9710,1980,0,4,0,1962,0,12,0,1.871046,16,4 +3753,9710,1981,0,5,0,2620,0,12,0,1.116267,25,3 +3754,9710,1982,0,6,0,2290,0,12,0,1.6588580000000002,36,3 +3755,9710,1983,0,7,0,2240,0,12,0,1.5867639999999998,49,3 +3756,9710,1984,0,8,0,2120,0,12,0,-0.6390869,64,3 +3757,9710,1985,0,9,0,2194,0,12,0,1.712603,81,7 +3758,9710,1986,0,10,0,2204,0,12,0,1.830163,100,2 +3759,9710,1987,0,11,0,2250,0,12,0,1.571208,121,2 +3760,9718,1980,0,1,0,590,0,13,0,1.098562,1,4 +3761,9718,1981,0,2,0,400,0,13,0,1.740466,4,1 +3762,9718,1982,0,3,0,154,0,13,0,2.278771,9,1 +3763,9718,1983,0,4,0,1240,0,13,0,2.464209,16,1 +3764,9718,1984,0,5,0,2080,0,13,0,2.359945,25,1 +3765,9718,1985,0,6,0,2080,0,13,0,2.504719,36,1 +3766,9718,1986,0,7,0,2080,1,13,0,2.493109,49,1 +3767,9718,1987,0,8,0,2080,1,13,0,2.623219,64,1 +3768,9725,1980,0,1,0,2075,0,13,0,1.039124,1,4 +3769,9725,1981,0,2,0,1864,0,13,0,1.351356,4,9 +3770,9725,1982,0,3,0,2286,0,13,0,1.660606,9,2 +3771,9725,1983,0,4,0,2446,0,13,0,1.6001379999999998,16,2 +3772,9725,1984,0,5,0,2848,0,13,0,1.611243,25,2 +3773,9725,1985,0,6,0,2568,0,13,0,1.685255,36,2 +3774,9725,1986,0,7,0,2496,0,13,0,1.784046,49,2 +3775,9725,1987,0,8,0,2496,0,13,0,1.812289,64,2 +3776,9744,1980,0,2,0,2080,0,15,1,1.630321,4,1 +3777,9744,1981,0,3,0,2040,0,15,0,1.771957,9,1 +3778,9744,1982,0,4,0,2080,0,15,0,1.978185,16,1 +3779,9744,1983,0,5,0,2320,0,15,0,1.839354,25,1 +3780,9744,1984,0,6,0,2202,0,15,0,1.944002,36,1 +3781,9744,1985,0,7,0,2552,0,15,0,1.889956,49,1 +3782,9744,1986,0,8,0,2485,1,15,0,2.1588580000000004,64,1 +3783,9744,1987,0,9,0,2600,1,15,1,2.1049580000000003,81,1 +3784,9752,1980,0,2,0,2155,0,15,0,2.245486,4,1 +3785,9752,1981,0,3,0,4455,1,15,0,1.971709,9,1 +3786,9752,1982,0,4,0,3630,1,15,0,2.232251,16,1 +3787,9752,1983,0,5,0,4256,1,15,0,2.554348,25,1 +3788,9752,1984,0,6,0,3830,1,15,0,2.904641,36,1 +3789,9752,1985,0,7,0,3480,1,15,0,2.966106,49,1 +3790,9752,1986,0,8,0,3330,1,15,0,2.990088,64,1 +3791,9752,1987,0,9,0,2780,1,15,0,3.131654,81,3 +3792,9776,1980,0,3,1,2080,0,11,0,2.280909,9,6 +3793,9776,1981,0,4,1,2080,1,11,1,2.040221,16,6 +3794,9776,1982,0,5,1,2360,1,11,1,2.206064,25,6 +3795,9776,1983,0,6,1,2168,1,11,1,2.37712,36,6 +3796,9776,1984,0,7,1,1160,1,11,1,2.246419,49,6 +3797,9776,1985,0,8,1,2426,1,11,1,1.94059,64,6 +3798,9776,1986,0,9,1,2496,1,11,1,2.25672,81,6 +3799,9776,1987,0,10,1,2496,1,11,1,2.217754,100,6 +3800,9786,1980,0,2,1,2340,0,12,1,1.666689,4,7 +3801,9786,1981,0,3,1,2130,0,12,1,1.708582,9,6 +3802,9786,1982,0,4,1,2080,0,12,1,1.859402,16,6 +3803,9786,1983,0,5,1,2376,0,12,1,1.821137,25,7 +3804,9786,1984,0,6,1,2112,0,12,0,1.910225,36,4 +3805,9786,1985,0,7,1,2176,0,12,0,1.874992,49,4 +3806,9786,1986,0,8,1,2227,0,12,0,1.922729,64,5 +3807,9786,1987,0,9,1,2202,0,12,0,2.09888,81,5 +3808,9791,1980,0,1,0,1758,0,15,0,0.8176829999999999,1,5 +3809,9791,1981,0,2,0,2955,0,15,0,0.7727993000000001,4,3 +3810,9791,1982,0,3,0,2568,0,15,0,1.169589,9,3 +3811,9791,1983,0,4,0,2582,1,15,0,-0.1647628,16,2 +3812,9791,1984,0,5,0,2140,1,15,0,2.570399,25,3 +3813,9791,1985,0,6,0,2540,1,15,0,2.587817,36,2 +3814,9791,1986,0,7,0,3110,1,15,0,2.547612,49,2 +3815,9791,1987,0,8,0,4110,1,15,0,2.517528,64,2 +3816,9794,1980,0,3,0,2080,0,12,0,1.524961,9,9 +3817,9794,1981,0,4,0,2080,1,12,1,1.609438,16,9 +3818,9794,1982,0,5,0,2080,1,12,0,1.619795,25,5 +3819,9794,1983,0,6,0,2080,1,12,1,1.650552,36,9 +3820,9794,1984,0,7,0,2080,1,12,1,1.549015,49,9 +3821,9794,1985,0,8,0,2080,1,12,1,1.7659619999999998,64,6 +3822,9794,1986,0,9,0,2080,1,12,1,1.7458939999999998,81,7 +3823,9794,1987,0,10,0,1295,1,12,1,2.180785,100,5 +3824,9810,1980,0,2,1,3444,0,11,0,1.251219,4,8 +3825,9810,1981,0,3,1,3120,0,11,0,0.36179,9,7 +3826,9810,1982,0,4,1,3570,1,11,1,1.700352,16,8 +3827,9810,1983,0,5,1,3730,1,11,0,1.076831,25,8 +3828,9810,1984,0,6,1,3744,1,11,0,1.0302209999999998,36,8 +3829,9810,1985,0,7,1,3964,1,11,0,1.003293,49,8 +3830,9810,1986,0,8,1,4044,1,11,0,0.8987063,64,8 +3831,9810,1987,0,9,1,3963,0,11,0,1.390799,81,5 +3832,9846,1980,0,3,1,2610,1,12,0,2.098068,9,5 +3833,9846,1981,0,4,1,2796,1,12,0,2.359585,16,5 +3834,9846,1982,0,5,1,2296,1,12,0,2.102528,25,5 +3835,9846,1983,0,6,1,2602,1,12,0,1.947785,36,6 +3836,9846,1984,0,7,1,2856,1,12,0,2.05864,49,6 +3837,9846,1985,0,8,1,2370,1,12,0,2.300416,64,6 +3838,9846,1986,0,9,1,920,1,12,0,0.924035,81,5 +3839,9846,1987,0,10,1,2520,1,12,1,2.313545,100,5 +3840,9859,1980,0,4,1,2080,0,12,1,1.4480000000000002,16,7 +3841,9859,1981,0,5,1,2080,0,12,1,1.498334,25,7 +3842,9859,1982,0,6,1,2080,0,12,1,1.547403,36,7 +3843,9859,1983,0,7,1,2080,0,12,1,-0.7909873000000001,49,7 +3844,9859,1984,0,8,1,2080,0,12,1,1.800329,64,7 +3845,9859,1985,0,9,1,3802,0,12,1,1.407925,81,7 +3846,9859,1986,0,10,1,2556,0,12,0,1.539819,100,7 +3847,9859,1987,0,11,1,2080,0,12,1,1.760996,121,9 +3848,9868,1980,0,2,1,1433,0,11,0,1.22276,4,3 +3849,9868,1981,0,3,1,1240,0,11,0,1.171183,9,9 +3850,9868,1982,0,4,1,2080,0,11,0,1.233745,16,4 +3851,9868,1983,0,5,1,2080,0,11,0,1.204113,25,4 +3852,9868,1984,0,6,1,2482,0,11,0,1.218168,36,4 +3853,9868,1985,0,7,1,1970,0,11,0,1.232509,49,7 +3854,9868,1986,0,8,1,1976,1,11,0,1.304711,64,7 +3855,9868,1987,0,9,1,1946,1,11,1,1.368055,81,4 +3856,9876,1980,0,4,1,2620,1,13,0,1.776809,16,3 +3857,9876,1981,0,5,1,2697,1,13,0,1.829239,25,2 +3858,9876,1982,0,6,1,2839,1,13,0,1.784884,36,2 +3859,9876,1983,0,7,1,3090,1,13,0,1.924314,49,2 +3860,9876,1984,0,8,1,2838,1,13,0,2.095734,64,2 +3861,9876,1985,0,9,1,3222,1,13,0,1.939209,81,2 +3862,9876,1986,0,10,1,2964,1,13,0,2.182702,100,2 +3863,9876,1987,0,11,1,3015,1,13,0,2.134204,121,2 +3864,9883,1980,0,2,1,2080,0,12,1,2.063185,4,5 +3865,9883,1981,0,3,1,2080,0,12,1,-0.2623643,9,5 +3866,9883,1982,0,4,1,2080,0,12,1,2.27829,16,5 +3867,9883,1983,0,5,1,2120,0,12,0,2.265978,25,6 +3868,9883,1984,0,6,1,3400,1,12,0,2.002069,36,2 +3869,9883,1985,0,7,1,2520,1,12,1,2.550725,49,5 +3870,9883,1986,0,8,1,2970,1,12,0,2.370529,64,1 +3871,9883,1987,0,9,1,2460,1,12,0,2.498911,81,1 +3872,9889,1980,0,2,0,2080,1,14,0,1.918003,4,1 +3873,9889,1981,0,3,0,2120,1,14,0,1.733491,9,1 +3874,9889,1982,0,4,0,2270,1,14,0,1.939564,16,1 +3875,9889,1983,0,5,0,2080,1,14,0,2.171697,25,1 +3876,9889,1984,0,6,0,2280,1,14,0,2.314658,36,1 +3877,9889,1985,0,7,0,2130,1,14,0,2.462754,49,1 +3878,9889,1986,0,8,0,2080,1,14,0,2.628284,64,1 +3879,9889,1987,0,9,0,2272,1,14,0,2.660089,81,1 +3880,9901,1980,0,4,1,1079,0,12,0,1.998972,16,9 +3881,9901,1981,0,5,1,768,0,12,0,1.6502599999999998,25,9 +3882,9901,1982,0,6,1,2140,0,12,0,1.35191,36,9 +3883,9901,1983,0,7,1,2050,0,12,1,1.606407,49,9 +3884,9901,1984,0,8,1,1760,0,12,1,1.8496,64,9 +3885,9901,1985,0,9,1,2285,0,12,0,1.777324,81,1 +3886,9901,1986,0,10,1,3215,0,12,0,1.885799,100,4 +3887,9901,1987,0,11,1,3540,0,12,0,2.022467,121,1 +3888,9936,1980,0,3,1,2280,0,12,0,1.538514,9,2 +3889,9936,1981,0,4,1,3302,0,12,0,1.256477,16,3 +3890,9936,1982,0,5,1,2185,0,12,1,1.7057939999999998,25,7 +3891,9936,1983,0,6,1,2080,1,12,0,1.948554,36,5 +3892,9936,1984,0,7,1,2080,1,12,1,2.369424,49,5 +3893,9936,1985,0,8,1,2080,1,12,1,2.56447,64,5 +3894,9936,1986,0,9,1,2080,1,12,1,2.679806,81,5 +3895,9936,1987,0,10,1,2080,1,12,1,2.786848,100,5 +3896,9964,1980,0,4,1,2248,0,9,0,0.8595009,16,3 +3897,9964,1981,0,5,1,2080,0,9,0,1.442384,25,6 +3898,9964,1982,0,6,1,2752,0,9,0,1.14484,36,6 +3899,9964,1983,0,7,1,2248,0,9,0,1.514206,49,6 +3900,9964,1984,0,8,1,2000,0,9,0,1.83955,64,6 +3901,9964,1985,0,9,1,2000,0,9,0,1.805182,81,6 +3902,9964,1986,0,10,1,2510,0,9,0,1.557979,100,5 +3903,9964,1987,0,11,1,2300,0,9,0,1.606387,121,5 +3904,10043,1980,0,4,1,3040,0,12,0,1.473975,16,5 +3905,10043,1981,0,5,1,3060,0,12,0,0.450201,25,6 +3906,10043,1982,0,6,1,2262,0,12,0,0.0924941,36,1 +3907,10043,1983,0,7,1,2408,1,12,0,1.44545,49,9 +3908,10043,1984,0,8,1,2285,1,12,0,0.607719,64,9 +3909,10043,1985,0,9,1,2755,1,12,0,0.8458323,81,9 +3910,10043,1986,0,10,1,2342,1,12,1,1.03947,100,7 +3911,10043,1987,0,11,1,2080,1,12,0,1.455614,121,5 +3912,10067,1980,0,2,1,2080,0,11,0,1.364618,4,5 +3913,10067,1981,0,3,1,2120,0,11,0,1.4850290000000002,9,5 +3914,10067,1982,0,4,1,2080,1,11,0,1.736114,16,1 +3915,10067,1983,0,5,1,2080,1,11,0,1.750103,25,1 +3916,10067,1984,0,6,1,2080,1,11,0,1.90569,36,1 +3917,10067,1985,0,7,1,2000,1,11,0,1.810723,49,5 +3918,10067,1986,0,8,1,1930,1,11,0,2.1084240000000003,64,5 +3919,10067,1987,0,9,1,1785,1,11,0,1.748325,81,5 +3920,10091,1980,0,5,0,3335,1,12,0,1.465272,25,7 +3921,10091,1981,0,6,0,2248,1,12,0,2.10231,36,5 +3922,10091,1982,0,7,0,2120,1,12,1,1.7359939999999998,49,5 +3923,10091,1983,0,8,0,2120,1,12,0,1.263876,64,5 +3924,10091,1984,0,9,0,2080,1,12,0,1.800329,81,5 +3925,10091,1985,0,10,0,2080,1,12,0,1.966632,100,5 +3926,10091,1986,0,11,0,2000,1,12,0,1.7851150000000002,121,5 +3927,10091,1987,0,12,0,3440,1,12,0,1.71465,144,5 +3928,10120,1980,0,2,0,785,0,13,0,-0.236821,4,3 +3929,10120,1981,0,3,0,610,0,13,0,0.2711527999999999,9,7 +3930,10120,1982,0,4,0,1254,0,13,0,0.2304199999999999,16,4 +3931,10120,1983,0,5,0,1958,0,13,0,1.411161,25,1 +3932,10120,1984,0,6,0,1995,0,13,0,1.692522,36,1 +3933,10120,1985,0,7,0,2600,0,13,0,1.48566,49,1 +3934,10120,1986,0,8,0,2190,1,13,0,1.895031,64,1 +3935,10120,1987,0,9,0,2080,1,13,0,1.952051,81,1 +3936,10121,1980,0,2,0,2080,0,11,0,1.224856,4,6 +3937,10121,1981,0,3,0,2080,0,11,0,1.442384,9,5 +3938,10121,1982,0,4,0,2080,0,11,0,1.500714,16,5 +3939,10121,1983,0,5,0,2080,0,11,0,1.523447,25,5 +3940,10121,1984,0,6,0,2080,0,11,0,1.588373,36,5 +3941,10121,1985,0,7,0,2510,0,11,0,1.520888,49,5 +3942,10121,1986,0,8,0,2390,0,11,0,1.457437,64,9 +3943,10121,1987,0,9,0,2205,0,11,0,1.893691,81,9 +3944,10167,1980,1,4,0,2080,0,12,1,1.4480000000000002,16,6 +3945,10167,1981,1,5,0,2080,0,12,1,1.609438,25,6 +3946,10167,1982,1,6,0,2080,0,12,1,1.547403,36,6 +3947,10167,1983,1,7,0,2080,0,12,1,1.660805,49,6 +3948,10167,1984,1,8,0,2080,0,12,1,1.7431709999999998,64,6 +3949,10167,1985,1,9,0,2080,0,12,1,1.793361,81,6 +3950,10167,1986,1,10,0,2080,0,12,1,1.851255,100,6 +3951,10167,1987,1,11,0,2080,0,12,1,1.99461,121,6 +3952,10209,1980,0,3,0,2340,0,10,0,1.235906,9,5 +3953,10209,1981,0,4,0,2315,0,10,0,1.134671,16,5 +3954,10209,1982,0,5,0,2395,0,10,0,0.9178749,25,6 +3955,10209,1983,0,6,0,2150,0,10,0,1.202104,36,5 +3956,10209,1984,0,7,0,1040,0,10,0,1.518409,49,5 +3957,10209,1985,0,8,0,2080,0,10,0,1.178175,64,6 +3958,10209,1986,0,9,0,2080,1,10,0,1.458212,81,6 +3959,10209,1987,0,10,0,2530,1,10,0,1.393294,100,5 +3960,10230,1980,0,5,0,2338,1,10,0,1.667544,25,6 +3961,10230,1981,0,6,0,2340,1,10,0,1.5839530000000002,36,5 +3962,10230,1982,0,7,0,2110,1,10,0,1.740722,49,5 +3963,10230,1983,0,8,0,2080,1,10,0,1.72541,64,5 +3964,10230,1984,0,9,0,2080,0,10,0,1.7431709999999998,81,5 +3965,10230,1985,0,10,0,2080,1,10,0,1.7659619999999998,100,5 +3966,10230,1986,0,11,0,2080,0,10,0,1.7458939999999998,121,5 +3967,10230,1987,0,12,0,2080,0,10,0,1.861079,144,5 +3968,10265,1980,0,2,0,1375,0,14,1,2.127964,4,7 +3969,10265,1981,0,3,0,2080,1,14,0,1.817077,9,3 +3970,10265,1982,0,4,0,2080,1,14,0,2.160507,16,3 +3971,10265,1983,0,5,0,2660,1,14,0,2.108061,25,3 +3972,10265,1984,0,6,0,2270,1,14,0,2.5602150000000004,36,2 +3973,10265,1985,0,7,0,2080,1,14,0,2.276787,49,3 +3974,10265,1986,0,8,0,2265,1,14,0,2.459195,64,3 +3975,10265,1987,0,9,0,2340,1,14,0,2.387653,81,3 +3976,10274,1980,0,1,0,1343,0,14,0,0.1135047,1,9 +3977,10274,1981,0,2,0,2080,1,14,1,1.683546,4,1 +3978,10274,1982,0,3,0,1600,1,14,1,1.918966,9,1 +3979,10274,1983,0,4,0,1560,1,14,1,1.981344,16,1 +3980,10274,1984,0,5,0,3552,1,14,1,1.48833,25,1 +3981,10274,1985,0,6,0,3246,1,14,1,1.475057,36,1 +3982,10274,1986,0,7,0,2080,1,14,0,1.799961,49,9 +3983,10274,1987,0,8,0,2080,1,14,0,2.130743,64,9 +3984,10311,1980,0,2,1,2080,0,11,0,1.630321,4,7 +3985,10311,1981,0,3,1,2080,0,11,0,1.683546,9,7 +3986,10311,1982,0,4,1,2080,0,11,0,1.690503,16,7 +3987,10311,1983,0,5,1,2080,0,11,0,1.89726,25,7 +3988,10311,1984,0,6,1,2080,1,11,0,1.682546,36,4 +3989,10311,1985,0,7,1,1160,1,11,0,2.098595,49,7 +3990,10311,1986,0,8,1,3660,1,11,1,0.5930123,64,9 +3991,10311,1987,0,9,1,3696,1,11,0,0.9497234,81,9 +3992,10392,1980,0,4,1,800,0,8,0,0.177887,16,6 +3993,10392,1981,0,5,1,2080,0,8,0,1.324419,25,5 +3994,10392,1982,0,6,1,2315,0,8,0,0.9234912,36,4 +3995,10392,1983,0,7,1,2095,0,8,0,1.186345,49,6 +3996,10392,1984,0,8,1,2325,0,8,0,1.060369,64,7 +3997,10392,1985,0,9,1,2340,0,8,0,0.9985167,81,6 +3998,10392,1986,0,10,1,2025,0,8,0,2.283518,100,7 +3999,10392,1987,0,11,1,1440,0,8,0,1.381506,121,7 +4000,10425,1980,1,2,0,2080,1,13,0,1.630321,4,6 +4001,10425,1981,1,3,0,2220,1,13,1,2.534697,9,7 +4002,10425,1982,1,4,0,2600,1,13,1,2.448189,16,7 +4003,10425,1983,1,5,0,2912,1,13,1,2.354019,25,4 +4004,10425,1984,1,6,0,2974,1,13,1,2.2412970000000003,36,7 +4005,10425,1985,1,7,0,3090,1,13,1,2.329934,49,4 +4006,10425,1986,1,8,0,3120,1,13,1,2.457391,64,7 +4007,10425,1987,1,9,0,3120,1,13,0,1.966439,81,7 +4008,10441,1980,0,2,0,1506,0,14,0,1.260085,4,9 +4009,10441,1981,0,3,0,1840,0,14,0,1.364316,9,9 +4010,10441,1982,0,4,0,2080,0,14,0,1.547403,16,4 +4011,10441,1983,0,5,0,1960,0,14,0,1.31483,25,1 +4012,10441,1984,0,6,0,2080,0,14,0,1.212543,36,9 +4013,10441,1985,0,7,0,2080,1,14,0,1.178175,49,9 +4014,10441,1986,0,8,0,1950,1,14,0,1.628111,64,9 +4015,10441,1987,0,9,0,1940,1,14,0,1.594287,81,9 +4016,10457,1980,0,2,0,1029,0,13,0,0.5098189000000001,4,9 +4017,10457,1981,0,3,0,464,0,13,0,1.463415,9,9 +4018,10457,1982,0,4,0,2000,1,13,0,1.50658,16,6 +4019,10457,1983,0,5,0,2080,1,13,0,1.743986,25,2 +4020,10457,1984,0,6,0,2080,1,13,0,1.95448,36,4 +4021,10457,1985,0,7,0,2080,1,13,0,2.011084,49,2 +4022,10457,1986,0,8,0,2080,1,13,0,2.033576,64,5 +4023,10457,1987,0,9,0,2135,1,13,0,2.174848,81,2 +4024,10469,1980,1,3,0,2780,0,12,1,2.151168,9,6 +4025,10469,1981,1,4,0,2220,0,12,1,1.869721,16,6 +4026,10469,1982,1,5,0,1620,0,12,0,1.53498,25,3 +4027,10469,1983,1,6,0,1830,0,12,0,1.160315,36,3 +4028,10469,1984,1,7,0,1672,0,12,0,1.32553,49,3 +4029,10469,1985,1,8,0,2080,0,12,0,1.412456,64,3 +4030,10469,1986,1,9,0,2080,0,12,0,1.628111,81,2 +4031,10469,1987,1,10,0,2080,0,12,0,1.7069279999999998,100,4 +4032,10524,1980,0,4,1,2976,0,11,0,1.048965,16,1 +4033,10524,1981,0,5,1,2892,0,11,0,1.112803,25,8 +4034,10524,1982,0,6,1,2568,0,11,0,1.074279,36,8 +4035,10524,1983,0,7,1,2226,0,11,0,1.52404,49,8 +4036,10524,1984,0,8,1,2756,0,11,0,1.267603,64,8 +4037,10524,1985,0,9,1,2524,0,11,0,1.157053,81,8 +4038,10524,1986,0,10,1,2640,0,11,0,0.814336,100,6 +4039,10524,1987,0,11,1,2934,0,11,0,1.180608,121,6 +4040,10552,1980,0,3,1,1052,0,9,0,1.213384,9,7 +4041,10552,1981,0,4,1,1824,0,9,0,0.8805726999999999,16,7 +4042,10552,1982,0,5,1,2080,0,9,0,1.042967,25,6 +4043,10552,1983,0,6,1,1560,0,9,1,0.8499414000000001,36,9 +4044,10552,1984,0,7,1,2456,0,9,1,0.6897017,49,6 +4045,10552,1985,0,8,1,2680,0,9,0,0.7622073,64,6 +4046,10552,1986,0,9,1,1600,0,9,0,0.9096462,81,6 +4047,10552,1987,0,10,1,2080,0,9,0,1.381506,100,6 +4048,10553,1980,0,4,1,2340,1,13,0,1.495731,16,5 +4049,10553,1981,0,5,1,2340,1,13,0,1.52196,25,5 +4050,10553,1982,0,6,1,2286,1,13,0,1.452967,36,5 +4051,10553,1983,0,7,1,2080,1,13,0,1.739929,49,5 +4052,10553,1984,0,8,1,2550,1,13,0,1.892585,64,5 +4053,10553,1985,0,9,1,2140,1,13,0,2.2057900000000004,81,5 +4054,10553,1986,0,10,1,2510,1,13,0,1.925704,100,5 +4055,10553,1987,0,11,1,2260,1,13,0,2.25992,121,5 +4056,10570,1980,0,3,0,2080,0,11,0,1.056437,9,5 +4057,10570,1981,0,4,0,1320,0,11,0,-1.417066,16,6 +4058,10570,1982,0,5,0,2955,0,11,0,-0.6700455,25,7 +4059,10570,1983,0,6,0,2169,1,11,0,0.7026825,36,5 +4060,10570,1984,0,7,0,1714,1,11,0,0.7129337,49,5 +4061,10570,1985,0,8,0,2083,1,11,0,0.8200589,64,5 +4062,10570,1986,0,9,0,2047,1,11,0,1.06874,81,5 +4063,10570,1987,0,10,0,2028,1,11,0,1.039099,100,5 +4064,10593,1980,0,6,0,2673,1,9,0,1.216969,36,2 +4065,10593,1981,0,7,0,1952,1,9,0,1.0539120000000002,49,6 +4066,10593,1982,0,8,0,2040,1,9,0,1.253163,64,1 +4067,10593,1983,0,9,0,2080,1,9,1,1.350717,81,1 +4068,10593,1984,0,10,0,2080,1,9,1,1.352305,100,9 +4069,10593,1985,0,11,0,1740,1,9,1,1.251297,121,2 +4070,10593,1986,0,12,0,1865,1,9,1,1.362525,144,4 +4071,10593,1987,0,13,0,2340,1,9,0,1.1836799999999998,169,6 +4072,10666,1980,1,3,0,2080,1,11,1,1.093465,9,9 +4073,10666,1981,1,4,0,1178,1,11,0,0.9993327,16,9 +4074,10666,1982,1,5,0,1715,1,11,0,1.04721,25,7 +4075,10666,1983,1,6,0,2225,1,11,0,0.4513363,36,6 +4076,10666,1984,1,7,0,1880,1,11,0,0.8028132,49,7 +4077,10666,1985,1,8,0,2000,1,11,0,0.7065701999999999,64,9 +4078,10666,1986,1,9,0,2080,1,11,0,1.074726,81,4 +4079,10666,1987,1,10,0,1272,0,11,0,0.6946283000000001,100,4 +4080,11275,1980,0,3,0,1702,0,12,0,0.9554163,9,9 +4081,11275,1981,0,4,0,378,0,12,0,1.6660080000000002,16,9 +4082,11275,1982,0,5,0,1492,0,12,0,1.019452,25,9 +4083,11275,1983,0,6,0,1356,0,12,0,1.085398,36,3 +4084,11275,1984,0,7,0,2190,0,12,0,0.9502881,49,9 +4085,11275,1985,0,8,0,2531,0,12,0,1.387394,64,6 +4086,11275,1986,0,9,0,2508,0,12,0,1.558776,81,6 +4087,11275,1987,0,10,0,2548,0,12,0,1.599298,100,4 +4088,11328,1980,0,5,0,777,0,12,0,1.7395349999999998,25,4 +4089,11328,1981,0,6,0,1084,0,12,0,0.8901209999999999,36,4 +4090,11328,1982,0,7,0,1110,0,12,0,1.482263,49,4 +4091,11328,1983,0,8,0,1120,0,12,0,1.0759379999999998,64,4 +4092,11328,1984,0,9,0,2185,0,12,0,1.520969,81,2 +4093,11328,1985,0,10,0,2310,0,12,0,1.603924,100,2 +4094,11328,1986,0,11,0,1040,0,12,0,1.340429,121,4 +4095,11328,1987,0,12,0,1380,0,12,0,2.117213,144,4 +4096,11750,1980,0,2,0,2360,0,10,0,1.1591870000000002,4,6 +4097,11750,1981,0,3,0,2600,0,10,0,1.529395,9,5 +4098,11750,1982,0,4,0,2600,0,10,0,1.46736,16,5 +4099,11750,1983,0,5,0,2600,0,10,0,1.502267,25,5 +4100,11750,1984,0,6,0,2731,0,10,0,1.345708,36,5 +4101,11750,1985,0,7,0,2316,0,10,0,1.407174,49,2 +4102,11750,1986,0,8,0,2203,0,10,0,1.842593,64,5 +4103,11750,1987,0,9,0,1667,0,10,0,2.370103,81,3 +4104,11821,1980,0,2,0,1380,0,15,0,1.165137,4,9 +4105,11821,1981,0,3,0,1480,0,15,0,1.949764,9,1 +4106,11821,1982,0,4,0,2470,0,15,0,1.946097,16,3 +4107,11821,1983,0,5,0,2600,0,15,0,1.987774,25,3 +4108,11821,1984,0,6,0,2360,0,15,0,2.115868,36,2 +4109,11821,1985,0,7,0,2270,0,15,0,2.253914,49,3 +4110,11821,1986,0,8,0,2540,0,15,0,2.319288,64,3 +4111,11821,1987,0,9,0,2552,0,15,0,2.275609,81,3 +4112,11857,1980,0,3,0,4143,0,12,1,1.591856,9,6 +4113,11857,1981,0,4,0,3110,0,12,1,2.001567,16,6 +4114,11857,1982,0,5,0,1525,0,12,1,2.650142,25,6 +4115,11857,1983,0,6,0,1885,0,12,1,2.452459,36,6 +4116,11857,1984,0,7,0,2080,0,12,1,2.168054,49,4 +4117,11857,1985,0,8,0,2080,1,12,1,2.372097,64,6 +4118,11857,1986,0,9,0,2880,1,12,1,2.085448,81,6 +4119,11857,1987,0,10,0,2720,1,12,1,1.98228,100,6 +4120,11887,1980,0,3,0,1079,0,12,0,1.941814,9,7 +4121,11887,1981,0,4,0,780,0,12,0,1.634756,16,7 +4122,11887,1982,0,5,0,780,0,12,0,1.668031,25,7 +4123,11887,1983,0,6,0,780,0,12,0,1.638399,36,4 +4124,11887,1984,0,7,0,780,0,12,0,1.3409950000000002,49,4 +4125,11887,1985,0,8,0,780,1,12,0,1.19142,64,4 +4126,11887,1986,0,9,0,780,1,12,0,1.576818,81,4 +4127,11887,1987,0,10,0,780,1,12,0,1.366002,100,4 +4128,11890,1980,0,10,1,2496,1,6,0,1.265678,100,9 +4129,11890,1981,0,11,1,2168,1,6,0,1.711102,121,9 +4130,11890,1982,0,12,1,2080,1,6,0,1.652455,144,9 +4131,11890,1983,0,13,1,2456,1,6,0,1.425713,169,9 +4132,11890,1984,0,14,1,2694,1,6,0,1.478612,196,9 +4133,11890,1985,0,15,1,2370,1,6,0,1.578281,225,9 +4134,11890,1986,0,16,1,2451,1,6,0,1.524608,256,9 +4135,11890,1987,0,17,1,2272,1,6,0,1.723996,289,9 +4136,11892,1980,1,4,0,2040,0,11,0,1.818074,16,6 +4137,11892,1981,1,5,0,2120,0,11,0,2.027552,25,5 +4138,11892,1982,1,6,0,2000,0,11,0,2.415343,36,2 +4139,11892,1983,1,7,0,2050,0,11,0,2.232078,49,4 +4140,11892,1984,1,8,0,1320,0,11,0,2.542748,64,2 +4141,11892,1985,1,9,0,2028,0,11,0,2.027668,81,6 +4142,11892,1986,1,10,0,2080,0,11,0,2.222818,100,2 +4143,11892,1987,1,11,0,2140,0,11,0,2.238106,121,2 +4144,11924,1980,0,2,0,4052,0,12,0,1.428417,4,5 +4145,11924,1981,0,3,0,4370,0,12,0,1.540772,9,7 +4146,11924,1982,0,4,0,3519,0,12,0,1.547687,16,7 +4147,11924,1983,0,5,0,4378,0,12,0,1.361333,25,4 +4148,11924,1984,0,6,0,4114,0,12,0,1.768889,36,4 +4149,11924,1985,0,7,0,4340,0,12,0,1.77767,49,4 +4150,11924,1986,0,8,0,4748,1,12,0,1.416758,64,4 +4151,11924,1987,0,9,0,4644,1,12,0,1.635019,81,4 +4152,11925,1980,0,2,0,1565,0,10,0,1.1703629999999998,4,8 +4153,11925,1981,0,3,0,3224,1,10,0,1.496605,9,8 +4154,11925,1982,0,4,0,3339,1,10,0,1.553672,16,7 +4155,11925,1983,0,5,0,3285,1,10,0,1.646462,25,7 +4156,11925,1984,0,6,0,2496,1,10,0,1.818679,36,4 +4157,11925,1985,0,7,0,3390,1,10,0,1.7544240000000002,49,7 +4158,11925,1986,0,8,0,2588,1,10,0,1.887379,64,5 +4159,11925,1987,0,9,0,3216,1,10,0,1.814773,81,7 +4160,11957,1980,0,4,0,1744,0,13,1,0.0147482,16,5 +4161,11957,1981,0,5,0,2234,0,13,1,0.4397842999999999,25,3 +4162,11957,1982,0,6,0,2119,0,13,0,1.448783,36,2 +4163,11957,1983,0,7,0,2080,0,13,0,1.255406,49,3 +4164,11957,1984,0,8,0,2040,0,13,0,1.327271,64,3 +4165,11957,1985,0,9,0,2120,0,13,1,1.421491,81,3 +4166,11957,1986,0,10,0,2160,0,13,0,1.456839,100,9 +4167,11957,1987,0,11,0,2080,0,13,0,1.381506,121,4 +4168,11973,1980,0,4,0,2080,0,12,0,1.4480000000000002,16,2 +4169,11973,1981,0,5,0,2120,0,12,0,1.733491,25,2 +4170,11973,1982,0,6,0,2080,0,12,1,1.872825,36,6 +4171,11973,1983,0,7,0,2416,0,12,0,2.043713,49,6 +4172,11973,1984,0,8,0,2176,0,12,0,2.232133,64,5 +4173,11973,1985,0,9,0,2416,0,12,0,2.040031,81,6 +4174,11973,1986,0,10,0,2496,0,12,0,-0.2281868,100,6 +4175,11973,1987,0,11,0,2496,0,12,0,2.035432,121,6 +4176,11990,1980,0,2,0,1372,0,14,0,1.640954,4,6 +4177,11990,1981,0,3,0,2120,0,14,0,1.915812,9,3 +4178,11990,1982,0,4,0,2245,1,14,0,2.307313,16,3 +4179,11990,1983,0,5,0,2080,1,14,0,2.641701,25,3 +4180,11990,1984,0,6,0,2120,1,14,0,2.65211,36,3 +4181,11990,1985,0,7,0,880,1,14,0,2.443841,49,3 +4182,11990,1986,0,8,0,2000,1,14,0,2.030237,64,1 +4183,11990,1987,0,9,0,2080,1,14,0,2.282292,81,1 +4184,12012,1980,0,1,0,526,0,13,0,0.4148759,1,9 +4185,12012,1981,0,2,0,1808,0,13,0,1.694234,4,1 +4186,12012,1982,0,3,0,2154,1,13,0,1.621643,9,4 +4187,12012,1983,0,4,0,1649,1,13,0,1.582916,16,2 +4188,12012,1984,0,5,0,4034,1,13,0,1.0201559999999998,25,5 +4189,12012,1985,0,6,0,3293,1,13,0,1.3339299999999998,36,6 +4190,12012,1986,0,7,0,2740,1,13,0,2.197611,49,1 +4191,12012,1987,0,8,0,2462,1,13,0,2.174311,64,5 +4192,12013,1980,0,2,0,1815,0,10,0,0.6679913000000001,4,6 +4193,12013,1981,0,3,0,1800,0,10,0,1.243194,9,4 +4194,12013,1982,0,4,0,440,0,10,1,2.933697,16,4 +4195,12013,1983,0,5,0,1500,0,10,0,1.722071,25,5 +4196,12013,1984,0,6,0,2080,0,10,0,1.549015,36,5 +4197,12013,1985,0,7,0,1920,0,10,0,2.174509,49,5 +4198,12013,1986,0,8,0,2080,0,10,0,2.074398,64,5 +4199,12013,1987,0,9,0,2080,0,10,0,1.812289,81,5 +4200,12045,1980,0,1,0,1405,0,16,0,1.147183,1,1 +4201,12045,1981,0,2,0,1260,1,16,0,1.1143610000000002,4,1 +4202,12045,1982,0,3,0,1460,1,16,0,1.208187,9,1 +4203,12045,1983,0,4,0,1150,1,16,0,1.56033,16,1 +4204,12045,1984,0,5,0,1040,1,16,0,1.618008,25,1 +4205,12045,1985,0,6,0,1040,1,16,0,1.871322,36,4 +4206,12045,1986,0,7,0,1533,1,16,0,1.558559,49,1 +4207,12045,1987,0,8,0,1996,1,16,0,1.812689,64,2 +4208,12055,1980,0,3,0,2030,0,12,0,1.942335,9,7 +4209,12055,1981,0,4,0,2570,0,12,0,1.5608030000000002,16,6 +4210,12055,1982,0,5,0,2600,0,12,0,1.654116,25,6 +4211,12055,1983,0,6,0,2477,1,12,0,1.666177,36,3 +4212,12055,1984,0,7,0,2160,1,12,0,1.815709,49,4 +4213,12055,1985,0,8,0,2340,1,12,1,1.976683,64,6 +4214,12055,1986,0,9,0,2125,1,12,0,2.128436,81,6 +4215,12055,1987,0,10,0,2200,1,12,1,2.0926720000000003,100,6 +4216,12084,1980,0,5,0,640,0,12,0,-0.3690777,25,7 +4217,12084,1981,0,6,0,1104,0,12,0,1.287354,36,7 +4218,12084,1982,0,7,0,1218,0,12,0,1.820196,49,7 +4219,12084,1983,0,8,0,2010,0,12,0,1.471961,64,9 +4220,12084,1984,0,9,0,2748,1,12,0,1.809506,81,6 +4221,12084,1985,0,10,0,2124,0,12,0,2.14414,100,6 +4222,12084,1986,0,11,0,1760,0,12,0,1.625266,121,6 +4223,12084,1987,0,12,0,2408,0,12,0,1.66586,144,7 +4224,12088,1980,0,2,0,1207,0,12,0,1.171249,4,9 +4225,12088,1981,0,3,0,1200,0,12,0,0.929536,9,7 +4226,12088,1982,0,4,0,1425,0,12,0,0.7469435999999999,16,1 +4227,12088,1983,0,5,0,1856,0,12,0,0.998287,25,9 +4228,12088,1984,0,6,0,2080,0,12,0,1.394864,36,1 +4229,12088,1985,0,7,0,2120,0,12,0,1.53069,49,2 +4230,12088,1986,0,8,0,2080,0,12,0,1.900045,64,1 +4231,12088,1987,0,9,0,2080,0,12,0,1.812289,81,1 +4232,12122,1980,0,9,0,3091,1,8,0,0.9465123,81,8 +4233,12122,1981,0,10,0,3120,1,8,0,0.9416085,100,8 +4234,12122,1982,0,11,0,2295,1,8,0,1.186673,121,8 +4235,12122,1983,0,12,0,2931,1,8,0,0.8070702,144,8 +4236,12122,1984,0,13,0,2266,1,8,0,1.657523,169,8 +4237,12122,1985,0,14,0,2182,1,8,0,1.535766,196,6 +4238,12122,1986,0,15,0,3320,1,8,0,0.5851501,225,5 +4239,12122,1987,0,16,0,2960,1,8,0,1.721832,256,7 +4240,12179,1980,0,3,1,1040,0,10,1,1.506269,9,9 +4241,12179,1981,0,4,1,1615,0,10,0,1.285396,16,9 +4242,12179,1982,0,5,1,1820,0,10,1,1.195426,25,9 +4243,12179,1983,0,6,1,1820,0,10,1,1.283577,36,9 +4244,12179,1984,0,7,1,1820,0,10,1,1.441384,49,9 +4245,12179,1985,0,8,1,1820,0,10,1,1.451468,64,9 +4246,12179,1986,0,9,1,1540,0,10,1,1.830257,81,1 +4247,12179,1987,0,10,1,1820,0,10,0,1.94582,100,4 +4248,12182,1980,0,1,1,1625,0,13,0,1.471716,1,9 +4249,12182,1981,0,2,1,2035,0,13,0,1.551267,4,9 +4250,12182,1982,0,3,1,2080,0,13,1,1.690503,9,9 +4251,12182,1983,0,4,1,2080,1,13,1,1.843193,16,9 +4252,12182,1984,0,5,1,1800,1,13,1,2.050271,25,9 +4253,12182,1985,0,6,1,1280,1,13,1,1.926047,36,9 +4254,12182,1986,0,7,1,1826,0,13,1,1.981495,49,9 +4255,12182,1987,0,8,1,1852,0,13,1,2.190755,64,9 +4256,12220,1980,0,2,1,2840,0,12,0,1.542029,4,2 +4257,12220,1981,0,3,1,2400,1,12,0,1.94591,9,5 +4258,12220,1982,0,4,1,2290,1,12,1,1.930792,16,5 +4259,12220,1983,0,5,1,2130,1,12,1,2.064562,25,5 +4260,12220,1984,0,6,1,2080,1,12,1,1.95448,36,5 +4261,12220,1985,0,7,1,2080,1,12,1,2.011084,49,5 +4262,12220,1986,0,8,1,2080,1,12,1,2.074398,64,5 +4263,12220,1987,0,9,1,2080,1,12,1,2.217754,81,5 +4264,12221,1980,0,6,0,1305,0,11,0,0.8643423000000001,36,8 +4265,12221,1981,0,7,0,2480,0,11,0,-0.0327898,49,7 +4266,12221,1982,0,8,0,2390,1,11,0,0.4529655999999999,64,7 +4267,12221,1983,0,9,0,2335,1,11,0,0.6289368000000001,81,7 +4268,12221,1984,0,10,0,2000,1,11,0,0.7409378000000001,100,7 +4269,12221,1985,0,11,0,2080,1,11,0,1.178175,121,6 +4270,12221,1986,0,12,0,2080,1,11,0,1.340429,144,6 +4271,12221,1987,0,13,0,2486,1,11,0,1.203199,169,6 +4272,12245,1980,0,1,0,1420,0,14,0,0.6257378,1,1 +4273,12245,1981,0,2,0,1735,0,14,0,1.171759,4,5 +4274,12245,1982,0,3,0,3352,0,14,0,0.9031591,9,4 +4275,12245,1983,0,4,0,3134,0,14,0,1.181937,16,4 +4276,12245,1984,0,5,0,2490,0,14,0,1.14881,25,2 +4277,12245,1985,0,6,0,2210,0,14,0,1.523016,36,9 +4278,12245,1986,0,7,0,2903,0,14,0,1.161203,49,9 +4279,12245,1987,0,8,0,2912,0,14,0,1.370456,64,2 +4280,12276,1980,0,4,0,2080,0,12,0,1.54331,16,6 +4281,12276,1981,0,5,0,2530,0,12,0,1.446947,25,6 +4282,12276,1982,0,6,0,2248,0,12,0,1.61283,36,6 +4283,12276,1983,0,7,0,2080,0,12,0,1.7860349999999998,49,3 +4284,12276,1984,0,8,0,2380,0,12,0,1.770957,64,6 +4285,12276,1985,0,9,0,2820,0,12,0,1.7067150000000002,81,6 +4286,12276,1986,0,10,0,2260,0,12,0,1.950579,100,6 +4287,12276,1987,0,11,0,2260,0,12,0,1.89056,121,6 +4288,12385,1980,0,5,0,2394,0,12,0,1.427848,25,5 +4289,12385,1981,0,6,0,2373,0,12,0,1.620752,36,5 +4290,12385,1982,0,7,0,3120,1,12,0,2.132336,49,5 +4291,12385,1983,0,8,0,3317,0,12,0,1.3765,64,5 +4292,12385,1984,0,9,0,2535,0,12,0,1.970228,81,5 +4293,12385,1985,0,10,0,2340,0,12,0,1.970665,100,5 +4294,12385,1986,0,11,0,2340,0,12,0,1.915793,121,5 +4295,12385,1987,0,12,0,2340,0,12,0,1.99461,144,5 +4296,12410,1980,0,3,0,2000,0,12,1,-0.8153648,9,6 +4297,12410,1981,0,4,0,1840,1,12,1,1.820333,16,6 +4298,12410,1982,0,5,0,1920,1,12,1,1.7435169999999998,25,6 +4299,12410,1983,0,6,0,2440,1,12,1,1.626405,36,6 +4300,12410,1984,0,7,0,2600,1,12,1,1.682546,49,6 +4301,12410,1985,0,8,0,2848,1,12,1,1.557073,64,6 +4302,12410,1986,0,9,0,2812,1,12,1,1.444366,81,6 +4303,12410,1987,0,10,0,2303,1,12,0,1.199618,100,1 +4304,12420,1980,0,3,0,2080,1,12,0,0.0040760999999999,9,5 +4305,12420,1981,0,4,0,2080,1,12,0,2.397895,16,6 +4306,12420,1982,0,5,0,2080,1,12,0,2.318721,25,9 +4307,12420,1983,0,6,0,2106,1,12,0,2.387207,36,6 +4308,12420,1984,0,7,0,2292,1,12,1,2.303329,49,6 +4309,12420,1985,0,8,0,2540,1,12,0,2.231142,64,2 +4310,12420,1986,0,9,0,2600,1,12,1,2.243297,81,1 +4311,12420,1987,0,10,0,2100,1,12,0,2.417905,100,1 +4312,12433,1980,0,2,0,835,0,15,0,1.667544,4,1 +4313,12433,1981,0,3,0,1200,0,15,0,1.609438,9,1 +4314,12433,1982,0,4,0,1490,0,15,0,1.7139400000000002,16,1 +4315,12433,1983,0,5,0,1642,0,15,0,1.268716,25,4 +4316,12433,1984,0,6,0,2304,0,15,0,0.8871203999999999,36,9 +4317,12433,1985,0,7,0,2080,0,15,1,1.87631,49,9 +4318,12433,1986,0,8,0,2156,0,15,1,1.933906,64,9 +4319,12433,1987,0,9,0,2211,0,15,1,1.974355,81,9 +4320,12451,1980,0,2,0,1584,0,14,0,1.066488,4,6 +4321,12451,1981,0,3,0,1268,0,14,0,1.937311,9,1 +4322,12451,1982,0,4,0,1516,0,14,0,1.696641,16,1 +4323,12451,1983,0,5,0,1749,1,14,0,2.016517,25,1 +4324,12451,1984,0,6,0,1509,1,14,0,1.176789,36,1 +4325,12451,1985,0,7,0,1520,1,14,0,1.491833,49,7 +4326,12451,1986,0,8,0,2120,1,14,0,1.971969,64,1 +4327,12451,1987,0,9,0,2340,1,14,0,1.876827,81,1 +4328,12477,1980,0,4,0,2080,0,12,1,2.213467,16,6 +4329,12477,1981,0,5,0,2080,0,12,1,2.222542,25,5 +4330,12477,1982,0,6,0,2080,1,12,1,2.201329,36,6 +4331,12477,1983,0,7,0,2080,1,12,1,2.171697,49,5 +4332,12477,1984,0,8,0,2080,1,12,1,2.168054,64,6 +4333,12477,1985,0,9,0,2080,1,12,1,2.133687,81,5 +4334,12477,1986,0,10,0,2080,1,12,1,2.113619,100,6 +4335,12477,1987,0,11,0,1760,1,12,1,2.202487,121,9 +4336,12500,1980,0,4,0,2008,1,12,0,0.9724026,16,2 +4337,12500,1981,0,5,0,3190,0,12,0,1.324886,25,9 +4338,12500,1982,0,6,0,2584,0,12,0,0.962707,36,9 +4339,12500,1983,0,7,0,2351,1,12,0,0.8452514999999999,49,5 +4340,12500,1984,0,8,0,2234,1,12,0,1.929574,64,5 +4341,12500,1985,0,9,0,2290,1,12,0,2.037503,81,5 +4342,12500,1986,0,10,0,3151,1,12,0,1.148221,100,5 +4343,12500,1987,0,11,0,3276,1,12,0,1.30674,121,5 +4344,12534,1980,0,2,0,2080,0,11,0,1.840042,4,5 +4345,12534,1981,0,3,0,2000,0,11,0,2.174752,9,5 +4346,12534,1982,0,4,0,1800,1,11,0,2.122767,16,5 +4347,12534,1983,0,5,0,2080,1,11,0,2.130875,25,5 +4348,12534,1984,0,6,0,2080,1,11,0,2.168054,36,7 +4349,12534,1985,0,7,0,2080,1,11,0,2.207794,49,5 +4350,12534,1986,0,8,0,2080,1,11,0,2.381883,64,5 +4351,12534,1987,0,9,0,2080,1,11,0,2.342917,81,5 +4352,12548,1980,0,5,0,2000,0,9,0,1.130545,25,7 +4353,12548,1981,0,6,0,2112,0,9,0,1.311603,36,5 +4354,12548,1982,0,7,0,2080,0,9,0,0.8324815999999999,49,5 +4355,12548,1983,0,8,0,2080,1,9,0,1.591879,64,5 +4356,12548,1984,0,9,0,2080,1,9,1,1.212543,81,5 +4357,12548,1985,0,10,0,2080,1,9,0,1.7659619999999998,100,5 +4358,12548,1986,0,11,0,2080,1,9,1,1.7458939999999998,121,5 +4359,12548,1987,0,12,0,3380,1,9,1,1.466543,144,5 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_options[datasets0-heart].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_options[datasets0-heart].csv new file mode 100644 index 00000000000..c91d344081f --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_options[datasets0-heart].csv @@ -0,0 +1,4 @@ +,dataset,column,option +0,heart,survival,survival-heart +1,heart,censors,censors-heart +2,heart,age,age-heart diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_options[datasets1-None].csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_options[datasets1-None].csv new file mode 100644 index 00000000000..c91d344081f --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_options[datasets1-None].csv @@ -0,0 +1,4 @@ +,dataset,column,option +0,heart,survival,survival-heart +1,heart,censors,censors-heart +2,heart,age,age-heart diff --git a/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_options[datasets1-None]_1.csv b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_options[datasets1-None]_1.csv new file mode 100644 index 00000000000..bdbe896e312 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_econometrics_model/test_options[datasets1-None]_1.csv @@ -0,0 +1,15 @@ +,dataset,column,option +0,macrodata,year,year-macrodata +1,macrodata,quarter,quarter-macrodata +2,macrodata,realgdp,realgdp-macrodata +3,macrodata,realcons,realcons-macrodata +4,macrodata,realinv,realinv-macrodata +5,macrodata,realgovt,realgovt-macrodata +6,macrodata,realdpi,realdpi-macrodata +7,macrodata,cpi,cpi-macrodata +8,macrodata,m1,m1-macrodata +9,macrodata,tbilrate,tbilrate-macrodata +10,macrodata,unemp,unemp-macrodata +11,macrodata,pop,pop-macrodata +12,macrodata,infl,infl-macrodata +13,macrodata,realint,realint-macrodata diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bgod[regression_variables0-data0-datasets0-True-3].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bgod[regression_variables0-data0-datasets0-True-3].csv new file mode 100644 index 00000000000..80fd47a4bd6 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bgod[regression_variables0-data0-datasets0-True-3].csv @@ -0,0 +1,5 @@ +,0 +0,12.30369 +1,0.00641 +2,3.85222 +3,0.05032 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bgod[regression_variables1-data1-datasets1-True-1].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bgod[regression_variables1-data1-datasets1-True-1].csv new file mode 100644 index 00000000000..a8925053825 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bgod[regression_variables1-data1-datasets1-True-1].csv @@ -0,0 +1,5 @@ +,0 +0,15.52753 +1,0.00008 +2,0.20175 +3,0.66071 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bols[regression_variables0-data0-datasets0].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bols[regression_variables0-data0-datasets0].csv new file mode 100644 index 00000000000..dc76bab07d9 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bols[regression_variables0-data0-datasets0].csv @@ -0,0 +1,2 @@ +,const,married_wage_panel,lwage_wage_panel,hisp_wage_panel,black_wage_panel +parameter,9.50097,-0.21638,1.53397,-0.93806,-0.19418 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bpag[regression_variables0-data0-datasets0-True].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bpag[regression_variables0-data0-datasets0-True].csv new file mode 100644 index 00000000000..fa4884ccb17 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bpag[regression_variables0-data0-datasets0-True].csv @@ -0,0 +1,5 @@ +,0 +0,8.34753 +1,0.00386 +2,7.63580 +3,0.00572 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bpag[regression_variables1-data1-datasets1-True].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bpag[regression_variables1-data1-datasets1-True].csv new file mode 100644 index 00000000000..ab3cc7fc84d --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_bpag[regression_variables1-data1-datasets1-True].csv @@ -0,0 +1,5 @@ +,0 +0,5.65587 +1, +2,8.20157 +3,0.01183 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_comparison[regression_variables0-data0-datasets0].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_comparison[regression_variables0-data0-datasets0].csv new file mode 100644 index 00000000000..651b0b631a0 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_comparison[regression_variables0-data0-datasets0].csv @@ -0,0 +1,5 @@ +,RE,FE +const,0.14530,0.16091 +lwage_wage_panel,0.19126,0.18194 +hisp_wage_panel,-0.00687,-0.00737 +black_wage_panel,-0.17866,-0.18008 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_fdols[regression_variables0-data0-datasets0].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_fdols[regression_variables0-data0-datasets0].csv new file mode 100644 index 00000000000..a22bd33124c --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_fdols[regression_variables0-data0-datasets0].csv @@ -0,0 +1,2 @@ +,married_wage_panel +parameter,0.08226 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_fe[regression_variables0-data0-datasets0].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_fe[regression_variables0-data0-datasets0].csv new file mode 100644 index 00000000000..101d834aae6 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_fe[regression_variables0-data0-datasets0].csv @@ -0,0 +1,2 @@ +,const,married_wage_panel,lwage_wage_panel,hisp_wage_panel,black_wage_panel +parameter,10.65398,-0.13342,0.82259,-0.97489,-0.28511 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_ols[regression_variables0-data0-datasets0-True].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_ols[regression_variables0-data0-datasets0-True].csv new file mode 100644 index 00000000000..b1502661a03 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_ols[regression_variables0-data0-datasets0-True].csv @@ -0,0 +1,2 @@ +,GNP_longley,ARMED_longley,POP_longley +0,-0.00605,0.68417,0.56098 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_ols[regression_variables1-data1-datasets1-False].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_ols[regression_variables1-data1-datasets1-False].csv new file mode 100644 index 00000000000..b1502661a03 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_ols[regression_variables1-data1-datasets1-False].csv @@ -0,0 +1,2 @@ +,GNP_longley,ARMED_longley,POP_longley +0,-0.00605,0.68417,0.56098 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_pols[regression_variables0-data0-datasets0].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_pols[regression_variables0-data0-datasets0].csv new file mode 100644 index 00000000000..101d834aae6 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_pols[regression_variables0-data0-datasets0].csv @@ -0,0 +1,2 @@ +,const,married_wage_panel,lwage_wage_panel,hisp_wage_panel,black_wage_panel +parameter,10.65398,-0.13342,0.82259,-0.97489,-0.28511 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_re[regression_variables0-data0-datasets0].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_re[regression_variables0-data0-datasets0].csv new file mode 100644 index 00000000000..65a0144fb9e --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_re[regression_variables0-data0-datasets0].csv @@ -0,0 +1,2 @@ +,const,lwage_wage_panel,hisp_wage_panel,black_wage_panel +parameter,0.14530,0.19126,-0.00687,-0.17866 diff --git a/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_regression_data[regression_variables0-data0-datasets0].csv b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_regression_data[regression_variables0-data0-datasets0].csv new file mode 100644 index 00000000000..af311159731 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/csv/test_regression_model/test_get_regression_data[regression_variables0-data0-datasets0].csv @@ -0,0 +1,20 @@ +,0 +0," TOTEMP_longley GNP_longley ARMED_longley POP_longley +0 60323.0 234289.0 1590.0 107608.0 +1 61122.0 259426.0 1456.0 108632.0 +2 60171.0 258054.0 1616.0 109773.0 +3 61187.0 284599.0 1650.0 110929.0 +4 63221.0 328975.0 3099.0 112075.0 +5 63639.0 346999.0 3594.0 113270.0 +6 64989.0 365385.0 3547.0 115094.0 +7 63761.0 363112.0 3350.0 116219.0 +8 66019.0 397469.0 3048.0 117388.0 +9 67857.0 419180.0 2857.0 118734.0 +10 68169.0 442769.0 2798.0 120445.0 +11 66513.0 444546.0 2637.0 121950.0 +12 68655.0 482704.0 2552.0 123366.0 +13 69564.0 502601.0 2514.0 125368.0 +14 69331.0 518173.0 2572.0 127852.0 +15 70551.0 554894.0 2827.0 130081.0" +1,TOTEMP_longley +2,['GNP_longley' 'ARMED_longley' 'POP_longley'] diff --git a/tests/gamestonk_terminal/econometrics/json/test_regression_model/test_get_dwat[regression_variables0-data0-datasets0-True].json b/tests/gamestonk_terminal/econometrics/json/test_regression_model/test_get_dwat[regression_variables0-data0-datasets0-True].json new file mode 100644 index 00000000000..46843749469 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/json/test_regression_model/test_get_dwat[regression_variables0-data0-datasets0-True].json @@ -0,0 +1 @@ +1.8 \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/json/test_regression_model/test_get_dwat[regression_variables1-data1-datasets1-True].json b/tests/gamestonk_terminal/econometrics/json/test_regression_model/test_get_dwat[regression_variables1-data1-datasets1-True].json new file mode 100644 index 00000000000..2a47a95780f --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/json/test_regression_model/test_get_dwat[regression_variables1-data1-datasets1-True].json @@ -0,0 +1 @@ +0.08 \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/test_econometrics_model.py b/tests/gamestonk_terminal/econometrics/test_econometrics_model.py new file mode 100644 index 00000000000..05572ee1edc --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/test_econometrics_model.py @@ -0,0 +1,325 @@ +# IMPORTATION STANDARD +import pandas as pd + +# IMPORTATION THIRDPARTY +import pytest + +# IMPORTATION INTERNAL +from gamestonk_terminal.econometrics import econometrics_model + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "file, file_types, data_files, data_examples", + [ + ("wage_panel", ["csv", "xlsx"], {}, {"wage_panel": "wage_panel"}), + ("sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"}), + ], +) +def test_load(recorder, file, file_types, data_files, data_examples): + result = econometrics_model.load( + file=file, + file_types=file_types, + data_files=data_files, + data_examples=data_examples, + ) + + recorder.capture(result) + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "datasets, dataset_name", + [ + ( + { + "heart": econometrics_model.load( + "heart", ["csv", "xlsx"], {}, {"heart": "heart"} + ) + }, + "heart", + ), + ( + { + "heart": econometrics_model.load( + "heart", ["csv", "xlsx"], {}, {"heart": "heart"} + ), + "macrodata": econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + ), + }, + None, + ), + ], +) +def test_options(recorder, datasets, dataset_name): + result = econometrics_model.get_options( + datasets=datasets, dataset_name=dataset_name + ) + + recorder.capture_list(result.values()) + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "dataset, fill, drop, limit", + [ + ( + econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ), + "rfill", + None, + 5, + ), + ( + econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ), + "cfill", + None, + 5, + ), + ( + econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ), + "rbfill", + None, + 5, + ), + ( + econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ), + "cbfill", + None, + 5, + ), + ( + econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ), + "rffill", + None, + 5, + ), + ( + econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ), + "cffill", + None, + 5, + ), + ( + econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ), + None, + "rdrop", + 5, + ), + ( + econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ), + None, + "cdrop", + 5, + ), + ( + econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ), + "rfill", + "rdrop", + 5, + ), + ( + econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ), + "rfill", + "cdrop", + 5, + ), + ( + econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ), + "rfill", + None, + 10, + ), + ( + econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ), + None, + "rdrop", + 10, + ), + ], +) +def test_clean(recorder, dataset, fill, drop, limit): + result = econometrics_model.clean( + dataset=dataset, fill=fill, drop=drop, limit=limit + ) + + recorder.capture(result) + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "data", + [ + ( + econometrics_model.load( + "sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"} + )["SUNACTIVITY"] + ), + ( + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["infl"] + ), + ( + econometrics_model.load( + "elnino", ["csv", "xlsx"], {}, {"elnino": "elnino"} + )["JAN"] + ), + ], +) +def test_get_normality(recorder, data): + result = econometrics_model.get_normality(data=data) + + recorder.capture(result, float_format="%.5f") + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "df, fuller_reg, kpss_reg", + [ + ( + econometrics_model.load( + "sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"} + )["SUNACTIVITY"], + "c", + "c", + ), + ( + econometrics_model.load( + "sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"} + )["SUNACTIVITY"], + "c", + "ct", + ), + ( + econometrics_model.load( + "sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"} + )["SUNACTIVITY"], + "ct", + "c", + ), + ( + econometrics_model.load( + "sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"} + )["SUNACTIVITY"], + "ctt", + "c", + ), + ( + econometrics_model.load( + "sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"} + )["SUNACTIVITY"], + "nc", + "c", + ), + ], +) +def test_get_root(recorder, df, fuller_reg, kpss_reg): + result = econometrics_model.get_root( + df=df, fuller_reg=fuller_reg, kpss_reg=kpss_reg + ) + + recorder.capture(result, float_format="%.5f") + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "time_series_y, time_series_x, lags", + [ + ( + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["realgdp"], + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["pop"], + 3, + ), + ( + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["realgovt"], + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["realinv"], + 2, + ), + ( + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["realdpi"], + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["cpi"], + 1, + ), + ], +) +def test_get_granger_causality(recorder, time_series_y, time_series_x, lags): + result = econometrics_model.get_granger_causality( + time_series_y=time_series_y, time_series_x=time_series_x, lags=lags + ) + + # The first item is taken since the second item contains Statsmodels + # objects (which change their identifier on every iteration) + recorder.capture_list(result[lags][0]) + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "y, x", + [ + ( + econometrics_model.load( + "interest_inflation", + ["csv", "xlsx"], + {}, + {"interest_inflation": "interest_inflation"}, + )["Dp"], + econometrics_model.load( + "interest_inflation", + ["csv", "xlsx"], + {}, + {"interest_inflation": "interest_inflation"}, + )["R"], + ) + ], +) +def test_get_engle_granger_two_step_cointegration_test(recorder, y, x): + ( + c, + gamma, + alpha, + z, + adfstat, + pvalue, + ) = econometrics_model.get_engle_granger_two_step_cointegration_test(y=y, x=x) + + result = pd.DataFrame([c, gamma, alpha, adfstat, pvalue]) + + recorder.capture(result, float_format="%.5f") + recorder.capture(z, float_format="%.5f") diff --git a/tests/gamestonk_terminal/econometrics/test_econometrics_view.py b/tests/gamestonk_terminal/econometrics/test_econometrics_view.py new file mode 100644 index 00000000000..dda8ed5adf9 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/test_econometrics_view.py @@ -0,0 +1,219 @@ +# IMPORTATION THIRDPARTY +import pytest + +# IMPORTATION INTERNAL +from gamestonk_terminal.econometrics import econometrics_model, econometrics_view + + +@pytest.mark.vcr() +@pytest.mark.record_stdout +@pytest.mark.parametrize( + "datasets, dataset_name", + [ + ( + { + "heart": econometrics_model.load( + "heart", ["csv", "xlsx"], {}, {"heart": "heart"} + ), + "macrodata": econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + ), + }, + None, + ) + ], +) +def test_show_options(datasets, dataset_name): + econometrics_view.show_options(datasets=datasets, dataset_name=dataset_name) + + +@pytest.mark.vcr() +@pytest.mark.record_stdout +@pytest.mark.parametrize( + "data, dataset, column, plot", + [ + ( + econometrics_model.load( + "sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"} + )["SUNACTIVITY"], + "Sunset", + "Sunactivity", + False, + ), + ( + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["infl"], + "Macrodata", + "Inflation", + False, + ), + ( + econometrics_model.load( + "elnino", ["csv", "xlsx"], {}, {"elnino": "elnino"} + )["JAN"], + "El Nino", + "January", + False, + ), + ], +) +def test_display_norm(data, dataset, column, plot): + econometrics_view.display_norm(data=data, dataset=dataset, column=column, plot=plot) + + +@pytest.mark.vcr() +@pytest.mark.record_stdout +@pytest.mark.parametrize( + "df, dataset_name, column_name, fuller_reg, kpss_reg", + [ + ( + econometrics_model.load( + "sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"} + )["SUNACTIVITY"], + "Sunspot", + "Sunactivity", + "c", + "c", + ), + ( + econometrics_model.load( + "sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"} + )["SUNACTIVITY"], + "Sunspot", + "Sunactivity", + "c", + "ct", + ), + ( + econometrics_model.load( + "sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"} + )["SUNACTIVITY"], + "Sunspot", + "Sunactivity", + "ct", + "c", + ), + ( + econometrics_model.load( + "sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"} + )["SUNACTIVITY"], + "Sunspot", + "Sunactivity", + "ctt", + "c", + ), + ( + econometrics_model.load( + "sunspots", ["csv", "xlsx"], {}, {"sunspots": "sunspots"} + )["SUNACTIVITY"], + "Sunspot", + "Sunactivity", + "nc", + "c", + ), + ], +) +def test_display_root(df, dataset_name, column_name, fuller_reg, kpss_reg): + econometrics_view.display_root( + df=df, + dataset_name=dataset_name, + column_name=column_name, + fuller_reg=fuller_reg, + kpss_reg=kpss_reg, + ) + + +@pytest.mark.vcr() +@pytest.mark.record_stdout +@pytest.mark.parametrize( + "time_series_y, time_series_x, lags, confidence_level", + [ + ( + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["realgdp"], + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["pop"], + 3, + 0.05, + ), + ( + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["realgovt"], + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["realinv"], + 2, + 0.10, + ), + ( + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["realdpi"], + econometrics_model.load( + "macrodata", ["csv", "xlsx"], {}, {"macrodata": "macrodata"} + )["cpi"], + 1, + 0.01, + ), + ], +) +def test_display_granger(time_series_y, time_series_x, lags, confidence_level): + econometrics_view.display_granger( + time_series_y=time_series_y, + time_series_x=time_series_x, + lags=lags, + confidence_level=confidence_level, + ) + + +@pytest.mark.vcr() +@pytest.mark.record_stdout +@pytest.mark.parametrize( + "datasets, significant, plot", + [ + ( + { + "y": econometrics_model.load( + "interest_inflation", + ["csv", "xlsx"], + {}, + {"interest_inflation": "interest_inflation"}, + )["Dp"], + "x": econometrics_model.load( + "interest_inflation", + ["csv", "xlsx"], + {}, + {"interest_inflation": "interest_inflation"}, + )["R"], + }, + True, + False, + ), + ( + { + "y": econometrics_model.load( + "interest_inflation", + ["csv", "xlsx"], + {}, + {"interest_inflation": "interest_inflation"}, + )["Dp"], + "x": econometrics_model.load( + "interest_inflation", + ["csv", "xlsx"], + {}, + {"interest_inflation": "interest_inflation"}, + )["R"], + }, + False, + False, + ), + ], +) +def test_get_engle_granger_two_step_cointegration_test(datasets, significant, plot): + econometrics_view.display_cointegration_test( + datasets=datasets, significant=significant, plot=plot + ) diff --git a/tests/gamestonk_terminal/econometrics/test_regression_model.py b/tests/gamestonk_terminal/econometrics/test_regression_model.py new file mode 100644 index 00000000000..9f1db8c8aaf --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/test_regression_model.py @@ -0,0 +1,477 @@ +# IMPORTATION STANDARD +import pandas as pd + +# IMPORTATION THIRDPARTY +import pytest + +# IMPORTATION INTERNAL +from gamestonk_terminal.econometrics import regression_model, econometrics_model + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "regression_variables, data, datasets", + [ + ( + ["TOTEMP-longley", "GNP-longley", "ARMED-longley", "POP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + ) + ], +) +def test_get_regression_data(recorder, regression_variables, data, datasets): + ( + regression_df, + dependent_variable, + independent_variables, + ) = regression_model.get_regression_data( + regression_variables=regression_variables, data=data, datasets=datasets + ) + + recorder.capture( + pd.DataFrame([regression_df, dependent_variable, independent_variables]) + ) + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "regression_variables, data, datasets, show_regression", + [ + ( + ["TOTEMP-longley", "GNP-longley", "ARMED-longley", "POP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + True, + ), + ( + ["TOTEMP-longley", "GNP-longley", "ARMED-longley", "POP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + False, + ), + ], +) +def test_get_ols(recorder, regression_variables, data, datasets, show_regression): + _, _, _, model = regression_model.get_ols( + regression_variables=regression_variables, + data=data, + datasets=datasets, + show_regression=show_regression, + ) + + result = pd.DataFrame([model.params]) + + recorder.capture(result, float_format="%.5f") + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "regression_variables, data, datasets", + [ + ( + [ + "educ-wage_panel", + "married-wage_panel", + "lwage-wage_panel", + "hisp-wage_panel", + "black-wage_panel", + ], + { + "wage_panel": econometrics_model.load( + "wage_panel", ["csv", "xlsx"], {}, {"wage_panel": "wage_panel"} + ).set_index(["nr", "year"]) + }, + { + "educ-wage_panel": {"educ": None, "wage_panel": None}, + "married-wage_panel": {"married": None, "wage_panel": None}, + "lwage-wage_panel": {"lwage": None, "wage_panel": None}, + "hisp-wage_panel": {"hisp": None, "wage_panel": None}, + "black-wage_panel": {"black": None, "wage_panel": None}, + }, + ) + ], +) +def test_get_pols(recorder, regression_variables, data, datasets): + _, _, _, model = regression_model.get_pols( + regression_variables=regression_variables, + data=data, + datasets=datasets, + ) + + result = pd.DataFrame([model.params]) + + recorder.capture(result, float_format="%.5f") + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "regression_variables, data, datasets", + [ + ( + [ + "married-wage_panel", + "lwage-wage_panel", + "hisp-wage_panel", + "black-wage_panel", + ], + { + "wage_panel": econometrics_model.load( + "wage_panel", ["csv", "xlsx"], {}, {"wage_panel": "wage_panel"} + ).set_index(["nr", "year"]) + }, + { + "educ-wage_panel": {"educ": None, "wage_panel": None}, + "married-wage_panel": {"married": None, "wage_panel": None}, + "lwage-wage_panel": {"lwage": None, "wage_panel": None}, + "hisp-wage_panel": {"hisp": None, "wage_panel": None}, + "black-wage_panel": {"black": None, "wage_panel": None}, + }, + ) + ], +) +def test_get_re(recorder, regression_variables, data, datasets): + _, _, _, model = regression_model.get_re( + regression_variables=regression_variables, + data=data, + datasets=datasets, + ) + + result = pd.DataFrame([model.params]) + + recorder.capture(result, float_format="%.5f") + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "regression_variables, data, datasets", + [ + ( + [ + "educ-wage_panel", + "married-wage_panel", + "lwage-wage_panel", + "hisp-wage_panel", + "black-wage_panel", + ], + { + "wage_panel": econometrics_model.load( + "wage_panel", ["csv", "xlsx"], {}, {"wage_panel": "wage_panel"} + ).set_index(["nr", "year"]) + }, + { + "educ-wage_panel": {"educ": None, "wage_panel": None}, + "married-wage_panel": {"married": None, "wage_panel": None}, + "lwage-wage_panel": {"lwage": None, "wage_panel": None}, + "hisp-wage_panel": {"hisp": None, "wage_panel": None}, + "black-wage_panel": {"black": None, "wage_panel": None}, + }, + ) + ], +) +def test_get_bols(recorder, regression_variables, data, datasets): + _, _, _, model = regression_model.get_bols( + regression_variables=regression_variables, + data=data, + datasets=datasets, + ) + + result = pd.DataFrame([model.params]) + + recorder.capture(result, float_format="%.5f") + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "regression_variables, data, datasets", + [ + ( + [ + "educ-wage_panel", + "married-wage_panel", + "lwage-wage_panel", + "hisp-wage_panel", + "black-wage_panel", + ], + { + "wage_panel": econometrics_model.load( + "wage_panel", ["csv", "xlsx"], {}, {"wage_panel": "wage_panel"} + ).set_index(["nr", "year"]) + }, + { + "educ-wage_panel": {"educ": None, "wage_panel": None}, + "married-wage_panel": {"married": None, "wage_panel": None}, + "lwage-wage_panel": {"lwage": None, "wage_panel": None}, + "hisp-wage_panel": {"hisp": None, "wage_panel": None}, + "black-wage_panel": {"black": None, "wage_panel": None}, + }, + ) + ], +) +def test_get_fe(recorder, regression_variables, data, datasets): + _, _, _, model = regression_model.get_fe( + regression_variables=regression_variables, + data=data, + datasets=datasets, + ) + + result = pd.DataFrame([model.params]) + + recorder.capture(result, float_format="%.5f") + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "regression_variables, data, datasets", + [ + ( + ["lwage-wage_panel", "married-wage_panel"], + { + "wage_panel": econometrics_model.load( + "wage_panel", ["csv", "xlsx"], {}, {"wage_panel": "wage_panel"} + ).set_index(["nr", "year"]) + }, + { + "married-wage_panel": {"married": None, "wage_panel": None}, + "lwage-wage_panel": {"lwage": None, "wage_panel": None}, + }, + ) + ], +) +def test_get_fdols(recorder, regression_variables, data, datasets): + _, _, _, model = regression_model.get_fdols( + regression_variables=regression_variables, + data=data, + datasets=datasets, + ) + + result = pd.DataFrame([model.params]) + + recorder.capture(result, float_format="%.5f") + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "regression_variables, data, datasets", + [ + ( + [ + "married-wage_panel", + "lwage-wage_panel", + "hisp-wage_panel", + "black-wage_panel", + ], + { + "wage_panel": econometrics_model.load( + "wage_panel", ["csv", "xlsx"], {}, {"wage_panel": "wage_panel"} + ).set_index(["nr", "year"]) + }, + { + "educ-wage_panel": {"educ": None, "wage_panel": None}, + "married-wage_panel": {"married": None, "wage_panel": None}, + "lwage-wage_panel": {"lwage": None, "wage_panel": None}, + "hisp-wage_panel": {"hisp": None, "wage_panel": None}, + "black-wage_panel": {"black": None, "wage_panel": None}, + }, + ) + ], +) +def test_get_comparison(recorder, regression_variables, data, datasets): + regressions = {"RE": {}, "FE": {}} + + _, _, _, regressions["RE"]["model"] = regression_model.get_re( + regression_variables=regression_variables, + data=data, + datasets=datasets, + ) + + _, _, _, regressions["FE"]["model"] = regression_model.get_fe( + regression_variables=regression_variables, + data=data, + datasets=datasets, + ) + + comparison_result = regression_model.get_comparison(regressions) + + recorder.capture(comparison_result.params, float_format="%.5f") + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "regression_variables, data, datasets, show_regression", + [ + ( + ["TOTEMP-longley", "GNP-longley", "ARMED-longley", "POP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + True, + ), + ( + ["GNP-longley", "ARMED-longley", "POP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + True, + ), + ], +) +def test_get_dwat(recorder, regression_variables, data, datasets, show_regression): + _, _, _, model = regression_model.get_ols( + regression_variables=regression_variables, + data=data, + datasets=datasets, + show_regression=show_regression, + ) + + result = regression_model.get_dwat(model.resid).round(5) + + recorder.capture(result) + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "regression_variables, data, datasets, show_regression, lags", + [ + ( + ["ARMED-longley", "GNP-longley", "TOTEMP-longley", "POP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + True, + 3, + ), + ( + ["GNP-longley", "POP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + True, + 1, + ), + ], +) +def test_get_bgod( + recorder, regression_variables, data, datasets, show_regression, lags +): + _, _, _, model = regression_model.get_ols( + regression_variables=regression_variables, + data=data, + datasets=datasets, + show_regression=show_regression, + ) + + lm_stat, p_value, f_stat, fp_value = regression_model.get_bgod(model, lags) + + result = pd.DataFrame([lm_stat, p_value, f_stat, fp_value]) + + recorder.capture(result, float_format="%.5f") + + +@pytest.mark.vcr() +@pytest.mark.parametrize( + "regression_variables, data, datasets, show_regression", + [ + ( + ["GNP-longley", "TOTEMP-longley", "POP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + True, + ), + ( + ["POP-longley", "GNP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + True, + ), + ], +) +def test_get_bpag(recorder, regression_variables, data, datasets, show_regression): + _, _, _, model = regression_model.get_ols( + regression_variables=regression_variables, + data=data, + datasets=datasets, + show_regression=show_regression, + ) + + lm_stat, p_value, f_stat, fp_value = regression_model.get_bpag(model) + + result = pd.DataFrame([lm_stat, p_value, f_stat, fp_value]) + + recorder.capture(result, float_format="%.5f") diff --git a/tests/gamestonk_terminal/econometrics/test_regression_view.py b/tests/gamestonk_terminal/econometrics/test_regression_view.py new file mode 100644 index 00000000000..7779f2117f1 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/test_regression_view.py @@ -0,0 +1,107 @@ +# IMPORTATION THIRDPARTY +import pytest + +# IMPORTATION INTERNAL +from gamestonk_terminal.econometrics import ( + regression_model, + econometrics_model, + regression_view, +) + + +@pytest.mark.vcr() +@pytest.mark.record_stdout +@pytest.mark.parametrize( + "regression_variables, data, datasets, show_regression, lags", + [ + ( + ["TOTEMP-longley", "GNP-longley", "ARMED-longley", "POP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + False, + 1, + ), + ( + ["TOTEMP-longley", "GNP-longley", "ARMED-longley", "POP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + False, + 2, + ), + ], +) +def test_display_bgod(regression_variables, data, datasets, show_regression, lags): + _, _, _, model = regression_model.get_ols( + regression_variables=regression_variables, + data=data, + datasets=datasets, + show_regression=show_regression, + ) + + regression_view.display_bgod(model=model, lags=lags) + + +@pytest.mark.vcr() +@pytest.mark.record_stdout +@pytest.mark.parametrize( + "regression_variables, data, datasets, show_regression", + [ + ( + ["TOTEMP-longley", "ARMED-longley", "POP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + False, + ), + ( + ["GNP-longley", "ARMED-longley", "POP-longley"], + { + "longley": econometrics_model.load( + "longley", ["csv", "xlsx"], {}, {"longley": "longley"} + ) + }, + { + "TOTEMP-longley": {"TOTEMP": None, "longley": None}, + "GNP-longley": {"GNP": None, "longley": None}, + "ARMED-longley": {"ARMED": None, "longley": None}, + "POP-longley": {"POP": None, "longley": None}, + }, + False, + ), + ], +) +def test_display_bpag(regression_variables, data, datasets, show_regression): + _, _, _, model = regression_model.get_ols( + regression_variables=regression_variables, + data=data, + datasets=datasets, + show_regression=show_regression, + ) + + regression_view.display_bpag(model=model) diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3].txt new file mode 100644 index 00000000000..92a60f60258 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3].txt @@ -0,0 +1 @@ +ssr_ftest \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3]_1.txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3]_1.txt new file mode 100644 index 00000000000..4ce4cfa3d2d --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3]_1.txt @@ -0,0 +1 @@ +ssr_chi2test \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3]_2.txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3]_2.txt new file mode 100644 index 00000000000..75b95fb8cc5 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3]_2.txt @@ -0,0 +1 @@ +lrtest \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3]_3.txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3]_3.txt new file mode 100644 index 00000000000..a25381f1281 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y0-time_series_x0-3]_3.txt @@ -0,0 +1 @@ +params_ftest \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2].txt new file mode 100644 index 00000000000..92a60f60258 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2].txt @@ -0,0 +1 @@ +ssr_ftest \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2]_1.txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2]_1.txt new file mode 100644 index 00000000000..4ce4cfa3d2d --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2]_1.txt @@ -0,0 +1 @@ +ssr_chi2test \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2]_2.txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2]_2.txt new file mode 100644 index 00000000000..75b95fb8cc5 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2]_2.txt @@ -0,0 +1 @@ +lrtest \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2]_3.txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2]_3.txt new file mode 100644 index 00000000000..a25381f1281 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y1-time_series_x1-2]_3.txt @@ -0,0 +1 @@ +params_ftest \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1].txt new file mode 100644 index 00000000000..92a60f60258 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1].txt @@ -0,0 +1 @@ +ssr_ftest \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1]_1.txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1]_1.txt new file mode 100644 index 00000000000..4ce4cfa3d2d --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1]_1.txt @@ -0,0 +1 @@ +ssr_chi2test \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1]_2.txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1]_2.txt new file mode 100644 index 00000000000..75b95fb8cc5 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1]_2.txt @@ -0,0 +1 @@ +lrtest \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1]_3.txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1]_3.txt new file mode 100644 index 00000000000..a25381f1281 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_model/test_get_granger_causality[time_series_y2-time_series_x2-1]_3.txt @@ -0,0 +1 @@ +params_ftest \ No newline at end of file diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_granger[time_series_y0-time_series_x0-3-0.05].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_granger[time_series_y0-time_series_x0-3-0.05].txt new file mode 100644 index 00000000000..737a86ae044 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_granger[time_series_y0-time_series_x0-3-0.05].txt @@ -0,0 +1,7 @@ + F-test P-value Count Lags +ssr_ftest 2.669911 0.048815 193.0 3.0 +ssr_chi2test 8.300242 0.040198 - 3 +lrtest 8.132629 0.043349 - 3 +params_ftest 2.669911 0.048815 193.0 3.0 +As the p-value of the F-test is 0.049, we can reject the null hypothesis at the 0.05 confidence level and find the Series 'pop' to Granger-cause the Series 'realgdp' + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_granger[time_series_y1-time_series_x1-2-0.1].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_granger[time_series_y1-time_series_x1-2-0.1].txt new file mode 100644 index 00000000000..7ee9701fe0c --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_granger[time_series_y1-time_series_x1-2-0.1].txt @@ -0,0 +1,7 @@ + F-test P-value Count Lags +ssr_ftest 3.265591 0.040261 196.0 2.0 +ssr_chi2test 6.697793 0.035123 - 2 +lrtest 6.588619 0.037094 - 2 +params_ftest 3.265591 0.040261 196.0 2.0 +As the p-value of the F-test is 0.04, we can reject the null hypothesis at the 0.1 confidence level and find the Series 'realinv' to Granger-cause the Series 'realgovt' + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_granger[time_series_y2-time_series_x2-1-0.01].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_granger[time_series_y2-time_series_x2-1-0.01].txt new file mode 100644 index 00000000000..d788af4c074 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_granger[time_series_y2-time_series_x2-1-0.01].txt @@ -0,0 +1,7 @@ + F-test P-value Count Lags +ssr_ftest 1.012638 0.315494 199.0 1.0 +ssr_chi2test 1.027904 0.310651 - 1 +lrtest 1.025298 0.311266 - 1 +params_ftest 1.012638 0.315494 199.0 1.0 +As the p-value of the F-test is 0.315, we can not reject the null hypothesis at the 0.01 confidence level. + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_norm[data0-Sunset-Sunactivity-False].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_norm[data0-Sunset-Sunactivity-False].txt new file mode 100644 index 00000000000..7ce0b44633b --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_norm[data0-Sunset-Sunactivity-False].txt @@ -0,0 +1,4 @@ + Kurtosis Skewness Jarque-Bera Shapiro-Wilk Kolmogorov-Smirnov +Statistic 1.479908 6.170200e+00 5.221623e+01 9.091216e-01 0.971137 +p-value 0.138898 6.820348e-10 4.585554e-12 1.052443e-12 0.000000 + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_norm[data1-Macrodata-Inflation-False].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_norm[data1-Macrodata-Inflation-False].txt new file mode 100644 index 00000000000..c88147f3565 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_norm[data1-Macrodata-Inflation-False].txt @@ -0,0 +1,4 @@ + Kurtosis Skewness Jarque-Bera Shapiro-Wilk Kolmogorov-Smirnov +Statistic 3.801112 4.037817 6.066372e+01 9.108574e-01 7.882806e-01 +p-value 0.000144 0.000054 6.716849e-14 1.060935e-09 6.730586e-135 + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_norm[data2-El Nino-January-False].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_norm[data2-El Nino-January-False].txt new file mode 100644 index 00000000000..5b4ab56c662 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_norm[data2-El Nino-January-False].txt @@ -0,0 +1,4 @@ + Kurtosis Skewness Jarque-Bera Shapiro-Wilk Kolmogorov-Smirnov +Statistic 3.556139 4.171875 6.887032e+01 0.887108 1.0 +p-value 0.000376 0.000030 1.110223e-15 0.000040 0.0 + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df0-Sunspot-Sunactivity-c-c].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df0-Sunspot-Sunactivity-c-c].txt new file mode 100644 index 00000000000..e46584dc3c6 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df0-Sunspot-Sunactivity-c-c].txt @@ -0,0 +1,7 @@ + ADF KPSS +Test Statistic -2.837781 0.669866 +P-Value 0.053076 0.016285 +NLags 8.000000 7.000000 +Nobs 300.000000 0.000000 +ICBest 2430.500342 0.000000 + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df1-Sunspot-Sunactivity-c-ct].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df1-Sunspot-Sunactivity-c-ct].txt new file mode 100644 index 00000000000..11fbcbff4c9 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df1-Sunspot-Sunactivity-c-ct].txt @@ -0,0 +1,7 @@ + ADF KPSS +Test Statistic -2.837781 0.115831 +P-Value 0.053076 0.100000 +NLags 8.000000 7.000000 +Nobs 300.000000 0.000000 +ICBest 2430.500342 0.000000 + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df2-Sunspot-Sunactivity-ct-c].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df2-Sunspot-Sunactivity-ct-c].txt new file mode 100644 index 00000000000..333330c0ac1 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df2-Sunspot-Sunactivity-ct-c].txt @@ -0,0 +1,7 @@ + ADF KPSS +Test Statistic -2.924375 0.669866 +P-Value 0.154465 0.016285 +NLags 8.000000 7.000000 +Nobs 300.000000 0.000000 +ICBest 2431.976734 0.000000 + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df3-Sunspot-Sunactivity-ctt-c].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df3-Sunspot-Sunactivity-ctt-c].txt new file mode 100644 index 00000000000..cbb29882b6b --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df3-Sunspot-Sunactivity-ctt-c].txt @@ -0,0 +1,7 @@ + ADF KPSS +Test Statistic -3.004904 0.669866 +P-Value 0.292850 0.016285 +NLags 8.000000 7.000000 +Nobs 300.000000 0.000000 +ICBest 2432.538460 0.000000 + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df4-Sunspot-Sunactivity-nc-c].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df4-Sunspot-Sunactivity-nc-c].txt new file mode 100644 index 00000000000..77321512abc --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_display_root[df4-Sunspot-Sunactivity-nc-c].txt @@ -0,0 +1,7 @@ + ADF KPSS +Test Statistic -0.752220 0.669866 +P-Value 0.390609 0.016285 +NLags 8.000000 7.000000 +Nobs 300.000000 0.000000 +ICBest 2436.914059 0.000000 + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_get_engle_granger_two_step_cointegration_test[datasets0-True-False].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_get_engle_granger_two_step_cointegration_test[datasets0-True-False].txt new file mode 100644 index 00000000000..3411c6f08ad --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_get_engle_granger_two_step_cointegration_test[datasets0-True-False].txt @@ -0,0 +1,5 @@ +Only showing pairs that are statistically significant (True > p-value). + + Constant Gamma Alpha Dickey-Fuller P Value +y/x -0.003126 0.154512 -1.2884 -13.123662 1.544757e-24 + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_get_engle_granger_two_step_cointegration_test[datasets1-False-False].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_get_engle_granger_two_step_cointegration_test[datasets1-False-False].txt new file mode 100644 index 00000000000..ff618e4e434 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_get_engle_granger_two_step_cointegration_test[datasets1-False-False].txt @@ -0,0 +1,3 @@ + Constant Gamma Alpha Dickey-Fuller P Value +y/x -0.003126 0.154512 -1.2884 -13.123662 1.544757e-24 + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_show_options[datasets0-None].txt b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_show_options[datasets0-None].txt new file mode 100644 index 00000000000..6d3c57d4265 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_econometrics_view/test_show_options[datasets0-None].txt @@ -0,0 +1,19 @@ + dataset column option +0 heart survival survival-heart +1 heart censors censors-heart +2 heart age age-heart + dataset column option +0 macrodata year year-macrodata +1 macrodata quarter quarter-macrodata +2 macrodata realgdp realgdp-macrodata +3 macrodata realcons realcons-macrodata +4 macrodata realinv realinv-macrodata +5 macrodata realgovt realgovt-macrodata +6 macrodata realdpi realdpi-macrodata +7 macrodata cpi cpi-macrodata +8 macrodata m1 m1-macrodata +9 macrodata tbilrate tbilrate-macrodata +10 macrodata unemp unemp-macrodata +11 macrodata pop pop-macrodata +12 macrodata infl infl-macrodata +13 macrodata realint realint-macrodata diff --git a/tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bgod[regression_variables0-data0-datasets0-False-1].txt b/tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bgod[regression_variables0-data0-datasets0-False-1].txt new file mode 100644 index 00000000000..7107853b6b4 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bgod[regression_variables0-data0-datasets0-False-1].txt @@ -0,0 +1,8 @@ + + 0 +LM-stat 12.591323 +p-value 0.000388 +f-stat 0.688985 +fp-value 0.424158 +The result 0.0 indicates no existence of autocorrelation. + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bgod[regression_variables1-data1-datasets1-False-2].txt b/tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bgod[regression_variables1-data1-datasets1-False-2].txt new file mode 100644 index 00000000000..091ceacba53 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bgod[regression_variables1-data1-datasets1-False-2].txt @@ -0,0 +1,8 @@ + + 0 +LM-stat 13.283202 +p-value 0.001305 +f-stat 1.666265 +fp-value 0.237376 +The result 0.0 indicates no existence of autocorrelation. + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bpag[regression_variables0-data0-datasets0-False].txt b/tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bpag[regression_variables0-data0-datasets0-False].txt new file mode 100644 index 00000000000..a9322798963 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bpag[regression_variables0-data0-datasets0-False].txt @@ -0,0 +1,8 @@ + + 0 +lm-stat 8.266655 +p-value 0.004038 +f-stat 7.482736 +fp-value 0.006162 +The result 0.0 indicates no existence of heteroscedasticity. + diff --git a/tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bpag[regression_variables1-data1-datasets1-False].txt b/tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bpag[regression_variables1-data1-datasets1-False].txt new file mode 100644 index 00000000000..616851fb921 --- /dev/null +++ b/tests/gamestonk_terminal/econometrics/txt/test_regression_view/test_display_bpag[regression_variables1-data1-datasets1-False].txt @@ -0,0 +1,8 @@ + + 0 +lm-stat 11.318704 +p-value 0.000767 +f-stat 16.924998 +fp-value 0.000184 +The result 0.0 indicates no existence of heteroscedasticity. + diff --git a/website/content/custom/_index.md b/website/content/custom/_index.md deleted file mode 100644 index 5dfff15f172..00000000000 --- a/website/content/custom/_index.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -geekdocCollapseSection: true ---- - -{{< toc-tree >}} - -# Loading in custom data - -There is a directory in root, labeled `custom_imports`. Here there is a sample -csv file titled `test.csv` that is __randomly__ generated data for visualization purposes. - -When loading in the data, we recommend working with time series. The prediction techniques menu -will plot against time data, so not using that may result in undesired outputs. - -## How to load in a time variable - -Note in the sample csv, the first row has the following form `Date,ColNorm,Col2,ColNorm3,ColB`. -The process for loading data into Gamestonk Terminal is that the code loops through all input columns and looks through -for one column that is either `Date`,`Time` or `Timestamp` (not case-sensitive). -If one of these are found, then the dataframe sets this column to be the index. - -If onc of these columns are not found, then the index will just be integers from 0 to the length of your data. - -Once again: __the prediction menu is designed for data with a datetime index__. \ No newline at end of file diff --git a/website/content/custom/info/_index.md b/website/content/custom/info/_index.md deleted file mode 100644 index b06a1e083b7..00000000000 --- a/website/content/custom/info/_index.md +++ /dev/null @@ -1,28 +0,0 @@ -``` -usage: info [-h] -``` -Show information of custom data. - -``` -optional arguments: - -h, --help show this help message (default: False) -``` - -Sample Output: -```python - -DatetimeIndex: 732 entries, 2020-01-01 to 2022-01-01 -Data columns (total 4 columns): - # Column Non-Null Count Dtype ---- ------ -------------- ----- - 0 colnorm 732 non-null float64 - 1 col2 732 non-null float64 - 2 colnorm3 732 non-null float64 - 3 colb 732 non-null float64 -dtypes: float64(4) -memory usage: 28.6 KB -None -``` - -This tells us the loaded dataframe, (which there is one saved as a default template as test.csv) -has 4 columns that are all floats (numeric). The index is a date time range from the start of 2020 to the start of 2022. diff --git a/website/content/custom/load/_index.md b/website/content/custom/load/_index.md deleted file mode 100644 index 181240c05b3..00000000000 --- a/website/content/custom/load/_index.md +++ /dev/null @@ -1,11 +0,0 @@ -``` -usage: load [-f {test.csv}] [-h] -``` -Load custom data set into a dataframe - -``` -optional arguments: - -f {test.csv}, --file {test.csv} - File to load in. (default: test.csv) - -h, --help show this help message (default: False) -``` \ No newline at end of file diff --git a/website/content/custom/plot/_index.md b/website/content/custom/plot/_index.md deleted file mode 100644 index 7f52cc3e1e5..00000000000 --- a/website/content/custom/plot/_index.md +++ /dev/null @@ -1,23 +0,0 @@ -``` -usage: plot [-y {colnorm,col2,colnorm3,colb}] [-x {colnorm,col2,colnorm3,colb}] [-k {line,scatter,bar,barh,hist,box,kde,area,pie,hexbin}] [-h] [--export {png,jpg,pdf,svg}] -``` -Plot 2 columns of loaded data. - -``` -optional arguments: - -y {colnorm,col2,colnorm3,colb} - Variable to plot along y (default: None) - -x {colnorm,col2,colnorm3,colb}, --vs {colnorm,col2,colnorm3,colb} - Variable along x axis (default: ) - -k {line,scatter,bar,barh,hist,box,kde,area,pie,hexbin}, --kind {line,scatter,bar,barh,hist,box,kde,area,pie,hexbin} - Type of plot for data (default: scatter) - -h, --help show this help message (default: False) - --export {png,jpg,pdf,svg} - Export figure into png, jpg, pdf, svg (default: ) -``` - -Note that when no "-x/--vs" is supplied, the x axis will be the dataframe index. The -x and -y defaults will be the -columns present in your data. In this scenario, the columns loaded are `colnorm,col2,colnorm3,colb` . - -The different kinds of plots can be seen in the `kind` kwarg of the -[pandas plot function](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.html) \ No newline at end of file diff --git a/website/content/custom/show/_index.md b/website/content/custom/show/_index.md deleted file mode 100644 index 43abd92bf83..00000000000 --- a/website/content/custom/show/_index.md +++ /dev/null @@ -1,24 +0,0 @@ -``` -usage: show [-s SORTCOL [SORTCOL ...]] [-a] [-h] [-l LIMIT] -``` -Show loaded dataframe -``` -optional arguments: - -s SORTCOL [SORTCOL ...], --sortcol SORTCOL [SORTCOL ...] - -a, --ascend - -h, --help show this help message (default: False) - -l LIMIT, --limit LIMIT - Number of entries to show in data. (default: 5) -``` - -Sample Output: -``` -2022 Jan 18, 17:53 (✨) /custom/ $ show -l 3 - colnorm col2 colnorm3 colb -date -2020-01-01 0.999953 1.012313 1.008667 0.001203 -2020-01-02 0.983850 1.023421 1.004225 0.004517 -2020-01-03 1.002692 1.019749 1.006244 0.007035 -``` - -This shows the top 3 rows of my custom dataframe. This should primarily be used as a method of debugging that the load worked. \ No newline at end of file diff --git a/website/content/econometrics/_index.md b/website/content/econometrics/_index.md new file mode 100644 index 00000000000..7607de3f17c --- /dev/null +++ b/website/content/econometrics/_index.md @@ -0,0 +1,11 @@ +--- +geekdocCollapseSection: true +--- + +The Econometrics menu's purpose is to provide the user the ability to perform statistical research on custom datasets. +The menu allows the user to load in his/her own dataset(s), modify the data by (for example) adding columns or setting +indices, apply statistical tests (e.g. Breusch-Godfrey autocorrelation tests) as well as OLS regressions and Panel +regressions (e.g. Random Effects and Fixed Effects) + +{{< toc-tree >}} + diff --git a/website/content/econometrics/bgod/_index.md b/website/content/econometrics/bgod/_index.md new file mode 100644 index 00000000000..fcbbcb90e51 --- /dev/null +++ b/website/content/econometrics/bgod/_index.md @@ -0,0 +1,63 @@ +``` +usage: bgod [-l LAGS] [-h] [--export {csv,json,xlsx}] +``` + +Show Breusch-Pagan heteroscedasticity test results. + +In statistics, heteroskedasticity (or heteroscedasticity) happens when the standard deviations of a predicted variable, monitored over different values of an independent variable or as related to prior time periods, are non-constant. With heteroskedasticity, the tell-tale sign upon visual inspection of the residual errors is that they will tend to fan out over time. [Source: Investopedia] +``` +optional arguments: + -l LAGS, --lags LAGS The lags for the Breusch-Godfrey test (default: 3) + -h, --help show this help message (default: False) + --export {csv,json,xlsx} + Export raw data into csv, json, xlsx (default: ) +``` + +Example: +``` +2022 Feb 24, 06:00 (✨) /econometrics/ $ ols adj_close-msft adj_close-aapl adj_close-googl adj_close-tsla + OLS Regression Results +============================================================================== +Dep. Variable: adj_close_msft R-squared: 0.977 +Model: OLS Adj. R-squared: 0.977 +Method: Least Squares F-statistic: 1.068e+04 +Date: Thu, 24 Feb 2022 Prob (F-statistic): 0.00 +Time: 12:01:09 Log-Likelihood: -2830.6 +No. Observations: 759 AIC: 5669. +Df Residuals: 755 BIC: 5688. +Df Model: 3 +Covariance Type: nonrobust +=================================================================================== + coef std err t P>|t| [0.025 0.975] +----------------------------------------------------------------------------------- +Intercept 27.7984 2.166 12.832 0.000 23.546 32.051 +adj_close_aapl 0.8662 0.034 25.503 0.000 0.800 0.933 +adj_close_googl 0.0508 0.002 30.374 0.000 0.048 0.054 +adj_close_tsla -0.0007 0.004 -0.181 0.856 -0.009 0.007 +============================================================================== +Omnibus: 41.445 Durbin-Watson: 0.044 +Prob(Omnibus): 0.000 Jarque-Bera (JB): 47.398 +Skew: 0.612 Prob(JB): 5.10e-11 +Kurtosis: 2.995 Cond. No. 1.16e+04 +============================================================================== + +Notes: +[1] Standard Errors assume that the covariance matrix of the errors is correctly specified. +[2] The condition number is large, 1.16e+04. This might indicate that there are +strong multicollinearity or other numerical problems. + +2022 Feb 24, 06:01 (✨) /econometrics/ $ bgod +Breusch-Godfrey autocorrelation test [Lags: 3] +┏━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓ +┃ ┃ Breusch-Godfrey ┃ +┡━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩ +│ LM-stat │ 723.75 │ +├──────────┼─────────────────┤ +│ p-value │ 0.00 │ +├──────────┼─────────────────┤ +│ f-stat │ 5147.20 │ +├──────────┼─────────────────┤ +│ fp-value │ 0.00 │ +└──────────┴─────────────────┘ +The result 0.0 indicates no existence of autocorrelation. +``` diff --git a/website/content/econometrics/bpag/_index.md b/website/content/econometrics/bpag/_index.md new file mode 100644 index 00000000000..9a3290d5dad --- /dev/null +++ b/website/content/econometrics/bpag/_index.md @@ -0,0 +1,49 @@ +``` +usage: dwat [-h] [--export {csv,json,xlsx}] +``` + +Show autocorrelation tests from Durbin-Watson + +The Durbin Watson (DW) statistic is a test for autocorrelation in the residuals from a statistical model or regression analysis. The Durbin-Watson statistic will always have a value ranging between 0 and 4. A value of 2.0 indicates there is no autocorrelation detected in the sample. Values from 0 to less than 2 point to positive autocorrelation and values from 2 to 4 means negative autocorrelation. [Source: Investopedia] + +``` +optional arguments: + -h, --help show this help message (default: False) + --export {csv,json,xlsx} + Export raw data into csv, json, xlsx (default: ) + +``` + +Example: +``` +2022 Feb 24, 05:44 (✨) /econometrics/ $ ols return-msft adj_close-aapl + OLS Regression Results +============================================================================== +Dep. Variable: return_msft R-squared: 0.000 +Model: OLS Adj. R-squared: -0.001 +Method: Least Squares F-statistic: 0.3005 +Date: Thu, 24 Feb 2022 Prob (F-statistic): 0.584 +Time: 11:45:00 Log-Likelihood: 2010.0 +No. Observations: 759 AIC: -4016. +Df Residuals: 757 BIC: -4007. +Df Model: 1 +Covariance Type: nonrobust +================================================================================== + coef std err t P>|t| [0.025 0.975] +---------------------------------------------------------------------------------- +Intercept 0.0023 0.002 1.392 0.164 -0.001 0.006 +adj_close_aapl -8.34e-06 1.52e-05 -0.548 0.584 -3.82e-05 2.15e-05 +============================================================================== +Omnibus: 75.797 Durbin-Watson: 2.141 +Prob(Omnibus): 0.000 Jarque-Bera (JB): 339.963 +Skew: -0.329 Prob(JB): 1.51e-74 +Kurtosis: 6.212 Cond. No. 290. +============================================================================== + +Notes: +[1] Standard Errors assume that the covariance matrix of the errors is correctly specified. + +2022 Feb 24, 05:45 (✨) /econometrics/ $ dwat +The result 2.14 is within the range 1.5 and 2.5 which therefore indicates autocorrelation not to be problematic. + +``` diff --git a/website/content/econometrics/clean/_index.md b/website/content/econometrics/clean/_index.md new file mode 100644 index 00000000000..de855d4493a --- /dev/null +++ b/website/content/econometrics/clean/_index.md @@ -0,0 +1,105 @@ +``` +usage: clean [-n NAME] [-f {rfill,cfill,rbfill,cbfill,rffill,bffill}] [-d {rdrop,cdrop}] [-l LIMIT] [-h] +``` + +Clean a dataset by filling and/or dropping NaN values. + +``` +optional arguments: + -n NAME, --name NAME The name of the dataset you want to clean up (default: None) + -f {rfill,cfill,rbfill,cbfill,rffill,bffill}, --fill {rfill,cfill,rbfill,cbfill,rffill,bffill} + The method of filling NaNs. This has options to fill rows (rfill, rbfill, rffill) or fill columns (cfill, cbfill, cffill). Furthermore, it has the option to forward fill and backward fill (up to --limit) which + refer to how many rows/columns can be set equal to the last non-NaN value (default: ) + -d {rdrop,cdrop}, --drop {rdrop,cdrop} + The method of dropping NaNs. This either has the option rdrop (drop rows that contain NaNs) or cdrop (drop columns that contain NaNs) (default: ) + -l LIMIT, --limit LIMIT + The max amount of columns/rows backward filled or forward filled that have NaNs or the max amount of columns/rows that have NaNs before being dropped. (default: 5) + -h, --help show this help message (default: False) +``` + +Example: +``` +2022 Feb 24, 04:58 (✨) /econometrics/ $ show thesis + thesis +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ +┃ ┃ current_assets ┃ assets ┃ debt ┃ depr_amor ┃ income ┃ current_liabilities ┃ revenue ┃ equity ┃ interest_expense ┃ +┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ +│ ('AAR Corp', Timestamp('2016-01-01 00:00:00')) │ 970.70 │ 1522.00 │ 160.00 │ 18.50 │ 9.90 │ 359.70 │ 412.10 │ 858.30 │ 1.70 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2016-04-01 00:00:00')) │ 873.10 │ 1442.10 │ 136.10 │ 17.80 │ 11.80 │ 329.00 │ 468.60 │ 865.80 │ 1.20 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2016-07-01 00:00:00')) │ 849.40 │ 1427.00 │ 142.80 │ nan │ 9.90 │ 314.40 │ 404.80 │ 858.50 │ 1.30 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2016-10-01 00:00:00')) │ 901.80 │ 1486.60 │ 154.10 │ nan │ 11.40 │ 350.90 │ 328.30 │ 872.40 │ 1.10 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2017-01-01 00:00:00')) │ 893.10 │ 1502.10 │ 168.70 │ nan │ 14.40 │ 342.80 │ 407.20 │ 885.70 │ 1.40 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2017-04-01 00:00:00')) │ 888.50 │ 1504.10 │ 155.30 │ nan │ 16.30 │ 335.10 │ 450.50 │ 914.20 │ 1.50 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2017-07-01 00:00:00')) │ 904.70 │ 1531.70 │ 189.00 │ 10.20 │ 11.00 │ 312.10 │ 397.90 │ 924.70 │ 1.70 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2017-10-01 00:00:00')) │ 892.20 │ 1544.30 │ 215.80 │ 10.60 │ 13.30 │ 336.50 │ 420.60 │ 906.50 │ 1.90 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2018-01-01 00:00:00')) │ 933.60 │ 1512.20 │ 194.30 │ 10.60 │ 31.30 │ 326.60 │ 456.30 │ 915.20 │ 2.20 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2018-04-01 00:00:00')) │ 942.70 │ 1524.70 │ 177.20 │ 9.10 │ 18.10 │ 333.30 │ 473.50 │ 936.30 │ 2.20 │ +└────────────────────────────────────────────────┴────────────────┴─────────┴────────┴───────────┴────────┴─────────────────────┴─────────┴────────┴──────────────────┘ +``` +``` +2022 Feb 24, 04:58 (✨) /econometrics/ $ clean thesis -f rfill + +2022 Feb 24, 04:59 (✨) /econometrics/ $ show thesis + thesis +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ +┃ ┃ current_assets ┃ assets ┃ debt ┃ depr_amor ┃ income ┃ current_liabilities ┃ revenue ┃ equity ┃ interest_expense ┃ +┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ +│ ('AAR Corp', Timestamp('2016-01-01 00:00:00')) │ 970.70 │ 1522.00 │ 160.00 │ 18.50 │ 9.90 │ 359.70 │ 412.10 │ 858.30 │ 1.70 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2016-04-01 00:00:00')) │ 873.10 │ 1442.10 │ 136.10 │ 17.80 │ 11.80 │ 329.00 │ 468.60 │ 865.80 │ 1.20 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2016-07-01 00:00:00')) │ 849.40 │ 1427.00 │ 142.80 │ 0.00 │ 9.90 │ 314.40 │ 404.80 │ 858.50 │ 1.30 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2016-10-01 00:00:00')) │ 901.80 │ 1486.60 │ 154.10 │ 0.00 │ 11.40 │ 350.90 │ 328.30 │ 872.40 │ 1.10 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2017-01-01 00:00:00')) │ 893.10 │ 1502.10 │ 168.70 │ 0.00 │ 14.40 │ 342.80 │ 407.20 │ 885.70 │ 1.40 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2017-04-01 00:00:00')) │ 888.50 │ 1504.10 │ 155.30 │ 0.00 │ 16.30 │ 335.10 │ 450.50 │ 914.20 │ 1.50 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2017-07-01 00:00:00')) │ 904.70 │ 1531.70 │ 189.00 │ 10.20 │ 11.00 │ 312.10 │ 397.90 │ 924.70 │ 1.70 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2017-10-01 00:00:00')) │ 892.20 │ 1544.30 │ 215.80 │ 10.60 │ 13.30 │ 336.50 │ 420.60 │ 906.50 │ 1.90 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2018-01-01 00:00:00')) │ 933.60 │ 1512.20 │ 194.30 │ 10.60 │ 31.30 │ 326.60 │ 456.30 │ 915.20 │ 2.20 │ +├────────────────────────────────────────────────┼────────────────┼─────────┼────────┼───────────┼────────┼─────────────────────┼─────────┼────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2018-04-01 00:00:00')) │ 942.70 │ 1524.70 │ 177.20 │ 9.10 │ 18.10 │ 333.30 │ 473.50 │ 936.30 │ 2.20 │ +└────────────────────────────────────────────────┴────────────────┴─────────┴────────┴───────────┴────────┴─────────────────────┴─────────┴────────┴──────────────────┘ +``` +``` +2022 Feb 24, 04:59 (✨) /econometrics/ $ clean thesis -d rdrop + +2022 Feb 24, 05:00 (✨) /econometrics/ $ show thesis + thesis +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ +┃ ┃ current_assets ┃ assets ┃ debt ┃ depr_amor ┃ income ┃ current_liabilities ┃ revenue ┃ equity ┃ interest_expense ┃ +┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ +│ ('AAR Corp', Timestamp('2016-01-01 00:00:00')) │ 970.70 │ 1522.00 │ 160.00 │ 18.50 │ 9.90 │ 359.70 │ 412.10 │ 858.30 │ 1.70 │ +├───────────────────────────────────────────────────────────────────┼────────────────┼──────────┼──────────┼───────────┼────────┼─────────────────────┼─────────┼─────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2016-04-01 00:00:00')) │ 873.10 │ 1442.10 │ 136.10 │ 17.80 │ 11.80 │ 329.00 │ 468.60 │ 865.80 │ 1.20 │ +├───────────────────────────────────────────────────────────────────┼────────────────┼──────────┼──────────┼───────────┼────────┼─────────────────────┼─────────┼─────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2017-07-01 00:00:00')) │ 904.70 │ 1531.70 │ 189.00 │ 10.20 │ 11.00 │ 312.10 │ 397.90 │ 924.70 │ 1.70 │ +├───────────────────────────────────────────────────────────────────┼────────────────┼──────────┼──────────┼───────────┼────────┼─────────────────────┼─────────┼─────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2017-10-01 00:00:00')) │ 892.20 │ 1544.30 │ 215.80 │ 10.60 │ 13.30 │ 336.50 │ 420.60 │ 906.50 │ 1.90 │ +├───────────────────────────────────────────────────────────────────┼────────────────┼──────────┼──────────┼───────────┼────────┼─────────────────────┼─────────┼─────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2018-01-01 00:00:00')) │ 933.60 │ 1512.20 │ 194.30 │ 10.60 │ 31.30 │ 326.60 │ 456.30 │ 915.20 │ 2.20 │ +├───────────────────────────────────────────────────────────────────┼────────────────┼──────────┼──────────┼───────────┼────────┼─────────────────────┼─────────┼─────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2018-04-01 00:00:00')) │ 942.70 │ 1524.70 │ 177.20 │ 9.10 │ 18.10 │ 333.30 │ 473.50 │ 936.30 │ 2.20 │ +├───────────────────────────────────────────────────────────────────┼────────────────┼──────────┼──────────┼───────────┼────────┼─────────────────────┼─────────┼─────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2018-07-01 00:00:00')) │ 982.40 │ 1537.80 │ 209.10 │ 10.10 │ 18.90 │ 315.10 │ 466.30 │ 929.10 │ 2.10 │ +├───────────────────────────────────────────────────────────────────┼────────────────┼──────────┼──────────┼───────────┼────────┼─────────────────────┼─────────┼─────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2018-10-01 00:00:00')) │ 1040.70 │ 1604.20 │ 218.90 │ 10.40 │ 11.20 │ 344.20 │ 493.30 │ 935.60 │ 2.50 │ +├───────────────────────────────────────────────────────────────────┼────────────────┼──────────┼──────────┼───────────┼────────┼─────────────────────┼─────────┼─────────┼──────────────────┤ +│ ('AAR Corp', Timestamp('2019-01-01 00:00:00')) │ 993.40 │ 1546.50 │ 177.20 │ 10.80 │ 27.40 │ 359.60 │ 529.50 │ 899.40 │ 2.60 │ +├───────────────────────────────────────────────────────────────────┼────────────────┼──────────┼──────────┼───────────┼────────┼─────────────────────┼─────────┼─────────┼──────────────────┤ +│ ('American Airlines Group Inc', Timestamp('2016-01-01 00:00:00')) │ 10802.00 │ 49909.00 │ 19134.00 │ 423.00 │ 700.00 │ 15277.00 │ 9435.00 │ 4710.00 │ 250.00 │ +└───────────────────────────────────────────────────────────────────┴────────────────┴──────────┴──────────┴───────────┴────────┴─────────────────────┴─────────┴─────────┴──────────────────┘ +``` diff --git a/website/content/econometrics/coint/_index.md b/website/content/econometrics/coint/_index.md new file mode 100644 index 00000000000..762481572a5 --- /dev/null +++ b/website/content/econometrics/coint/_index.md @@ -0,0 +1,44 @@ +``` +usage: coint [-ts {OPTIONS}] [-p] [-s SIGNIFICANT] [-h] [--export {csv,json,xlsx,png,jpg,pdf,svg}] + +``` + +Show co-integration between timeseries + +Cointegration is a statistical property of a collection (X1, X2, ..., Xk) of time series variables. First, all of the series must be integrated of order d (see Order of integration). Next, if a linear combination of this collection is integrated of order less than d, then the collection is said to be co-integrated. Formally, if (X,Y,Z) are each integrated of order d, and there exist coefficients a,b,c such that aX + bY + cZ is integrated of order less than d, then X, Y, and Z are cointegrated. Cointegration has become an important property in contemporary time series analysis. Time series often have trends—either deterministic or stochastic. In an influential paper, Charles Nelson and Charles Plosser (1982) provided statistical evidence that many US macroeconomic time series (like GNP, wages, employment, etc.) have stochastic trends. [Source: Wikipedia] + +``` +optional arguments: + -ts {OPTIONS}, --timeseries {OPTIONS} + The time series you wish to test co-integration on. Can hold multiple timeseries. (default: None) + -p, --plot Plot Z-Values (default: False) + -s SIGNIFICANT, --significant SIGNIFICANT + Show only companies that have p-values lower than this percentage (default: 0) + -h, --help show this help message (default: False) + --export {csv,json,xlsx,png,jpg,pdf,svg} + Export raw data into csv, json, xlsx and figure into png, jpg, pdf, svg (default: ) +``` + +Example: +``` +2022 Feb 24, 06:03 (✨) /econometrics/ $ coint adj_close-msft adj_close-aapl adj_close-tsla adj_close-googl -p + Cointegration Tests +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━┓ +┃ Pairs ┃ Constant ┃ Gamma ┃ Alpha ┃ Dickey-Fuller ┃ P Value ┃ +┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━┩ +│ adj_close-msft/adj_close-aapl │ 46.62 │ 1.58 │ 0.00 │ -1.86 │ 0.35 │ +├────────────────────────────────┼──────────┼───────┼───────┼───────────────┼─────────┤ +│ adj_close-msft/adj_close-tsla │ 130.28 │ 0.18 │ -0.01 │ -2.82 │ 0.06 │ +├────────────────────────────────┼──────────┼───────┼───────┼───────────────┼─────────┤ +│ adj_close-msft/adj_close-googl │ 21.38 │ 0.10 │ -0.01 │ -2.51 │ 0.11 │ +├────────────────────────────────┼──────────┼───────┼───────┼───────────────┼─────────┤ +│ adj_close-aapl/adj_close-tsla │ 53.92 │ 0.11 │ -0.01 │ -2.94 │ 0.04 │ +├────────────────────────────────┼──────────┼───────┼───────┼───────────────┼─────────┤ +│ adj_close-aapl/adj_close-googl │ -7.83 │ 0.06 │ -0.00 │ -1.62 │ 0.47 │ +├────────────────────────────────┼──────────┼───────┼───────┼───────────────┼─────────┤ +│ adj_close-tsla/adj_close-googl │ -505.14 │ 0.51 │ -0.01 │ -2.28 │ 0.18 │ +└────────────────────────────────┴──────────┴───────┴───────┴───────────────┴─────────┘ +``` +![error_terms_cointegrations](https://user-images.githubusercontent.com/46355364/155514964-dd75cf17-91ae-4326-96e8-45d9a2c7b24a.png) + + diff --git a/website/content/econometrics/compare/_index.md b/website/content/econometrics/compare/_index.md new file mode 100644 index 00000000000..b74f7a32fb8 --- /dev/null +++ b/website/content/econometrics/compare/_index.md @@ -0,0 +1,70 @@ +``` +usage: compare [-h] [--export {csv,json,xlsx}] + +``` + +Compare results between all activated regression models via `panel` command. + +``` +optional arguments: + -h, --help show this help message (default: False) + --export {csv,json,xlsx} + Export raw data into csv, json, xlsx (default: ) +``` + +Below you can find a comparison of the regression estimates based on the dataset from Vella and M. Verbeek (1998), “Whose Wages Do Unions Raise? A Dynamic Model of Unionism and Wage Rate Determination for Young Men,” Journal of Applied Econometrics 13, 163-183. This is a well-known dataset also used within Chapter 14 of Introduction to Econometrics by Jeffrey Wooldridge. + +``` +2022 Feb 25, 08:56 (✨) /econometrics/ $ compare + Model Comparison +========================================================================================================================================================== + POLS BOLS RE FE FE_EE FE_IE FE_EE_IE FDOLS +---------------------------------------------------------------------------------------------------------------------------------------------------------- +Dep. Variable lwage_wp lwage_wp lwage_wp lwage_wp lwage_wp lwage_wp lwage_wp lwage_wp +Estimator PooledOLS BetweenOLS RandomEffects PanelOLS PanelOLS PanelOLS PanelOLS FirstDifferenceOLS +No. Observations 4360 545 4360 4360 4360 4360 4360 3815 +Cov. Est. Unadjusted Unadjusted Unadjusted Unadjusted Unadjusted Unadjusted Unadjusted Unadjusted +R-squared 0.1893 0.2155 0.1806 0.1246 0.1806 0.0535 0.0216 0.0268 +R-Squared (Within) 0.1692 0.1141 0.1799 0.1646 0.1806 -0.1037 -0.4809 0.1763 +R-Squared (Between) 0.2066 0.2155 0.1853 0.0902 -0.0052 0.0902 -0.0052 0.5491 +R-Squared (Overall) 0.1893 0.1686 0.1828 0.1246 0.0807 0.0005 -0.2253 0.5328 +F-statistic 72.459 24.633 68.409 61.920 83.851 81.891 27.959 26.208 +P-value (F-stat) 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +===================== ============ ============ =============== ============ ============ ============ ============ ==================== +const 0.0921 0.2836 0.0234 1.3454 1.4260 1.6440 1.8706 + (1.1761) (1.5897) (0.1546) (60.606) (77.748) (94.902) (49.430) +black_wp -0.1392 -0.1414 -0.1394 + (-5.9049) (-2.8915) (-2.9054) +hisp_wp 0.0160 0.0100 0.0217 + (0.7703) (0.2355) (0.5078) +exper_wp 0.0672 0.0278 0.1058 0.1158 + (4.9095) (2.4538) (6.8706) (5.9096) +expersq_wp -0.0024 -0.0047 -0.0021 -0.0052 -0.0021 -0.0052 -0.0039 + (-2.9413) (-6.8623) (-7.5081) (-7.3612) (-7.5081) (-7.3612) (-2.8005) +married_wp 0.1083 0.1416 0.0638 0.1521 0.0467 0.1521 0.0467 0.0381 + (6.8997) (3.4346) (3.8035) (9.5417) (2.5494) (9.5417) (2.5494) (1.6633) +educ_wp 0.0913 0.0913 0.0919 + (17.442) (8.5159) (8.5744) +union_wp 0.1825 0.2587 0.1059 0.1768 0.0800 0.1768 0.0800 0.0428 + (10.635) (5.6214) (5.9289) (10.032) (4.1430) (10.032) (4.1430) (2.1767) +year_wp.1981 0.0583 0.0404 0.1187 0.1512 + (1.9214) (1.6362) (3.9144) (6.8883) +year_wp.1982 0.0628 0.0309 0.1843 0.2530 + (1.8900) (0.9519) (6.0168) (10.360) +year_wp.1983 0.0620 0.0202 0.2431 0.3544 + (1.6915) (0.4840) (7.7581) (12.121) +year_wp.1984 0.0905 0.0430 0.3322 0.4901 + (2.2566) (0.8350) (10.236) (13.529) +year_wp.1985 0.1092 0.0577 0.4112 0.6175 + (2.5200) (0.9383) (12.048) (13.648) +year_wp.1986 0.1420 0.0918 0.5039 0.7655 + (3.0580) (1.2834) (13.806) (13.638) +year_wp.1987 0.1738 0.1348 0.5952 0.9250 + (3.5165) (1.6504) (15.026) (13.450) +======================= ============== ============== ================= ============== ============== ============== ============== ====================== +Effects Entity Time Entity + Time +---------------------------------------------------------------------------------------------------------------------------------------------------------- + +T-stats reported in parentheses +``` diff --git a/website/content/econometrics/desc/_index.md b/website/content/econometrics/desc/_index.md new file mode 100644 index 00000000000..04ee8a14f2a --- /dev/null +++ b/website/content/econometrics/desc/_index.md @@ -0,0 +1,61 @@ +``` +usage: desc [-n {OPTIONS}] [-h] [--export {csv,json,xlsx}] +``` + +Show the descriptive statistics of a dataset, specified by `--name`. + +``` +optional arguments: + -n {OPTIONS}, --name {OPTIONS} + The name of the database you want to show the descriptive statistics for (default: None) + -h, --help show this help message (default: False) + --export {csv,json,xlsx} + Export raw data into csv, json, xlsx (default: ) +``` + +Example: +``` +2022 Feb 28, 04:12 (✨) /econometrics/ $ desc aapl + aapl +┏━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━┓ +┃ ┃ open ┃ high ┃ low ┃ close ┃ adj_close ┃ volume ┃ +┡━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━┩ +│ count │ 759.00 │ 759.00 │ 759.00 │ 759.00 │ 759.00 │ 759.00 │ +├───────┼────────┼────────┼────────┼────────┼───────────┼──────────────┤ +│ mean │ 101.76 │ 102.95 │ 100.63 │ 101.84 │ 100.99 │ 118128287.62 │ +├───────┼────────┼────────┼────────┼────────┼───────────┼──────────────┤ +│ std │ 40.70 │ 41.13 │ 40.21 │ 40.67 │ 40.94 │ 56579126.66 │ +├───────┼────────┼────────┼────────┼────────┼───────────┼──────────────┤ +│ min │ 42.43 │ 42.86 │ 42.37 │ 42.73 │ 41.61 │ 41000000.00 │ +├───────┼────────┼────────┼────────┼────────┼───────────┼──────────────┤ +│ 25% │ 62.31 │ 64.18 │ 61.64 │ 62.23 │ 61.16 │ 81086650.00 │ +├───────┼────────┼────────┼────────┼────────┼───────────┼──────────────┤ +│ 50% │ 111.06 │ 112.48 │ 109.11 │ 111.11 │ 110.10 │ 104174400.00 │ +├───────┼────────┼────────┼────────┼────────┼───────────┼──────────────┤ +│ 75% │ 134.31 │ 135.32 │ 133.00 │ 134.06 │ 133.14 │ 137744400.00 │ +├───────┼────────┼────────┼────────┼────────┼───────────┼──────────────┤ +│ max │ 182.63 │ 182.94 │ 179.12 │ 182.01 │ 181.78 │ 426510000.00 │ +└───────┴────────┴────────┴────────┴────────┴───────────┴──────────────┘ + +2022 Feb 28, 04:12 (✨) /econometrics/ $ desc thesis + thesis +┏━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ +┃ ┃ current_assets ┃ assets ┃ debt ┃ depr_amor ┃ income ┃ current_liabilities ┃ revenue ┃ equity ┃ interest_expense ┃ +┡━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ +│ count │ 78146.00 │ 95648.00 │ 94484.00 │ 88228.00 │ 97737.00 │ 78232.00 │ 89898.00 │ 95524.00 │ 80955.00 │ +├───────┼────────────────┼────────────┼────────────┼───────────┼───────────┼─────────────────────┼───────────┼───────────┼──────────────────┤ +│ mean │ 1552.18 │ 14681.37 │ 3018.15 │ 61.61 │ 68.14 │ 1218.23 │ 959.41 │ 2611.89 │ 32.26 │ +├───────┼────────────────┼────────────┼────────────┼───────────┼───────────┼─────────────────────┼───────────┼───────────┼──────────────────┤ +│ std │ 7270.81 │ 112579.71 │ 46117.13 │ 323.99 │ 516.80 │ 6104.23 │ 4384.80 │ 12412.20 │ 355.50 │ +├───────┼────────────────┼────────────┼────────────┼───────────┼───────────┼─────────────────────┼───────────┼───────────┼──────────────────┤ +│ min │ -9.06 │ 0.00 │ 0.00 │ -581.00 │ -25392.00 │ -118.00 │ -3935.00 │ -66338.00 │ -1255.55 │ +├───────┼────────────────┼────────────┼────────────┼───────────┼───────────┼─────────────────────┼───────────┼───────────┼──────────────────┤ +│ 25% │ 9.88 │ 45.07 │ 0.00 │ 0.08 │ -2.10 │ 4.90 │ 1.30 │ 15.12 │ 0.02 │ +├───────┼────────────────┼────────────┼────────────┼───────────┼───────────┼─────────────────────┼───────────┼───────────┼──────────────────┤ +│ 50% │ 106.58 │ 512.08 │ 36.14 │ 1.89 │ 0.51 │ 48.58 │ 50.51 │ 164.04 │ 1.26 │ +├───────┼────────────────┼────────────┼────────────┼───────────┼───────────┼─────────────────────┼───────────┼───────────┼──────────────────┤ +│ 75% │ 602.70 │ 3147.53 │ 779.93 │ 20.70 │ 20.90 │ 372.79 │ 375.10 │ 1011.39 │ 13.69 │ +├───────┼────────────────┼────────────┼────────────┼───────────┼───────────┼─────────────────────┼───────────┼───────────┼──────────────────┤ +│ max │ 207497.14 │ 3421034.00 │ 3371939.00 │ 12313.76 │ 47840.23 │ 210664.61 │ 138793.00 │ 379419.00 │ 25810.00 │ +└───────┴────────────────┴────────────┴────────────┴───────────┴───────────┴─────────────────────┴───────────┴───────────┴──────────────────┘ +``` diff --git a/website/content/econometrics/dwat/_index.md b/website/content/econometrics/dwat/_index.md new file mode 100644 index 00000000000..8f6bc1f475f --- /dev/null +++ b/website/content/econometrics/dwat/_index.md @@ -0,0 +1,56 @@ +``` +usage: dwat [-p] [-h] [--export {csv,json,xlsx}] +``` + +Show autocorrelation tests from Durbin-Watson + +The Durbin Watson (DW) statistic is a test for autocorrelation in the residuals from a statistical model or regression analysis. The Durbin-Watson statistic will always have a value ranging between 0 and 4. A value of 2.0 indicates there is no autocorrelation detected in the sample. Values from 0 to less than 2 point to positive autocorrelation and values from 2 to 4 means negative autocorrelation. [Source: Investopedia] + +``` +optional arguments: + -p, --plot Plot the residuals (default: False) + -h, --help show this help message (default: False) + --export {csv,json,xlsx} + Export raw data into csv, json, xlsx (default: ) +``` + +Example: +``` +2022 Feb 24, 05:59 (✨) /econometrics/ $ ols adj_close-msft adj_close-aapl adj_close-googl adj_close-tsla + OLS Regression Results +============================================================================== +Dep. Variable: adj_close_msft R-squared: 0.977 +Model: OLS Adj. R-squared: 0.977 +Method: Least Squares F-statistic: 1.068e+04 +Date: Thu, 24 Feb 2022 Prob (F-statistic): 0.00 +Time: 12:00:01 Log-Likelihood: -2830.6 +No. Observations: 759 AIC: 5669. +Df Residuals: 755 BIC: 5688. +Df Model: 3 +Covariance Type: nonrobust +=================================================================================== + coef std err t P>|t| [0.025 0.975] +----------------------------------------------------------------------------------- +Intercept 27.7984 2.166 12.832 0.000 23.546 32.051 +adj_close_aapl 0.8662 0.034 25.503 0.000 0.800 0.933 +adj_close_googl 0.0508 0.002 30.374 0.000 0.048 0.054 +adj_close_tsla -0.0007 0.004 -0.181 0.856 -0.009 0.007 +============================================================================== +Omnibus: 41.445 Durbin-Watson: 0.044 +Prob(Omnibus): 0.000 Jarque-Bera (JB): 47.398 +Skew: 0.612 Prob(JB): 5.10e-11 +Kurtosis: 2.995 Cond. No. 1.16e+04 +============================================================================== + +Notes: +[1] Standard Errors assume that the covariance matrix of the errors is correctly specified. +[2] The condition number is large, 1.16e+04. This might indicate that there are +strong multicollinearity or other numerical problems. + +2022 Feb 24, 06:00 (✨) /statistics/ $ dwat -p +The result 0.04 is outside the range 1.5 and 2.5 and therefore autocorrelation can be problematic. +Please consider lags of the dependent or independent variable. +``` + +![durbin_watson example](https://user-images.githubusercontent.com/46355364/155514788-caaa65a2-1f5f-41d0-8db2-06e682d5a53e.png) + diff --git a/website/content/econometrics/export/_index.md b/website/content/econometrics/export/_index.md new file mode 100644 index 00000000000..49f45e6f29e --- /dev/null +++ b/website/content/econometrics/export/_index.md @@ -0,0 +1,21 @@ +``` +usage: export [-n NAME] [-t {csv,xlsx}] [-h] +``` + +Export dataset to Excel. It properly recognizes changes made with the `index`, `clean` and `modify` commands. + +``` +optional arguments: + -n NAME, --name NAME The name of the dataset you wish to export (default: None) + -t {csv,xlsx}, --type {csv,xlsx} + The file type you wish to export to (default: xlsx) + -h, --help show this help message (default: False) +``` + +Example: +``` +2022 Feb 24, 04:35 (✨) /econometrics/ $ load ThesisData.xlsx thesis + +2022 Feb 24, 04:36 (✨) /econometrics/ $ export thesis -t csv +Saved file: /Users/jeroenbouma/My Drive/Programming/Python/GamestonkTerminal/exports/statistics/thesis_20220224_103614.csv +``` diff --git a/website/content/econometrics/granger/_index.md b/website/content/econometrics/granger/_index.md new file mode 100644 index 00000000000..64229d4d736 --- /dev/null +++ b/website/content/econometrics/granger/_index.md @@ -0,0 +1,37 @@ +``` +usage: granger [ts {OPTIONS}] [-l LAGS] [-cl CONFIDENCE] [-h] [--export {csv,json,xlsx,png,jpg,pdf,svg}] +``` + +Show Granger causality between two timeseries + +The Granger causality test is a statistical hypothesis test for determining whether one time series is useful in forecasting another, first proposed in 1969. Ordinarily, regressions reflect "mere" correlations, but Clive Granger argued that causality in economics could be tested for by measuring the ability to predict the future values of a time series using prior values of another time series. Since the question of "true causality" is deeply philosophical, and because of the post hoc ergo propter hoc fallacy of assuming that one thing preceding another can be used as a proof of causation, econometricians assert that the Granger test finds only "predictive causality". Using the term "causality" alone is a misnomer, as Granger-causality is better described as "precedence", or, as Granger himself later claimed in 1977, "temporally related". Rather than testing whether X causes Y, the Granger causality tests whether X forecasts Y. [Source: Wikipedia] + +``` +optional arguments:ols + -ts {OPTIONS}, --timeseries {OPTIONS} + Requires two time series, the first time series is assumed to be Granger-caused by the second time series. (default: None) + -l LAGS, --lags LAGS How many lags should be included (default: 3) + -cl CONFIDENCE, --confidence CONFIDENCE + Set the confidence level (default: 0.05) + -h, --help show this help message (default: False) + --export {csv,json,xlsx,png,jpg,pdf,svg} + Export raw data into csv, json, xlsx and figure into png, jpg, pdf, svg (default: ) +``` + +Example: +``` +2022 Feb 24, 05:54 (✨) /econometrics/ $ granger adj_close-msft adj_close-aapl +Granger Causality Test [Y: adj_close | X: adj_close | Lags: 3] +┏━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━┓ +┃ ┃ F-test ┃ P-value ┃ Count ┃ Lags ┃ +┡━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━┩ +│ ssr_ftest │ 2.13 │ 0.09 │ 749.00 │ 3.00 │ +├──────────────┼────────┼─────────┼────────┼──────┤ +│ ssr_chi2test │ 6.46 │ 0.09 │ - │ 3 │ +├──────────────┼────────┼─────────┼────────┼──────┤ +│ lrtest │ 6.43 │ 0.09 │ - │ 3 │ +├──────────────┼────────┼─────────┼────────┼──────┤ +│ params_ftest │ 2.13 │ 0.09 │ 749.00 │ 3.00 │ +└──────────────┴────────┴─────────┴────────┴──────┘ +As the p-value of the F-test is 0.095, we can not reject the null hypothesis at the 0.05 confidence level. +``` diff --git a/website/content/econometrics/index/_index.md b/website/content/econometrics/index/_index.md new file mode 100644 index 00000000000..104c039062b --- /dev/null +++ b/website/content/econometrics/index/_index.md @@ -0,0 +1,102 @@ +``` +usage: index [-n NAME [NAME ...]] [-i] [-h] +``` + +Set a (multi) index for a dataset, specified by `--name`. When setting two indices, it is assumed it follows the +structure