/// <param name="returns"></param> /// <param name="geometric"></param> /// <returns></returns> func Cumulative(returns *utils.SlidingWindow, geometric bool) (float64, error) { if returns == nil { return math.NaN(), errors.New("Cumulative Sliding window is Nil !!!") } if returns.Count() == 0 { return math.NaN(), errors.New("Cumulative Count == 0 !!") } if !geometric { return (returns.Sum()), nil } else { add_data, err := utils.Add(1.0, returns) if err != nil { return math.NaN(), err } prod_data, err := utils.Prod(add_data) if err != nil { return math.NaN(), err } return (prod_data - 1.0), nil } }