Moodys (MCO) Return on Sales [ROS] (2009 - 2026)
Moodys (MCO) reported Return on Sales [ROS] of 44.78% for Q3 2026, down 0.91 percentage points from 45.69% a year earlier and down 3.09 percentage points from the prior quarter.
Moodys (MCO) Return on Sales [ROS] (2009 - 2026) Analysis & Trends
Over the twelve months ended Sep 30, 2026, Moodys' Return on Sales [ROS] came in at 44.57%, up 2.68 percentage points year-over-year; for FY2025, it came in at 43.42%, up 2.86 percentage points from FY2024.
- Return on Sales [ROS] has increased for three consecutive years, though with a five-year change of -1.04 percentage points (FY2020 to FY2025).
- By year, Return on Sales [ROS] came in at 40.56% in FY2024 (+4.44 pp), 36.12% in FY2023 (+1.69 pp), 34.44% in FY2022 (-11.30 pp) and 45.74% in FY2021 (+1.28 pp).
- Five-year quarterly Return on Sales [ROS] spans a low of 23.72% in Q4 2022 and a high of 47.87% in Q2 2026.
- Year over year, Return on Sales [ROS] gained in five of the last eight quarters, with an average year-over-year change of +1.99 percentage points.
- The high point for year-over-year Return on Sales [ROS] in five years was Q4 2023 (a gain of 9.93 percentage points); the low point was Q2 2022 (a drop of 14.79 percentage points).
- Per Business Quant data, the three quarters before Q3 2026 came in at 47.87% (Q2 2026), 44.35% (Q1 2026) and 40.76% (Q4 2025).
Peer Comparison
| # | Company | Market Cap | Enterprise Value | Gross Profit (Qtr) | ROS (Qtr) |
|---|---|---|---|---|---|
| 1 | S&P Global | 132.75 Bn | 123.34 Bn | 2.98 Bn | 43.70% |
| 2 | Moodys | 83.38 Bn | 76.31 Bn | 1.50 Bn | 44.78% |
| 3 | Msci | 44.28 Bn | 42.76 Bn | 739.80 Mn | 56.29% |
| 4 | Verisk Analytics | 25.60 Bn | 20.23 Bn | 572.90 Mn | 45.11% |
| 5 | Equifax | 21.43 Bn | 20.70 Bn | 940.10 Mn | 20.99% |
| 6 | TransUnion | 15.67 Bn | 12.49 Bn | - | 19.70% |
| 7 | Factset Research Systems | 12.09 Bn | 10.94 Bn | 308.40 Mn | 24.68% |
| 8 | Morningstar | 8.49 Bn | 6.40 Bn | 423.90 Mn | 24.22% |
| 9 | Mastercard | 548.20 Bn | 508.12 Bn | - | 60.22% |
| 10 | Cme | 110.29 Bn | 98.39 Bn | - | 64.89% |
Historic Data
| Date | Value |
|---|---|
| Sep 30, 2026 | 44.78% |
| Jun 30, 2026 | 47.87% |
| Mar 31, 2026 | 44.35% |
| Dec 31, 2025 | 40.76% |
| Sep 30, 2025 | 45.69% |
| Jun 30, 2025 | 43.10% |
| Mar 31, 2025 | 43.97% |
| Dec 31, 2024 | 33.55% |
| Sep 30, 2024 | 40.71% |
| Jun 30, 2024 | 42.65% |
| Mar 31, 2024 | 44.85% |
| Dec 31, 2023 | 33.65% |
| Sep 30, 2023 | 36.35% |
| Jun 30, 2023 | 36.81% |
| Mar 31, 2023 | 37.69% |
| Dec 31, 2022 | 23.72% |
| Sep 30, 2022 | 32.39% |
| Jun 30, 2022 | 36.78% |
| Mar 31, 2022 | 43.10% |
| Dec 31, 2021 | 33.40% |
Moodys Return on Sales [ROS] API
Pull this series into your own models, spreadsheets and apps with the Business Quant
Historical Metrics API. The request below matches the chart above — change the
frequency, period or values and it follows. Swap YOUR_API_KEY for your own key.
https://data.businessquant.com/historic?slug=return-on-sales-%5Bros%5D&ticker=MCO&period=max&api_key=YOUR_API_KEY
import requests
url = "https://data.businessquant.com/historic"
params = {"slug": "return-on-sales-[ros]", "ticker": "MCO", "period": "max", "api_key": "YOUR_API_KEY"}
data = requests.get(url, params=params).json()
const res = await fetch("https://data.businessquant.com/historic?slug=return-on-sales-%5Bros%5D&ticker=MCO&period=max&api_key=YOUR_API_KEY");
const data = await res.json();