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

[amibroker] Re: K-Ratio Implementation (revisited)



PureBytes Links

Trading Reference Links

Hi Ron,

I came accross your message only yesterday so I don't know if you are still interested in this
> If someone could tell me why the Sqrt
> (SumOfSquaredDeviationsOfBarNumber) function is needed, I would 
> greatly appreciate it.

The answer is because StdErr of the regression and Sqrt(SumOfSquaredDeviationsOfBarNumber) are much easily available in most software built-in formula. Therefore once you know that StdErr of the regression divided by the Sqrt(SumOfSquaredDeviationsOfBarNumber) equal the StdErr of the slope - which is the required figure in the K-ratio formula - you understand why when it comes to implement the calculation the Sqrt(SumOfSquaredDeviationsOfBarNumber) is preferred.

I hope it helps,

paolo 


--- In amibroker@xxxxxxxxxxxxxxx, "Ron Rowland" <rowland@xxx> wrote:
>
> Tomasz, this both helps clear things up and makes things more 
> confusing at the same time.
> 
> First, it helps clear things up because now I understand why our two 
> formulas produce the same results (for values of n > 50).  The 
> function Sqrt(SumOfSquaredDeviationsOfBarNumber) quickly reaches a 
> limit of Sqrt(n)*(n) / Sqrt(12).  They are equal to within 2 
> significant digits when n is 10 or greater, 3 significant digits once 
> n is about 20, and more than 5 significant digits for n > ~210.
> 
> Therefore, my formula does match the AmiBroker K-Ratio results when n 
> is large enough:
> 
> K-Ratio(AmiApprx) = LinRegSlope / StdErr * sqrt(n) / sqrt(12)
> 
> This produces same K-Ratio as AmiBroker for values of n > 50.  Maybe 
> some math wizard out there can explain to us why the sqrt(12) is a 
> magic number/factor when calculating Sqrt
> (SumOfSquaredDeviationsOfLinearFunction).
> 
> 
> Now for the more confusing part.  Why is Sqrt
> (SumOfSquaredDeviationsOfBarNumber) part of your K-Ratio numerator?  
> I have read the Lars Kestner S&C V 14:3 article many times (as well 
> as any other info I could find on this subject).  No where could I 
> find any mention of the Sqrt(SumOfSquaredDeviationsOfBarNumber) 
> function, with the exception of the Excel example stated below.  I do 
> not have a copy of his book, but the Kestner article clearly states 
> that:
> 
> K-Ratio(1996) = LinRegSlope / (StdErr * Sqrt(n))
>    which was later revised to
> K-Ratio(2003) = LinRegSlope / (StdErr * n)
> 
> In the article's example calculations, the numerator is shown as 0.58 
> for System 1 and 0.55 for System 2.  This is the LinRegSlope for 
> those two systems.  It is not the LinRegSlope * Sqrt
> (SumOfSquaredDeviationsOfBarNumber).
> 
> To complicate things even more, the Excel example in the Kestner 
> article introduces the Sqrt(SumOfSquaredDeviationsOfBarNumber) 
> function in the denominator but provides no reason why.  Perhaps this 
> is explained in his book or perhaps it has something to do with the 
> way that Excel calculates StdErr of LinRegLine versus the way that 
> TradeStation does. There also appears to be an error in the 
> description of the Excel formula as the sqrt(n) is shown as a 
> multiplier instead of a divisor.
> 
> If someone could tell me why the Sqrt
> (SumOfSquaredDeviationsOfBarNumber) function is needed, I would 
> greatly appreciate it.
> 
> 
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@> 
> wrote:
> >
> > > K-Ratio(Ami)  = LinRegSlope / StdErr  * sqrt(n) / sqrt(12)
> > No it is NOT !
> > 
> > K-Ratio (AMI) is
> > 
> > LinRegSlope * Sqrt( SumOfSquaredDeviationsOfBarNumber ) / (StdErr * 
> n);
> > 
> > not the one you wrote.
> > 
> > From the HELP FILE (again: read, read, read the help file).
> > 
> > K-Ratio - Detects inconsistency in returns. Should be 1.0 or more. 
> The higher K ratio is the more consistent return you may expect
> > from the system. Linear regression slope of equity line multiplied 
> by square root of sum of squared deviations of bar number divided
> > by standard error of equity line multiplied by square root of 
> number of bars. More information: Stocks & Commodities V14:3
> > (115-118): Measuring System Performance by Lars N. Kestner
> > 
> > Best regards,
> > Tomasz Janeczko
> > amibroker.com
> > ----- Original Message ----- 
> > From: "Ron Rowland" <rowland@>
> > To: <amibroker@xxxxxxxxxxxxxxx>
> > Sent: Friday, July 27, 2007 7:06 PM
> > Subject: [amibroker] Re: K-Ratio Implementation (revisited)
> > 
> > 
> > > Thanks Thomas, but no, I don't believe that post does not answer 
> my
> > > question.  The post below explains the the difference between K-
> Ratio
> > > (1996) and K-Ratio(2003).  However, it does not explain the
> > > Backtester results.
> > >
> > > K-Ratio(1996) = LinRegSlope / (StdErr * sqrt(n))
> > > K-Ratio(2003) = LinRegSlope / (StdErr * n)
> > > K-Ratio(Ami)  = LinRegSlope / StdErr  * sqrt(n) / sqrt(12)
> > >
> > > The sqrt(12) function is typically used to convert a monthly 
> StdDev
> > > (or StdErr) to an annualized one. I do not understand its purpose
> > > here.
> > >
> > > Alternatively, there could be additional errors in mys 
> undertanding
> > > of these functions:
> > >
> > > LinRegSlope returns the slope for 1 period.  Since the slope is
> > > linear, it can be annualized by multiplying a daily slope by 252
> > > market days in a year.  Multiplying by n will provide total 
> increase
> > > over the entire backtest.
> > >
> > > StdErr returns the standard error function (the 1-period average 
> of
> > > the entire range).  Since it is essentially a 1-period standard
> > > deviation, to annualize this value you should multiply by sqrt
> (252).
> > >
> > > It seems to me that LRS / StdErr = K-Ratio for one day.
> > >
> > > To annualize this, it should be multiplied by 252/ sqrt(252).
> > > Of course, any number multiplied by its sqrt = its sqrt, to the
> > > annualized version can be simplified to
> > >
> > > LRS/ StdErr * sqrt(252).
> > >
> > > If for some reason, you do not want an annualized version that 
> can be
> > > compared for various time frames, you can create the cumulative
> > > version by replacing 252 with n (the number of observations).  
> This
> > > suggests that sqrt(252) should be in numerator instead of n being 
> in
> > > the denominator.
> > >
> > > My thinking and/or assumptions must be off somewhere, but I cannot
> > > determine where.
> > >
> > >
> > >
> > > --- In amibroker@xxxxxxxxxxxxxxx, Thomas Ludwig <Thomas.Ludwig@>
> > > wrote:
> > >>
> > >> TJ once explained that in a posting in this list:
> > >>
> > >> > Hello,
> > >>
> > >> > By the way it is NOT surprising that you are getting lower 
> values
> > >> >than before.
> > >>
> > >> > In his book Mr. Lars Kestner writes:
> > >>
> > >> > ' The K-ratio is a unitless measure of performance that can be
> > >> >compared across markets and time periods. [ - - - ] Traders 
> should
> > >> > search for strategies yielding K-ratios greater than +0.50.
> > >> >Together, the Sharpe ratio and K-ratio are the most important
> > >> > measures when evaluating trading strategy performance. Note: 
> When
> > >> >I created the K-ratio in 1996, I thought I had created a
> > >> > robust measure to evaluate performance. In mid-2000, trader Bob
> > >> >Fuchs brought a small error to my attention regarding the
> > >> > scaling of the K-ratio. He was correct in his critique and I 
> have
> > >> >corrected the error in this text. Publications prior to 2002 
> will
> > >> > show a different formula for the K-ratio. The updated formula 
> in
> > >> >this book is correct.'
> > >>
> > >> > Previous AB versions contained old K-ratio formulation [of 
> 1996]
> > >> >and newest one contains
> > >> > new formulation [from Kestners book of 2003].
> > >>
> > >> > The difference between those two formulations [i.e. 'trader Bob
> > >> >Fuchs brought a small error to my attention regarding the
> > >> > scaling of the K-ratio. ' ]
> > >> > is just the factor denominator that is now 
> [NumberOfObservations]
> > >> >instead of SQRT[ NumberOfObservation]
> > >>
> > >> > Since [NumberOfObservations]/SQRT[NumberOfObservations] = SQRT
> > >> >[NumberOfObservations]
> > >> > it makes it obvious that new K-ratio figures will be SQRT
> > >> >[NumberOfObservations] times smaller than previous.
> > >>
> > >> > The relationship between new and old version can be written as:
> > >> >
> > >> > KRatio[ NEW2003 ] = KRatio[ OLD1996 ]/SQRT
> [NumberOfObservations]
> > >>
> > >> > You can correspond with Mr. Kestner why 'new' is better 
> than 'old'
> > >> >but do not discuss this with me, because I did not invent it.
> > >>
> > >> I guess that answers your question.
> > >>
> > >> Greetings, Thomas
> > >>
> > >> > I made two posts on this subject a couple of weeks ago, but it
> > > seems
> > >> > those posts have disappeared.
> > >> >
> > >> > Anyway.  I am now able to duplicate the AmiBroker 4.96 beta CBT
> > > results
> > >> > for K-Ratio.  My implmentation follows and appears to match the
> > >> > AmiBroker results for backtest periods lasting from 2 months to
> > > 17+
> > >> > years.
> > >> >
> > >> > Eq = Foreign("~~~EQUITY", "C"); // Assign Close of Backtest
> > > Equity = Eq
> > >> > n  = Barcount -1; // Number of periods
> > >> >
> > >> > // K-Ratio - only valid for non-compounding systems
> > >> > EqLRS = LinRegSlope(Eq, n+1); // Linear Reg Slope of entire 
> (n+1)
> > > range
> > >> > EqSE  = StdErr(Eq, n+1);// Std Err of entire (n+1) range
> > >> > EqKR  = EqLRS/EqSE;    // K-Ratio (unitless measure)
> > >> > EqKRAmi = EqKR*sqrt(n+1)/sqrt(12);// AmiBroker 4.96
> > > implementation
> > >> >
> > >> > My question is:  Why does it require a divide by sqrt(12) to 
> work?
> > >> >
> > >> >
> > >> >
> > >> >
> > >> > 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
> > >
> > >
> > >
> > >
> > >
> >
>




------------------------------------

**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to 
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

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

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/