PureBytes Links
Trading Reference Links
|
Haven't tried this code, but there is a known formula which was
implemented in the code I gave, and which had to be that complex to
get the correct result. If you were to take the simplified approx,
or this code, and test it to an answer you got from say a statistical
package, it will not tally. This code looks a bit suspect, as there
is no exponential moving average nor these funny periods in the real
kurtosis. The real kurtosis formula is
sum[ (x-mu) ^ 4 ] / ( n x s^4 ) - 3
which translates into the Metastock code I gave after lots of sweat.
If Metastock had a function (do you know about one?) that calculates
the so-called mean absolute deviation
sum | x - mu |
then you could use that I think to simplify, but I could not find
something like that. Also, if you can scale a portion to zero,
something like
x - mu
where mu is constant, but x varies from say 1 to 10 periods ago, then
you could also simplify it a lot, but I could not find such a function
and the Metastock processor will also vary the mu bit. I was
wondering if anybody here knows how to do it. I tried
ss := mov(xx,ll,s);
tt := sum(xx-ss,ll);
but the problem is that ss does not remain constant in the second
part of the formula, it also 'rolls' through time, so I had to use
all those 'ref' statements to fix it.
Regards
MG Ferreira
TsaTsa EOD Programmer and trading model builder
http://tsatsaeod.ferra4models.com
http://www.ferra4models.com
--- In equismetastock@xxxxxxxxxxxxxxx, Dusant <cooldush@xxxx> wrote:
> Do we need such a complex code for Kurtosis?
>
> Mov( Mov( Mo( 4) - Ref( Mo( 4), -1), 50, E), 10, S)
>
> should do ... or substitute the 4, 50, 10 for any values which you
feel is good.
>
> Dusant
> ----- Original Message -----
> From: MG Ferreira
> To: equismetastock@xxxx
> Sent: Friday, March 04, 2005 9:37 PM
> Subject: [EquisMetaStock Group] Skewness or biasedness and kurtosis
>
>
>
> Herewith code for the skewness and kurtosis of a series (somebody
> requested this, so don't jump to conclusions - specifically, don't
> test this as a trading model - caveat emptor - This is often useful
> when trading options and we used these things to devise option
> strategies, such as building indicators that tell you if you should
> be buying/writing puts or calls, in or out the money etc - but -
> don't be mislead by this statement as these are the basic building
> blocks of such a system, not the system itself - and given upon
> request...)
>
> It is a bit troublesome to do this in Metastock due to the way in
> which its time series processor works. You have to manually add up
> the history to get the exact version, but you can easily build a
> good approximation. The exact version quickly causes Metastock to
> give an error message, and we limit it to 20 days, which really is
> too little for this indicator. We also give an approximate version
> which is very easy to code and use, and here you can go much higher
> than the 20 day limit of the exact system. The exact system also
> shows how you can use boolean algebra in stead of lots of if
> statements. Typically you should have a highish value for these,
> say 50 and above.
>
> OK, so there are four formulas in total, exact and approximate ones
> for the skewness or bias and the kurtosis. Note that we calculate,
> as you should, these figures in the return series, not the series
> itself.
>
> How do you interpret these? Just a brief summary.
>
> Skewness: If this is positive, then the market has a positive
> news impact curve. Up movements are generally higher than down
> movements. If this value is negative, then vice versa. Here is
> an example of movements in a positive skew market:
>
> +2 -1 +5 -3 +3 -1 +3 -1 +2
>
> Note that, if the market rises, it generally rises more than if it
> falls.
>
> Kurtosis: If this value is positive, it means the returns are
> leptokurtic. A negative value indicates a platykurtic distribution.
> Leptokurtic technically means there are more outliers than in a normal
> distribution, in practise it is indicative of a risky market. The
> higher this value, the more risky the market is, with 0 sort of
> meaning it is a normal market. A low value means that you have a
> low risk market. Here is an example of a leptokurtic market:
>
> +1 -1 +1 -1 +10 -1 +1 -1 +12 -2 +1 -1 +2 -1
>
> Note that the market's return is quite concentrated around zero but
> every now and again you have a HUGE outlier - this is leptokurtosis.
>
> Code follows below, note it is in four sections.
>
> Regards
> MG Ferreira
> TsaTsa EOD Programmer and trading model builder
> http://tsatsaeod.ferra4models.com
> http://www.ferra4models.com
>
> ----------8<-----------------------------------------------------
> {Bias Exact Metastock code
> -------------------------
> MG Ferreira
> http://www.ferra4models.com
> For personal use only}
>
> xx := INDICATOR;
> ll := Input("Bias length:",1,20,20);
> yy := ROC(xx,1,%);
> mm := Mov(yy,ll,S);
> ss := Power(yy-mm,3)+
> Power((Ref(yy,-1)-mm)*(ll>1),3)+
> Power((Ref(yy,-2)-mm)*(ll>2),3)+
> Power((Ref(yy,-3)-mm)*(ll>3),3)+
> Power((Ref(yy,-4)-mm)*(ll>4),3)+
> Power((Ref(yy,-5)-mm)*(ll>5),3)+
> Power((Ref(yy,-6)-mm)*(ll>6),3)+
> Power((Ref(yy,-7)-mm)*(ll>7),3)+
> Power((Ref(yy,-8)-mm)*(ll>8),3)+
> Power((Ref(yy,-9)-mm)*(ll>9),3)+
> Power((Ref(yy,-10)-mm)*(ll>10),3)+
> Power((Ref(yy,-11)-mm)*(ll>11),3)+
> Power((Ref(yy,-12)-mm)*(ll>12),3)+
> Power((Ref(yy,-13)-mm)*(ll>13),3)+
> Power((Ref(yy,-14)-mm)*(ll>14),3)+
> Power((Ref(yy,-15)-mm)*(ll>15),3)+
> Power((Ref(yy,-16)-mm)*(ll>16),3)+
> Power((Ref(yy,-17)-mm)*(ll>17),3)+
> Power((Ref(yy,-18)-mm)*(ll>18),3)+
> Power((Ref(yy,-19)-mm)*(ll>19),3);
> ll*ss/(Power(Stdev(yy,ll)*Sqrt(ll/(ll-1)),3)*(ll-1)*(ll-2))
> ----------8<-----------------------------------------------------
> {Bias Approx Metastock code
> --------------------------
> MG Ferreira
> http://www.ferra4models.com
> For personal use only}
>
> xx := INDICATOR;
> ll := Input("Bias length:",1,9999,50);
> yy := ROC(xx,1,%);
> mm := Mov(yy,ll,S);
> dd := yy-mm;
>
ll*Sum(Power(dd,3),ll)/(Power(Stdev(yy,ll)*Sqrt(ll/(ll-1)),3)*(ll-1)*(ll-2))
> ----------8<-----------------------------------------------------
> {Kurtosis Exact Metastock code
> -----------------------------
> MG Ferreira
> http://www.ferra4models.com
> For personal use only}
>
> xx := INDICATOR;
> ll := Input("Kurtosis length:",1,20,20);
> yy := ROC(xx,1,%);
> mm := Mov(yy,ll,S);
> ss := Power(yy-mm,4)+
> Power((Ref(yy,-1)-mm)*(ll>1),4)+
> Power((Ref(yy,-2)-mm)*(ll>2),4)+
> Power((Ref(yy,-3)-mm)*(ll>3),4)+
> Power((Ref(yy,-4)-mm)*(ll>4),4)+
> Power((Ref(yy,-5)-mm)*(ll>5),4)+
> Power((Ref(yy,-6)-mm)*(ll>6),4)+
> Power((Ref(yy,-7)-mm)*(ll>7),4)+
> Power((Ref(yy,-8)-mm)*(ll>8),4)+
> Power((Ref(yy,-9)-mm)*(ll>9),4)+
> Power((Ref(yy,-10)-mm)*(ll>10),4)+
> Power((Ref(yy,-11)-mm)*(ll>11),4)+
> Power((Ref(yy,-12)-mm)*(ll>12),4)+
> Power((Ref(yy,-13)-mm)*(ll>13),4)+
> Power((Ref(yy,-14)-mm)*(ll>14),4)+
> Power((Ref(yy,-15)-mm)*(ll>15),4)+
> Power((Ref(yy,-16)-mm)*(ll>16),4)+
> Power((Ref(yy,-17)-mm)*(ll>17),4)+
> Power((Ref(yy,-18)-mm)*(ll>18),4)+
> Power((Ref(yy,-19)-mm)*(ll>19),4);
>
ll*(ll+1)*ss/(Power(Stdev(yy,ll)*Sqrt(ll/(ll-1)),4)*(ll-1)*(ll-2)*(ll-3))-3*(ll-1)*(ll-1)/((ll-2)*(ll-3))
> ----------8<-----------------------------------------------------
> {Kurtosis Approx Metastock code
> ------------------------------
> MG Ferreira
> http://www.ferra4models.com
> For personal use only}
>
> xx := INDICATOR;
> ll := Input("Kurtosis length:",1,9999,50);
> yy := ROC(xx,1,%);
> mm := Mov(yy,ll,S);
> dd := yy - mm;
>
ll*(ll+1)*Sum(Power(dd,4),ll)/(Power(Stdev(yy,ll)*Sqrt(ll/(ll-1)),4)*(ll-1)*(ll-2)*(ll-3))-3*(ll-1)*(ll-1)/((ll-2)*(ll-3))
> ----------8<-----------------------------------------------------
>
>
>
>
> Yahoo! Groups Sponsor
ADVERTISEMENT
>
>
> ---------------------------------
> Yahoo! Groups Links
>
> To visit your group on the web, go to:
> http://groups.yahoo.com/group/equismetastock/
>
> To unsubscribe from this group, send an email to:
> equismetastock-unsubscribe@xxxxxxxxxxxxxxx
>
> Your use of Yahoo! Groups is subject to the Yahoo! Terms of
Service.
>
>
> Yahoo! India Matrimony: Find your life partneronline.
------------------------ Yahoo! Groups Sponsor --------------------~-->
Has someone you know been affected by illness or disease?
Network for Good is THE place to support health awareness efforts!
http://us.click.yahoo.com/Rcy2bD/UOnJAA/cosFAA/BefplB/TM
--------------------------------------------------------------------~->
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/equismetastock/
<*> To unsubscribe from this group, send an email to:
equismetastock-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|