[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Back-Adjusting Futures Contracts



PureBytes Links

Trading Reference Links

Hi Dennis,

    Thanks for forwarding me this note. This not only
clarified my question but also gave me explainations
about some other things I was noticing in my trading
system backtest results.

To Henri ,

    Sorry for replying to you very harshly. However
you will need to realise that not all people on this
list are at the same level of knowledge that you are
at. They can be at different learing phases and hence
may ask simple questions.

Regards,

Sudhir

--- DH <catapult@xxxxxxxxxxxxxxxxxx> wrote:

> This comes up every once in a while. Here's the
> paper Bob Fulks posted 
> a while back.
> 
> -- 
>   Dennis
> 
> -------------------
> 
> Back-Adjusting Futures Contracts
> Bob Fulks
> May 11, 2000
> 
> 
> Introduction
> 
> To backtest a trading system for trading futures
> contracts, we would
> like to have a long duration of price data on which
> to test our
> trading system. The problem is that futures
> contracts expire
> periodically and the data for each contract lasts
> only a few weeks or
> months. So we need some way to create a long series
> of price data
> from a sequence of contract prices. This paper
> discusses the various
> ways it can be done and explores the advantages and
> disadvantages of
> each method. My experience is with only the S&P
> futures contract so I
> will use it as an example although the same
> principles apply to any
> future contract.
> 
> The Problem
> 
> The issue arises because the pricing of a futures
> contract is
> slightly different than the price of the underlying
> commodity since
> it includes other factors. This difference is called
> the "premium".
> For the S&P Futures this difference includes the
> cost of interest and
> the dividends of the S&P stocks.
> 
> The theoretical value is called the "fair value". It
> is the price at
> which investing in the underlying commodity has the
> same return as
> investing in the futures contract. For agricultural
> futures, the
> difference can include such things as storage costs,
> etc. For the S&P
> futures it is calculated as follows:
> 
>     Futures_Price = Cash_Price * (1 + d * (i - v) /
> 365)
> 
> where:
> 
>     i = interest rate for fair value calculation =
> about 5% now
> 
>     v = dividend rate of the S&P cash index = about
> 1% now
> 
>     d = days_to_expiration
> 
> At rollover, the days_to_expiration number jumps,
> causing the jump in
> the premium. With today's values, the jump in price
> is about 1%, or
> about 12 points on the S&P futures contract. In the
> examples that
> follow, for simplicity, we will use the 12 points as
> the size of the
> jump at expiration, keeping in mind that the actual
> number does
> depend upon the level of the index, and interest and
> dividend rates.
> 
> The interest rate term arises because with the
> futures contract, we
> are using leverage for which we are not paying
> interest. Thus, the
> cost of the interest gets built into the price of
> the futures
> contract.
> 
> The dividend term arises because with futures, we do
> not get the
> dividends that we would have gotten if we had bought
> all the stocks
> in the S&P. (This is approximated as an average but
> since dividends
> occur at different times, an accurate simulation
> would include the
> exact expected dividends and when they were paid.)
> 
> The actual price difference between the futures
> contract and the
> underlying can and does deviate from this
> theoretical value on a
> minute-by-minute basis. But the difference is
> usually very short
> lived because arbitrage players step in to buy one
> and sell the other
> and this activity keeps the relative prices closely
> tracking fair
> value. There are often fairly big differences in the
> reported daily
> "closing prices" since the futures markets close at
> a different time
> than the cash market and a lot can happen between
> the close of the
> two markets.
> 
> Thus, we have a discontinuity in the price of the
> futures contract at
> the expiration that must be accounted for in some
> way for backtesting.
> 
> Possible Methods
> 
> The primary alternatives are:
> 
> 1. Splice contracts together without price
> adjustment.
> 
> This causes large price jumps at splice points. The
> price jumps cause
> two problems.
> 
>    > They distort the operation of most trading
> indicators and automatic
>      trading systems. For example a 14-day simple
> moving average would
>      mix some of the prices from the old contract
> and the higher prices
>      from the new contract giving a distorted
> picture of what is happening.
> 
>    > They can cause large trading profits and losses
> to be included in
>      backtest results that a trader would not have
> experienced in actual
>      trading. For example, if our system was long
> one contract before
>      the expiration and we sold after expiration,
> then the system would
>      include the 12-point artificial jump in price
> for an apparent
>      profit of 12 * 250 = $3000. If we didn't notice
> this, we might
>      think our trading system was very profitable.
> Even worse, if we
>      were optimizing the parameters of our trading
> system, some of the
>      parameter values might cause us to hold the
> position through the
>      transition and some might not, causing big
> discontinuities in the
>      results and causing us to get false optimum
> parameter values.
> 
> As a result of these problems, this method is
> unsuitable for most
> backtesting.
> 
> 2. Close out trades at "roll over" to the new
> contract at expiration.
> 
> This is what we have to do in real life at the end
> of a contract. To
> do this, we exit the old position and re-enter a new
> position in the
> new contract. But this is trickier than it appears
> in backtesting
> since we would have to make sure that any indicators
> or averages we
> are using do not simultaneously look at some old and
> some new price
> values.
> 
> Some people prevent this by using "bridge data". For
> example, if your
> trading system uses 14 days of past data as part of
> its calculations,
> you would need to artificially create 14 days of
> bridge data from the
> old contract, increased in price by the 12 points,
> to get the trading
> system initialized at the new contract values. This
> can be difficult
> to do if we are trying to test over a long price
> series including
> several contracts.
> 
> 
=== message truncated ===