mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-11-02 23:41:27 +00:00
* quick econ fix * black * keys and feature flags * terminal name 👀 * some more replacements * some more replacements * edit pyproject * gst -> openbb * add example portfolios back to git * Update api from gst * sorry. skipping some tests * another round of names * another round of test edits * Missed some .gst refs and update timezone * water mark stuff * Fixing Names in terminal.spec and name of GTFF_DEFAULTS to OBBFF_DEFAULTS * fix more GST to OpenBB Terminal * Logging : merge conflicts with main * Revert wrong files Co-authored-by: Andrew <andrew.kenreich@gmail.com> Co-authored-by: DidierRLopes <dro.lopes@campus.fct.unl.pt> Co-authored-by: Chavithra PARANA <chavithra@gmail.com>
478 lines
15 KiB
Python
478 lines
15 KiB
Python
# IMPORTATION STANDARD
|
|
import pandas as pd
|
|
|
|
# IMPORTATION THIRDPARTY
|
|
import pytest
|
|
|
|
# IMPORTATION INTERNAL
|
|
from openbb_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")
|