Volatility-Based Position Sizing for Back-Adjusted Futures
Summary
This document asks how to size trades in back-adjusted continuous futures data when historical prices can be near zero or negative. It contrasts two attempted approaches: scaling position size inversely with price subject to a unit cap, and allocating a fixed dollar amount by dividing that amount by entry price. In the examples, the first approach yields inconsistent dollar exposures, while the second produces extreme unit sizes and outlier profits around very low adjusted prices.
The accepted response points to Average True Range as a basis for adjusting position size dynamically. That shifts sizing toward observed price movement rather than the adjusted price level, which can be distorted by the back-adjustment process. The document does not include the promised calculations or specify a complete sizing rule, ATR lookback, risk budget, or treatment of actual futures contract multipliers. Therefore, it identifies a direction for further work rather than providing a fully reproducible position-sizing method.
Key ideas
- Back-adjusted continuous futures series can contain near-zero or negative historical prices.
- Inverse-price sizing can create extreme unit counts at very low adjusted prices.
- A fixed dollar allocation can produce highly inconsistent trade outcomes when price levels are distorted.
- The accepted response recommends using ATR to vary position size with market movement.
- The document omits the ATR sizing formula and the contract-level details needed for implementation.
Tags
Full text
# How to correctly postion size back adjusted 'continuous' data while back testing? # How to correctly postion size back adjusted 'continuous' data while back testing? I'm running into issues using back-ad'justed continuous data from IQFEED while back-testing. For example, with my data, HO is priced at \$-0.002 and at a later date HO is trading around \$2.50. If the goal is to enter a position at a fixed \$ size, how can sizing be normalized so that profits aren't so skewed from trade to trade? ``` Direction EntryDate ExitDate Entry Price Exit Price Size Long 2022-01-24 10:00:00 2022-09-27 07:00:00 -0.0021989 0.132080369 ? Long 2022-09-19 10:30:00 2022-09-21 03:00:00 2.03671785 2.251 ? ``` • Normalization Approach 1 - The first attempt to normalize was via a standardized MIN/MAX sizing threshold based on the average price of the dataset. With this method, the arbitrary starting size is at 10,000 units, and the max size is set at 15,000 units. Using the table above, and with an average trade price of $1 in our dataset, we take that average price divided by the entry price (1 / 0.002) to get our multiplier (500). Then we multiply that by the standard contract size (10,000 * 500 = 5mil) and we take the lesser of the two; multiplied or the max contract size which in this case is 15,000 entry size. For our second entry, the same applies. 1 / 2.03 ~ 0.5 as our multiplier. Take the multiplier times the standard size (0.5 * 10,000 = 5k). Then take the lesser of the two, so 5000 entry size. The issue with this method is that the dollar size of the entries was not all consistent which could lead to bad back testing assumptions with trade outliers of bigger dollar amounts. Cleaner equity curve tho! • Normalization Approach 2 - For our second method we attempted to cap the dollar amount of our entries at fixed \$ size (\$1k for example) and base the entries on that. So we used \$1000 / entry price => entry size. With this method, the entries occurring in the 100th decimal places were massive. Using the table above, (1000/0.002 = 500,000), our entry size is 500,000 units with a profit of $61,035 Using the table above, (1000/2.03 =500), our entry size is 500 units with a profit of \$105.21 The issue with this method is that some trades are massive outliers. Much choppier equity curve tho! Question: How can we best normalize my entry sizes to mitigate the above-mentioned issues for back-adiusted data? Looking for advice on if 1'm approaching this correctly or if I should head in another direction. Appreciate all of the support Edit: I am using backtesting.py package there is no futures contract sizing for my entries. Dollar amount of entry is equal to size * entry price Basically seeking insight on how can we best normalize my entry sizes to mitigate the above-mentioned issues for back-adjusted futures data? ## Answer by SirBenson (score 1) https://quant.stackexchange.com/a/79819 Got the answer to my question, I will use ATR (Average True Range) to adjust my position size dynamically. See below for calculations, hopefully this will be useful for others.
Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.