Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

How Dem Set Option Closing Marks

Option closing mark no be last sale, bid or midpoint. See how end-of-day marks dey set, why dem move with almost no volume, and wetin the difference fit break.

Option closing mark na end-of-day value wey broker, clearing house or data vendor assign to one contract. Any of the three fit publish different number for the same strike on the same night.

Mark no be last sale. For quiet contract, e usually no be price wey anybody trade.

The layers below go separate one by one. First, dem show numbers from the daily options record. Then, dem explain how each layer affect margin, statement and dataset.

Wetin be option closing mark?

Mark na valuation. Trade na transaction. Almost every argument about end-of-day option price dey start because people dey treat both as one number. Four different things dey behind the price field wey you dey look.

  • Last sale. Print: na real trade for real price, with the exact time wey e happen. If contract trade once for 10:14 a.m. and no trade again, the number for price field at 4:00 p.m. still be that 10:14 print.
  • Closing quote. Na the two-sided market for bell time: bid and offer, with sizes attached. For thin strike, dem fit dey one dollar apart, and midpoint between dem na average of two intentions.
  • Broker mark. Na valuation wey dey your statement. Normally, dem build am from closing quote, then model constrain am. Dem no go mark call below intrinsic value, and the ladder of marks across strikes no fit invert.
  • Clearing mark. Na end-of-day value wey clearing house calculate for margin and settlement across the system. E be model output by design.

The Options Industry Council, wey be education arm sponsored by OCC and the US options exchanges, explain am the same way: mark go land for bid, offer, midpoint or last sale only by coincidence. If you treat one as another, na there reconciliation work dey go wrong.

Quiet contract still fit change value

Make we start with the sign. Contract show different value today, even though almost nobody trade am. The last sale no need to change. Na the quoted market around am move, together with the model reading of that quote.

The panel follow five household underlyings through June 2026. E count every contract-day for options wey get 7 to 120 days left before expiry in the daily options file. Then e divide dem based on how much each contract trade. One limit of the file set the boundary: e only carry contract-day when that contract get print. So e no fit count the sessions when contract stay completely quiet. Wetin e fit show na how small the trading behind a closing value wey move fit be.

QueryContract-days wey trade small, and how often closing value still move
The exact SQL behind every number
SELECT
    underlying,
    toUInt32(count())                               AS contract_day_count,
    round(100 * countIf(volume <= 10) / count(), 1) AS pct_thin_days,
    round(100 * countIf(volume <= 10 AND abs(mark - prior_mark) >= 0.01)
              / greatest(countIf(volume <= 10), 1), 1) AS pct_thin_marks_moved
FROM
(
    SELECT
        underlying,
        ticker,
        date,
        volume,
        mark,
        any(mark) OVER (PARTITION BY ticker ORDER BY date
                        ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prior_mark
    FROM
    (
        SELECT
            underlying_symbol            AS underlying,
            ticker,
            date,
            max(volume)                  AS volume,
            toFloat64(max(option_close)) AS mark
        FROM global_markets.options_greeks
        WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'SPY')
          AND date >= '2026-06-01'
          AND date <  '2026-07-01'
          AND days_to_expiry BETWEEN 7 AND 120
        GROUP BY underlying, ticker, date
    )
)
WHERE prior_mark > 0
GROUP BY underlying
ORDER BY pct_thin_days DESC
Run this yourself

The thinnest book for the panel na KO: 38.2% of its contract-days that month get total volume of ten contracts or less for the whole session, and 90.1% of those thin contract-days still close at least one penny away from the contract’s previous recorded session. The name with the fewest thin days, NVDA, still get 21.8% of its contract-days at ten contracts or less. Closing value wey shift while only small number of lots change hands no be data error. Na wetin mark be: value wey come from the market standing around the contract, no be only from the trades wey happen inside am.

How old be the last sale when market close?

Even if the contract trade, the price field still fit no describe the closing price. The next panel dey take every AAPL contract wey print at least once on Wednesday June 17, 2026, find the ET hour wey the final print for that day happen, then count the contracts based on that hour.

QueryWhen AAPL option contracts print last, June 17, 2026
The exact SQL behind every number
SELECT
    et_hour,
    toUInt32(contracts)                                     AS contract_count,
    round(100 * contracts / sum(contracts) OVER (), 1)      AS share_pct
FROM
(
    SELECT
        et_hour,
        count() AS contracts
    FROM
    (
        SELECT
            ticker,
            formatDateTime(toTimeZone(max(sip_timestamp), 'America/New_York'), '%H:00') AS et_hour
        FROM global_markets.options_trades
        WHERE underlying_symbol = 'AAPL'
          AND sip_timestamp >= toDateTime('2026-06-17 00:00:00', 'America/New_York')
          AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'America/New_York')
        GROUP BY ticker
    )
    GROUP BY et_hour
)
ORDER BY et_hour
Run this yourself

Final prints spread across 7 hourly buckets, from 09:00 to 15:00 ET. The last bucket get 52.6% of all the contracts wey trade, while the first get 3.7%. If contract final print dey inside morning bucket, the last sale wey e carry enter the 4:00 p.m. close don already old for many hours, even though the stock continue to move throughout that period. Contracts wey far from the money dey stop trading first, and liquid versus volatile options explain wetin make one strike trade all day while the one next to am remain still.

Wetin the mark dey look like across strike ladder

Marks no dey calculate one by one. Model dey value the whole ladder at once. Na why strike wey never trade still get number wey match the strikes around am. The panel below show one expiry for one day: AAPL calls wey expire July 17, 2026, valued with the June 17, 2026 closing price. E only include strikes within 10% of where the stock close.

QueryAAPL July 17, 2026 calls: closing value and volume, strike by strike
The exact SQL behind every number
SELECT
    round(toFloat64(strike_price), 2)      AS strike,
    round(avg(toFloat64(option_close)), 2) AS closing_mark,
    toUInt32(sum(volume))                  AS contract_volume,
    round(avg(delta), 3)                   AS avg_delta
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
  AND date = '2026-06-17'
  AND expiration_date = '2026-07-17'
  AND lower(toString(option_type)) LIKE 'c%'
  AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.10
GROUP BY strike
ORDER BY strike
Run this yourself

Across 12 strikes, the closing value fall from $27.43 at the 270 strike to $0.79 at 325. Delta fall together with am, from 1 to 0.092. Delta na the model estimate of how much contract value go move if the stock move one dollar. Now compare the volume column with the curve. No matter how many times each contract trade that day, its closing value dey align with the contracts around am, instead of following wherever its own last print leave am. Na this ladder you dey meet when you read option chain, and model dey determine most of am.

Why broker statement dey disagree with last sale

Unrealized P&L for statement dey use the firm’s marks calculate am. Two accounts for two firms wey hold the same spread fit show different unrealized P&L that same night, and both figures fit still correct.

Na margin be the part wey dey cause problem. Maintenance requirement for short option dey use the mark plus a percentage of the underlying value calculate am, so the requirement dey move with the mark. Portfolio margin dey go further: dem re-value the position across a grid of hypothetical upward and downward moves for the underlying, then the requirement na the worst loss on that grid. Every price for that grid na model output, and wide quote for quiet strike dey make the input wider. Na this mechanism dey make requirement change on a day wey the contract never trade. Margin for selling naked options explain the standard formula step by step.

Reconciliation dey follow from the same point. Match against the mark wey the firm actually use, with that firm’s own timestamp, instead of last sale wey you pull from a chain. When two figures no agree, the useful question na which layer each side dey publish.

The 4:00 and the 4:15 close

No be every option dey stop for the same minute. US single-stock options dey end with the 4:00 p.m. ET equity close, while some broad-market products still dey trade after that time. Instead of trusting cut-off wey person remember, the panel dates the behaviour for one trading session.

QueryDay last option print by underlying, June 17, 2026
The exact SQL behind every number
SELECT
    underlying_symbol AS underlying,
    formatDateTime(toTimeZone(max(sip_timestamp), 'America/New_York'), '%H:%i') AS last_print_et,
    round(100 * countIf(toTimeZone(sip_timestamp, 'America/New_York')
                        >= toDateTime('2026-06-17 16:00:00', 'America/New_York')) / count(), 2) AS pct_after_4pm
FROM global_markets.options_trades
WHERE underlying_symbol IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'SPY', 'QQQ', 'IWM')
  AND sip_timestamp >= toDateTime('2026-06-17 00:00:00', 'America/New_York')
  AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'America/New_York')
GROUP BY underlying
ORDER BY pct_after_4pm DESC
Run this yourself

QQQ options continue to print until 16:14 ET, and 1.69% of the day’s prints happen after 4:00 p.m. For the other side, NVDA shows 0% and a final print at 16:00. If you run the panel for any later session, e go report the cut-offs wey apply for that session.

The difference matter for hedged pair. If you hold option wey close late against stock position, dem dey mark the two legs for different times: stock leg dey fixed at 4:00 p.m. from the closing auction, while option leg still captures another fifteen minutes of trading. Most days, this na just noise. But if headline come out at 4:05 p.m., the two marks describe different moments. Even if the hedge never move, the statement fit show P&L swing. Expiration get its own version of this split. Cash-settled index option settles at calculated value, not at any market mark: AM versus PM settled options explain am.

Wetín mark mean for options dataset

Mark no be fill. Backtest wey assume say execution happen for mark on strike wey get zero volume dey assume counterparty wey no dey there at all. Four habits fit help keep dataset honest.

  • Keep last sale, quote and mark for separate columns, and never allow one close column represent all three. If two vendors no agree on the same strike close, e usually mean say dem publish different layers.
  • Store bid, offer and sizes beside mark. The width go show you how much of the mark come from model.
  • Carry timestamp of the last print, no be only the price. Price wey no get age attached no fit pass audit.
  • Treat implied volatility and the greeks the same way. Model value for contract wey nobody trade na still model value.
Data notes

Dem pin three panels to Wednesday June 17, 2026 on purpose: fixed past session dey keep the numbers stable across regenerations, and that history no dey roll off. The daily options file get one row for each contract in every session wey that contract print, so the first panel dey count contract-days with total volume of ten contracts or fewer, instead of sessions wey no get volume at all. Closing values for the strike ladder na the file daily closes, and none of dem be price wey you fit trade at.

FAQ

Option closing mark na the same thing as last sale price?

No. Last sale na real trade wey happen for a particular time, and e fit happen hours before market close. Closing mark na valuation wey dem set for close. For contract wey no trade, the two prices fit far apart.

Why my option value change when almost nothing trade inside am?

The mark dey follow quoted market and the model behind am. Both of dem dey move with the underlying throughout the session. For the panel above, 38.2% of the thinnest name’s contract-days get total volume of ten contracts or less, and 90.1% of those still close with different value from the contract’s previous recorded session.

Which price my broker dey use for margin?

Na the firm’s own mark, no be last sale. Dem calculate maintenance requirement on short option from that mark plus a percentage of the underlying value. Portfolio margin re-value the position across a grid of hypothetical moves. Every input for that calculation na valuation.

Why two data vendors dey show different closing prices for the same option?

Most times, dem dey publish different layers. One vendor’s close fit be last sale. Another one fit be closing midpoint. A third one fit be model mark. If contract trade only once for morning, all three fit different.

Option marks dey cover trading after the 4:00 p.m. equity close?

Some of dem dey cover am. For the session wey the panel above show, QQQ options print until 16:14 ET, while single-stock names don already stop trading. End-of-day marks for those products include that extra trading window.

Every panel here come with the SQL wey produce am, so you fit see the layer wey dem measure inside the query itself. You fit ask the same questions in plain English on the Strasmore terminal, whether na mark against last sale or the time of the final print.