PureBytes Links
Trading Reference Links
|
Herman,
It may be strange at first sight but it is not.
>From the recently removed N100 stocks, RFMD and ERICY were in the
4digit profit list for many systems [by far the best fit for many
complicated indicators]. If a system runs at +100% and RFMD runs, for
the same period and settings, at +1500%, the result of removing RFMD
is obvious.
The profitability is not, IMO, the crucial criterion for a group of
stocks. The peaks are more important. When they are sharp, then the
directionality is here and may give clear [and repetitive] signals.
This [very important] property was not affected by the recent change,
not even the extended change one year ago and may give a basis for
important trading hints . A strong Sell signal is more important from
the [paper] profitability of a system over 100 or 500 stocks.
Another interesting issue is the local peaks/troughs of the composite
equity line : Systems suffer from wrong timing sometimes, causing
troughs to the average equity. They also suffer from temporary curve
fitting, it is when we see [excellent] equity peaks. If this curve
fitting period is, by chance, the last two months, then the system
will present huge profits, without *any* guarantee for the next 6
months.
Thatīs why I try to discover sharp signals.
Dimitris Tsokakis
--- In amibroker@xxxxxxxxxxxxxxx, "Herman vandenBergen" <psytek@xxxx>
wrote:
> Hello,
>
> It appears that the removal of a single stock in your composite can
make a
> big difference in system performance. The program below shows that
profits
> can vary from 82% to 575% by just removing one single stock from the
> composite. I have found similar results in other trading systems.
>
> You should replace the demo system's code, found in the
SystemUnderTest(),
> with your own composite-using system. You may also have to modify
the type
> of composites created; for this example I used simple price
composites while
> you may be using MeanRSI type of composites.
>
> You can open your WorkSpace, select Candle or Bar style, and step
through
> the composites to see in detail how the removal of single stocks
effect the
> composite. The Symbol attached to the "~Comp" indentifies the
ticker that is
> ommitted from the composite.
>
> While this effect will vary for different systems it could, in some
case,
> explain the "demise" of systems when ticker lists are changed. If
nothing
> else it shows that nothing should be taken for granted in systems
design.
>
> herman.
>
> /*
> Composite stock-sensitivity analysis - Herman van den Bergen
> 1) Set filter to the watchlist used to create composite
> 2) Set WatchlistNum in first line of code below to the same
watchlist number
> 3) Set All Quotations and run Scan
> 4) For a normal test (full composite) set Range and run the Old-
Backtester
> 5) To see how a single stock effects group performance set Filter to
> Watchlist selected earlier and run the Old-Optimizer 6) To see how
the
> removal of one stock effects individual equities run an Eploration
> */
>
> WatchListNum = 0;
> Scan = Status("Action")==3;
> BackTest = Status("Action")==5;
> Explore = Status("Action")==4;
> List = GetCategorySymbols( categoryWatchlist, WatchListNum);
> InitialEquity = 100000;
> Filter = Status("LastBarInTest");
> SetOption("InitialEquity",InitialEquity);
> SetOption("NoDefaultColumns",True);
> Buy=Sell=Short=Cover=0;
>
> function SystemUnderTest( RemovedTicker )
> {
> Comp = "~Comp"+RemovedTicker;
> // Create your own type of composites below
> V=Foreign(Comp,"V");
> O=Foreign(Comp,"O")/V;
> H=Foreign(Comp,"H")/V;
> L=Foreign(Comp,"L")/V;
> C=Foreign(Comp,"C")/V;
>
> // Substitute your own composite-based system for the one below
> Sell=Cross( MACD(), Signal() );
> Buy = Cross( Signal(), MACD() );
> Short=Sell;
> Cover=Buy;
> // End trading system
> return Equity(0);
> }
>
> if(Scan)
> {
> // Create normal composite
> AddToComposite(1,"~Comp","V");
> AddToComposite(O,"~Comp","O");
> AddToComposite(H,"~Comp","H");
> AddToComposite(L,"~Comp","L");
> AddToComposite(C,"~Comp","C");
>
> // Create composites with one stock removed
> for( n=0; (RemovedTicker=StrExtract( List, n))!= ""; n++)
> {
> if( RemovedTicker!= Name() )
> {
> AddToComposite(1,"~Comp"+RemovedTicker,"V");
> AddToComposite(O,"~Comp"+RemovedTicker,"O");
> AddToComposite(H,"~Comp"+RemovedTicker,"H");
> AddToComposite(L,"~Comp"+RemovedTicker,"L");
> AddToComposite(C,"~Comp"+RemovedTicker,"C");
> }
> }
>
> } // End Scan
>
> if(explore)
> {
> AddTextColumn(Name(),"TradedTicker",1.0);
> RefEquity = SystemUnderTest( "" );
> AddColumn(RefEquity,"NormalEquity",1.2);
> AddColumn(Null,"Removed->",1.0);
> for( n=0; (RemovedTicker=StrExtract( List, n))!= ""; n++)
> {
> NewEquity = SystemUnderTest( "~Comp"+RemovedTicker );
> AddColumn(NewEquity,RemovedTicker,1.2);
> }
> } // End Explore
>
> if( BackTest )
> {
> for( n=0; (RemovedTicker=StrExtract( List, n))!= ""; n++);
> RemovedTickerNum = Optimize("RemovedStockNum",9999,0,n-1,1);
> RemovedTicker=StrExtract( List, RemovedTickerNum );
> if(RemovedTickerNum==9999) RemovedTicker = "";
> SystemUnderTest( RemovedTicker );
> } // End backtes
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
Yahoo! Groups Links
To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|