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 -----
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
Yahoo! India Matrimony: Find your life partner
online. |