How AlgoLab uses CAPITAL and RISK to determine position sizing


Futures are not like stocks in that you don't actually "buy" or "sell" any number of shares of a futures contract. Futures are CONTRACTS. When you "BUY" a single futures contract for, say, the S&P 500 emini contract (symbol "ES"), you are entering into a contract with a counter party who agrees to take the opposite side of your trade. When you "BUY" a futures contract, you are NOT SPENDING any of your capital. Yes, it is absolutely FREE! When your trade is CLOSED (ie: when you sell your ES futures contract), then if you made a profit, the counter party to your contract must transfer funds to your account equal to the contract specified amount called the "Big Point Value" times the number of points that you made on the trade times the number of contracts that you traded. Of course, if your trade was not profitable, you would have to transfer funds to your contract counter party's brokerage account. The exchange takes care of all of this book keeping of course.

Here is a list of the "big point" values for all of the symbols that AlgoLab trades. You can estimate your profit or loss on a position by multiplying the number of dollars your position has increased or decreased since you entered the trade by the "big point" value, then multiply that by the quantity of contracts that was traded.

AUD = 100000

CHF = 125000

CL = 1000

ES = 50

EUR = 125000

GBP = 62500

GC = 100

HO = 42000

JPY = 12500000

NG = 10000

NKD = 5

NQ = 20

PL = 50

RB = 42000

YM = 5

ZC = 50

ZM = 100

ZS = 50

ZW = 50


Trading a futures contract isn't 100% "FREE" because both the CME futures exchange, and Interactive Brokers would like to make certain that you have enough capital in your account to cover any losses BEFORE they will accept the order for your trade. IB publishes these minimum capital amounts and they vary with every symbol. Here is a list of approximate minimum margin amounts for each symbol (the accurate list is in a link below).

AUD = 5250

CHF = 11202

CL = 3375

ES = 7355.25

EUR = 6925

GBP = 7346.25

GC = 5250

HO = 4187

JPY = 4125

NG = 2800

NKD = 7046

NQ = 6778.75

PL = 2537

RB = 5312

YM = 6438.75

ZC = 946

ZM = 2250

ZS = 5000

ZW = 1250

IB minimum margin requirements

If AlgoLab were to place an order to BUY 5 Gold (GC) contracts, and your account value was only $20,000, you may exceed IB's minimum margin requirements, and they might send you a warning email advising you to close some of your positions (5 contracts x 5250 minimum for each GC contract = $26,250 capital required). If you don't close positions, then IB could liquidate your positions on your behalf. Note that the approximate margin minimums that I have shown are "over night" minimums. "Intraday" minimums are higher. If your total margin usage gets to within 95% of your account value, then AlgoLab automatically pauses placing any new orders to hopefully prevent a margin violation. Note that since AlgoLab uses the lower "over night" minimums, as opposed to the higher "intra day" allowance to trigger auto-pausing, you will probably not get a warning email from IB.

At any point in time, you can see how much margin you are currently using by referring to the field "P margin" on your dashboard page. This is the minimum amount of capital that you must have in your IB account to continue to hold all of your positions. Again, if this P margin value is within 95% of your account value (the cash in your account + the current value of your positions), then AlgoLab will automatically pause placing new orders until positions are naturally closed. If the "P margin" value exceeds your account value for an over night period, you may risk violating your minimum margin requirements at IB. You will receive warning emails from IB asking you to either add capital to your account or to exit some positions. If this ever happens, contact us, and we will assist you.


Each symbol has a unique "big point" value. Some are very high, like Gasoline (symbol "RB") which is $42,000 per big point ($42,000 per $1 move in the futures price). This means that if your account bought RB at $1.5 and then your account later sold that RB contract for $2, you would have earned a $21,000 profit ($2 - $1.5 = $.5 big points x $42,000 = $21,000). If your account purchased 2 RB contracts instead of 1, then your resulting profit in this example would have been $42,000 (2 contracts x $21,000).

At this point, it is also important to note the high leverage available in the futures asset class. If your RB trade actually did earn a $21,000 profit from a single contract, note that the margin minimum for RB is $5312. This means that you would have profited 252% on this single trade. A .5 move in a day, or in a single AlgoLab trade for RB is very unlikely, but RB did move this much during the Texas hurricane gas shortage over a period as short as a week.

Due to different price levels, and price volatility for all symbols, each symbol's average potential profit or loss per time frame is vastly different. For example, "RB" could average .01 price move per hour. .01 * $42,000 big point = $420 average "move" per hour. Now compare this to the "ES" contract that has a big point value of $25 and can average 5 points 'move' per hour. So the "ES" contract's potential profit or loss per hour is only $125.

So... to "EQUALIZE" the profit or loss potential between "RB" and "ES", AlgoLab does a "risk equalization" calculation resulting in 3.36 "ES" contracts for every "RB" contract ($420 / $125 = 3.36). And since it is impossible to trade a fraction of a contract, we would be trading 3 "ES" contracts for every 1 "RB" contract. You can imagine that if AlgoLab always traded 1 contract for every one of the 19 symbols in the basket, the over-all profit would be very heavily weighted by the larger point value symbols like "CL,RB,HO, and NG". The remaining symbols would contribute relatively less to the overall profit.

Because price volatility is constantly changing, and the potential profit or loss per time frame between all of the symbols is also constantly changing, AlgoLab needs to continually recalculate this "risk equalization" factor.


  1. AlgoLab calculates the "average $ move" per time-frame bar just prior to placing a trade. Each trading system within a multisystem uses a different time frame. Some systems apply the trading strategy rules on 60 minute price bars (each bar consists of a high, low, open and close for 60 minutes worth of price activity), and some use 15 minute bars. AlgoLab collects the last 200 price bars for each symbol and calculates an average "move" which usually consists of the difference between the high and the low of each bar (AlgoLab uses a better statistical method, but it's essentially the same).

  2. The "RISK" percentage that you set in AlgoLab is short for "risk percentage per bar". AlgoLab takes that value, divides by 100 and multiplies it by your capital to determine the number of contracts to trade that would equal this amount of potential profit or loss per time-frame bar. This method equalizes the potential profit or loss between all symbols traded.

  3. EXAMPLE: Lets assume $100,000 of capital and a risk value of .1 (actually, .1 / 100 =.001). We multiply .001 by $100,000 to get $100 of risk per price bar, then we divide that by an amount equal to the average "move" of the symbol over the last 200 bars multiplied by the big point value for the symbol.

  4. If the symbol traded is "ES", AlgoLab will divide the $100 of risk per bar by the "big point" value for "ES" which is $50 multiplied by the average "move" of "ES" over the last 200 bars (lets say this is "1" point average move) to derive 2 ES contracts to trade. $100 risk per bar / (1 ave move * $50 Big Point) = 2 contracts

  5. if the symbol traded is "RB", AlgoLab will divide the $100 of risk per bar by the "big point" value for "RB" which is $42,000 multiplied by the average "move" of "RB" over the last 200 bars (lets say this is ".05" points average move) to derive 1 RB contracts to trade. $100 risk per bar / (.01 ave move * $42,000 Big Point) = .23 contracts (cannot trade less than 1 contract, so 1 contract).


Since it is impossible to trade less than a single contract, the example above using ES and RB is a good example of how RB would contribute over 75% more profit or loss than the ES due to the contract sizes. if we increased the risk value, ES will start to trade more contracts along with RB's single contract, and the risk will be more evenly distributed. The problem with increasing risk with a small account size of $100,000 or less, is that not only do the overall profits increase, but the overall DRAWDOWNS also increase - ie: your average annual drawdown and maximum drawdown will become too risky to trade.

Run your own tests using the Performance Viewer to see this effect. When you change capital or risk in PV, then "run backtest", pay attention to the field "#cts" which stands for total "number of contracts traded" over the back test period. Sometimes when you change the risk and re-run a backtest, this number won't change. That's because it wasn't changed enough to effect the whole number of contracts traded (ie: you can't trade less than a single contract). Sometimes your risk setting changes effect only smaller contracts that contribute less to overall profit, so your results don't change by that much.


The most important thing to remember about setting a risk value, is that you should always use the Performance Viewer to preview the EFFECT of various risk settings along with your capital. Specifically, my concern is drawdowns - both average annual drawdown and the maximum drawdown. Although there is usually only a 1 in 10 chance of going through a maximum drawdown as bad as the historical back test in PV, if it ever did happen, and was 50% or more, you might be forced to stop trading. Also it is important to note that the backtest results are THEORETICAL. Reality is unknown, and real time results could always be worse than hypothetical expectations.

If you have a small account ($50,000 or less), and are uncomfortable with the drawdowns resulting from the smallest risk value using PV backtests then there are a few things you could try to lower the theoretical drawdowns:

  1. Add more capital to your account

  2. Trade fewer symbols

  3. Try using "Filters" in PV, and specifying fewer days of week

  4. Switch to a lower capital multisystem like "TwentySomething"

Featured Posts
Recent Posts