CFD Contract Expiry and Rollover: What Actually Changes
A position is opened on an index or an oil contract, nothing is touched for a fortnight, and one morning the open price in the terminal is different from the one that was there yesterday. No order was sent and no trade appears in the history to explain it.
What happened is a contract roll, and the entry that accompanies it is not a charge. Below is what expires, where the date is recorded, what the adjustment actually does, and the one behaviour that decides whether an attached stop survives the move.
Key takeaways
- The word rollover covers two unrelated things: the nightly financing on a cash contract, and the replacement of an expiring contract by the next one.
- A roll closes nothing you chose to close. The value of the position is unchanged at the moment it happens, which is why an adjustment entry has to exist.
- The expiry is a property of the symbol rather than an announcement, and the platform can switch a symbol to close-only before it goes.
- Whether an attached stop survives depends on the market the symbol belongs to, and the vendor documents the two cases differently.
- The chart of a rolled instrument is a stitched series, so a level marked before a roll is not a price inside the contract now open.
Table of contents
- Two Different Charges Share One Word
- Which CFDs Expire and Which Do Not
- Where the Expiry Date Actually Lives
- What the Cash Adjustment Does to Your Position
- Why Your Open Price Changes Without a Loss
- What Happens to a Stop or a Limit Across a Roll
- The Chart Is a Series No Contract Ever Traded
- Who This Page Is Not For
- Frequently Asked Questions
Two Different Charges Share One Word
Search for rollover and two subjects arrive wearing the same label, which is the first thing to separate.
One is the cost of carrying a position overnight on a contract that never ends. It is charged daily, it reflects the difference in funding between the two sides of the instrument, and it applies to spot currency pairs and to cash index and commodity contracts alike. That mechanism is set out in how a CFD is priced and funded and it is not the subject of this page.
The other is structural. Some contracts have a last day on which they can be held, and when that day arrives a position in them cannot simply continue. Either it is closed, or it is moved into the next contract in the series. That move is the roll, and it happens on a calendar rather than every night.
The two are easy to confuse because a broker statement can show both under similar wording, and because some providers use rollover for the nightly charge and contract rollover for the calendar event without ever saying that a reader might have only one of them.
The practical test is frequency. Something appearing every night is financing. Something appearing once, weeks apart, alongside a change to the open price, is a contract event.
Which CFDs Expire and Which Do Not
Whether a position can expire is decided by which product a broker built, not by the market it tracks. The same index is commonly offered twice.
A cash or spot version is designed to run indefinitely. It has no last trading day, and the cost of holding it is charged nightly for as long as the position is open.
A futures-based version tracks a specific dated contract. It has a last day, the holding cost is already inside the forward price rather than being billed each evening, and something has to happen to the position when the date arrives. Those dates also cluster, because several exchange-listed contract types share one quarterly expiration, which is the quarterly date when several contract types expire together.
Currency pairs sit outside this distinction for most retail traders, because spot forex has no contract month. Where the underlying really is a dated contract, the difference between the two products is set out in currency futures against spot forex.
Holding the exchange contract itself instead of a CFD written on it changes what a last trading day obliges you to do, and how a futures contract ends is compared with the CFD case on its own page.
| Question a holder needs answered | Cash or spot contract | Dated contract |
|---|---|---|
| Is there a last trading day | No | Yes |
| How the holding cost reaches you | Charged nightly | Priced into the contract |
| What happens on the date | Nothing, there is no date | Closed or rolled |
| Can the open price change without a trade | No | Yes, on the roll |
Where the Expiry Date Actually Lives
The date is often treated as something a broker announces, so the trader waits to be told. It is recorded on the instrument itself.
MetaTrader carries a start and an end date among the properties of every symbol, described in the vendor reference as the date of the symbol trade beginning and the date of the symbol trade end, and noted there as fields normally used by futures. A symbol with no dated contract behind it simply leaves them empty.
The same reference lists the trading modes a symbol can be in, and two of them matter here. One permits only the closing of positions, and one disables trading on the symbol altogether. A dated contract approaching its end can therefore stop accepting new positions while still allowing existing ones to be closed, without anybody being notified.
That is worth knowing before it happens rather than after. An instrument that refuses a new order while accepting a close is not malfunctioning and is not a platform bug; it is a symbol whose mode has changed. Rejections that come from a different cause entirely, the minimum distance rules, are covered under the stops and freeze levels.
Both fields are visible from the symbol specification in the terminal, which makes checking them a matter of seconds for anyone holding a dated contract.
What the Cash Adjustment Does to Your Position
Here is the part most explanations skip, and skipping it is why the entry gets read as a charge.
The expiring contract and the one replacing it are two different instruments and they trade at two different prices. That gap has nothing to do with the market moving; it exists because the two contracts settle on different dates.
If a position were simply moved across at the new price with nothing else done, the holder would gain or lose the size of that gap for no reason connected to their own decision. The adjustment exists to prevent exactly that. A debit or a credit equal to the difference is applied at the same moment, so the value of the position after the roll matches its value before.
Read that sequence carefully, because it settles the usual question. A negative adjustment is not money lost, and a positive one is not money made. Either one is the counterpart of an equal and opposite change in the price the position is measured from.
What the roll does cost is separate and worth asking a broker about directly: whether the spread is charged on the closing and reopening legs, and whether either leg is executed at a price different from the mid. Those are real costs and they are not the adjustment. Nor is the dividend adjustment booked on cash-priced index contracts, which offsets an ex-date fall rather than a contract change.
Why Your Open Price Changes Without a Loss
The visible symptom of the mechanism above is an entry price that is not the one you chose, and there is a documented reason the position still counts as the same position.
The vendor reference notes that the ticket identifying a position usually matches the order that opened it, except where the ticket is changed by a service operation on the server, and gives re-opening as the example. It also names a separate identifier that survives such an operation and can be used to trace the position back to the order that started it.
So the platform is deliberately built to move a position through a re-opening while keeping it recognisable as one continuing position. The open price is refreshed to the new contract; the identity is not.
For record keeping this has one practical consequence. A profit figure read against the current open price is measured from the new contract and not from the price you originally chose, so the number in front of you and the number you remember can both be correct.
Anyone reconstructing what happened should work from the account history rather than the position line, because the history holds the adjustment entry and the position line only holds the result of it.
What Happens to a Stop or a Limit Across a Roll
An attached stop loss and take profit are absolute prices. When the contract underneath them is replaced, something has to be decided about them, and the vendor documentation decides it by market type rather than by a single rule.
For over-the-counter markets, which is where retail forex and most broker-offered futures products sit, the documentation states that carrying a position into the following trading day leaves the stop loss and take profit levels exactly as they were, and says so explicitly for the case where the carry is performed by re-opening.
For exchange markets, the same documentation states the opposite: carrying a position into the following trading day resets those levels, as does transferring it to another account or taking it through to delivery.
The consequence is not symmetric, and the over-the-counter case is the one that quietly matters. A level that stays where it was, on a contract that now trades somewhere else, is no longer the distance from the market that was chosen when it was placed. It has not been cancelled and it has not been moved, which is precisely why it is easy to miss.
The check is short and belongs in the same session as the roll: open the position, compare the stop and target against the current price of the contract now held, and reset them to the distance actually intended. What each of those order types is meant to do in the first place is set out in pending and attached orders.
Timing the check needs one more thing, which is the clock the platform is using. The trading day that the documentation refers to is the server day, not the local one, and that distinction is covered under the broker server clock.
The Chart Is a Series No Contract Ever Traded
The last consequence belongs to anyone who marks levels, and it is structural rather than a matter of settings.
The same gap the adjustment neutralises inside an account is also present on the chart, where nothing neutralises it. A years-long chart of a dated instrument cannot be one contract, so successive contracts are stitched together and every joint carries a price step.
A support level marked eight months ago is therefore not a level in the instrument now open, and the difference is the accumulated size of every roll in between. Why that series exists and what it does to a long-run measurement is set out in full under currency futures against spot forex.
The point specific to a broker product is narrower. Where the same market is offered as both a cash contract and a dated one, only one of the two charts has joints in it, and a level carried from one product to the other is being moved between two different price records.
Who This Page Is Not For
Anyone trading only spot currency pairs has no expiring contract and no roll to plan for. The nightly financing charge applies, and it is a different subject with a different page.
Anyone looking for the date a particular contract expires will not find it here. Dates are set by the exchange behind the underlying and republished by each broker for its own product, so the only reliable answer is the symbol specification in your own terminal or the contract details your broker publishes.
And anyone treating a rollover adjustment as a hidden fee to be avoided is fighting the wrong thing. The adjustment is what keeps the roll neutral. The costs worth comparing between brokers are the execution costs on the two legs, and whether the product needed to be a dated one at all.
Frequently Asked Questions
Do all CFDs have an expiry date?
No. Cash or spot contracts are built to run indefinitely and carry no last trading day; their holding cost is charged nightly instead. Contracts based on a dated future do expire, and the same market is often offered in both forms, so the answer depends on which product was opened rather than on which index or commodity it tracks.
Is a rollover adjustment a fee?
No. It offsets the price gap between the expiring contract and the one replacing it, so the value of the position is the same immediately after the roll as it was immediately before. A debit is not a loss and a credit is not a gain; each is matched by an equal change in the price the position is measured from. Execution costs on the two legs are a separate question worth asking a broker directly.
Why did my CFD open price change without a trade?
Because the position was moved into a new contract that trades at a different price. The platform is built for this: the vendor reference notes that a position ticket can be changed by a service operation such as re-opening, while a separate identifier keeps the position traceable to the order that started it. The entry price is refreshed to the new contract and the position continues.
What happens to a stop loss when a contract rolls?
It depends on the market the symbol belongs to. The vendor documentation states that on over-the-counter markets, carrying a position into the following trading day leaves the stop loss and take profit levels exactly as they were, including where the carry is performed by re-opening, while on exchange markets those levels are reset instead. A level left in place on a contract that now trades elsewhere is no longer the distance from price that was intended, so it should be checked and reset deliberately.
Where can I see when a CFD contract expires?
In the symbol specification. MetaTrader records a trade start date and a trade end date among the properties of each symbol, both noted in the vendor reference as fields normally used by futures, and leaves them empty where no dated contract sits behind the instrument. The same properties include trading modes that permit closing only, or disable trading on the symbol, which is how a contract stops accepting new positions before it goes.
Sources checked 6 August 2026: MetaQuotes, MQL5 reference, symbol properties, for the symbol trade start and trade end dates recorded against every instrument and noted as fields normally used by futures, and for the symbol trading modes that permit only the closing of positions or disable trading on the symbol. MetaQuotes, MQL5 reference, position properties, for the note that a position ticket can be changed by a service operation on the server such as re-opening, and for the separate identifier that traces a position back to the order that opened it. MetaQuotes, MetaTrader 5 platform help, trading concepts, for the rule that carrying a position into the following trading day leaves stop loss and take profit levels untouched on over-the-counter markets, including where the carry is performed by re-opening, and resets them on exchange markets. No contract expiry date appears on this page: both exchange contract-specification pages checked returned an access error to a browser request on 6 August 2026, so no calendar could be verified and none is stated. Every mechanism described here was read at the vendor rather than in a third-party guide.
Disclaimer: This article is educational only and is not investment advice. Contract treatment differs between brokers and between regulated entities of the same broker, so confirm the product specification and the roll policy for your own account before relying on any of it. Leveraged trading carries risk: the sum at stake can be lost in full.
