Nulls can only appear at the BEGINNING of array. Using Nulls in the middle of 
non-null series
is NOT supported. If your data series includes Nulls in the middle, you must 
convert Nulls to non-null values
using NZ function.

To answer your question: use loop and calculate StDev yourself in a loop 
- easy one is sqrt(  (EX2 - (EX)*(EX)) )

Best regards,
Tomasz Janeczko
amibroker.com
  ----- Original Message ----- 
  From: Ken Close 
  To: [email protected] 
  Sent: Saturday, July 19, 2008 6:20 PM
  Subject: [amibroker] Interesting Math Problem wih StDev


  I want to calculate the SD of monthly returns, as well as the SD of only the 
positive monthly returns and negative monthly returns.

  The SD of the monthly returns is easy, but the SD of the positive or negative 
returns is in error because I do not know how to calculate them, at least in 
AFL.

  If MnGain is the monthly return

  Then SDMonthly = StDev(MnGain, LastValue(Period));

  However, to determine positive monthly gains I use

  MnGainUp = IIF(MnGain>0, MnGain, 0);
  MnGainDn = IIF(MnGain<=0,MnGain,0);

  Then SDUpMonthly = StDev(MnGainUp,Period);

  is overstated because of the zeros which are within the range of gains on 
which the SD function operates.
  Take out the zeros in a column of MnUpGains within Excel and then take the SD 
of the resulting series, and you get lower SDs compared to those with the zeros 
in the series.

  But, using 

  MnGainUp = IIF(MnGain>0, MnGain, Null);
  MnGainDn = IIF(MnGain<=0,MnGain,Null);

  (which is the same as taking out the zeros manually in Excel) blows up the 
StDev calculation in AB (values in the millions).
  The internal AB calculation of StDev apparently does not like Nulls within 
the series---or else I am doing it wrong.

  Anyone have a suggestion on getting the correctly calculated standard 
deviations of just the up gains and down gains??

  Ken
   

Reply via email to