code: def get_max_drawdown(returns):
      """
      Determines the maximum drawdown of a strategy.
  
      Parameters
      ----------
      returns : pd.Series
          Daily returns of the strategy, noncumulative.
          - See full explanation in :func:`~pyfolio.timeseries.cum_returns`.
  
      Returns
      -------
      float
          Maximum drawdown.
  
      Note
      -----
      See https://en.wikipedia.org/wiki/Drawdown_(economics) for more details.
      """
  
      returns = returns.copy()
      df_cum = cum_returns(returns, 1.0)
      running_max = np.maximum.accumulate(df_cum)
      underwater = df_cum / running_max - 1
      return get_max_drawdown_underwater(underwater)
  
imports: from __future__ import division
  from collections import OrderedDict
  from functools import partial
  import empyrical
  import numpy
  import pandas
  import scipy
  import scipy.stats
  from sklearn import linear_model
  from .deprecate import deprecated
  from .interesting_periods import PERIODS
  from .txn import get_turnover
  from .utils import APPROX_BDAYS_PER_MONTH, APPROX_BDAYS_PER_YEAR
  from .utils import DAILY
label_desc: Use image node_id 28 for calling a global function with example usage: get_max_drawdown(returns) and returns: get_max_drawdown_underwater