<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def plot_cumulative_returns(factor_returns, period, freq, title=None, ax=None):
 """ Plots the cumulative returns of the returns series passed in. Parameters factor_returns : pd.Series Period wise returns of dollar neutral portfolio weighted by factor value. period: pandas.Timedelta or string Length of period for which the returns are computed (e.g. 1 day) if 'period' is a string it must follow pandas.Timedelta constructor format (e.g. '1 days', '1D', '30m', '3h', '1D1h', etc) freq : pandas DateOffset Used to specify a particular trading calendar e.g. BusinessDay or Day Usually this is inferred from utils.infer_trading_calendar, which is called by either get_clean_factor_and_forward_returns or compute_forward_returns title: string, optional Custom title ax : matplotlib.Axes, optional Axes upon which to plot. Returns ------- ax : matplotlib.Axes The axes that were plotted on. """

    if ax is None:
        f, ax = plt.subplots(1, 1, figsize=(18, 6))

    factor_returns = perf.cumulative_returns(factor_returns, period, freq)

    factor_returns.plot(ax=ax, lw=3, color='forestgreen', alpha=0.6)
    ax.set(ylabel='Cumulative Returns',
           title=("Portfolio Cumulative Return ({} Fwd Period)".format(period)
                  if title is None else title),
           xlabel='')
    ax.axhline(1.0, linestyle='-', color='black', lw=1)

    return ax