Calculate the returns-based style analysis (Sharpe, 1992) of every ticker: the mix of style indices, such as growth and value, large and small caps or bonds, whose returns track the ticker’s returns most closely. The weights are found by minimizing the variance of the difference between the ticker’s return and the weighted style returns, with every weight between 0 and 1 and the weights adding up to 1, so they read as the effective asset mix of a fund without knowing its holdings.

The R Squared is the share of the ticker’s variance the styles explain; what they do not explain is the Selection Return (the return of the manager’s own choices, annualized) with its volatility, the Tracking Error. These three are in-sample: they are measured over the same returns the weights are fitted to, which flatters the fit, as the weights are chosen to explain exactly those returns.

A window estimates the weights over a rolling number of periods instead, which shows how a fund’s style drifts over time, and adds Sharpe’s out-of-sample measure of selection: the Out-of-Sample Selection Return of a date is the ticker’s return of that period minus the return of that period of the style mix estimated over the window that ends one period earlier (Sharpe uses the previous 60 months). It is a return per period, not annualized, and NaN for the first window, which has no earlier estimate. Its average shows whether the manager added value beyond a passive mix of the styles the fund was known to follow.

The style indices are tickers of the Toolkit as well (an ETF per style works well, for example IWF, IWD, IWO and IWN for US large and small cap growth and value and AGG for bonds), and every other ticker is analyzed against them. “Benchmark” can be one of them.

For more information, see the following paper:

  • Sharpe, W.F. (1992). “Asset Allocation: Management Style and Performance Measurement.” The Journal of Portfolio Management, 18(2), 7-19.

Also known as: returns-based style analysis, RBSA, style regression, effective asset mix, selection return.

Style Analysis in Python or via the MCP

Install the Finance Toolkit with:

pip install financetoolkit -U

Then call get_style_analysis as shown below.

from financetoolkit import Toolkit

toolkit = Toolkit(
    ["ARKK", "IWF", "IWD", "IWO", "IWN", "AGG"],
    api_key="FINANCIAL_MODELING_PREP_KEY",
    start_date="2019-01-01",
    end_date="2025-12-31",
)

toolkit.performance.get_style_analysis(["IWF", "IWD", "IWO", "IWN", "AGG"])

Or, after setting up the Finance Toolkit MCP, ask:

Which mix of large-cap growth (IWF), large-cap value (IWD), small-cap growth (IWO), small-cap value (IWN) and bonds (AGG) best explains the returns of ARKK from 2019 to 2025, and what selection return and tracking error remain?

Which returns:

  IWF IWD IWO IWN AGG R Squared Selection Return Tracking Error
ARKK 0.0091 0 0.9909 0 0 0.6123 0.0638 0.2632

Parameters

get_style_analysis accepts the following parameters.

ParameterTypeDescriptionExample
style_tickersstr | list[str]The tickers of the style indices, as a list or a comma-separated string.
periodstrThe return frequency (daily, weekly, monthly, quarterly or yearly). Defaults to “monthly”."weekly"
windowint | NoneThe number of periods to estimate the weights over on a rolling basis, which adds the Out-of-Sample Selection Return. Defaults to None, which uses every period.20
roundingint | NoneThe number of decimals to round the results to. Defaults to None, which uses the rounding of the Toolkit.2
Share