Fit an Ordinary Least Squares (OLS) regression of dependent_ticker on independent_tickers.

Also known as: linear regression, least squares regression.

For more information about the method, see regression_model.get_ols.

No programming experience? With the Finance Toolkit MCP server, AI assistants such as Claude and ChatGPT can calculate the Ordinary Least Squares (OLS) for you. Just ask in plain English.

Calculate the Ordinary Least Squares (OLS) in Python

The Ordinary Least Squares (OLS) is available in the Econometrics module of the open-source Finance Toolkit. Install it with:

pip install financetoolkit -U

Then call get_ols as shown below.

from financetoolkit import Toolkit

toolkit = Toolkit(["AMZN", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

# AMZN (the first ticker) is dependent; TSLA is independent
toolkit.econometrics.get_ols(period="quarterly")

# Or, override which ticker is dependent/independent, and pull in Benchmark too
toolkit.econometrics.get_ols(
    dependent_ticker="AMZN",
    independent_tickers=["TSLA", "Benchmark"],
    period="quarterly",
    cov_type="HC1",
)
# Or, simply opt every default independent ticker (here, just TSLA) into
# including Benchmark too:
toolkit.econometrics.get_ols(period="quarterly", include_benchmark=True)

# Or, use Newey-West (HAC) standard errors for time-series regressions
# where errors may be both heteroskedastic and autocorrelated:
toolkit.econometrics.get_ols(period="quarterly", cov_type="HAC", maxlags=4)

Which returns:

(for the first call, AMZN regressed on TSLA)

  Coefficient Std. Error t-Statistic P-Value
Intercept 0.0134 0.026 0.5143 0.6119
TSLA 0.2479 0.0817 3.0331 0.0059

Parameters

get_ols accepts the following parameters:

  • dependent_ticker (str | None, optional): The dependent (predicted) asset. Defaults to None, meaning the Toolkit instance’s first ticker.
  • independent_tickers (str | list[str] | None, optional): The independent (predictor) asset(s). Defaults to None, meaning every other ticker in the Toolkit instance besides dependent_ticker.
  • include_benchmark (bool, optional): Whether to include “Benchmark” in the default independent ticker(s) (has no effect when independent_tickers is given explicitly). Defaults to False.
  • period (str, optional): The data frequency (daily, weekly, monthly, quarterly, or yearly). Defaults to “daily”.
  • column (str, optional): The historical data column to regress on. Defaults to “Return”.
  • add_constant (bool, optional): Whether to include an intercept. Defaults to True.
  • cov_type (str, optional): Which covariance estimator to use for the standard errors – one of “nonrobust” (classical, assumes homoskedastic errors), “HC0”/”HC1”/”HC2”/”HC3” (heteroskedasticity-robust), “cluster” (cluster-robust, requires clusters) or “HAC” (Newey-West, heteroskedasticity-and-autocorrelation-consistent, requires maxlags). Use get_breusch_pagan_test/get_white_test to check for heteroskedasticity and get_ljung_box_test to check for autocorrelation first. Defaults to “nonrobust”.
  • clusters (pd.Series | None, optional): The cluster label for each observation (e.g. a coarser time bucket derived from the return index, to correct for within-period correlation), required when cov_type="cluster". Aligned to the regression’s own index before use, so it may be indexed by the full period index even though the regression drops periods with missing data. Defaults to None.
  • maxlags (int | None, optional): The maximum lag to include when estimating the HAC (Newey-West) covariance matrix, required when cov_type="HAC". A common rule of thumb is floor(4 * (n / 100)^(2/9)) (Newey & West, 1994). Defaults to None.
  • rounding (int | None, optional): The number of decimals to round the results to. Defaults to None.

The Econometrics module page introduces the module, and the sidebar lists all of its functions.

Share