Strasmore Research
Learn Matt ConnorBy Matt Connor · data as of October 3, 2026 · refreshed weekly

ETF vs Mutual Fund Settlement: Two Clocks

ETF vs mutual fund settlement, side by side: when each trade date starts, what price you get, and the exact day the cash is withdrawable under T+1.

ETF vs mutual fund settlement comes down to one question: when does the clock start? Both legs run one business day. The ETF clock starts at the execution timestamp. The fund clock starts on the pricing day, the day the fund strikes the net asset value your order receives. Same length, two starting guns, and on some afternoons two different dates for spendable cash.

ETF vs mutual fund settlement side by side

Settlement is the day a trade finishes: securities move one way, money the other, and a seller's proceeds turn into withdrawable cash. US-listed stocks and ETFs have run on a one business day cycle since May 2024, written as T+1, where T is the trade date. The general mechanics live in how stock settlement works under T plus 1, so this page stays on the contrast.

For an ETF, the trade date is never in doubt. You take a live offer at 11:04 a.m. and the confirmation carries that date, that price, and a settlement date one business day out.

For a mutual fund, the order is an instruction to the fund rather than a trade with another investor on an exchange. The fund computes one NAV per day after the close, and every order that arrives before its cutoff receives that NAV. The mechanism has a name, forward pricing, covered in the mutual fund forward pricing rule. The pricing day is the trade date, and settlement counts forward from it. A fund's exact cycle sits in its prospectus, with one business day after pricing the common case.

Which day does the cash actually land on?

Both legs count business days, never calendar days, so the wait depends on where the trade date falls in the week. The panel below walks the exchange calendar forward and pairs each upcoming session with the next one, which is the settlement date for anything dated that session.

QueryUpcoming trade dates and the day their cash settles
trade_datetrade_labelweekdaysettles_onsettle_labeldays_to_cash
2026-10-05Oct 5Monday2026-10-06Oct 61
2026-10-06Oct 6Tuesday2026-10-07Oct 71
2026-10-07Oct 7Wednesday2026-10-08Oct 81
2026-10-08Oct 8Thursday2026-10-09Oct 91
2026-10-09Oct 9Friday2026-10-12Oct 123
2026-10-12Oct 12Monday2026-10-13Oct 131
2026-10-13Oct 13Tuesday2026-10-14Oct 141
2026-10-14Oct 14Wednesday2026-10-15Oct 151
2026-10-15Oct 15Thursday2026-10-16Oct 161
2026-10-16Oct 16Friday2026-10-19Oct 193
2026-10-19Oct 19Monday2026-10-20Oct 201
2026-10-20Oct 20Tuesday2026-10-21Oct 211
2026-10-21Oct 21Wednesday2026-10-22Oct 221
2026-10-22Oct 22Thursday2026-10-23Oct 231
2026-10-23Oct 23Friday2026-10-26Oct 263
The exact SQL behind every number
SELECT
    toString(trade_day)                                                       AS trade_date,
    concat(formatDateTime(trade_day, '%b'), ' ', toString(toDayOfMonth(trade_day))) AS trade_label,
    ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'][toDayOfWeek(trade_day)] AS weekday,
    toString(settle_day)                                                      AS settles_on,
    concat(formatDateTime(settle_day, '%b'), ' ', toString(toDayOfMonth(settle_day))) AS settle_label,
    dateDiff('day', trade_day, settle_day)                                    AS days_to_cash
FROM
(
    SELECT
        tupleElement(pair, 1) AS trade_day,
        tupleElement(pair, 2) AS settle_day
    FROM
    (
        SELECT arrayJoin(arrayZip(arrayPopBack(sessions), arrayPopFront(sessions))) AS pair
        FROM
        (
            SELECT arraySort(groupArray(d)) AS sessions
            FROM
            (
                SELECT today() + arrayJoin(range(30)) AS d
            )
            WHERE toDayOfWeek(d) BETWEEN 1 AND 5
              AND d NOT IN
              (
                  SELECT date
                  FROM global_markets.stocks_market_holidays
                  WHERE status = 'closed'
              )
        )
    )
)
ORDER BY trade_date
LIMIT 15
Run this yourself

Read the first row as a worked example: a trade dated Oct 5, a Monday, settles on Oct 6, 1 calendar days on. The days_to_cash column is the one that catches people out, and across the 15 sessions in view it is not a constant. Nothing in this panel is specific to ETFs or to funds. It is one calendar, applied to whichever date each leg calls T.

Is the price you get the same?

No, and on a moving day the gap is visible. An ETF has a price every second the market is open. A mutual fund has one price per day. The panel below pins a single past session, September 15, 2026, and tracks SPY in half hour clock buckets through regular trading.

QuerySPY by half hour clock bucket, pinned session of Sep 15, 2026
et_timespy_close
09:30759.55
10:00757.48
10:30756.44
11:00757.48
11:30757.12
12:00757.58
12:30757.74
13:00756.88
13:30757.27
14:00757.67
14:30757.49
15:00756.98
15:30757.38
The exact SQL behind every number
SELECT
    formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
    round(toFloat64(argMax(close, window_start)), 2) AS spy_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
  AND window_start >= '2026-09-15 00:00:00'
  AND window_start <  '2026-09-16 05:00:00'
  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
       + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
       + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
GROUP BY et_time
ORDER BY et_time
Run this yourself

The 09:30 bucket finished at $759.55 and the 15:30 bucket at $757.38, over 13 buckets in one session. Two ETF buyers on that date, one at 11:00 a.m. and one at 3:45 p.m., hold the same fund at different cost. Two mutual fund investors who sent orders at those same moments hold theirs at one identical NAV, struck after the close.

Widen the same pinned session to six large funds and the pattern repeats across names.

QueryHow far the 11:00 a.m. print sat from the closing print, Sep 15, 2026
symbolabs_gap_pctrange_pct
DIA0.3280.85
IVV0.0840.55
IWM0.2491
QQQ0.040.84
SPY0.0780.56
VTI0.0780.66
The exact SQL behind every number
SELECT
    ticker AS symbol,
    round(abs(toFloat64(anyIf(close, et_minute = 660)) / toFloat64(argMax(close, et_minute)) - 1) * 100, 3) AS abs_gap_pct,
    round((toFloat64(max(high)) / toFloat64(min(low)) - 1) * 100, 2) AS range_pct
FROM
(
    SELECT
        ticker,
        close,
        high,
        low,
        toHour(toTimeZone(window_start, 'America/New_York')) * 60
            + toMinute(toTimeZone(window_start, 'America/New_York')) AS et_minute
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'QQQ', 'IVV', 'VTI', 'DIA', 'IWM')
      AND window_start >= '2026-09-15 00:00:00'
      AND window_start <  '2026-09-16 05:00:00'
)
WHERE et_minute >= 570 AND et_minute < 960
GROUP BY ticker
HAVING countIf(et_minute = 660) > 0
ORDER BY ticker
Run this yourself

On DIA, the 11:00 a.m. print sat 0.328% away from that same fund's closing print, inside a session that traveled 0.85% from its low to its high. Small in percentage terms. On a five figure order they are real dollars, and they exist only on the ETF leg, where the clock sets the price. Mutual funds versus ETFs covers the rest of the structural differences.

Where the two clocks actually split

Before a fund's cutoff, the clocks agree. Sell an ETF at 11:00 a.m. on a Tuesday and redeem a fund at 11:00 a.m. the same Tuesday: both are dated Tuesday, both settle Wednesday. The split opens at the cutoff. An order reaching the fund after its cutoff is priced at the following day's NAV, which makes the next session its trade date and moves settlement one business day out. An ETF sold in the extended session at 5:30 p.m. still carries that day's trade date.

So the usable version of the rule is a conditional. Same day order before the cutoff: one cash date for both legs. Order after the cutoff, including anything entered over a weekend or on a closed day: the fund's clock has not started, while an extended hours ETF trade has already stamped its date. When mutual funds trade has the cutoff timing in detail.

What happens to a Friday order?

Grouping the same forward calendar by weekday turns the weekend roll into one shape.

QueryCalendar days from trade date to settlement, by weekday
weekdaysessions_countedavg_days_to_cashmax_days_to_cash
Monday1611
Tuesday1711
Wednesday171.062
Thursday161.384
Friday143.074
The exact SQL behind every number
SELECT
    ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'][toDayOfWeek(trade_day)] AS weekday,
    count()                                                            AS sessions_counted,
    round(avg(dateDiff('day', trade_day, settle_day)), 2)              AS avg_days_to_cash,
    max(dateDiff('day', trade_day, settle_day))                        AS max_days_to_cash
FROM
(
    SELECT
        tupleElement(pair, 1) AS trade_day,
        tupleElement(pair, 2) AS settle_day
    FROM
    (
        SELECT arrayJoin(arrayZip(arrayPopBack(sessions), arrayPopFront(sessions))) AS pair
        FROM
        (
            SELECT arraySort(groupArray(d)) AS sessions
            FROM
            (
                SELECT today() + arrayJoin(range(120)) AS d
            )
            WHERE toDayOfWeek(d) BETWEEN 1 AND 5
              AND d NOT IN
              (
                  SELECT date
                  FROM global_markets.stocks_market_holidays
                  WHERE status = 'closed'
              )
        )
    )
)
GROUP BY weekday, toDayOfWeek(trade_day)
ORDER BY toDayOfWeek(trade_day)
Run this yourself

The bars separate cleanly. Friday trade dates carry the longest calendar wait in the window, averaging 3.07 days against 1 for Monday, measured over 14 sessions. The longest single wait on that row runs 4 calendar days. One rule, one calendar, a very different wall clock. A fund order entered Friday after the cutoff stretches further: the pricing day becomes Monday and settlement lands Tuesday, the following week from when the order was placed.

Switching a fund into an ETF in a cash account

Here the two clocks turn into a compliance problem. In a cash account, every purchase has to be paid for with settled cash. Redeem a mutual fund at Monday's NAV and the proceeds settle Tuesday. Buying an ETF with those proceeds on Monday is fine, since that purchase also settles Tuesday. Selling the ETF again on Monday or early Tuesday, before the fund proceeds have settled, means the account sold something it never paid for with settled funds. That is a good faith violation, and brokers count them: three inside a rolling twelve months typically restricts the account to settled cash for ninety days. Good faith violations in cash accounts walks the counting rules, and how long a mutual fund takes to settle dates the fund leg.

Do early closes and holidays change the dates?

A closure removes a business day from the count while leaving the rule untouched. The calendar below lists every closure still ahead, with shortened sessions marked.

QueryClosures and early closes still ahead on the exchange calendar
holiday_dateweekdayholidayday_statusearly_close_etdays_away
2026-11-26ThuThanksgivingclosed54
2026-11-27FriThanksgivingearly-close01:00 PM55
2026-12-24ThuChristmasearly-close01:00 PM82
2026-12-25FriChristmasclosed83
2027-01-01FriNew Years Dayclosed90
2027-01-18MonMartin Luther King, Jr. Dayclosed107
2027-02-15MonWashington's Birthdayclosed135
2027-03-26FriGood Fridayclosed174
2027-05-31MonMemorial Dayclosed240
2027-06-18FriJuneteenthclosed258
2027-07-05MonIndependence Dayclosed275
2027-09-06MonLabor Dayclosed338
The exact SQL behind every number
SELECT
    toString(date)                       AS holiday_date,
    formatDateTime(date, '%a')           AS weekday,
    any(name)                            AS holiday,
    any(status)                          AS day_status,
    any(if(status = 'early-close',
           formatDateTime(toTimeZone(close, 'America/New_York'), '%I:%i %p'),
           ''))                          AS early_close_et,
    dateDiff('day', today(), date)       AS days_away
FROM global_markets.stocks_market_holidays
WHERE date >= today()
GROUP BY date
ORDER BY date
Run this yourself

12 dated closures sit on the forward calendar, the nearest being Thanksgiving, 54 days out. Two effects to carry. A full closure is not a business day, which extends every settlement straddling it on both legs. On a shortened session the fund cutoff moves with the early close rather than holding at 4:00 p.m., while ETF trading simply stops earlier in the day. Whether mutual funds trade on holidays covers the closed day handling.

FAQ

How long does an ETF take to settle?

One business day after the trade date, the cycle written as T+1. A sale executed Tuesday settles Wednesday, and the proceeds become withdrawable cash that day. A Friday sale settles Monday.

Do mutual funds settle faster than ETFs?

In rule terms neither is faster, since both commonly run one business day. The fund's clock starts later on any order arriving after the cutoff, since the pricing day is the trade date.

Can I use ETF sale proceeds to buy a mutual fund the same day?

Most brokers accept the order against unsettled proceeds in a cash account. The constraint sits on the other side: selling the newly bought position before the first sale settles is what creates a good faith violation.

Does an ETF trade after 4:00 p.m. settle a day later?

No. An extended hours trade carries the same trade date as the session it follows, so it settles on the same T+1 date as a 2:00 p.m. trade from that day.

Why does my broker show cash I cannot withdraw?

Proceeds appear as buying power before they exist as settled cash. A withdrawal waits for the settlement date, which the first panel on this page dates exactly for any session ahead.


Every panel here ships with the SQL underneath it, so you can see how each date was counted. To date a specific settlement, or check whether a session you care about straddles a closure, ask it in plain English on the Strasmore terminal.

#settlement#etfs#mutual funds#t+1#cash availability