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

Re: [EquisMetaStock Group] Skewness or biasedness and kurtosis



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/