 ###### Recent Posts

Low capital vs. high capital account performance continued. Trade by trade analysis

January 14, 2019

1/4

# How AlgoLab uses CAPITAL and RISK to determine position sizing

November 22, 2017

FUTURES BASICS

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

MARGIN VIOLATIONS

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.

EQUALIZING RISK

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.

HOW ALGOLAB USES THE RISK VALUE WITH YOUR CAPITAL TO DETERMINE THE NUMBER OF CONTRACTS TO TRADE

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.

1. 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

2. 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).

WHY ACCOUNTS WITH LESS THAN \$100,000 AND LOW RISK (.05 to .1) ARE HEAVILY WEIGHTED BY THE ENERGY SECTOR

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.