3  Futures Markets

Futures contracts are among the oldest and most important derivative securities, with organized futures trading dating back centuries. These contracts are standardized agreements to buy or sell an asset at a predetermined price on a future date. They serve critical functions in modern financial markets, from price discovery and risk management to speculation and arbitrage.

The predetermined price in the previous paragraph is the price that the traders agreed upon when the contract was bought by one party and sold by the other and is called the futures price. The futures price is determined by the market, like stock and option prices. Traders can submit either limit orders or market orders to buy or sell.

Futures trading is similar to options trading. A clearinghouse stands as the counterparty to each trade, guaranteeing the fulfillment of the contract. The clearinghouse imposes margin requirements to ensure that traders have the financial wherewithal to meet their obligations. There is no pre-existing supply of futures contracts. Contracts are created by trade. The number of outstanding long contracts is always equal to the number of short contracts and is called open interest. A contrast with options markets is that both buyers and sellers of futures contracts have future obligations, and both parties must post margin. In options markets, only the seller of an option has a future obligation and must post margin.

The buyer of a futures contract (who is said to be long the contract) has the obligation to accept delivery of the underlying asset at the futures expiration date and to pay the futures price at which he bought the contract. The seller of a contract (who is said to be short the contract) has an obligation to deliver the underlying asset at the futures price at the futures expiration date. For example, the buyer of a corn contract will get corn and pay for it (if she does not offset the obligations by selling a contract prior to the contract’s expiration) and the seller of a corn contract will deliver corn and receive payment (if he does not offset the obligations by buying a contract prior to the contract’s expiration).

Like options, most traders unwind positions by making offsetting trades rather than holding positions to expiration. For example, a corn farmer might sell a corn futures contract at the price of $5.00 per bushel. The farmer can deliver on the contract and receive $5.00. However, the farmer could instead sell the contract at the market futures price, which will be near the spot price when the contract is near expiration. Suppose for example that the spot price of corn is near $4.00 per bushel near the contract’s expiration. Then the futures price will be also be near $4.00. As an alternative to delivering on the futures contract at $5.00, the farmer could instead sell the futures contract at $4.00, canceling the delivery obligation. In this scenario, the farmer makes $1.00 per bushel from selling the contract at $5.00 and buying it at $4.00. The farmer can then sell her corn in the spot market for $4.00. Combined with the $1.00 profit on the futures contract, the net proceeds for the farmer are again $5.00 per bushel. The fact that futures prices must be near spot prices at expiration is called spot-futures convergence. It results from the simple fact that a futures contract for delivery in the very near term is essentially the same as a spot contract.

The delivery terms on futures contracts are standardized and specified by the exchange. The exchange designates a delivery location and a delivery date. The exchange also specifies the quantity and quality of the underlying asset that must be delivered. The specifications of the corn futures contract on the CME gives a good sense for how this works.

Some futures contracts are cash settled. For such contracts, there are no provisions for physical delivery. Instead, contracts that are held to expiration are settled based a formula tied to an underlying asset at the time of expiration. For example, the e-mini S&P 500 futures contract at the CME is cash settled. The contract is settled based on the value of the S&P 500 index at the time of expiration. This eliminates the need to deliver or receive delivery of the 500 stocks that make up the index. The “quantity” specification for cash settled contracts is a multiplier that determines the dollar value of a contract. The e-mini S&P 500 contract has a multiplier of 50 dollars per unit of the index.1 If someone buys a contract at a futures price of 6000 and holds to expiration and the index is at 6500 on the expiration date, then that trader makes 50 \(\,\times\,\) (6500 - 6000) \(\,=\,\) 250,000 dollars profit on the trade.

Futures contracts in the modern sense began trading in the United States in 1851, but cash-settled contracts did not begin trading until 1981.2 Part of the complication with introducing cash-settled contracts is that they blur the line between trading and gambling. The buyer and seller of an S&P 500 futures contract are clearly betting on how the S&P 500 index will perform. The buyer wins if the index finishes above the futures price, and the seller wins otherwise. There are other cash settled contracts that do not even involve an underlying asset. For example, there are weather contracts that are cash settled based on the number of heating degree days in a particular time frame. The distinction that has been drawn between legal trading of cash-settled futures contracts and possibly illegal gambling is that futures contracts must satisfy legitimate risk-management needs of the part of some market participants. For example, a fund manager who wants to reduce her stock market exposure at a minimal trading cost can sell S&P 500 futures contracts to hedge the fund’s stock portfolio.

3.1 Margin and Marking to Market

One of the most distinctive features of futures trading is the daily settlement or marking to market process. This mechanism virtually eliminates counterparty risk and enables leverage while maintaining market integrity.

The Daily Settlement Process

Each trading day, the exchange establishes a settlement price (based on end-of-day transaction prices) for each futures contract. All open positions are marked to this price. The daily profit or loss on each position is calculated and immediately transferred between accounts.

As an example, suppose you buy one e-mini S&P 500 futures contract at 6,000 and the following happens:

  • Day 1: Settlement price = 6,010 → Gain = (6,010 - 6,000) × $50 = $500 (credited to your account)
  • Day 2: Settlement price = 5,990 → Loss = (5,990 - 6,010) × $50 = $1,000 (debited from your account)
  • Day 3: Settlement price = 6,020 → Gain = (6,020 - 5,990) × $50 = $1,500 (credited to your account)

At the end of day 3, you have had a net sum of $1,000 credited to your account. If you close your position by selling the contract at the end of day 3, you walk away with a $1,000 gain, which is simply the increase in the futures price over the time you held the contract (6,020 - 6,000) times the $50 multiplier.

Margin Requirements

The exchange determines a minimum amount of margin required to open a futures position. This is called the initial margin. The initial margin is typically 3-12% of the contract value. The exchange also determines a minimum amount of margin required to keep a futures position open. This is called the maintenance margin. The maintenance margin is usually 75-80% of the initial margin. If the account balance falls below the maintenance margin, a margin call occurs. The margin call is a demand for additional margin to bring the account balance back to the initial margin level. If the trader fails to meet the margin call, the position will be liquidated. Brokers can require their clients to post and maintain higher margins that the exchange’s minimums.

Trading a futures contract with 10% margin means being levered 10 to 1. If the futures price moves 1% against the trader, the trader will lose 10% of the margin deposit. If the futures price moves 1% in favor of the trader, the trader will gain 10% of the margin deposit. These high leverage ratios are feasible because of the marking to market process.

3.2 The Expectations Hypothesis

The expectations hypothesis states that futures prices represent the market’s unbiased expectation of future spot prices. This is a simple theory of the determination of futures prices and provides a convenient way to infer investors’ beliefs about the future from currently observable prices.

The motivation for the hypothesis is the idea that, if the futures price were lower than the expected spot price, then traders “should” buy the futures contract and plan to sell the spot asset when delivered on the futures at maturity. This strategy has a positive expected profit when the futures price is lower than the expected spot price. This buying activity should drive up the price of the futures contract, until it converges to the expected spot price. Symmetrically, investors “should” sell the futures if its price is above the expected spot price, planning to buy the spot asset at the futures maturity to cover the delivery obligation on the futures, and this selling activity should cause the futures price to fall, until it converges to the expected spot price. Thus, in equilibrium, futures prices “should” equal the expected spot price.

All of the quotation marks around “should” in the previous paragraph reflect the fact that the theory presumes risk neutrality on the part of a large enough group of investors to move the futures price to the expected spot price. If investors are risk averse, then they may buy a limited quantity of the futures when its price is low relative to the expected spot price and sell a limited quantity of the futures when its price is high relative to the expected spot price, generating an expected profit as described in the previous paragraph. However, risk averse investors will weigh the expected profit against the risk, considering their other investments as well, and only allocate a limited amount of capital to the bet. This amount of capital may not be enough to move the futures price fully to the expected spot price. Empirically, futures prices seem to frequently deviate from expected spot prices in significant ways.

From the general theory of asset pricing, which is developed in this book, the difference between the futures price and the expected spot price depends on the covariance of the spot price with market risk factors. For example, the Capital Asset Pricing Model asserts that it depends on the covariance of the spot price with the aggregate market return.

Despite the presence of a risk premium, the expectations of traders regarding future spot prices are undoubtedly a prime determinant of futures prices. Usually, they are also a prime determinant of today’s spot prices. The linkage between today’s spot price and today’s futures prices is known as spot-futures parity.

3.3 Spot-Futures Parity

In contrast to the expectations hypothesis, which predicts a relationship between today’s futures price and the expected future spot price, spot-futures parity is a relationship between today’s futures price and today’s spot price. The foundation for spot-futures parity is arbitrage activity (making riskless profits) rather than making positive expected return but risky investments (as for the expectations hypothesis). The arbitrage involves either (i) buying the spot asset and simultaneously selling a futures contract, or (ii) borrowing and selling the spot asset and simultaneously buying a futures contract. The exact relationship between the spot and futures price depends on the differences between holding the underlying asset and being long a futures contract. There are four potential differences, which are normally grouped into two categories.

  • Cost of carry:
    • The cost of carry is the cost of holding the underlying asset over a period of time. There are no costs of owning a futures contract (ignoring the margin account).
    • If we hold the asset, it ties up funds, and we incur an opportunity cost of the foregone interest that could be earned by depositing the funds instead.
    • There can be significant storage costs involved in holding commodities.
  • Convenience yield:
    • There can also be advantages to holding the underlying asset. These are collectively called the convenience yield.
    • If the underlying asset pays dividends or other cash flows, then these are part of the “convenience” of holding the spot asset.
    • For commodities, there can be other advantages to holding the spot asset today rather than getting it in the future. These may be difficult to quantify but can be very real. For example, during a time of strained crude oil supply and elevated prices that is expected to be temporary, oil companies will not be indifferent about having crude now versus having it later. It might be possible to borrow crude with a commitment to pay it back later, but to arrange such a loan at that time, you would have to commit to paying back substantially more than you borrowed. This would be compensation to the lender for foregoing the “convenience” of having crude now versus later.

The spot futures-parity formula is

\[F = \mathrm{e}^{(r-q)T}S\]

where

  • \(F=\,\) futures price,
  • \(S=\,\) current spot price,
  • \(T\)=,$ time to expiration,
  • \(r=\,\) cost of carry expressed as a continuously compounded rate,
  • \(q=\,\) convenience yield expressed as a continuously compounded rate.

Arbitrage When Parity Is Violated

To see why the formula must be true, first consider the simplest case in which there are no storage costs, no dividends or other cash flows, and no other forms of convenience yield, so the opportunity cost of foregone interest is the only factor present. In this case, \(r=\,\) risk-free interest rate, and \(q=0\).

1. Buy spot and sell futures:

Let’s suppose first that spot-futures parity is violated in the direction \(F>\mathrm{e}^{rT}S\) and see how that can be arbitraged. The arbitrage is to buy the cheaper side of the inequality and sell the more expensive side (buy low and sell high, of course). So, this means that we buy the underlying asset. We do that by borrowing \(S\) dollars. We simultaneously sell the futures contract at price \(F\). At expiration, we deliver the spot asset that we bought to fulfill the futures contract and receive \(F\). We will at this time owe \(\mathrm{e}^{rT}S\) on the loan, and we can repay the loan and pocket the surplus \(F-\mathrm{e}^{rT}S\).

2. Sell spot and buy futures:

Now suppose that spot-futures parity is violated in the direction \(F<\mathrm{e}^{rT}S\). Again, we buy low and sell high. Here, that means that we buy the futures contract and sell the underlying asset. We sell the underlying asset by borrowing it and then selling (called short selling). Later, we have to return it to whomever we borrowed it from. Because the lender will not be missing any dividend payments or other cash flows and there is no other convenience of holding the underlying asset, we assume we can cover the loan of the asset by returning the same amount that we borrowed. In practice, the lender will charge a small fee, but we ignore that here. Because we bought the futures contract, we pay \(F\) at maturity, accept delivery of the asset, and then deliver the asset to the lender. We earn interest on the proceeds from selling the asset, so we net \(\mathrm{e}^{rT}S - F\).

This type of arbitraging activity will move market prices until spot-futures parity holds. It is an activity in which institutions regularly engage. It is thus safe to assume that spot-futures parity always holds to a reasonably high degree of approximation.

This reasoning extends directly to including storage costs, which are clearly another expense of holding the underlying asset, when such costs are nonnegligible. Likewise, dividends received or other advantages of holding the underlying asset rather than owning a futures contract act in the opposite direction of carrying costs and so should be subtracted from the cost of carry. This produces the general spot-futures parity formula.

Forward Curves

The relationship between the contract maturity and the futures price is known as the forward curve. The spot-futures parity formula tells that the futures price should depend on the contract maturity \(T\) based on the factor \(\mathrm{e}^{(r-q))T}\).

Gold is an asset that has negligible storage costs, does not pay dividends, and has no other forms of convenience yield. Thus, \(r-q\) for gold is just the risk-free interest rate. Consequently, spot-futures parity for gold states that gold futures prices are higher than spot prices and increase with maturity. (fig:forward_curves1?) presents the gold forward curve at a single point in time. The upward slope reflects the fact that the future value factor \(\mathrm{e}^{rT}\) is larger for larger \(T\).

For financial assets, such as stock portfolios, the only cost of carry is the interest rate, and the only convenience yield is the dividend yield. Consequently, in the spot-futures parity formula for financial assets, \(r-q\) is the difference between the interest rate and the dividend yield.
Whether \(r-q\) is positive or negative determines whether futures prices are higher than spot prices (and increase with maturity) or whether the opposite is true.

For currency futures, the dividend yield (by which we mean in general the cash flow earned from holding the underlying asset) is the interest rate that can be earned by investing the currency. Thus, for currency futures, \(r-q\) is the difference between the domestic interest rate and the foreign interest rate. (fig:forward_curves1?) presents the forward curves for the Japanese yen and Mexical peso at a single date. On that date, the dollar interest rate was higher than the yen interest rate - so \(r-q>0\) and the forward curve was upward sloping - and lower than the peso interest rate - so \(r-q<0\) and the forward curve was downward sloping. (fig:forward_curves1?) also presents the forward curve for S&P 500 futures at a time when interest rates were lower than the dividend yields on stock, so \(r-q<0\) and the forward curve was downward sloping. When interest rates are higher, the S&P 500 forward curve is upward sloping.

Code
import pandas as pd
from dateutil.relativedelta import relativedelta
import plotly.graph_objects as go
from plotly.subplots import make_subplots

df = pd.read_csv('https://www.dropbox.com/s/832hth1es40f4g7/newfutures.csv?dl=1', index_col=0)
df = df[df.date>='2010-01-01']
df.date = pd.to_datetime(df.date)

# Function to add months and set day to 15th
def add_months_and_set_day(date, months_to_add):
    new_date = date + relativedelta(months=int(months_to_add))
    new_date = new_date.replace(day=15)
    return new_date

# Apply the function to create the new column
df['new_to_date'] = df.apply(
    lambda row: add_months_and_set_day(row['date'], row['months past front month']), 
    axis=1
)
df = df.reset_index(drop=True).set_index(['code', 'date', 'new_to_date']).settle

yen = df.loc[('CME_JY', '2022-06-01')]
peso = df.loc[('CME_MP', '2022-06-01')]
gold = df.loc[('CME_GC', '2022-06-01')]
sp500 = df.loc[('CME_ES', '2020-06-01')]

# Create figure with 2x2 subplots with horizontal spacing
fig = make_subplots(
    rows=2, cols=2,
    subplot_titles=('Gold (2022-06-01)', 'S&P 500 (2020-06-01)', 
                    'Japanese Yen (2022-06-01)', 'Mexican Peso (2022-06-01)'),
    specs=[[{"secondary_y": False}, {"secondary_y": False}],
           [{"secondary_y": False}, {"secondary_y": False}]],
    horizontal_spacing=0.12  # Add horizontal spacing between columns
)

# Add Gold trace (top left)
fig.add_trace(
    go.Scatter(x=gold.index, y=gold.values, 
               name='Gold',
               mode='lines+markers',
               hovertemplate='%{x|%b %Y}<br>Price: %{y}<extra></extra>'),
    row=1, col=1
)

# Add S&P 500 trace (top right)
fig.add_trace(
    go.Scatter(x=sp500.index, y=sp500.values, 
               name='S&P 500',
               mode='lines+markers',
               hovertemplate='%{x|%b %Y}<br>Price: %{y}<extra></extra>'),
    row=1, col=2
)

# Add Yen trace (bottom left)
fig.add_trace(
    go.Scatter(x=yen.index, y=yen.values, 
               name='Japanese Yen',
               mode='lines+markers',
               hovertemplate='%{x|%b %Y}<br>Price: %{y}<extra></extra>'),
    row=2, col=1
)

# Add Peso trace (bottom right)
fig.add_trace(
    go.Scatter(x=peso.index, y=peso.values, 
               name='Mexican Peso',
               mode='lines+markers',
               hovertemplate='%{x|%b %Y}<br>Price: %{y}<extra></extra>'),
    row=2, col=2
)

# Update layout - set width=None for auto-sizing
fig.update_layout(
    height=600,
    width=None,  # Auto-adjust width to container
    showlegend=False,
    autosize=True,  # Enable responsive sizing
    template='plotly_white',  # Use plotly white template
    margin=dict(t=60)  # Add top margin to prevent overlap with plotly icons
)

# Update axes labels with smaller font
fig.update_xaxes(title_text="Contract Date", row=2, col=1)
fig.update_xaxes(title_text="Contract Date", row=2, col=2)
fig.update_yaxes(title_text="Futures Price", row=1, col=1)
fig.update_yaxes(title_text="", row=1, col=2)
fig.update_yaxes(title_text="Futures Price", row=2, col=1)
fig.update_yaxes(title_text="", row=2, col=2)

fig.show()
Figure 3.1

Spot-futures parity for commodities is more complex than for financial assets, because of storage costs and convenience yields. Because the convenience yield by definition is never negative, the spot-futures parity formula gives us \(F \leq \mathrm{e}^{rT}S\), where, for commodities, \(r\) is the interest rate plus the storage cost rate. The difference between the futures price \(F\) and \(\mathrm{e}^{rT}S\) depends on the convenience yield \(q\) and the contract maturity \(T\). We generally have no direct measure of the convenience yield except for this difference, so the spot-futures parity formula for commodities, while true and a useful concept, may have little predictive power. An additional complication is that storage costs can vary considerably over time. In particular, they are cyclical for agricultural commodities, increasing at harvest time and falling afterwards and also cyclical for other commodities (for example, natural gas) for which demand is cyclical and storage is very costly.

As a result of these factors, forward curves for commodities are in general more complex than forward curves for financial assets.

Code
crude1 = df.loc[('CME_CL', '2020-04-20')]
crude2 = df.loc[('CME_CL', '2022-03-08')]
gas = df.loc[('CME_NG', '2018-06-08')]
corn = df.loc[('CME_C', '2018-06-08')]


# Create figure with 2x2 subplots with horizontal spacing
fig = make_subplots(
    rows=2, cols=2,
    subplot_titles=('Crude (2020-04-20)', 'Crude (2022-03-08)', 
                    'Natural Gas (2018-06-08)', 'Corn (2018-06-08)'),
    specs=[[{"secondary_y": False}, {"secondary_y": False}],
           [{"secondary_y": False}, {"secondary_y": False}]],
    horizontal_spacing=0.12  # Add horizontal spacing between columns
)

# Add Gold trace (top left)
fig.add_trace(
    go.Scatter(x=crude1.index, y=crude1.values, 
               name='Crude (2020-04-20)',
               mode='lines+markers',
               hovertemplate='%{x|%b %Y}<br>Price: %{y}<extra></extra>'),
    row=1, col=1
)

# Add S&P 500 trace (top right)
fig.add_trace(
    go.Scatter(x=crude2.index, y=crude2.values, 
               name='Crude (2022-03-08)',
               mode='lines+markers',
               hovertemplate='%{x|%b %Y}<br>Price: %{y}<extra></extra>'),
    row=1, col=2
)

# Add Yen trace (bottom left)
fig.add_trace(
    go.Scatter(x=gas.index, y=gas.values, 
               name='Natural Gas (2018-06-08)',
               mode='lines+markers',
               hovertemplate='%{x|%b %Y}<br>Price: %{y}<extra></extra>'),
    row=2, col=1
)

# Add Peso trace (bottom right)
fig.add_trace(
    go.Scatter(x=corn.index, y=corn.values, 
               name='Corn (2018-06-08)',
               mode='lines+markers',
               hovertemplate='%{x|%b %Y}<br>Price: %{y}<extra></extra>'),
    row=2, col=2
)

# Update layout - set width=None for auto-sizing
fig.update_layout(
    height=600,
    width=None,  # Auto-adjust width to container
    showlegend=False,
    autosize=True,  # Enable responsive sizing
    template='plotly_white',  # Use plotly white template
    margin=dict(t=60)  # Add top margin to prevent overlap with plotly icons
)

# Update axes labels with smaller font
fig.update_xaxes(title_text="Contract Date", row=2, col=1)
fig.update_xaxes(title_text="Contract Date", row=2, col=2)
fig.update_yaxes(title_text="Futures Price", row=1, col=1)
fig.update_yaxes(title_text="", row=1, col=2)
fig.update_yaxes(title_text="Futures Price", row=2, col=1)
fig.update_yaxes(title_text="", row=2, col=2)

fig.show()
Figure 3.2

3.4 Options on Futures

Many exchanges trade options on futures contracts, creating a derivative on a derivative. A call option on a futures contract is the right to buy the futures contract at the strike. A put option is the right to sell the futures contract at the strike. Compared to trading options on the underlying asset, options on futures benefit from the liquidity of the futures market and the leverage present in futures. Moreover, they allow traders to avoid the issues of physical delivery and storage that are associated with options on the underlying asset.

Exercise of an option of a futures contract creates a long (for a call) or short (for a put) position in the futures contract for the party that exercises. When an option is exercised, the clearinghouse randomly selects someone who has sold the option and assigns to them the opposite contract: a short (for the seller of a call) or long (for the seller of a put) position in the futures contract. Both parties are immediately marked to market, and there are corresponding cash transfers based on the strike of the futures option and the current market futures price.

An example should make this clearer. Suppose a trader buys a call option on corn futures with a strike of $5.00 (per bushel). The trader later exercises the option when the corn futures price is $5.50. The trader will be assigned a long futures contract, marked to market at $5.50 and will receive in cash the $0.50 difference between the futures price and the strike price. The option writer who is selected by the clearinghouse will have $0.50 deducted from her margin account and will be assigned a short futures contract at $5.50. If they desire to do so, both the party who exercised and the option writer can trade out of their futures contracts at the market price and walk away with the $0.50 gain or loss and no further obligations.


  1. The term “e-mini” is an historical artifact. When the S&P 500 futures contract was first introduced, it had a multiplier of $500. When the index rose, this was later reduced to $250. The e-mini was simultaneously traded with a multiplier of $50. Currently, the e-mini contract has the largest multiplier of any S&P 500 contract at the CME (there is another contract with a multiplier of $5, called the “micro e-mini”).↩︎

  2. Millo, Y., 2007, “Making Things Deliverable: The Origins of Index-Based Derivatives”, Sociological Review, vol. 55.↩︎