Strasmore Research
Deep Dives Matt ConnorBy Matt Connor

How Profitable Are Market Makers? The Data

How profitable are market makers? Read the one listed US electronic market maker's quarterly filings, the per share pennies behind them, and what they hide.

How profitable are market makers? One large US electronic market maker trades publicly and files a full income statement every quarter, Virtu Financial (VIRT), which makes it the only firm in this business whose profitability can be checked against an SEC document. The short version: revenue measured in billions of dollars a year, assembled a fraction of a penny at a time across billions of shares. Every figure below is stamped with the fiscal period it came from, and the closing section says where to refresh it.

How profitable are market makers in a single quarter?

A market maker is a firm that posts a price to buy and a price to sell at the same moment, continuously, and keeps the difference when both sides fill. Measuring the profit in that is straightforward for one firm and impossible for the rest. The panel reads the quarterly income statement, in millions of dollars, with the net margin on the same rows.

QueryVirtu Financial quarterly revenue and net income, $ millions
The exact SQL behind every number
SELECT
    concat(toString(toYear(period_end)), ' Q', toString(toQuarter(period_end))) AS quarter_label,
    round(toFloat64(revenue) / 1e6, 1)                                          AS total_revenue_musd,
    round(toFloat64(net_income) / 1e6, 1)                                       AS net_income_musd,
    round(100 * toFloat64(net_income) / toFloat64(revenue), 1)                  AS net_margin_pct
FROM
(
    SELECT
        period_end,
        argMax(revenue, (filing_date, period_end))                      AS revenue,
        argMax(consolidated_net_income_loss, (filing_date, period_end)) AS net_income
    FROM global_markets.stocks_income_statements
    WHERE has(tickers, 'VIRT')
      AND timeframe = 'quarterly'
      AND period_end >= '2022-01-01'
    GROUP BY period_end
    ORDER BY period_end DESC
    LIMIT 14
)
ORDER BY period_end
Run this yourself

In 2025 Q4, the newest quarter in view, consolidated net income came to $280.6 million, which is 8.8% of everything the firm booked as revenue in the same three months. Four quarters before that, in 2024 Q4, total revenue was $2500.6 million. The series opens in 2022 Q3 and covers 14 quarters, and the shape of it is the lesson: both lines move with market conditions from one quarter to the next.

Two cautions on those lines. Total revenue is the whole company, trading gains alongside interest and commission income from its execution services arm, which is why the top line in the panel sits far above what the trading desk itself counts. Consolidated net income sits before the split between public shareholders and non-controlling unit holders, so it measures the firm rather than the per share profit a holder of the stock keeps.

Which line measures market making profit?

GAAP revenue is not the number the trading desk itself watches. In its quarterly earnings release the firm reports a measure it defines itself, adjusted net trading income: trading revenue minus the exchange and clearing fees paid to execute those trades. That subtraction matters, since those fees scale with volume and never show up in a quoted spread. The mechanism behind the revenue line is covered in how market makers make money; this page is about the size of it.

Adjusted net trading income is a non-GAAP figure, meaning the company chooses the definition and no auditor certifies it. Read it next to the GAAP statement above rather than in place of it, and open the reconciliation table in the same release, where the firm shows the arithmetic from one to the other.

Where each number lives:

  • Total revenue and net income: the income statement inside the 10-Q, or the 10-K after the fourth quarter.
  • Adjusted net trading income: the quarterly earnings release, with its reconciliation back to GAAP revenue.
  • Volume and market share metrics: the supplemental tables in that same release.
  • The audited annual figures: the 10-K only. Quarterly statements are reviewed rather than audited.

The per share version is one division: adjusted net trading income for the quarter, divided by the share volume the firm reports handling over the same quarter. That gives income per share traded, and the answer arrives in fractions of a cent. The next two panels show how a number that small becomes a business.

How wide is the spread a market maker works with?

The raw material is the bid-ask spread, the gap between the best posted price to buy and the best posted price to sell. The panel pins a fifteen minute mid-morning window on June 10, 2026, from 10:30 to 10:45 a.m. ET, and takes the median quoted spread for 6 household names in cents and in basis points. One basis point is one hundredth of a percentage point.

QueryMedian quoted bid-ask spread, 10:30 to 10:45 a.m. ET on June 10, 2026
The exact SQL behind every number
SELECT
    ticker AS symbol,
    round(100 * quantileDeterministic(0.5)(toFloat64(ask_price) - toFloat64(bid_price), toUInt64(sequence_number)), 2) AS median_spread_cents,
    round(50 * quantileDeterministic(0.5)(toFloat64(ask_price) - toFloat64(bid_price), toUInt64(sequence_number)), 3)  AS half_spread_cents,
    round(10000 * quantileDeterministic(0.5)(
        (toFloat64(ask_price) - toFloat64(bid_price))
        / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2), toUInt64(sequence_number)), 2)                          AS median_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'F')
  AND toDate(sip_timestamp) = '2026-06-10'
  AND sip_timestamp >= '2026-06-10 14:30:00'
  AND sip_timestamp <  '2026-06-10 14:45:00'
  AND bid_price > 0
  AND ask_price > bid_price
  AND toFloat64(ask_price) - toFloat64(bid_price) < 1
GROUP BY ticker
ORDER BY median_spread_bps
Run this yourself

Measured against price, the narrowest median spread in the group belongs to SPY at 0.41 basis points, 3 cents on the quote. The widest relative to price, F, sat at 6.86 basis points on a spread of 1 cents. A one cent spread is worth very different amounts on a ten dollar stock and a six hundred dollar one, which is why the basis point column belongs beside the cents column.

Capturing a whole spread means buying at the bid and selling at the offer with no price move in between, which is rare. Half the spread, the distance from the midpoint to either side, is the realistic gross capture on a single fill: 1.5 cents on SPY in that window. Inventory that moves the wrong way before it is unwound eats into even that, which is the subject of why market makers lose money.

The volume behind a fraction of a cent

Half a cent, or a tenth of one, only becomes a business at scale. June 2026 shows the scale of the tape it is collected from.

QueryUS share volume by session, June 2026
The exact SQL behind every number
SELECT
    toString(date)                                                        AS session_date,
    concat(formatDateTime(date, '%b'), ' ', toString(toDayOfMonth(date))) AS session_label,
    round(toFloat64(sum(volume)) / 1e9, 2)                                AS tape_volume_billions,
    round(toFloat64(sum(transactions)) / 1e6, 1)                          AS trades_millions
FROM global_markets.stocks_daily_aggs
WHERE date >= '2026-06-01'
  AND date <  '2026-07-01'
GROUP BY date
ORDER BY date
Run this yourself

Across 21 sessions in June 2026, share volume across every US ticker in the daily record opened the month at 20.27 billion shares on Jun 1, printed across 171.9 million separate trades, and finished at 18.01 billion on Jun 30. No single firm touches all of that. The largest handle a meaningful slice, and the arithmetic below lets you plug in whatever slice you want to assume.

Estimate it yourself: shares times capture

The whole model is one multiplication. Shares handled per day, times capture per share, equals gross trading revenue per day. The panel is an illustration rather than a measurement: it multiplies six daily share counts by three capture rates, in millions of dollars per day.

QueryIllustration: gross daily capture at three per-share rates, $ millions
The exact SQL behind every number
SELECT
    if(shares_millions >= 1000,
       concat(toString(round(shares_millions / 1000, 1)), 'B shares a day'),
       concat(toString(shares_millions), 'M shares a day')) AS label,
    round(shares_millions * 0.0005, 3)                      AS musd_at_005_cents,
    round(shares_millions * 0.0010, 3)                      AS musd_at_010_cents,
    round(shares_millions * 0.0020, 3)                      AS musd_at_020_cents
FROM
(
    SELECT arrayJoin([500, 1000, 2000, 4000, 6000, 8000]) AS shares_millions
)
ORDER BY shares_millions
Run this yourself

At a tenth of a cent per share, the 8B shares a day row grosses $8 million a day. Halve the capture and it falls to $4 million; double it and it reaches $16 million. Even the 500M shares a day row clears $1 million a day at two tenths of a cent. Change either input and the answer moves in a straight line, which is the useful property of this business and the fragile one.

Gross is a long way from net. Exchange and clearing fees, market data, technology and staff all come out of it, and in the filings panel above, the distance between the revenue bar and the net income bar is what those costs look like in practice.

Did a market maker really have one losing day?

The most repeated fact about market making profitability comes from Virtu's 2014 registration statement, which counted a single losing trading day across more than a thousand sessions between January 2009 and December 2013. The number is real, and it describes variance rather than size. Thousands of small, largely independent positions a day, each carrying a tiny edge, produce a daily profit distribution with almost no left tail. A casino's daily takings look similar for the same structural reason, and neither tells you the size of the win.

A few qualifications travel with that fact, and they matter more than the fact does. It is historical, ending in 2013, and the company has since absorbed KCG in 2017 and ITG in 2019, which brought agency and execution businesses with different economics. It counts days, so it says nothing about the return earned on the capital standing behind those days. And volatility regimes move the answer in both directions: wide spreads with heavy volume coincide with the strongest quarters in the panel above, while a quiet, tight tape coincides with the weakest.

What do private market makers disclose?

Citadel Securities, Jane Street, Susquehanna and Jump Trading are private and file no income statement with the SEC. What does surface is narrower. Order routing reports under SEC Rule 606 show where a broker sent customer orders and what it was paid for them, and execution quality statistics under Rule 605 show price improvement at the venue level. Firms that issue bonds also publish financial detail to their creditors, and those figures reach the press second hand.

Treat every headline profit figure for those firms as a leak or an estimate, dated to whenever it surfaced. Ranking them by share of volume rather than by dollars is the more honest exercise, which is what the biggest market makers by share of volume does.

FAQ

How much do market makers make per share?

Fractions of a cent. The public way to compute it is to take adjusted net trading income from a quarterly earnings release and divide it by the share volume the firm reports handling in the same quarter. The illustration panel above shows how quickly a tenth of a cent compounds once billions of shares pass through.

Are market makers always profitable?

No. The panel above shows revenue and net income moving substantially from one quarter to the next, and a losing day is an ordinary event in the business. The often quoted one losing day record covers 2009 through 2013 at one firm and has not been repeated as a disclosure since.

Which SEC filing shows market maker profits?

The 10-Q carries the quarterly income statement, reviewed rather than audited, and the 10-K carries the audited annual figures. The earnings release published alongside the 10-Q carries the non-GAAP adjusted net trading income line and its reconciliation back to GAAP revenue.

Can an individual become a market maker?

Registered market making is a firm level activity, requiring exchange membership and regulatory capital. An individual can quote passively on both sides of a book and collect the same spread when both fills happen, without the obligations or the exchange rebate schedule. How to become a market maker walks through the difference.

How do I keep these numbers current?

Every figure here is stamped with its fiscal quarter. A new quarter lands roughly six weeks after the period closes, and the panels rebuild from the filings themselves when this page is regenerated.

Data notes and where to refresh

The income statement panel keys on the period end date of each fiscal quarter rather than on a filing timestamp, since filing dates in fundamentals data are unreliable on older rows. The revenue line in that panel is the vendor's consolidated total, which is broader than trading revenue alone, so read it as the whole company and read the margin column beside it. The index below is the receipt for where the figures originate and how often new ones arrive.

QueryVirtu Financial quarterly and annual reports on file
The exact SQL behind every number
SELECT
    concat(formatDateTime(filing_date, '%b'), ' ', toString(toDayOfMonth(filing_date)), ', ', toString(toYear(filing_date))) AS filed_on,
    form_type,
    any(accession_number) AS accession_number
FROM global_markets.stocks_sec_edgar_index
WHERE ticker = 'VIRT'
  AND form_type IN ('10-Q', '10-K')
  AND filing_date >= '2023-01-01'
GROUP BY filing_date, form_type
ORDER BY filing_date DESC
LIMIT 12
Run this yourself

The spread panel covers a single fifteen minute window on one pinned session, June 10, 2026, so those numbers stay fixed. It uses medians rather than averages, since a handful of stale or crossed quotes distorts a mean. The volume panel counts every US ticker in the daily record for June 2026.


Every panel here ships with the SQL that produced it. Open one, swap the ticker or the window, and ask the same question your own way on the Strasmore terminal.

#market makers#market structure#bid-ask spread#profitability#trading revenue