The exponentially weighted moving average (EWMA) approach captures short-term movements in volatility for a conditional volatility forecasting model. By virtue of its alpha, or decay factor, this provides a statistical streaming data model that is exponentially biased towards newer entries. http://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average An EWMA only needs the most recent forecast value to be kept, as opposed to a standard moving average model. INTERNAL API @param alpha decay factor, sets how quickly the exponential weighting decays for past data compared to new data, see http://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average @param value the current exponentially weighted moving average, e.g. Y(n - 1), or, the sampled value resulting from the previous smoothing iteration. This value is always used as the previous EWMA to calculate the new EWMA.
 public Metric(string name, double value, EWMA average = null)
 {
     Average = average;
     Value   = value;
     Name    = name;
     if (string.IsNullOrEmpty(Name))
     {
         throw new ArgumentNullException("name", string.Format("Invalid Metric {0} value {1}", name, value));
     }
 }
 public Metric(string name, double value, EWMA average = null)
 {
     Average = average;
     Value = value;
     Name = name;
     if (string.IsNullOrEmpty(Name)) throw new ArgumentNullException("name", string.Format("Invalid Metric {0} value {1}", name, value));
 }
 private PerformanceCounterMetricsCollector(Cluster cluster) : this(cluster.SelfAddress,
                                                                    EWMA.CalculateAlpha(cluster.Settings.MetricsMovingAverageHalfLife, cluster.Settings.MetricsInterval))
 {
 }