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

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



PureBytes Links

Trading Reference Links

> 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@xxxxxxxx>
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@xxx>
> 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
>
>
>
>
>



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/