CPRT earnings: an expected move of 5.7%, an actual move of 4.1%.Averages over its last twelve reports. Here are all 16 reports.
Every Copart earnings report since Nov 2022: the expected move the options priced the day before, how far the stock moved by the close and by 10:00 the next morning, and the IV crush afterwards, how far implied volatility fell. We read option prices from real quotes at 15:46 ET. Definitions on the methodology page.
Next report · after the close · 11 days out
CPRT’s expected move for Thu 19 Nov
The options already price it. The number, and how rich it is against CPRT’s own history, opens free on report day, Thu 19 Nov, with an account. Subscribers read it now.
The options price an earnings move as one number. We take out the drift the stock would have had anyway, then rank what is left, the report’s own part, against CPRT’s earlier reports. Both were fixed at 15:46 ET the day before, and the history below does the same for every report.
7.5% quoted, 6.1% of it the report
The options ran six trading sessions, so the quote also carries six days of the drift CPRT has anyway: 4.4%. The two combine as squares, not sums, so 6.1 and 4.4 give 7.5. The report is 65% of that expiry’s risk.
Higher than nine of its last twelve
We rank only the report’s part, and only against CPRT’s own earlier reports, so a jumpy stock does not read rich for being jumpy. 6.1% is the 75th percentile: neither rich nor cheap for CPRT.
Moved 2.6%, inside the 6.1%
−2.6% by the next close, −0.9% by 10:00 the next morning. The rank compares the price with CPRT’s past and does not forecast the move.
Inside its priced move after nine of twelve
Past it: Sep 2024 −6.7%, Nov 2024 +11.4% and May 2025 −11.5%.
−11.5% after the May 2025 report
The options had priced 5.8%.
Fell after every one, by 24% to 49%
Median fall 31%, at the strike nearest the price, day before to day after.
Grown: 6.9% over the last four
From 5.1% over the eight before. The report’s own part of the move, with the ordinary drift taken out.
| Report | Report’s partPriced | Rank | RealizedC2C | By 10:00 | Priced · realized · ±15% | CrushATM | As-sold | Open | ForecastPred. | Error |
|---|---|---|---|---|---|---|---|---|---|---|
| Sep 10 ’26 | ±6.1% | 75 | −2.6% | −0.9% | −35% | −35% | −36% | −39% | +4pt | |
| May 21 ’26 | ±8.3% | rich≈100 | −1.8% | +1.5% | −32% | −32% | −27% | — | — | |
| Feb 19 ’26 | ±5.8% | 80 | −3.1% | −5.0% | −26% | −27% | −19% | −20% | −6pt | |
| Nov 20 ’25 | ±7.3% | rich100 | −0.7% | −2.6% | −31% | −35% | −27% | −29% | −2pt | |
| Sep 4 ’25 | ±6.9% | rich100 | −2.8% | −4.2% | −49% | −53% | −43% | −42% | −6pt | |
| May 22 ’25 | ±5.8% | — | −11.5% | −9.5% | −24% | −19% | −14% | — | — | |
| Feb 20 ’25 | ±5.1% | — | −2.8% | −2.5% | −30% | −30% | −28% | −28% | −2pt | |
| Nov 21 ’24 | ±5.0% | — | +11.4% | +8.4% | −34% | −22% | −25% | −26% | −7pt | |
| Sep 4 ’24 | ±4.7% | — | −6.7% | −6.7% | −29% | −27% | −24% | −32% | +3pt | |
| May 16 ’24 | ±4.6% | — | −0.1% | −0.2% | −28% | −29% | −21% | −26% | −3pt | |
| Feb 22 ’24 | ±4.0% | — | +4.0% | +0.8% | −33% | −29% | −24% | −25% | −8pt | |
| Nov 16 ’23 | ±4.5% | — | +1.8% | +4.0% | −31% | −27% | −31% | −23% | −8pt | |
| Sep 14 ’23 | — | — | −2.2% | −1.3% | −7% | −13% | −15% | — | — | |
| May 17 ’23 | ±3.5% | — | +7.8% | +4.6% | −31% | −3% | −25% | — | — | |
| Feb 20 ’23 | ±3.8% | — | +0.9% | — | −12% | −12% | — | — | — | |
| Nov 16 ’22 | ±4.8% | — | +3.4% | — | −21% | −13% | — | −19% | −2pt | |
| All · 16 | ±5.3% avg | 5 ranked | 4.1% avg abs | 3.9% avg abs | −31% median | −27% median | −25% median | −26% median | 4.6pt avg abs |
What the columns mean6 groups · 10 columns
- Report’s part
- The report’s share of what options priced at 15:46 ET the day before, taken from two or more expiries.
- ColumnsPriced
- Rank
- Where the report’s part sits among CPRT’s own earlier reports, up to twelve, from 0 to 100: 75 on Sep 10 ’26 means it was priced higher than 9 of the 12 before it. Rich and cheap mark the top and bottom of that range. It needs eight earlier reports with a 10:00 move, so the oldest rows have none. ≈ marks a rank whose report’s part was uncertain: read it as roughly there, not exactly.
- ColumnsRank
- Realized
- C2C is the move to the next close; By 10:00, the move to 10:00 the next morning.
- ColumnsC2CBy 10:00
- Chart
- The grey band is what the options priced, the dark mark where the stock closed, the bar where it stood at 10:00, on a ±15% scale.
- ColumnsPriced · realized · ±15%
- Crush
- How far implied volatility fell in the report’s expiry, from 15:46 ET the day before to the day after: at the new strike ATM and at the old one As-sold. Open reads it from the option’s 10:00 quotes the next morning, and is blank where there was none.
- ColumnsATMAs-soldOpen
- Forecast
- Pred. is the crush we published the day before, graded on the public record. Error is what happened minus the forecast, in points of the crush.
- ColumnsPred.Error
to the closein betweenClosing prices miss the open
If you hold through the report you meet the open, not the close. We publish both: the move from one close to the next, and where the stock stood at 10:00 the next morning.
the reportordinaryOption prices cover more than the report
An expiry a week out also carries a week of ordinary movement. Comparing two expiries that both contain the report separates the two, and the report's share is the priced move.
the one that movedwhat 30 days averageWe measure the expiry that moved
A 30-day average mixes the expiry holding the report with expiries it never reaches, so it reads shallower than what you held. We read the expiry that holds the report, the day before and the day after, at both strikes.
One expiry contains the report. The 30-day figure is an average that also covers expiries the report never reaches. Every column below leans the same way, so the gap shows on each report, not only in the median.
Each row is one report: the band is what the options priced, the mark is where the stock closed, and the bar runs to where it stood at 10:00 the next morning. On 1 of 13 reports with both, the close and 10:00 pointed opposite ways.
Where the 10:00 number is missing, the cell stays blank instead of borrowing the close, and the data-quality grid below says why. How far apart the two run differs from company to company; this window measures it for CPRT.
The split reads the report out of the gap between the two lines. The small figure under each date is how many trading sessions the expiry holding the report had left. A shorter one carries the same report over fewer days, so it reads higher without the report being priced any bigger.
Drawn for the last twelve reports, like the other figures on this page. It is history; the current curve is on the board.
Counted over the 16 reports shown. One marker is on every report (macro event in the window), so it describes CPRT rather than any one quarter. The other 19 are on between one and eight reports.
Every marker on the reports above is counted here, one cell per report, newest first as in the history table.
’26May 21
’26Feb 19
’26Nov 20
’25Sep 4
’25May 22
’25Feb 20
’25Nov 21
’24Sep 4
’24May 16
’24Feb 22
’24Nov 16
’23Sep 14
’23May 17
’23Feb 20
’23Nov 16
’22reports
What each marker means20 markers · 4 withhold a number
Withheld
- no prediction5 of 16
crush_pred_unavailable - No predicted crush could be frozen for this print, so it has no entry in the scored accuracy record. Never filled in afterwards — a prediction written after the outcome is not one.
- Lands inPred.Error
- no trade at the cover2 of 16
open_crush_no_trade - The option legs did not trade at the 10:00 cover anchor, so the crush there could not be measured. It comes from the tape, not an outage, so it is permanent and counts in the published coverage ratio.
- Lands inOpen
- no 10:00 tape2 of 16
rm_intra_unavailable - The equity minute bars behind the 10:00 anchor do not exist for this session, so the anchor is blank and stays blank. It is never substituted from the opening price: a history with two different anchors mixed together is worse than a shorter one.
- Lands inBy 10:00Open
- overlapping event1 of 16
decomp_ambiguous - A second earnings report or a suppressing macro event falls inside the solve window, so the volatility priced there cannot be attributed to this print alone.
- Lands inPriced move
Shown, kept off the board’s sort
- thin trade at the cover7 of 16
open_crush_thin_trade - Too few prints stand behind the 10:00 anchor for it to be a reliable price. The crush is shown and kept out of the rankings.
- Lands inOpen
- wide decomposition band4 of 16
decomp_low_confidence - The decomposed implied move has a wide confidence band on this row. The number is published and kept off the board’s sort, because a sort cannot express an error bar; where its rank is shown, it is marked ≈.
- Lands inPriced move
- derived numbers unreliable3 of 16
derived_unreliable - Quotes on this name were too wide — or a 25Δ wing was missing — for the derived numbers on this row to be trusted: implied move, decomposition, crush and skew. Shown, kept off the board’s sort, and marked ≈ where its rank is shown.
- Lands inThe derived columns
- wide straddle quote2 of 16
wide_quote - The T−1 straddle’s bid-ask spread was wide relative to its own price, so every number read off that quote inherits the width. Published on purpose — the friction is real — but kept off the board’s sort, and marked ≈ where its rank is shown.
- Lands inImplied (naive)Short-straddle P&Lon the ticker page, not this one
Shown as measured
- macro event in the windowevery report
decomp_macro_window - A scheduled macro event (a CPI print, an FOMC day) falls inside the decomposition window, so a little of the volatility attributed to the event belongs to the calendar instead.
- Lands inPriced move
- held to expiry8 of 16
cover_mark_settled - The straddle that was sold expired at one of these closes, so its price there is its settlement value: the distance from the stock to the strike. That exit pays no bid/ask spread, and it ignores the cost of being assigned stock on the in-the-money leg.
- Lands inShort-straddle P&Lon the ticker page, not this one
- crush expiry substituted8 of 16
crush_expiry_substituted - The expiry that would have been measured was not available on both sides of the print, so a neighbouring one stood in. The crush is real; it is measured on a slightly different contract than the label implies.
- Lands inATM
- an anchor was refused6 of 16
open_crush_anchor_unreliable - At least one observation behind the 10:00 crush was rejected: a price below intrinsic, a crossed quote, or a solve that did not converge. The number here was measured from the anchors that did invert, and is scored normally.
- Lands inOpen
- gapped past the wings5 of 16
open_crush_gap_otm - The stock gapped far enough that the contract sold at T−1 is no longer near the money at the cover, so the as-sold crush there is partly a move along the smile rather than a collapse in volatility.
- Lands inOpen
- next-morning price from quotes4 of 16
open_crush_restruck_quoted - The option at the 10:00 strike did not trade on both sides between 09:55 and 10:05, so the next-morning volatility was read from the midpoint of its quoted bid and ask over the same ten minutes. Used only when both sides were quoted and the quote was less than 50% wide.
- Lands inOpen
- noisy IV rank3 of 16
iv_rank_noisy - This name’s quote width is large against its own 52-week volatility range, so the rank carries a read error worth noting. A true property of a quiet name, not a defect — the rank itself is computed normally.
- Lands inIV rankon the ticker page, not this one
- skew contamination2 of 16
crush_skew_contaminated - The gap between the strike sold and where the stock ended up is large enough that the as-sold crush cannot stand in for the comparable one, so this print carries no scored open crush.
- Lands inAccuracy recordon the public record, not this one
- 30-day IV extrapolated2 of 16
iv30_extrapolated - No pair of listed expiries brackets 30 days, so the 30-day volatility was extrapolated more than a week past the nearest one rather than interpolated. A shorter reach is not flagged: it moves the number by well under one volatility point.
- Lands in30-day figureIV rankon the ticker page
- no re-struck cover IV2 of 16
open_crush_restruck_unavailable - The comparable at-the-money volatility could not be read at the 10:00 anchor, so only the as-sold contract is available there.
- Lands inOpen
- P&L spread unadjusted1 of 16
pnl_spread_unadjusted - The P&L on this row is not adjusted for the cost of crossing the spread on the way out, so it flatters the exit slightly. Kept out of the headline hit rate rather than averaged in.
- Lands inShort-straddle P&Lon the ticker page, not this one
- reported off-session1 of 16
session_off_calendar - The report date is not an exchange session — some names report on Saturdays — so the window was resolved against the sessions bracketing it. The reading is correct; what differs is that the close-to-close move spans a weekend or a holiday.
- Lands inReport
Six companies whose reports traded like CPRT’s
The closest on all three numbers at the top of each company page. It compares how the reports traded, not the businesses.
CPRTthis pagepriced 5.7% · moved 4.1%−31%
APDAir Products and Chemicalspriced 5.2% · moved 4.3%−33%
TOLToll Brotherspriced 5.1% · moved 4.4%−29%
DRIDarden Restaurantspriced 5.3% · moved 4.4%−29%
JDJD.compriced 6.1% · moved 4.8%−31%
AAgilent Technologiespriced 5.6% · moved 4.9%−30%
NVONovo Nordiskpriced 5.9% · moved 4.5%−28%
- Reported · the fortnight to 5 Nov · settled, free
- Next 14 days · 523 names · symbol and date free
- ·AAONMon 9AMC—
- ·ABCLMon 9AMC—
- ·ACHRMon 9AMC—
- ·AIOTMon 9BMO—
- 11 of 523 shown · the next 14 days
The ranked columns are the board
Symbol and date are free for all 523 names. A subscription fills in the three columns held back on every locked row: the priced move, its richness against that name's own last twelve reports, and the ratio between them.
A free account adds today’s board rows and the full 14-day calendar, without these three columns.
Today's board rows and the full forward calendar are on your board.
- ·ALTGMon 9AMC—
- ·AMCXMon 9AMC—
- ·AMGMon 9BMO—
- ·AMPYMon 9AMC—
- ·AMRCMon 9AMC—
- ·ANNXMon 9BMO—
- ·APEIMon 9AMC—
| # | Name | Report | Priced move | Richness · own history | Ratio | Outcome |
|---|---|---|---|---|---|---|
| Reported · the fortnight to 5 Nov · settled, free | ||||||
| 1 | COPConocoPhillips | Nov 5BMO | 3.4% | 100 | 1.79 | inside |
| 2 | EOGEOG Resources | Nov 5AMC | 4.2% | 100 | 1.58 | inside |
| 3 | GEOGeo Group | Nov 5BMO | 9.8% | 100 | 1.31 | inside |
| 4 | GHGuardant Health | Nov 5AMC | 19.1% | 100 | 2.10 | inside |
| 5 | KTOSKratos Defense & Security Solutions | Nov 5AMC | 11.9% | 100 | 1.59 | inside |
| Next 14 days · 523 names · symbol and date free | ||||||
| · | AAON | Mon 9AMC | — | |||
| · | ABCL | Mon 9AMC | — | |||
| · | ACHR | Mon 9AMC | — | |||
| · | AIOT | Mon 9BMO | — | |||
12 of 523 shown · the next 14 days
The ranked columns are the boardSymbol and date are free for all 523 names. A subscription fills in the three columns held back on every locked row: the priced move, its richness against that name's own last twelve reports, and the ratio between them. A free account adds today’s board rows and the full 14-day calendar, without these three columns. Today's board rows and the full forward calendar are on your board. | ||||||
| · | ALTG | Mon 9AMC | — | |||
| · | AMCX | Mon 9AMC | — | |||
| · | AMG | Mon 9BMO | — | |||
| · | AMPY | Mon 9AMC | — | |||
| · | AMRC | Mon 9AMC | — | |||
| · | ANNX | Mon 9BMO | — | |||
| · | APEI | Mon 9AMC | — | |||
| · | APPS | Mon 9AMC | — | |||
How to read this page
- History table
- Its columns are explained right under it: What the columns mean ↑
- Coverage
- CPRT’s 16 reports. The board rows are the fortnight’s five richest settled reports, then the first of the next 523 names.
- Ratio
- The priced move over the name’s typical actual move.
- Markers
- Notes on a report’s data, counted in the data-quality grid with what each one touches.
A number looks wrong? Tell us what you expected and we’ll check it.Report a data issue
History is a record, not a forecast. Derived values only; no option prices are shown. Nothing here is investment advice.