Tracking
Measure how closely every fund tracks the Benchmark of the Toolkit, which for an index fund should be the index it follows (set benchmark_ticker to a total return index or to another fund of the same index). Per fund:
-
Tracking Difference: the annualized return of the fund minus that of the Benchmark over the period, as issuers report it. An index fund trails its index by roughly its expense ratio; less points to securities lending income, more to a costly or loose replication.
-
Tracking Error: the annualized volatility of the per-period return difference, how far the fund strays from the index from period to period.
-
Correlation, Beta and R Squared of the fund’s returns with the Benchmark’s.
With yearly=True the tracking difference is given per calendar year instead, the return of the fund minus that of the Benchmark. The daily closes of two funds can differ by the timing of their last trade, which adds noise to a daily tracking error; fund reports usually measure it from monthly returns.
Also known as: tracking difference, tracking error, index tracking.
Tracking in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_tracking as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(
["VOO", "IVV", "SPLG"],
api_key="FINANCIAL_MODELING_PREP_KEY",
benchmark_ticker="SPY",
start_date="2021-01-01",
end_date="2025-12-31",
)
toolkit.etf.get_tracking(period="monthly")
Or, after setting up the Finance Toolkit MCP, ask:
How closely did VOO, IVV and SPLG track SPY from 2021 to 2025, measured on monthly returns?
Which returns:
| VOO | IVV | SPLG | |
|---|---|---|---|
| Tracking Difference | 0.0008 | 0.0007 | -0 |
| Tracking Error | 0.0011 | 0.0018 | 0.0021 |
| Correlation | 1 | 0.9999 | 0.9999 |
| Beta | 0.9994 | 1.0014 | 0.9986 |
| R Squared | 0.9999 | 0.9999 | 0.9998 |
Parameters
get_tracking accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
period | str | The return frequency (daily, weekly, monthly, quarterly or yearly). Defaults to “daily”. | "weekly" |
yearly | bool | Whether to return the tracking difference per year. Defaults to False. | False |
rounding | int | None | The number of decimals to round the results to. Defaults to None, which uses the rounding of the Toolkit. | 2 |