Downside Capture Ratio
Calculate the Downside Capture Ratio of an investment portfolio or asset’s returns.
The Downside Capture Ratio measures how well an investment portfolio or asset performs relative to a benchmark during periods in which the benchmark’s return is negative. A ratio below 1 (or 100%) indicates the asset lost less than the benchmark during those periods.
The formula is as follows:
\[\text{Downside Capture Ratio} = \text{Geometric Average Return in Down Periods} / \text{Geometric Average Benchmark Return in Down Periods}\] \[\text{Geometric Average Return} = (\operatorname{PRODUCT}(1 + \text{Return})) ^{1 / n} - 1\]Where the down periods are the observations (days within each period) with a negative benchmark return and n is their number, following Morningstar’s definition. As with the Upside Capture Ratio, both ratios are computed from the daily returns within each period, while fund factsheets usually use monthly returns over three to five years.
Downside Capture Ratio in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_downside_capture_ratio as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(
["XLU", "SPLV", "ARKK"],
api_key="FINANCIAL_MODELING_PREP_KEY",
start_date="2021-01-01",
end_date="2025-12-31",
)
toolkit.performance.get_downside_capture_ratio()
Or, after setting up the Finance Toolkit MCP, ask:
How much of the S&P 500's losses on its down days did XLU, SPLV and ARKK capture in each year from 2021 to 2025?
Which returns:
| Date | XLU | SPLV | ARKK |
|---|---|---|---|
| 2021 | 0.3911 | 0.5358 | 2.0537 |
| 2022 | 0.4698 | 0.4991 | 2.5005 |
| 2023 | 0.7024 | 0.6177 | 2.3265 |
| 2024 | 0.2051 | 0.3127 | 2.5483 |
| 2025 | 0.3459 | 0.3223 | 2.0919 |
Parameters
get_downside_capture_ratio accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
period | str | The period to use for the calculation. Defaults to “quarterly” if the Toolkit is initialised with quarterly=True, otherwise “yearly”. | "quarterly" |
rounding | int | None | The number of decimals to round the results to. Defaults to None, which uses the rounding of the Toolkit (4 unless set otherwise). | 2 |
growth | bool | Whether to calculate the growth of the ratios. Defaults to False. | True |
lag | int | list[int] | The lag to use for the growth calculation. Defaults to 1. | 4 |
standardize | bool | Whether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False. | True |