code: def annual_return(returns, period=DAILY, annualization=None):
      """Determines the mean annual growth rate of returns.
  
      Parameters
      ----------
      returns : pd.Series or np.ndarray
          Periodic returns of the strategy, noncumulative.
          - See full explanation in :func:`~empyrical.stats.cum_returns`.
      period : str, optional
          Defines the periodicity of the 'returns' data for purposes of
          annualizing. Value ignored if `annualization` parameter is specified.
          Defaults are:
              'monthly':12
              'weekly': 52
              'daily': 252
      annualization : int, optional
          Used to suppress default values available in `period` to convert
          returns into annual returns. Value should be the annual frequency of
          `returns`.
  
      Returns
      -------
      float
          Annual Return as CAGR (Compounded Annual Growth Rate).
  
      """
  
      if len(returns) < 1:
          return np.nan
  
      ann_factor = annualization_factor(period, annualization)
  
      num_years = float(len(returns)) / ann_factor
      start_value = 100
      # Pass array to ensure index -1 looks up successfully.
      end_value = cum_returns(
          np.asanyarray(returns), starting_value=start_value
      )[-1]
      cum_returns_final = (end_value - start_value) / start_value
      annual_return = (1.0 + cum_returns_final) ** (1.0 / num_years) - 1
  
      return annual_return
  
imports: from __future__ import division
  from functools import wraps
  import pandas
  import numpy
  from scipy import stats
  from six import iteritems
  from empyrical.utils import nanmean, nanstd, nanmin
label_desc: Use image node_id 9 for calling a global function with example usage: annual_return(returns, period, annualization) and returns: annual_return, np