Strasmore Research
Learn Matt ConnorBy Matt Connor

Selling Mutual Funds at a Loss: How Basis Works

Selling mutual funds at a loss: what cost basis really includes after years of reinvested distributions, and how the wash sale rule can disallow part of it.

Selling mutual funds at a loss turns a paper decline into a realized capital loss, and the size of that loss is set by your cost basis rather than by the price you remember paying. Basis includes every distribution the fund has reinvested on your behalf, and the tracking method on the account, average cost or specific share identification, changes the number that reaches your Form 1099-B. What follows is the mechanics under US federal rules as of August 2026, including the wash sale trap an automatic reinvestment can spring while you place no order at all.

What happens when you sell a mutual fund at a loss

A mutual fund order never fills at a price you can see when you place it. It is priced at the next net asset value the fund computes, once a day after the close, and the figure you sell at is settled hours after the decision (when mutual fund orders actually trade walks that clock).

Once the shares leave the account the loss is realized, and the arithmetic is proceeds minus cost basis. A paper decline does nothing on a tax return. A realized loss offsets capital gains first, then up to $3,000 of ordinary income for a US federal filer in that year, with the remainder carried forward.

Holding period sets the character of the loss. More than a year makes it long term, a year or less makes it short term. Funds carry an extra rule stock investors rarely meet: on shares held six months or less, a loss is treated as long term to the extent of any long term capital gain distribution received on those shares, under Internal Revenue Code section 852(b)(4).

What is actually in your cost basis?

Basis is the money you put in plus every dollar the fund reinvested for you. Each reinvested distribution is a purchase: new shares at that day's price, with their own basis and their own holding period clock. An investor who counts only the cash wired in understates basis, which overstates a gain and understates a loss.

How much gets added depends on how often the fund pays. Every cash distribution on record for a group of index and income funds over the twelve months to June 30, 2026:

QueryDistribution cadence: index and income funds, twelve months to June 30, 2026
The exact SQL behind every number
SELECT ticker,
       count() AS distributions,
       round((max(ex_dividend_date) - min(ex_dividend_date)) / (count() - 1), 0) AS avg_days_between,
       round(sum(cash_amount), 3) AS total_per_share_usd
FROM global_markets.stocks_dividends
WHERE ticker IN ('JEPI', 'QYLD', 'BND', 'AGG', 'SCHD', 'VNQ', 'VTI', 'VOO', 'SPY')
  AND ex_dividend_date >= toDate('2025-07-01')
  AND ex_dividend_date <= toDate('2026-06-30')
  AND cash_amount > 0
GROUP BY ticker
HAVING count() > 1
ORDER BY avg_days_between ASC
Run this yourself

AGG made 12 distributions across the year, an average of 30 days apart, totalling $3.928 a share. At the other end of the panel, SPY paid 4 times at 91 days apart, $7.525 a share. Exchange traded funds are what the public record covers. A mutual fund's schedule lives on its own statements and its 1099-DIV, and the basis arithmetic is identical. Actively managed funds also distribute realized capital gains, usually in December, and a reinvested capital gain distribution adds basis the same way a dividend does.

Ten years of reinvested quarterly payments is forty separate purchases, each with its own cost and its own clock. The 8-4-3 rule is one piece of popular shorthand for the horizon fund investors plan around, and every extra year of reinvestment adds another rung to the ladder of lots.

Average cost or specific share identification?

Take a buyer who put the same dollar amount into a US total market fund on the last session of every month for a year and a half. The panel pins that window to 2021 and 2022, so the numbers never move. Each month's closing price is one lot, beside the running average cost of everything bought so far.

QueryA monthly buyer's lot prices and running average cost: VTI, July 2021 to December 2022
The exact SQL behind every number
WITH monthly AS (
    SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
           argMax(close, window_start) AS close_price
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'VTI'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2021-07-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2022-12-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY month_start
)
SELECT formatDateTime(month_start, '%Y-%m') AS month,
       formatDateTimeInJodaSyntax(month_start, 'MMMM yyyy') AS month_label,
       round(close_price, 2) AS lot_price_usd,
       round(avg(close_price) OVER (ORDER BY month_start
             ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), 2) AS average_cost_usd
FROM monthly
ORDER BY month_start
Run this yourself

By December 2022 the position holds 18 lots at 18 different prices. The last row carries the two figures a sale turns on: a market price of $191.25 against an average cost of $213.64. The first lot went in at $226.72 in July 2021.

Average cost blends the whole position: total dollars invested, reinvestments included, divided by total shares. Every share sold reports that same basis. It is the default at many fund companies and the least work to administer.

Specific share identification keeps the lots apart. The seller names which lots to sell before settlement, in writing, and keeps the confirmation. Here are the same lots, ranked by what each one does at the final month's price:

QueryThe same monthly lots ranked by per share result at the December 2022 price
The exact SQL behind every number
WITH monthly AS (
    SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
           argMax(close, window_start) AS close_price
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'VTI'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2021-07-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2022-12-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY month_start
),
sale AS (
    SELECT argMax(close_price, month_start) AS sale_price
    FROM monthly
)
SELECT formatDateTimeInJodaSyntax(m.month_start, 'MMM yyyy') AS label,
       round(m.close_price, 2) AS cost_per_share_usd,
       round(s.sale_price - m.close_price, 2) AS per_share_result_usd
FROM monthly AS m
CROSS JOIN sale AS s
ORDER BY per_share_result_usd ASC
Run this yourself

The spread is the whole lesson. The Dec 2021 lot cost $241.48 a share and lands at -50.23 a share against the sale price. The Sep 2022 lot cost $179.37 and lands at 11.88. Selling 100 shares from one end of that ledger reports a different figure from selling 100 shares at the other end, and average cost reports neither. It reports the blend. The fund and the sale date are identical. The reported basis is not.

The method is an account level election rather than a filing time choice. A change generally applies to shares bought afterwards, the fund company's paperwork governs it, and the 1099-B states which method produced the reported number.

The wash sale trap that belongs to funds

The wash sale rule disallows a loss when substantially identical securities are acquired within 30 days before or 30 days after the sale. That is a 61-day window with the sale date in the middle. The disallowed amount attaches to the basis of the replacement shares and the old holding period tacks on, which defers the deduction rather than destroying it.

Funds add a wrinkle. Reinvestment is automatic and silent. When a distribution goes ex inside that 61-day window (the ex-dividend date decides who receives it) and the account has reinvestment switched on, those new shares are replacement shares, and the portion of the loss matching them is disallowed. Nobody placed an order.

Read the cadence panel again with 61 days in mind. A fund distributing every 30 days on average puts a reinvestment inside almost any window of that length. A quarterly payer at 91 days between payments leaves real gaps, and the window is still wide enough to catch a payment much of the time.

  • Partial replacement disallows a partial loss. A $40 reinvestment against a 500-share sale disallows only the piece attached to the shares that $40 bought.
  • Replacement shares purchased inside an IRA are the harsh version. Revenue Ruling 2008-5 disallows the loss with no basis adjustment anywhere, and the deduction is gone rather than deferred. A taxable account sale paired with an automatic reinvestment in an IRA holding the same fund is the case people find afterwards.

Are two index funds substantially identical?

The statute says substantially identical, and no bright line has been published for two index funds tracking the same benchmark. What can be measured is how closely they move. Daily percentage moves for a set of broad US equity funds against SPY, every session in the first half of 2026, in basis points of difference. A basis point is one hundredth of a percentage point.

QueryDaily tracking difference against SPY: broad US equity funds, first half of 2026
The exact SQL behind every number
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(close, window_start) AS close_price
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'VOO', 'IVV', 'SPLG', 'VTI', 'RSP')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-02')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session_date
),
with_prior AS (
    SELECT ticker,
           session_date,
           close_price,
           lagInFrame(close_price) OVER (PARTITION BY ticker ORDER BY session_date) AS prior_close
    FROM daily
),
moves AS (
    SELECT ticker, session_date, close_price / prior_close - 1 AS daily_move
    FROM with_prior
    WHERE prior_close > 0
),
benchmark AS (
    SELECT session_date, daily_move
    FROM moves
    WHERE ticker = 'SPY'
)
SELECT m.ticker AS ticker,
       round(avg(abs(m.daily_move - b.daily_move)) * 10000, 2) AS avg_daily_gap_bps,
       round(max(abs(m.daily_move - b.daily_move)) * 10000, 2) AS max_daily_gap_bps
FROM moves AS m
INNER JOIN benchmark AS b ON m.session_date = b.session_date
WHERE m.ticker != 'SPY'
GROUP BY m.ticker
ORDER BY avg_daily_gap_bps ASC
Run this yourself

VOO sits 1.44 basis points from SPY on an average session, with a widest single session difference of 32. At the other end of the panel, RSP averages 40.88 basis points of daily difference. All 4 funds hold broad US equity portfolios, and the distance between tracking one index and tracking a different slice of the same market shows up in one column.

None of that settles the tax question. Some ETFs are share classes of the mutual fund itself: VOO and the Admiral shares VFIAX are two share classes of one Vanguard 500 Index Fund, a single portfolio wearing two names. Other pairs track an identical index from different sponsors. The determination is a facts and circumstances judgment for a tax professional reading your own account documents. How monthly returns are measured covers the measurement side, and dollar cost averaging explains how a regular buyer ends up with a ladder of lots in the first place.

Selling mutual funds at a loss: FAQ

Does selling a mutual fund at a loss reduce my tax bill?

A realized capital loss offsets capital gains first. For a US federal filer, up to $3,000 of any remaining loss offsets ordinary income that year, and the rest carries forward. The amount is proceeds minus basis, and the 1099-B from the fund is the reported record.

Do reinvested dividends increase my cost basis?

Yes. Every reinvested distribution buys shares at that day's price, and those dollars are part of basis. Leaving them out overstates a gain and understates a loss, which is the most common basis error on a long held fund position.

Can automatic dividend reinvestment create a wash sale?

Yes. A reinvestment inside the 61-day window is a purchase of the same fund, and the matching portion of the loss is disallowed even with no order placed. Fund companies allow distributions to be taken in cash instead, and the cadence panel above shows how often the payments arrive.

What is the difference between average cost and specific share identification?

Average cost reports one blended basis for every share in the account. Specific share identification reports the basis of the exact lots named before settlement. Across the 18 lots above, the per share results run from -50.23 to 11.88, and that range is what the blend averages away.

How long is the wash sale window on a mutual fund?

Thirty days before the sale and thirty days after, 61 days counting the sale date itself. It applies across all of your accounts, and a purchase inside an IRA during that window disallows the loss permanently under Revenue Ruling 2008-5.

Data notes and jurisdiction

The distribution and price panels read exchange traded funds, where every payment and every session price sits on the public record. Mutual fund price histories and distribution schedules live with the fund company. The mechanics described here, basis and holding period and the 61-day window, apply to both. Prices are regular session closes in Eastern time. The 2021 and 2022 panels are pinned to fixed past dates, so those figures do not move on regeneration. Tax rules cited are US federal as of August 2026 and they change. This page is educational and is not tax advice. Your own 1099-B and a tax professional are the authorities on your position.


Every number above comes from a stored query over filed distribution records and real session prices. Open any panel to read the SQL, or run the same lot arithmetic on a fund you hold on the Strasmore terminal.

#mutual funds#cost basis#wash sale#capital losses#tax basics