code: def generate_values(self, *args, **kwargs):
          
          values = super().generate_values(*args, **kwargs, size=(len(self.times) * self.size,))
          alpha = self.cagr
  
          # @todo - fill to cover the entire time: define rules for filling first
          ref_date = self.ref_date if self.ref_date else self.times[0].to_pydatetime()
          # assert ref_date >= self.times[0].to_pydatetime(), 'Ref date must be within variable time span.'
          # assert ref_date <= self.times[-1].to_pydatetime(), 'Ref date must be within variable time span.'
  
          start_date = self.times[0].to_pydatetime()
          end_date = self.times[-1].to_pydatetime()
  
          a = growth_coefficients(start_date, end_date, ref_date, alpha, self.size)
  
          values *= a.ravel()
  
          df = pd.DataFrame(values)
          df.columns = [kwargs['name']]
          df.set_index(self._multi_index, inplace=True)
          # @todo this is a hack to return a series with index as I don't know how to set an index and rename a series
          data_series = df.iloc[:, 0]
          data_series._metadata = kwargs
          data_series.index.rename(['time', 'samples'], inplace=True)
  
          return data_series
docs: Instantiate a random variable and apply annual growth factors.
  
          :return: