The Basics of Money Management
III
 Let us
continue reviewing the modern methods of money management. All
the methods described below are antimarthingale, i.e. they
increase the risk size as capital size grows and decrease it
as capital shrinks and involve risking a fixed fractional.
Controlling the drawdowns.
For instance, we have a maximal set drawdown
in % of the capital. The method involves equaling the
starting risk for the position to a fixed fraction of the set
maximal drawdown:
Num_Lots = % Risk * (Capital – (1 –
Max_%_Drawdown) *
Maximal_Capital) /
starting_risk_per_unit_assets / 100.
If our current capital is $100 000,
maximal reached capital $110 000 and maximal allowable
drawdown 20%, we can risk a sum equal to 10% of the drawdown.
Then our risk would be $1200 (10% * ($ 100 000 – 80% * $110
000)). Thus, if the risk per share is $0.1, we can buy 120
lots of 100 shares. If price changes were uninterrupted,
transaction costs negligible, odd lots permitted and the
traders’ timing perfect, then this method would guarantee tha
drawdown never goes over the limit.
Another option of drawdown control is taking
into account its maximal historical value
(with a fair reserve):
Num_contracts = Capital / (2 * Max_Drawdown +
margin_per_contract)
Kelly’s method.
This method defines the optimal percent of risk that
should be employed to maximalise the “usefulness” function
presented as logarithm of the capital. Relatively to
gambling and further, to stock trading was developed by
professor Edward Thorpe3.
In the trading game of doctors of sciences described in the
previous article (where 60% of cases won and 40% lost the
bet), the optimal bet according to Kelly is 20% of current
capital. From Table 3 of that article we can see that the
50-percentile k-50 really reaches its maximum of 7940 when the
stake is 20%. What’s not so smooth-looking is that 50% of
drawdowns are over 79.09$ and the maximal drawdown reaches
99.43%. Are we willing to reach the maximal possible profit at
the cost of losing 99% of the capital somewhere along the way?
If we want to break the record of Larry Williams, then maybe
so. As Ralph Vince explained that achievement: “He is one of
the few persons really able to trade with fully optimal values
and pass through the concomitant drawdowns” .
Kelly’ s method defines the percent of risk as^
Kelly%=%win – %loss * Avg_profit /
Avg_loss
Hence we can estimate the position size:
Num_Lots = Kelly% * Capital /
starting_risk_per_unity_of_assets
Thorpe recommends using % of risk within 0.5
* Kelly <= % risk < Kelly bounds. Table 1 shows the
results that allow us to conclude that with risks 18% of Kelly
and more our simple trading system is no longer
profitable.
Table 1. Results of testing Kelly’s
method
|
%risk* Kelly |
Net Profit |
Avg. profit/ Avg.loss |
Avg. trade |
Maximal drawdown |
Profit factor |
|
|
|
4 |
731586.50 |
1.8916 |
3870.828 |
-1004958 |
1.2445 |
|
6 |
1386439.00 |
1.728 |
7335.6561 |
-3618084 |
1.1368 |
|
8 |
1876666.00 |
1.6285 |
9929.4497 |
-9506103 |
1.0714 |
|
10 |
1814372.00 |
1.5704 |
9599.8519 |
-19437432 |
1.0332 |
|
12 |
1164496.00 |
1.5394 |
6161.3545 |
-31176880 |
1.0127 |
|
14 |
451504.00 |
1.5252 |
2388.9101 |
-42140292 |
1.0034 |
|
16 |
23984.00 |
1.5202 |
126.8995 |
-50536160 |
1.0001 |
|
18 |
-94656.00 |
1.5191 |
-500.8254 |
-61471408 |
0.9994 |
Optimal f. This method of estimating the optimal % of
risk has been improved by Raplh Vince. While Kelly’s formula
use only average values from past trades, Raplh Vince proposed
to take into account all trades, solving the task of
optimization of the relative end capital TWR as a function
of f.
TWR à Max
0
where
TWR = P
i=1,..,n (1 – f * Trade_resulti /
Max_loss)
We take the negative value of the loss, hence the minus.
Actually, this method implies that in the future the trade
results will be about the same, but possibly in another order.
Solving the TWR maximization, we find the f = fopt
value, where the TWR function reaches its maximum. From
fopt we define position size:
Number_Lots = fopt * Capital / ( - Max_Loss)
A simple method of calculation is presented in App. 2.
According to it the maximal drawdown with optimal f value will
be at least fopt % of account. I.e. if our
fopt is, say, 0.5, then our drawdowns will reach at
least 50%. Raplh Vince says that: ”if you are not trading for
optimal profits, then you belong in an asylum, not in the
market”. Still, he does not consider the fact that a 99%
drawdown when trading for an “optimal profit” can land us in
asulym – or at least in hospital after trying to explain to
the family or investors. It doesn’t help that the capital
grows on then.
Besides, the distribution of trade results has a most
profound influence on the fopt value. So
fopt values for two strategies that in the end
bring the same profit and have the same maximal loss may be
very different.
The weak spot of the optimal f method is that it is fully
based on the system’s historical results, on maximal loss to
be exact. The risk level set when using fopt, means
we‘ll never have a larger loss.
Unlike gambling, where the outcomes are known and
probabilities constant, in trading we have a multitude of
random outcomes with undetermined probability of winning. The
maximal loss is a nondescreasing step function, with random
amplitude leaps occurring at random moments.
So, there is no real evidence to suppose that the maximal
loss and maximal drawdown achieved will persist in the future.
To calculate fopt it is possible to use in the TWR
formula, instead of the maximal loss a value:
Max_Loss_Evaluation = Avg_Loss – 3.5
Standart_Deviation_of_Loss
But this doesn’t solve the problem yet. The outcome of a
future trade is evidently random, so then the optimal f for is
must also be random. The fopt value calculated from
previous trades won't be really optimal for future trades,
unless we turn to really reckless trading. Let's show an
example of this.
We calculate the optimal f for a model system (num = 1) for
several trades in a row, as shown in App.1. For the last 10
trades the optimal values would be 0.135, 0.134, 0.131, 0.123,
0.156, 0.142, 0.149, 0.137, 0.155, 0.165. So before the last
trade we choose a value of f equal to 0.155 while the optimal
value would be 0.165 – we take a less-than-optimal risk. Even
worse, the third trade from the right has an optimal f of
0.137, while we consider it to be 0.149, accepting too much
risk. So the so-called optimal f is really far from optimal.
The Safe f. Leo Zamansky and David Stendahl tried to
overcome large drawdowns by adding a special limit of
maximall allowable drawdown:
TWR à Max
0
If
Max_Drawdown <= Max_Allowed_Drawdown
Another way is to use the maximal drawdown or its estimate
instead of the maximal loss in the TWR formula for
calculations the safe f.
Optimal f with volatility. Murray Ruggiero proposed
to adapt the position size calculated using the optimal f
to the current market volatility.. This is founded on the
hypothesis that when the market volatility is low, the chance
of having a large loss is larger than when the volatility is
high. We normalize the volatility from 1 to 0, where 0 is
maximal volatility, and 1 – minimal:
Volatilitynorm = (Max_Volatility –
Current_Volatility / (Max_Volatility –
Min_Volatility)
Then
Num_Lots = fopt *
Volatilitynorm * Capital /
( -Max_Loss_Estimate)
Here the, fopt is calculated also
using the maximal loss evaluation.
Fixed Ratio. A common problem of all methods using a
fixed fraction of the capital is that different methods either
maximize the capital growth without relation to risk (i.e. the
optimal f) or minimize the risk (i.e. risking not more than x%
of capital). Trying to solve this conflict Ryan Jones
concludes that the relation of the number of lots traded to
capital growth needed to increase the number of lots by one
(or the minimal increment) should be a
constant8:
Previous_Capital+Num_Lots * Delta =
Next_Capital
Where Delta defines how aggressive or conservatiove is our
application of money management: the more Delta, the larger
profit per lot need we receive to increase the number of lots
traded. The author proposes using as Delta a part of the
maximal drawdown. Our experiments show it’s much better to use
volatility.
Table 3 lists the results of testing a basic
system with the Jones’ algorithm and Delta proportional to
volatility. The method is unprofitable with small Delta
values, then leaps to maximal profits, after which both profit
and maximal drawdown monotonously decrease as Delta grows.
Table 3. The results of testing the fixed ratio
method.
|
Delta=% of volatility |
Net Profit |
Avg. profit/ Avg.loss |
Avg. trade |
Maximal drawdown |
Profit factor |
|
|
|
1 |
-102156.06 |
0.7991 |
-540.5083 |
-105916.3 |
0.5258 |
|
2 |
1020734.25 |
1.9748 |
5400.7103 |
-1089653.8 |
1.2992 |
|
3 |
815346.50 |
2.0056 |
4314.0026 |
-797624.75 |
1.3195 |
|
4 |
685600.13 |
2.0238 |
3627.5139 |
-636779.13 |
1.3314 |
|
5 |
597519.38 |
2.0366 |
3161.4782 |
-534939.63 |
1.3399 |
|
6 |
533938.38 |
2.0469 |
2825.0708 |
-464201.44 |
1.3466 |
|
7 |
485445.13 |
2.0552 |
2568.4927 |
-412132.94 |
1.3521 |
|
8 |
446773.25 |
2.0621 |
2363.8796 |
-371874.88 |
1.3566 |
Òàáëèöà 3. Ðåçóëüòàòû òåñòèðîâàíèÿ ìåòîäà ôèêñèðîâàííîãî
îòíîøåíèÿ.
The idea behind this method looks quite doubtful:
increasing the number of lots traded from one to two is not
equivalent to increasing the number from 10 to 11 (as states
Ryan Jones), and an increase from 10 to 20 is a 100% increase.
The trader is concerned not about the quantity of contracts,
but capital growth and risk in relative values.
Let us perform some manipulations according to Ryan Jones.
With a few mathematical transformations (see App.3) we make an
expression:
Num_Lots = 0.5 + (2 * Profit/Delta +
0.25)^(0.5).
So the number of lots in fixed ratio trading is
proportional to the square root of the capital. All variants
of fixed ratio trading define the number of lots traded as
depending on the capital linearly. Anyone familiar with the
basics of mathematical analysis know that at low X values
y = a * x^(0.5) is larger than the linear y = a * x, and
vice versa at high X values (see Ill. 1). Hence with a small
capital the fixed relation method prescribes trading a larger
number of lots than the fixed share of capital, and a smaller
number of lots with a larger capital. In other words, the
fixed ratio method recommends higher risks with small capitals
than the so-called “risky methods” criticized. Practically,
this “new” method also involves risking a fixed part of the
capital, in a more aggressive way compared to the original.
The book examples showing the advantages have been skillfully
selected so that drawdowns occur only after the capital has
grown significantly.
Ill. 1. Comparison of function values with different
arguments.
As to Ryan Jones’ attempt to break the trading record of
Larry Williams in The Robbins 2001 Futures Trading Contest
described in the previous article, he failed again... After
his account grew by 600% from $15 000 to $107 000, he sent an
offer to buy his method, proven by statements capable to bring
such profits. Besides, he offered a $299 per month
subscription to stay informed of all trades taken in the
contest. As a result the drawdown on his capital reached 95%,
just what had to be proven.
The method of Larry Williams. During his
record-breaking trading Larry Williams used the Kelly’s
formula where the starting risk was defined by the size of the
margin per futures fontract. The dynamics of the capital were
also noteworthy: first a growth from $10 000 to
$210000, then dropped to $700 000 (67%
drawdown) and the year was finished at $1100000. By the way,
Ralph Wince was working for Williams as programmer. Now Larry
Williams recommends the following varian of the fixed fraction
method:
Num_Lots = % risk * Capital / (- Max_Drawdown)
/ 100.
Playing the “market’s money”. As experience shows, for
an investor it is much more important not to lose a small part
of the starting capital than to lose a substantial part of the
profits. The idea is taking smaller risks on starting
capital and larger, more aggressive on profits
received:
Num_Lots = (%riskstart_capital) *
(Starting_Capital + MinList(Profit, 0)) +
%riskprofit * MaxList(Profit, 0)) /
starting_risk_per_unit_of_assets / 100.
Pyramid building. All the methods described above
define the starting risk for opening the position. The current
or effective risk of an open position is, actually, different.
It may be expressed as:
Effective_Risk = MarketPosition * (Entry_Price
– Current_Exit_Price) *
Num_Lots * Price_of_a_Point
where MarketPosition equals 1 for long positoins, -1 for
short, 0 for no position. Until the trade has no unrealized
(paper) profit, the effective risk is positive. A trade
protected by a stop-loss order at breakeven level has zero
effective risk. As soon as the stop loss is moved past
breakeven level, the effective risk becomes negative – which
means the position has a guaranteed profit, protected by the
stop loss. The capital is no longer subject to risk, so we
can risk the guaranteed profit, increasing the position size
correspondingly.
Additional_Number_Lots = %
risk_guaranteed_profit *
(- MinList(Effective_Risk, 0)) /
starting_risk_per_unit_of_assets / 100
Here MinList( ) is the least value from the
list. îçíà÷àåò íàèìåíüøåå èç
ñïèñêà. Clearly, we must not take the %risk_guaranted_profit
larger than the optimal for the guaranteed profit. A variant
of this method where a constant risk is maintained on the
basis of guaranteed profits is described by Titov.
Let us now see it all on an example. If we
reinvest the guaranteed profits with the same risk, then, as
Table 4 shows, profits will increase over 4 times and
drawdowns 2.8 times. If we increase the risk for guaranteed
profits, net profit skyrockets – but unhappily, drawdowns
increase even more.
Table 4. Reinvesting the guaranteed
profits.
|
% risk for the profit |
Net Profit |
Avg. profit/ Avg.loss |
Avg. trade |
Maximal drawdown |
Profit factor |
|
|
|
0 |
128611.02 |
2.4429 |
680.4816 |
-62698.391 |
1.6072 |
|
1 |
519913.94 |
2.0757 |
624.1464 |
-178268.09 |
1.5116 |
|
2 |
3595571.00 |
1.6486 |
4528.427 |
-6062935.5 |
1.2283 |
Regulating the position size on the basis
of its risk and volatility. The risk of an open position
is usually controlled by exit rules set in the system. For
instance, moving stop levels follow the price to increase
starting risk or lock down a part of paper profits. But a much
more viable idea is to limit the maximal risk and
volatility of an open position in relation to the capital.
All we need for this is track the values as often as
needed.
Excessive_risk = Num_lots *
Current_risk_per_unit_of_assets – Max%risk * Capital / 100
and
Excessive_volatility = Num_lots *
Current_volatility_of_assets –
Max%volatility * Capital / 100.
As soon as any of those becomes positive, we decrease the
position size by a value equal to:
Excessive_num_lots = Excessive_risk /
Lot_price
Or correspondingly by:
Excessive_number_lots = Excessive volatility /
Lot_price
The practical rationale of this methods is closing a part
of the position without waiting for the system signal, when
the prices move very fast and far, too far and fast for a
trailing stop or a closing point to follow. This solves two
tasks at once: first, the risk and volatility are supported at
set levels, second, positions frequently close at extreme
prices with favourable slippage.
Such methods for one strategy on one asset can be easily
applied on the TradeStation platform as shown in App.1. But
since real trading involves several strategies applied to
portfolios of assets, frequently at different time frames but
with a commom portfolio capital. The organization of money
management at portfolio level will be discussed in the next
article.
|
Appendix 1.
{****************************************************
The Simplest System #3 with Money
Management.
Copyright (c) 2002 DT
****************************************************}
Input: Price((H+L)*.5),
PtUp(4.), PtDn(4.), {Max correction to
change trend}
MM_Model(2), {1 = % Risk Model; 2 = %
Volatility Model;
3 = Drawdown Model; 4 = Kelly Model; 5
= Williams' Model;
6 = Fixed Ratio Model; 7= Market Money
Model}
MM(1), {% Risk parameter}
MM_add(0), {% Risk for playing market
money; 0 to disactivate}
MaxVolat(100), {% Risk for playing
market money; 100 to disactivate}
MaxDD(20), {% Drawdown}
InitCapital(100000); {Initial capital
to trade}
Vars: LL(99999), HH(0), Trend(0),
Volat(TrueRange);
Vars: MP(0), Risk(Range), Num(1),
add_num(0), red_num(0), FRDelta(0), DD(0),
Equity(InitCapital),
TotalEquity(InitCapital), EqTop(InitCapital),
AssuredProfit(0), HPositionProfit(0),
Kelly(0);
MP = MarketPosition;
Volat = .5 * TrueRange +
.5*Volat[1];
if MP <= 0 then begin
if Price < LL then LL = Price;
if Price cross above LL*(1 + PtUp*.01)
then begin
Trend = 1;
HH = Price;
end;
end;
if MP >= 0 then begin
if Price > HH then HH = Price;
if Price cross below HH*(1 - PtDn*.01)
then begin
Trend = -1;
LL = Price;
end;
end;
If trend = 1 then Risk = PtDn * .01 *
close {+ Slippage};
If trend = -1 then Risk = PtUp * .01 *
close {+ Slippage};
HPositionProfit = maxlist(
OpenPositionProfit, HPositionProfit);
AssuredProfit = HPositionProfit -
Risk;
Equity = InitCapital + NetProfit;
TotalEquity = Equity +
OpenPositionProfit;
EqTop = MaxList(EqTop,
TotalEquity);
if MM_Model = 1 then { % Risk Model
}
Num = floor(MM * Equity *.01/Risk);
if MM_Model = 2 then { % Volatility
Model }
Num = floor(MM * Equity *.01/ Volat /
BigPointValue );
if MM_Model = 3 then begin { Drawdown
Model }
Num = floor(MM * (Equity - (1 -
MaxDD*.01) * EqTop) * .01 / Volat / BigPointValue);
end;
if MM_Model = 4 then begin { Kelly
Model }
If TotalTrades > 20 and GrossProfit
> 0 then
Kelly = NumWinTrades/TotalTrades * (1 -
GrossLoss/GrossProfit)
else
Kelly = 0.1;
if Kelly > .9 then Kelly = .9;
Num = floor(MM * Kelly * Equity * .01 /
Risk);
{Print(Kelly);}
end;
if MM_Model = 5 then begin { Larry
Williams' Model }
value11 = MaxList(-LargestLosTrade /
MaxList(CurrentContracts, 1) , Risk);
Num = floor(MM * Equity *.01 /
value11);
end;
if MM_Model = 6 then begin { Fixed
Ratio Model }
{ DD = MaxList(DD, (EqTop -
TotalEquity)/MaxList(CurrentContracts, 1)) ; {Max
Drawdown}
if TotalTrades > 20 and DD > 0
then FRDelta = MM * DD *.01
else }
FRDelta = MM * volat * BigPointValue *
.01; {Delta}
value12 = MaxList(Equity -
.5*close*(close + FRDelta)/FRDelta, 0.25);
Num =
floor(SquareRoot(2*value12/FRDelta + .25) + .5);
end;
if MM_Model = 7 then { Playing the
market money }
num = floor((MM * (InitCapital +
MinList(NetProfit, 0)) + MM_add * MaxList(NetProfit, 0))
* .01 / Volat / BigPointValue);
{ Entries}
if trend = 1 and trend[1] <> 1
then buy("Trend.LE") num contracts at market;
if trend = -1 and trend[1] <> -1
then sell("Trend.SE") num contracts at market;
add_num = floor( MM_add * AssuredProfit
* .01/ Volat / BigPointValue); { Assured Profit
Pyramiding }
if add_num > 0 and
OpenPositionProfit > Volat * BigPointValue then
begin
if Trend = 1 and MP = 1 then
buy("Add.LE") add_num contracts at market;
if Trend = -1 and MP = -1 then
sell("Add.SE") add_num contracts at market;
end;
red_num = floor((CurrentContracts *
Volat * BigPointValue - MaxVolat * TotalEquity * .01)/
close);
if red_num > 0 then begin
if Trend = 1 and MP = 1 then
exitlong("Red.LX") red_num contracts at market;
if Trend = -1 and MP = -1 then
exitshort("Red.SX") red_num contracts at market;
end;
if Num < 1 then Num =
1; |
Appendix 2. Calculating the optimal f in Excel.
Add the following lines to the code of the system handling
the lot:
|
{****************************************************
Excel output for optimal f computation
Copyright © 2002 DT
****************************************************}
Var: Trades(0), Str("");
Trades = totaltrades;
if currentbar = 1 then begin
FileDelete("D:\TS_Export\M-Trading3_OptF.csv");
Str = "Initial Equity" + "," + "Max Loss" + "," + "f"
+ "," + "Trades" + "," + "Geom Mean" + NewLine +
NewLine
+ "Profit" + "," + "HPR" + "," + "TWR" + "," +
"Equity" + "," + "Num" + NewLine;
FileAppend("D:\TS_Export\M-Trading3_OptF.csv",
Str);
end;
if trades <> trades[1] then
FileAppend("D:\TS_Export\M-Trading3_OptF.csv",
NumToStr(PositionProfit(1),3) + newline);
{****************************************************} |
and launch the system. When we open in Excel the resulting
file, we’ll see a table:
|
|
A |
B |
C |
D |
E |
|
1 |
Initial Equity |
Max Loss |
f |
Trades |
Geom Mean |
|
2 |
100000 |
-49.9 |
0.1 |
184 |
1.004012 |
|
3 |
Profit |
HPR |
TWR |
Equity |
Num |
|
4 |
-12 |
0.966014 |
0.966014 |
96601.43 |
273 |
|
5 |
11 |
1.031154 |
0.996109 |
99610.91 |
282 |
|
… |
|
|
|
|
|
Enter the starting capital in the A3 field, the formula
=MIN (A4:A Õ) in the B3, where
AX designates the last non-enpty field in the A
column.
Enter =1- C$2*A4/B$2 in B4 and continue till line
X.
Enter any value from 0 to 1 in the C2 field, Ñ4 = Â4, Ñ5 =
Ñ4*Â5, D4 =A$2*C4, D2 = COUNTIF(A4:AX,"<>0"), E2 = POWER
(CX,1/D$2), E4 = INTEGER (D4/(B$2/-C$2)). Continue the
formulas in the Ñ4:Å4 fields till the last non-empty line Õ.
In the E column we have the number of lots for the f value
given in the Ñ2 field.
To calculate the optimal f use the menu: Service à Solution Search à designate target field: $C$Y (where Y
– number of the line corresponding to the trade previous to
the one we optimize f for); Changing fields: $C$2; Limits:
$C$2 >=0; $C$2 <= 1 à
Execute.
Excel’s in-built optimizer will find the value of the
optimal f, maximizing the TWR function.
Appendix 3. Deriving the formula for the fixed fraction
method.
The method states the number of lots traded to capital
growth needed to increase the number of lots should be a
constant value. This will be written down as:
En + n * D = En+1
where En – current capital, n –
current number of lots, D – the Delta parameter. Then,
recursively,
En = En-1+ (n – 1) * D =
En-2 + (n – 2) * D + (n – 1) * D = …
= E1 + (1 + 2 + … + (n – 1)) *
D,
hence, considering the fact the bracketed
expression is a sum of an arithmetical progression members
En = E1 + 0.5 * n * (n –
1) * D.
This equation is a square equation in relation to n:
n^2 – n – 2 * (En – E1 )
/ D = 0.
High school analysis course tells us this equation has two
roots:
n1 = 0.5 + (2 * (En –
E1 ) / D + 0.25)^(0.5)
and
n2 = 0.5 – (2 * (En –
E1 ) / D + 0.25)^(0.5),
where n2 <= 0. If we consider
En – E1 to be the profit, then:
Num_lots = 0.5 + (2 * Profit / Delta +
0.25)^(0.5).
This formula starts trading with one lot. If
the starting capital allows to trade many lots at once, we
must find the En – E1 considering the
starting capital. Clearly, En = Starting Capital +
profit. One Delta can buy k = Price / Delta stocks.
The corresponding Ek capital is equal to
k * Price = Price^2 / Delta. Then
E1 = Ek – 0.5 * k * (k – 1) * D = 0.5 * Öåíà *
(Öåíà + D) / D,
And our desired formula will be
Number_lots = 0.5 + (2 * (Starting_capital +
profit - 0.5 * Price * (Price + Delta) / Delta) / Delta +
0.25)^(0.5). Dmitry Tolstonogov
Copyright (c) RT Soft Ltd, TS Research Group Ltd.
|