def test_historical_mean_return(): orig = [13.178779135809942, 3.8135072274034982] l1 = range(1, 101) l2 = [10 * 0.2 + i * 0.25 for i in range(21, 121)] d = {"1": l1, "2": l2} df = pd.DataFrame(d) ret = historical_mean_return(df, freq=252) assert abs(ret["1"] - orig[0]) <= 1e-15 assert abs(ret["2"] - orig[1]) <= 1e-15
def comp_expected_return(self, freq=252): """Computes the Expected Return of the stock. :Input: :freq: ``int`` (default: ``252``), number of trading days, default value corresponds to trading days in a year :Output: :expected_return: Expected Return of stock. """ return historical_mean_return(self.data, freq=freq)
def comp_mean_returns(self, freq=252): """Computes the mean returns based on historical stock price data. See ``finquant.returns.historical_mean_return``. :Input: :freq: ``int`` (default: ``252``), number of trading days, default value corresponds to trading days in a year. :Output: :ret: a ``pandas.DataFrame`` of historical mean Returns. """ return historical_mean_return(self.data, freq=freq)
def comp_expected_return(self, freq=252): """Computes the Expected Return of the portfolio. :Input: :freq: ``int`` (default: ``252``), number of trading days, default value corresponds to trading days in a year. :Output: :expected_return: ``float`` the Expected Return of the portfolio. """ if not isinstance(freq, int): raise ValueError("freq is expected to be an integer.") pf_return_means = historical_mean_return(self.data, freq=freq) weights = self.comp_weights() expected_return = weighted_mean(pf_return_means.values, weights) self.expected_return = expected_return return expected_return