def ema_historical_return(prices, frequency=<NUM_LIT>, span=<NUM_LIT>):
if not isinstance(prices, pd.DataFrame):<EOL><INDENT>warnings.warn("<STR_LIT>", RuntimeWarning)<EOL>prices = pd.DataFrame(prices)<EOL><DEDENT>daily_returns = daily_price_returns(prices)<EOL>return daily_returns.ewm(span=span).mean().iloc[-<NUM_LIT:1>] * frequency<EOL>
Calculate the exponentially-weighted mean of (daily) historical returns, giving
higher weight to more recent data.

:param prices: adjusted closing prices of the asset, each row is a date
               and each column is a ticker/id.
:type prices: pd.DataFrame
:param frequency: number of time periods in a year, defaults to 252 (the number
                  of trading days in a year)
:type frequency: int, optional
:param span: the time-span for the EMA, defaults to 500-day EMA.
:type span: int, optional
:return: annualised exponentially-weighted mean (daily) return of each asset
:rtype: pd.Series