New Highs - New Lows
Calculate the New Highs - New Lows for a given price series.
New Highs - New Lows measures the number of tickers reaching a new high over the specified window minus the number of tickers reaching a new low over the same window. It is a market-wide breadth reading computed across all tickers in the Toolkit instance (excluding the synthetic “Portfolio” and “Benchmark” columns), and the resulting single reading is broadcast to every ticker column so it lines up with the other breadth indicators.
The formula is as follows:
\[\text{New Highs} - \text{New Lows} = (\text{Number of tickers at} a \text{window-period high}) - (\text{Number of tickers at} a \text{window-period low})\]Also known as: new highs minus new lows, record high percent.
No programming experience? With the Finance Toolkit MCP server, AI assistants such as Claude and ChatGPT can calculate the New Highs - New Lows for you. Just ask in plain English.
Calculate the New Highs - New Lows in Python
The New Highs - New Lows is available in the Technicals module of the open-source Finance Toolkit. Install it with:
pip install financetoolkit -U
Then call get_new_highs_new_lows as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(tickers=["AAPL", "MSFT"])
toolkit.technicals.get_new_highs_new_lows()
Which returns:
| Date | AAPL | MSFT | Benchmark |
|---|---|---|---|
| 2026-06-18 | 0 | 0 | 0 |
| 2026-06-22 | 0 | 0 | 0 |
| 2026-06-23 | -1 | -1 | -1 |
| 2026-06-24 | 0 | 0 | 0 |
| 2026-06-25 | -1 | -1 | -1 |
| 2026-06-26 | 0 | 0 | 0 |
| 2026-06-29 | 0 | 0 | 0 |
| 2026-06-30 | 1 | 1 | 1 |
| 2026-07-01 | 1 | 1 | 1 |
| 2026-07-02 | 1 | 1 | 1 |
Parameters
get_new_highs_new_lows accepts the following parameters:
- period (str, optional): The time period to consider for historical data. Can be “daily”, “weekly”, “quarterly”, or “yearly”. Defaults to “daily”.
- close_column (str, optional): The name of the column containing the close prices. Defaults to “Adj Close”.
- window (int, optional): Number of periods for the new high / new low lookback. Defaults to 252.
- rounding (int | None, optional): The number of decimals to round the results to. Defaults to 4.
- growth (bool, optional): Whether to calculate the growth of the indicator values. Defaults to False.
- lag (int | list[int], optional): The lag to use for the growth calculation.
- standardize (bool, optional): Whether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False. Defaults to 1.
Related Breadth Indicators
The Technicals module page introduces the module, and the sidebar lists all of its functions.