PureBytes Links
Trading Reference Links
|
Hi Dimitris,
where are the figures posted? I am following your ideas
here with great interest.
nand
--- In amibroker@xxxxxxxxxxxxxxx, "Dimitris Tsokakis" <TSOKAKIS@xxxx>
wrote:
> The wild wrapping demon was there, once again, to cut a valuable
line at the end of the loop
> G=IIf(E11==G,0,G);
> and take it to his dusty lair !!
> Sometimes two Equity values are identical. For k=30 and for k=40 we
may have E[30]=E[40]=the highest E at the Inspection Point.
> The code, without the missing line, would then ADD the kappas and
find the best choice between 30<=k<=50 is the k=70 !!!!!
> Dimitris Tsokakis
> ----- Original Message -----
> From: Dimitris Tsokakis
> To: amibroker@xxxxxxxxxxxxxxx
> Sent: Friday, October 10, 2003 11:03 AM
> Subject: The Inspection Points and the Hi-pass Filter [Equity
application]
>
>
> Suppose now a mono-parametric trading system optimization
>
> k=Optimize("k",30,30,50,5);
> Buy=Cross(StochD(),K);
> Sell=Cross(50,StochD());
>
> We search, looking at the past performance, for an optimal solution.
> Our hope is to apply this optimal for the next trading movements
and make similar profits.
> We all know, however, that the market changes and new parameter
values give a better performance.
> For MSFT the optimizations are
> In Fig. 1 3/1/2000 till 31/12/2001
> In Fig. 2 3/1/2000 till 31/12/2002
> In Fig. 3 3/1/2000 till 3/1/2003
> If we decide by the end of 2001 to use the two-year optimization of
Fig. 1, we should trade the stock using k=50.
> But, another parameter value, k=30, was the best for 2002 and 2003
and so on.
> The situation is more complicated in a multi-parametric trading
system used frequently in real conditions by the
> mechanical system traders.
> If the optimal result comes out of 5 parameters, we have to go back
many years and
> check the robustness of this optimal solution.
> Here is a drawback of this method, 3 or 5 years ago the conditions
of the market were different.
> The market itself may control the parameters of a system.
> This feedback relation may be active with the Inspection Points and
the Hi-pass filter.
> The code will establish first some Inspection Points.[fixed or
variable].
> It will check all the parametric Equity values, select the highest,
find the respective K and apply it for the next trading period.
> [Another idea is to use the average of the top3 Equities ]
> The result will be a variable K, closely related to the market
performance.
> The sure thing is that we shall avoid the troubles of the worst
optimization case. Even if the worse scenario is selected
> for a period, it will fail right to the next inspection and will be
substituted immediately !!
> Of course, since this type of inspection is not emotional, the
rejected K may be selected again two years later.
> It is the market that dictates the rules, not our [defective]
emotions or bad memories.
> The Equity controlled variable K comes from the code
>
> // InspectionPoints/Hi-pass filter applied to a monoperametric
trading system
> START=DateNum()==1000530 ;
> x=101;
> EVENT=BarsSince(START)%x==0;// Inspect every x bars after the START
date
> G=0;CountER=0;
> for(K=30;K<=50;K=K+5)
> {
> Buy=Cross(StochD(),K);
> Sell=Cross(50,StochD());
> E1=Equity(1,0);
> E11=ValueWhen(EVENT,E1);T11=ValueWhen(EVENT,Cum(1));
> G=IIf(G>E11,G,E11);CountER=CountER+1;
> PG=100*(-1+E1/E11);
> }
> CountER=0;Kpass=0;HIPASS=0;
> for(K=30;K<=50;K=K+5)
> {
> Buy=Cross(StochD(),K);
> Sell=Cross(50,StochD());
> E1=Equity(1,0);
> E11=ValueWhen(EVENT,E1);CountER=CountER+1;
> PASS=IIf(E11==G,E1,0);
> HIPASS=HIPASS+PASS;GAIN=100*(-1+HIPASS/G);
> K1=IIf(E11==G,K,0);Kpass=Kpass+K1;
> G=IIf(E11==G,0,G);
>
> }
> // Kpass trading application
> Buy=Cross(StochD(),Kpass);
> Sell=Cross(50,StochD());
>
> The result is in Fig.4
> The optimization was giving from +3.85% to -33.19%, the Inspection
Points were close to the optimal
> and far from the worst scenario.
> The Inspection every 101 bars was arbitrarily selected for the
example.
> A x research may give much better results, as you see at Fig. 5.
> In this example x was fixed from the beginning.
> For a more sensitive approach, x may be conditional and "feel" the
main market movements,
> although this subject is beyond the scope of this text.
> The outline of this method is more important :
> We may have a REALISTIC use of optimization, close to the market
behavior.
> Note also that, in some cases, the Inspection Points method
results were better than the optimal.
> PETM, for example, was in the profits range +174%[K=50] to +360%
[K=35]
> The Inspection Points method was at +409% .
> The explanation is very interesting : The automatic K selection
used the worse K=50 for the first 5 months
> and then the optimal K=35 for the rest of the period.!! Of course
the method "understood" to use K=35 from
> Oct2000 [K=35 is the optimal we know now...] and, on the other
side, will not hesitate to re-use K=50 whenever
> the future market conditions suggest it.
> Dimitris Tsokakis
>
>
>
> ----- Original Message -----
> From: Dimitris Tsokakis
> To: amibroker@xxxxxxxxxxxxxxx
> Sent: Thursday, October 09, 2003 12:36 PM
> Subject: The Inspection Points and the Hi-pass Filter
>
>
> The
>
> Counter=0;
> for(K=30;K<100;K=K+20)
> {
> E1=MA(C,k);
> CountER=CountER+1;
> Plot(E1,"\nE1["+WriteVal(K,1.0)+"]",1+Counter,1);
> }
>
> will plot in IB the group of simple moving averages MA(C,30), MA
(C,50),MA(C,70) and MA(C,90).
> My data begins on Jan3, 2000.
> After some reasonable period the usual indicators are defined and
may be compared.
> Let us select as a starting date the end of May2000.
> START=DateNum()==1000530 ;
> In T/A studies we use various parameters, not always the same. An MA
(C,k) may give good results for k=30, but,
> as the market character changes, k=50 may be more expressive, one
year later. For this reason we re-optimize
> parameters from time to time, hoping to see better performance in
the [unknown] next days/weeks/months/years
> according to the used timeframe.
> How about doing this job automatically ?
> One method is to establish the Inspection Points.
> For example, the
>
> x=101;
> START=DateNum()==1000530 ;
> EVENT=BarsSince(START)%x==0;
> PlotShapes(shapeCircle*EVENT,colorRed);
>
> will establish an Inspection [RED] Point every 101 bars after the
START of May30, 2000.
> The AFL inspector will check the parameters under his criteria at
the inspection points, will take a decision and will ask to apply
this decision until the next inspection.
> Suppose the criterion is to ride on the highest MA and use this MA
for the next 101 bars.
> The procedure should be repeated at all Inspection Points.
> The reslut will be a variable parameter k with a market feedback
every 101 bars.
> The Hi-pass filter gives a solution to this request.
>
> // A Hi-pass filter at the Inspection Points
> x=101;// the inspection frequency
> START=DateNum()==1000530 ;
> EVENT=BarsSince(START)%x==0;// the inspection event
> PlotShapes(shapeCircle*EVENT,colorRed);// puts a red dot at the
inspection points
> G=0;
> CountER=0;
> for(K=30;K<100;K=K+20)
> {
> E1=MA(C,k);// the moving average value for the various k
> E11=ValueWhen(EVENT,E1);// the MA value at the inspection point
> T11=ValueWhen(EVENT,Cum(1));// the inspection time
> G=IIf(G>E11,G,E11);
> CountER=CountER+1;
> Plot(E1,"\nE1["+WriteVal(K,1.0)+"]",1+Counter,1);
> }
> Plot(G,"\nG",colorBlue,8);// this line remembers the highest MA
until the next inspection
> CountER=0;Kpass=0;HIPASS=0;
> for(K=30;K<100;K=K+20)
> {
> E1=MA(C,k);
> E11=ValueWhen(EVENT,E1);CountER=CountER+1;
> PASS=IIf(E11==G,E1,0);
> HIPASS=HIPASS+PASS;
> K1=IIf(E11==G,K,0);Kpass=Kpass+K1;
> }
> Plot(HIPASS,"\nHI-PASS [k="+WriteVal(kpass,1.0)
+"]",colorBlack,8);// the final Hi-pass line
> // Plot(Kpass,"Kpass",colorYellow,styleOwnScale);
> GraphZOrder=0;
>
> The code lets the highest MA [at the inspection point] to pass the
inspection and be in use until the next red dot.
> In the att. gif, at point P1 the green [90-bar] MA was the
highest. The Hi-pass [dotted black] line keeps this MA until point
> P2, no matter if the green line was lower a few days after the
inspection P1.
> At P2 the market character has changed to bullish.
> The 30-bar [white] MA is now the highest and the the new Hi-pass
line will follow it for the next 101 bars.
> The blue G line gives the ground level, ie the value of the last
inspection.
> You may see easier the final Hi-pass line by changing
GraphZOrder=0; to GraphZOrder=1;
> Uncomment the // Plot(Kpass,"Kpass",colorYellow,styleOwnScale);
line to see the K values in the past history of the stock.
> The inspection method is objective, free from psychological
constraints and helps to hold a decision for the next x trading days.
> [this is more difficult than the code itself !!]
> The inspection frequency may be fixed or variable .
> [Since we usually Buy at +1 Open, we may re-inspect before
every "Buy"...]
> One interesting application is the parametric Equity .
> If we ride on the highest equity line and we have the inspection
feedback, we may avoid the known dangers of overptimization
> and make some more low-risk money.
> Dimitris Tsokakis
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for your HP, Epson, Canon or Lexmark
Printer at MyInks.com. Free s/h on orders $50 or more to the US & Canada.
http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/mOAaAA/3exGAA/qnsNAA/GHeqlB/TM
---------------------------------------------------------------------~->
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
|