← All posts

Which Retailers Have Positive Operating Leverage? Margin Screening in Python

Compare revenue growth, operating margin change, and free-cash-flow margin across large retailers.

What's the question?

Operating leverage is the tendency for profits to grow faster than revenue when fixed costs are spread over a larger sales base. Positive operating leverage is valuable because each additional dollar of revenue creates more operating income. Negative operating leverage is a warning because revenue growth fails to translate into margin expansion. A decade-long regression estimate of the same quantity, across large non-financial companies, comes from an operating leverage regression.

The question is which large retailers are currently showing positive operating leverage. This matters because retail revenue growth can be misleading. A retailer can grow sales while discounting, absorbing wage pressure, or carrying higher supply-chain costs.

The approach

The universe is WMT, COST, TGT, HD, LOW, LULU, ROST, BJ, DLTR, DG, and KR. Built from SEC EDGAR public filings and market data, the analysis compares the latest annual observation with the prior annual observation.

  1. Pull revenue, operating income, gross profit, and free cash flow
  2. Calculate revenue growth and operating income growth
  3. Calculate the change in operating margin
  4. Calculate free-cash-flow margin as a quality check
  5. Rank companies using revenue growth, operating margin change, and free-cash-flow margin

The operating margin change is the central variable. It shows whether revenue growth is translating into better operating economics.

Code

import xfinlink as xfl
import pandas as pd

xfl.set_api_key("YOUR_API_KEY")  # free at https://xfinlink.com/signup

tickers = ["WMT", "COST", "TGT", "HD", "LOW", "LULU", "ROST", "BJ", "DLTR", "DG", "KR"]
fields = ["revenue", "operating_income", "gross_profit", "free_cash_flow"]

df = xfl.fundamentals(tickers, period_type="annual", period="6y", fields=fields)
recent = df.sort_values(["ticker", "period_end"]).groupby("ticker").tail(2)
latest = recent.groupby("ticker").tail(1).set_index("ticker")
prior = recent.groupby("ticker").head(1).set_index("ticker")

screen = pd.DataFrame(index=latest.index)
screen["revenue_growth"] = latest["revenue"] / prior["revenue"] - 1
screen["operating_margin_change"] = (
    latest["operating_income"] / latest["revenue"]
    - prior["operating_income"] / prior["revenue"]
)

print(screen.sort_values("operating_margin_change", ascending=False))

Full script with formatting and visualisation: retail-operating-leverage-python.py

Output

Retail revenue growth versus operating margin change
=== Retail Operating Leverage Screen ===
Latest annual periods: 2025-08-31 to 2026-02-01
Complete-data universe: 11 retailers
Best operating margin expansion: LULU (   1.5%)
Worst operating margin change: DG (  -2.1%)
Median revenue growth:    7.5%
Median operating margin change:   -0.4%

Retail operating leverage ranking:
LULU  score=  5.00  revenue_growth=  10.1%  op_income_growth=  17.5%  op_margin_change=   1.5%  FCF_margin=  15.0%
ROST  score=  3.13  revenue_growth=  11.6%  op_income_growth=  17.3%  op_margin_change=   0.6%  FCF_margin=   9.7%
DLTR  score=  0.39  revenue_growth=  15.7%  op_income_growth=  -6.8%  op_margin_change=  -2.1%  FCF_margin=   5.4%
COST  score=  0.36  revenue_growth=   8.2%  op_income_growth=  11.8%  op_margin_change=   0.1%  FCF_margin=   2.8%
HD    score= -0.00  revenue_growth=   7.9%  op_income_growth=  -3.7%  op_margin_change=  -1.5%  FCF_margin=   7.7%
BJ    score= -0.40  revenue_growth=   7.5%  op_income_growth=   2.0%  op_margin_change=  -0.2%  FCF_margin=   1.5%
WMT   score= -0.69  revenue_growth=   4.7%  op_income_growth=   1.6%  op_margin_change=  -0.1%  FCF_margin=   2.1%
LOW   score= -1.27  revenue_growth=  -0.1%  op_income_growth= -12.1%  op_margin_change=  -1.6%  FCF_margin=   8.9%
DG    score= -1.95  revenue_growth=   5.0%  op_income_growth= -29.9%  op_margin_change=  -2.1%  FCF_margin=   4.2%
TGT   score= -2.15  revenue_growth=  -2.5%  op_income_growth= -10.3%  op_margin_change=  -0.4%  FCF_margin=   2.7%
KR    score= -2.41  revenue_growth=  -1.6%  op_income_growth= -39.0%  op_margin_change=  -0.8%  FCF_margin=   2.3%

What this tells us

Only a few retailers show positive operating leverage. LULU is the clear leader: revenue grew 10.1%, operating income grew 17.5%, and operating margin expanded by 1.5 percentage points. ROST also shows a healthy pattern, with 11.6% revenue growth and a 0.6 percentage-point operating margin expansion.

The median retailer in the sample grew revenue by 7.5%, but operating margin still fell by 0.4 percentage points. That is the main result. Retail sales growth is not automatically profitable growth. DLTR is the clearest example: revenue grew 15.7%, but operating income fell 6.8% and operating margin contracted by 2.1 percentage points.

So what?

For retail analysis, revenue growth should be treated as the first test, not the conclusion. The stronger signal is revenue growth with expanding operating margin and positive free-cash-flow margin.

Positive operating leverage can justify more confidence in earnings forecasts because incremental sales are converting into profit. Negative operating leverage requires more caution. It can indicate pricing pressure, cost inflation, inventory problems, or a business mix shift that headline revenue growth does not reveal.

Built with xfinlink — free financial data API for Python.