[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Re: Ranking of MG Industry Groups - Bruce



PureBytes Links

Trading Reference Links

Bruce,

Thanks for the info you provided. I was able to do the sector ranking on ROC 
and adapt it to my application. A backtest run takes about 10 minutes 
instead of 80 minutes compared to prior code.

Now starts the "hard work" of making ideas pay off.

I am considering taking this down to the industry level, but the code gets a 
bit unweildy due to the sheer number of industries. Maybe I'll wait till we 
get dynamic arrays to keep things managable.

Ara
----- Original Message ----- 
From: "bruce1r" <brucer@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Tuesday, June 26, 2007 9:49 AM
Subject: [amibroker] Re: Ranking of MG Industry Groups


> Ara -
>
> Maybe I can help a little on this one.  When I get some time maybe
> I'll write up a full routine, but the following should be enough to
> get you going.
>
> BOTTOM LINE - YOU DON'T NEED TO SORT IN ORDER TO RANK IF THE NUMBER OF
> THINGS TO RANK IS A SUBSET
>
> It is a common misconception that you do.  Let me offer a brief
> example to illustrate.
>
> Let's say that you have 50 arrays with one tick per day.  Each entry
> might be the relative strength of that ticker vs. an index.  So, you
> have different, unbounded numbers for each day for each of the 50 tickers.
>
> To find the rank of reference ticker #1 on any given day, I just need
> to compare it to the other 49 arrays and add 1 to each for each day
> that it is greater.  When I'm done, if ticker #1 is the top ranked, it
> will have 49 for that entry.  So, I subtract the array from the number
> of tickers (50) to get the rank.
>
> You have to do this for each reference ticker.  But, in most cases,
> you are only interested in the top few.  In this example, it might be
> the top (or bottom) 5 out of the 50.  If you have to do it for every
> reference ticker, it is still faster than other approaches because of
> the very fast array comparison operations in AB.  There is a way to
> cut those comparisons in half - but it is more involved and is another
> story for another day.
>
> I won't guarantee the following code, but it might look something like -
>
> symcount = 50;
> //  Let's say that you've read in the data via a Foreign() call to
> //  array1 through array50 and the reference array is array1
> refnum = 1;
> count = 0;
> refarray = varget( "array" + refnum );
> for ( i = 0; i < symcoung; i++ )
> {
>    count = IIf( refarray > varget( "array" + i ), count++, count )
> }
> rank = symcount - count;
> //  Rank is now the rank of the reference ticker on each day
> //  It is usually normalized to a percentage
> pcnt = 100 - ( rank - 1 ) / ( symcount - 1 );
>
>
>
> Hope this helps,
>
> -- Bruce R.
>
> P.S. The other major use of ranking is to normalize then combine
> unbounded indicators.  For example, say you wanted to rank a group of
> tickers based on weighted scores of relative strength, momentum, etc.
> You would just combine the weighted, (percentage) normalized scores.
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Ara Kaloustian" <ara1@xxx> wrote:
>>
>> Here is a sort function that I got from the AB board,
>>
>> function sort(value)
>> {
>> //Value is array for same bar from all sectors
>> //12 data points (Sectors 2 through 13, based on Quotes Plus)
>> //
>> for(i = 13; i>=2; i--)
>> {
>>  for (j = 3; j <= i; j++)
>>  {
>>  if (value[j-1] > value[j])
>>   {
>>   tempvalue  = value[j-1];
>>   value[j-1] = value[j];
>>   value[j]   = tempvalue;
>>   }
>>  }
>> }
>> SortList = Value;
>> //list now sorted
>> //sortid = ID for top sector
>>
>> return SortList;
>> }
>>
>>
>> ----- Original Message ----- 
>> From: "marketmonk777" <RedEyes777@xxx>
>> To: <amibroker@xxxxxxxxxxxxxxx>
>> Sent: Monday, June 25, 2007 11:01 PM
>> Subject: [amibroker] Re: Ranking of MG Industry Groups
>>
>>
>> > --- In amibroker@xxxxxxxxxxxxxxx, "Gordon Sutherland" <gosuth@> wrote:
>> >>
>> >> Check-out the function:
>> >>
>> >> SetSortColumns( col1, col2, .... )
>> >>
>> >> Cheers,
>> >>
>> >> Gordon Sutherland
>> >
>> > Hi Gordon,
>> >
>> > That is a good solution for multi column sorting but I really am
>> > looking to rank each industry group based on various time frames.
>> >
>> > Here is an excerpt from an Automatic Analysis that I had to change to
>> > vertical in order to properly show it in this posting:
>> >
>> >
>> > Ticker MG851
>> > Date/Time 6/22/2007
>> > Name            Internet Service Providers
>> > Close  24.2
>> > 1P % -0.4
>> > 1P R 38      I inserted this 1 Day change rank
>> > 5P % 0.3
>> > 21P % 2       Want to add 5 day, 21 day, 63 day and 255 day Ranks
>> > 63P % 35
>> > 255P % 116
>> > NL 21 No
>> > ATR5 0.39
>> > ADR5 0.39
>> > HC 732.34
>> > L YR C 13.78
>> > YTD % 75.6
>> > YTD R 1         Another row I inserted to show YTD Rank
>> >
>> > So all I am trying to do is rank each of the percentage change columns
>> > from 1 to 240 (best to worst) in this one AA report.
>> >
>> > Any help would be appreciated.
>> >
>> > Regards,
>> >
>> > Dave
>> >
>> >
>> >
>> > Please note that this group is for discussion between users only.
>> >
>> > To get support from AmiBroker please send an e-mail directly to
>> > SUPPORT {at} amibroker.com
>> >
>> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
>> > http://www.amibroker.com/devlog/
>> >
>> > For other support material please check also:
>> > http://www.amibroker.com/support.html
>> >
>> > Yahoo! Groups Links
>> >
>> >
>> >
>>
>
>
>
>
> Please note that this group is for discussion between users only.
>
> To get support from AmiBroker please send an e-mail directly to
> SUPPORT {at} amibroker.com
>
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
>
> For other support material please check also:
> http://www.amibroker.com/support.html
>
> Yahoo! Groups Links
>
>
>



Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> 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/