code: def annual_return(returns, period=DAILY, annualization=None):
      """
      Determines the mean annual growth rate of returns. This is equivilent
      to the compound annual growth rate.
  
      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
      -------
      annual_return : float
          Annual Return as CAGR (Compounded Annual Growth Rate).
  
      """
  
      if len(returns) < 1:
          return np.nan
  
      ann_factor = annualization_factor(period, annualization)
      num_years = len(returns) / ann_factor
      # Pass array to ensure index -1 looks up successfully.
      ending_value = cum_returns_final(returns, starting_value=1)
  
      return ending_value ** (1 / num_years) - 1
  
imports: from __future__ import division
  import math
  import pandas
  import numpy
  from math import pow
  from scipy import stats, optimize
  from six import iteritems
  from sys import float_info
  from .utils import nanmean, nanstd, nanmin, up, down, roll, rolling_window
  from .periods import ANNUALIZATION_FACTORS, APPROX_BDAYS_PER_YEAR
  from .periods import DAILY, WEEKLY, MONTHLY, QUARTERLY, YEARLY
label_desc: Use image node_id 11 for calling a global function with example usage: annual_return(returns, period, annualization) and returns: unknown, np