The percentage of revenue retained after subtracting the direct costs of producing goods or services, a key measure of pricing power and product economics.
In Plain English
Before a company can pay its employees, run its marketing department, or service its debt, it first has to cover the direct cost of making whatever it sells. Gross margin is the percentage of revenue left after subtracting those direct production costs — the "cost of goods sold" or COGS. If a software company licenses its product for $100 and the direct cost to deliver it (server costs, support) is $10, the gross margin is 90%. If a manufacturing company sells a product for $100 but it costs $80 to make, the gross margin is 20%.
Gross margin is a window into the fundamental economics of a business. High gross margins signal pricing power, differentiation, and scalability. Low gross margins signal commodity exposure or intense competition. A software company with 80% gross margins can afford to invest heavily in sales, R&D, and marketing and still reach profitability — the unit economics support it. A grocery retailer with 25% gross margins has to be extremely efficient in everything downstream to generate meaningful net income.
Trends matter as much as levels. A company whose gross margin is eroding might face rising input costs, a shift to lower-margin products, or competitive pricing pressure — all worth investigating. A company whose gross margin is expanding might be gaining pricing power, benefiting from scale economies, or improving its product mix toward higher-value offerings.
Supply chain language in earnings calls is one of the richest sources of early margin signals. CFOs discussing "input cost headwinds," "freight and logistics pressure," or "supplier pricing power" are often flagging gross margin compression that hasn't yet shown up in the numbers.
Technical Definition
Gross Profit = Revenue − Cost of Goods Sold (COGS)
Gross Margin = Gross Profit / Revenue × 100%
COGS includes direct materials, direct labor, and manufacturing overhead — the costs directly attributable to production. It excludes selling, general and administrative (SG&A) expenses and R&D.
Software/SaaS gross margins typically run 65-85%. Hardware companies: 30-60%. Retailers: 20-40%. Restaurants: 55-70% (food cost) but net margins of 5-15% after labor. Financial services: revenue is net interest income, so gross margin is less meaningful.
Piotroski signal F₈: positive when gross margin improved year over year. Combined with F₉ (improving asset turnover), this captures operational improvement in the business.
The spread between gross margin and EBITDA margin = operating expense ratio (SG&A + R&D as % of revenue). A widening spread while gross margins hold suggests cost discipline is declining — a potential future headwind to profitability.
How VectorFin Uses This
VectorFin's NLP pipeline is particularly attuned to gross margin signals in earnings calls, as management teams often discuss margin dynamics qualitatively before they're reflected quantitatively in reported numbers. The sentiment_drift signal captures tone shifts in management language around pricing and cost, which frequently precede gross margin surprises.
Common phrases the NLP identifies as bearish gross margin signals:
- "input cost pressures," "freight headwinds," "supplier negotiations"
- "promotional activity to drive volume," "competitive pricing environment"
- "mix shift toward lower margin products"
Bullish gross margin signals:
- "pricing actions taken in Q3," "favorable supply chain conditions"
- "mix shift toward software/services," "improved manufacturing yields"
GET https://api.vectorfinancials.com/v1/embeddings/search # POST with margin query
GET https://api.vectorfinancials.com/v1/signals/sentiment-drift/{ticker}?period=2024-Q3Code Example
import requests
API_BASE = "https://api.vectorfinancials.com"
API_KEY = "vf_your_api_key_here"
# Find earnings call commentary about gross margin pressure
margin_resp = requests.post(
f"{API_BASE}/v1/embeddings/search",
json={
"query": "gross margin compression input cost pressures pricing headwinds COGS inflation",
"tickers": ["WMT", "TGT", "COST", "HD", "LOW"],
"period_start": "2023-Q1",
"period_end": "2024-Q4",
"source": "earnings_call",
"top_k": 8,
},
headers={"X-API-Key": API_KEY},
)
print("Gross margin pressure signals in retail earnings calls:")
for r in margin_resp.json()["results"]:
print(f"\n{r['ticker']} {r['period']} (relevance: {r['score']:.3f})")
print(f" {r['text'][:220]}")
# Contrast: find positive margin language
expand_resp = requests.post(
f"{API_BASE}/v1/embeddings/search",
json={
"query": "gross margin expansion pricing power favorable mix shift improving product economics",
"tickers": ["AAPL", "MSFT", "NVDA"],
"period_start": "2024-Q1",
"period_end": "2024-Q4",
"top_k": 3,
},
headers={"X-API-Key": API_KEY},
)
print("\n\nPositive margin commentary (tech):")
for r in expand_resp.json()["results"]:
print(f"{r['ticker']} {r['period']}: {r['text'][:180]}")Related Terms
External References
Put Gross Margin to work in your pipeline
Access AI-ready financial data — embeddings, signals, Iceberg tables.