© Ed Seykota, 2003 - 2005 ... Write for permission to reprint.

Ed Seykota's

Frequently Asked Questions

FAQ Index & Ground Rules  ...  Tribe Directory - How to Join

TTP - The Trading Tribe Process  ...  Glossary

  TTP Workshop  ...  Resources  ...  The Trading Tribe Book

TSP: Trading System Project  ...  Breathwork  ...  Charts


Continuous Contract

Reader Feedback



Mon, 29 Aug 2005


Contract Specifications

Hi Ed,

I’ve been popping into the TSP area occasionally and have noticed either an oversight or an issue that, up to now has not gotten addressed.

As the test applies to a S&P 500 futures contract and not basing the testing on the futures data for then trading the cash …

Using the formula

Position_Size = Budget / Risk_Per_Lot

Position_Size = (Equity * Heat) / (ATR * ATR_Multiplier)

In the example of the simulated trade…

To see how this works, scan down the metrics log to mid-September, 1982.

82-09-13-M slow=114.531 fast=114.094 Atr=3.408 - Eq=1000000.00
82-09-14-T slow=114.621 fast=114.467 Atr=3.335 - Eq=1000000.00
82-09-15-W slow=114.716 fast=114.844 Atr=3.270 + Eq=1000000.00
82-09-16-H slow=114.803 fast=115.182 Atr=3.225 + Eq=1000000.00

The fast average crosses above the slow average on 9/15/82 (See the + sign in the position column). Therefore, the system buys on the next open.

Again, look in the metrics log for the prices.

82-09-15-W OHLC:[ 124.30 125.05 122.40 124.10 ]
82-09-16-H OHLC:[ 124.05 125.60 122.80 123.45 ]
82-09-17-F OHLC:[ 123.20 124.25 122.15 122.55 ]

On 9/16 the open is 124.05 and the high is 125.60. The system awards an execution 50 percent of the way from the open to the high, or 124.82.

On 9/15 the ATR is 3.270. The ATR Multiplier is 5 so the Risk_Per_Lot is 5 * 3.27 = 16.35.

On 9/15 the Equity is 1,000,000 and the Heat (for the entire run) is 5% so the Risk_Budget is 5% of 1,000,000 or $50,000.

The Position_Size, then, is 50,000 / 16.35 = 3058.104

Rounding to the nearest 50, we get 3050.

The “Position Size” is using a point value of $1.00 as if it were trading cash shares. The trade taking place 82-09-16 in the futures contract “at that time” would have a point value of $500.00 for trading the S&P 500 futures contract.

To compute the Position Size the formula should be …

Position_Size = Budget / Risk_Per_Lot

Position_Size = (Equity * Heat) / ((ATR * ATR_Multiplier) * 500.00)

Using this I get a Position Size of 6.116 contracts prior to any rounding.

Also any trades and position sizing computations after Nov 1st 1997 have to use the formula, using a point value multiplier of $250.00 because the S&P contract size was halved. So the formula would be like this for trades and position sizing after Nov 1st 1997…

Position_Size = Budget / Risk_Per_Lot

Position_Size = (Equity * Heat) / ((ATR * ATR_Multiplier) * 250.00)

The same trade example if it were after 11/01/97 would result in a position size calculation of 12.232 contracts prior to any rounding.

This brings the issue of bringing the current contract specifications (as they exist now) to the beginning of the test. This is an error similar to that of bringing the portfolio selection process from the end of a simulation to the beginning of another simulation. This is because some futures instruments have altered their contract specs thru their history and can affect the price volatility and the respective currency “Value” of the volatility and thus any position sizing based upon it. The same problem applies for valuing the simulated trades that span the contract specification change. An example of this would be buying the S&P contract in 1995 and holding the trade to 2000. The resulting trade equity file, volatility of the equity file, position size and risk would be terribly in error given a contract specification change in the S&P contract in 1997. The correct way would be to end the trade (if the trade is still open at the date the contract changes) and seamlessly reinstate it with the new position size and value each of the 2 parts of the trade accordingly.

This all assumes the data file for the given contract was not somehow adjusted (properly/improperly) for the contract specification change.

Contract specification changes are very difficult to pin down except from the obvious ones. It’s possible to scan individual contract price files high and low fields automatically identifying the minimum tick and then see if that matches the min tick of the next further out contract price file. A change might flag and indicate a possible historical contract specification change. Not sure if it would flag them all however. This doesn’t seem to work on the S&P because the min tick quoted in some cases changed in mid stream (the same contract at the November 1st date) even though you are looking at the December 1997 contract.

Yes, I use $1 per handle lots to avoid the effect of variable contract specifications.