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

[amibroker] Re: Price Normalized RS Ranking using Cumulative Probability and Percentil function



PureBytes Links

Trading Reference Links

Ace
Without looking too closely at your code, can I point out that your 
array is limited to the number of elements equal to the number of 
bars found in the current stock.  So if your list is longer than 
number of bars in the current stock you will get a "subscript out of 
bounds error". Also I "think" there is a limitation on using the [0] 
and [1] element.  In any case, lookup Dimitris's code on Top Ranked 
Shares as he used arrays to store values which may offer some help 
to your problem
HTH
Andrew
--- In amibroker@xxxxxxxxxxxxxxx, "acesheet" <acesheet@xxxx> wrote:
> All,
> 
> I usually construct stock picking Excel spreadsheets in which I 
> create percentile ranks for things like returns of a stock 
relative 
> to the market, EPS Growth, Sales Growth, etc. Somewhat similar to 
> what can be found in Investor's business daily.
> 
> I am trying to develop a percentrank function in Amibroker. I 
> thought I had, but it assumed a normal distribution and recent 
> analysis of distributions and probability curves has showed me 
that 
> returns are not normally distributed and, in fact, are different 
> during differing market environments (bull vs bear).
> 
> Anyway, what I'd like to do is create my own %Rank statistic using 
> the new Percentile function such that it samples the ROC(C,260) 
for 
> all the stocks in my database and compares them to each other each 
> day. In essence duplicating what IBD does after a fashion.
> 
> One way I thought of to do this was to create a temporary 
reference 
> index of all the ROC's for each stock in my database for a given 
> day, perform a percentile rank on the set of ROC's and then use a 
> ten segment line fit of the cumulative probability (m*x+b), and 
> store the slope and intercept of each of the lines for each day as 
> 11 separate reference indices. This would essentially map out the 
> distribution for the market for that day and Relative Strength 
ranks 
> could be easily extracted from that data.
> 
> Suppose I have 3000 stocks in my database and I have 5 years of 
data 
> for each stock. Will AB allow me to create an index say 
> called '~R260temp' which contains all the ROC(C,260) information 
for 
> yesterday, perform a Percentile ranking on this ~R260temp index 
and 
> then increment the day to today?
> 
> The algorythm for say today would look something like this:
> 
> //-----------------------------------------------------------
> // First seed the temprary variable for ROC(C,260) with the ROC's 
> // of all the stocks in in Group0
> //-----------------------------------------------------------
> list = CategoryGetSymbols( categoryGroup, 0 );
> roc260=0;
> count=0;
> for( i = 0; ( sym = StrExtract( list, i ) ) != ""; i++ )
> {
>    roc260[i]=LastValue(ROC(Nz(Foreign( sym, "Close" )),260));
>    count=count+1;
> }
> 
> x=0;
> y=0;
> //-----------------------------------------------------------
> // First Loop i goes through percentile ranks in 
> // increments of 10 from 1 to 99
> // x = the %rank we are seeking
> // y = the ROC(C,260) that fits in between x-1 and x+1 
> //-----------------------------------------------------------
> lag=0;
> for( i = 0; i<=10; i++ )
> {
> Flag=0;
> for( j = 0; j<=count-1; j++ )
> {
>    y[i]=i*10;
>    if(i<1) y[i]=2;
>    if(i>9) y[i]=98;
>    if(roc260[j]>=Percentile( roc260, count, y[i]-1 ) AND roc260[j]
> <=Percentile( roc260, count, y[i]+1 )) 
> { x[i]=roc260[j];
>   Flag=1;
> }
> }
> }
> //-----------------------------------------------------------
> // I'm trying to store x & y in arrays to use for later screens.
> // The (x,y) pair should roughly represent the cumulative 
probability
> // of the database
> //-----------------------------------------------------------
> AddToComposite(y,"~yrank","C");
> AddToComposite(x,"~xroc","C");
> 
> Buy=0;
> 
> //-----------------------------------------------------------
> 
> Anyway when I run this code I get a "subscript out of bounds 
error" 
> on the very first loop, the ROC seeding loop. I'm not sure why 
that 
> would occur. Any clues?
> 
> Incidentally, the way this would be used is as reference data for 
> the the cumulative probability distribution (CPD). This would 
pretty 
> much be a match for a Percentile Rank based RS score. Using the 
data 
> points from this you could construct a set of 10 equations that 
> would essentially curve fit the CPD with 10 lines. 
> 
> Can anyone help with this effort. I think it would be a great 
> feature for Scans and Explorations in AA.
> 
> -ace



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/