PureBytes Links
Trading Reference Links
|
Hi,
Here is an example of what I want to do: I have a series of investment
returns, for which I have calculated lognormal parameters (mean and
standard deviation), so I can use a normal distribution to find the
95th percentile return. I look up the percentile in a distribution
table, read the z-score from the table, and I can use the z-score to
calculate the return. If I do the same thing for the 5th percentile,
I have a return range that I can work with.
There are lots of algorithms out there to return a percentile, given a
z-score, but I can't seem to find an accurate, reliable one to return
a z-score, given a percentile, until now. As I'm coding the algorithm
in software, I can't use a table. Nice piece of work.
Thanks.
Regards,
Pal
(Closing the gap, one step at a time...)
--- In amibroker@xxxxxxxxxxxxxxx, "Howard Bandy" <howardbandy@xxxx>
wrote:
> Hi Pal --
>
> Here is a conversion of the (Abramowitz & Stegun) algorithm you
originally
> asked about into afl code.
>
> Am I correct in the following interpretation? Given a percentile
of the
> normal probability density, what is the corresponding Z Score?
>
> Z Scores are based on a normal density with mean 0.0 and standard
deviation
> 1.0. 95% of Z Scores fall between -2.0 and +2.0. So setting p to
0.025 and
> 0.975 should return Z Scores of -2.0 and 2.0. And setting p to
0.50 should
> return 0.0.
>
> If so, then the (Abramowitz & Stegun) algorithm is NOT correct.
See if
> there is a term missing or a coefficient wrong. I do not have
reference
> books handy so cannot check for myself.
>
> The simpler (Schmeiser) routine you described, with code given
below, works
> correctly and executes quickly.
>
> The perl routine you described more recently (afl code not included
with
> this message) uses a binary search and will take much longer to
return the Z
> Score than either of the others. No problem for an occasional use,
but time
> consuming if done within loops.
>
> If you are using either of these in a trading system, you probably
do not
> need precision better than 3e-3, or even better than two digits --
there is
> lots else going that will throw more random variation into the
system than
> that.
>
> If I am not too nosy, can you tell us how you will be using this
(after it
> is corrected)? Usually some number of data items, such as trade
profits,
> are converted to Z Scores as part of a normalization process. What
is the
> situation where you will want to know the Z Score corresponding to
a point
> on the normal probability density curve?
>
> Thanks,
> Howard
>
> //----------------------
> // normal percentile to Z Score conversion
> // Version 1 -- Abramowitz & Stegun
>
> // the formula needs to be corrected
>
> a0 = 2.30753;
> a1 = 0.27061;
> b1 = 0.99229;
> b2 = 0.04481;
>
>
> //p = 0.025;
>
> p = Param("p", 0.025, 0.0001, 0.9999, 0.0001 );
>
> pp = IIf(p<=0.5, p, 1.0-p);
>
> t = sqrt(log(1.0/pp^2));
> z = t - (a0 + a1*t) / (1.0 - t * (b1 + b2*t));
>
> z = IIf(p<=0.5, z, -z);
>
> //----------------------
>
>
> //----------------------
> // normal percentile to Z Score conversion
> // Version 2
> //
> // Schmeiser (1979) came up with the following simple
> // formula for p > 0.5:
> //
> // z = {p ^ 0.135 - (1-p) ^ 0.135} / 0.1975
> //
> // According to a table in Shore (1982), it is accurate
> // to two digits at p = 0, 0.4, 0.8, ...,
> // which may be good enough.
>
> //p = 0.025;
>
> p = Param("p", 0.025, 0.0001, 0.9999, 0.0001 );
>
> pp = IIf(p>=0.5, p, 1.0-p);
>
> z = ((pp ^ 0.135) - ((1.0-pp) ^ 0.135)) / 0.1975;
>
> z = IIf(p>=0.5, z, -z);
>
> //----------------------
>
>
>
>
> > Date: Fri, 19 Sep 2003 19:01:08 -0000
> > From: "palsanand" <palsanand@xxxx>
> > Subject: Z-Score
> >
> > Hi,
> >
>
>
> <<SNIP>>
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Special Sale: 50% off ReplayTV
Easily record your favorite shows!
CNet Ranked #1 over Tivo!
http://us.click.yahoo.com/WUMW7B/85qGAA/ySSFAA/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/
|