def test_log_return_passthrough(): # addresses #343 df = get_data() for method in {"mean_historical_return", "ema_historical_return", "capm_return"}: mu1 = expected_returns.return_model(df, method=method, log_returns=False) mu2 = expected_returns.return_model(df, method=method, log_returns=True) try: pd.testing.assert_series_equal(mu1, mu2) except AssertionError: return assert False
def test_risk_matrix_and_returns_data(): # Test the switcher method for simple calls df = get_data() for method in {"mean_historical_return", "ema_historical_return", "capm_return"}: mu = expected_returns.return_model(df, method=method) assert isinstance(mu, pd.Series) assert list(mu.index) == list(df.columns) assert mu.notnull().all() assert mu.dtype == "float64" mu2 = expected_returns.return_model( expected_returns.returns_from_prices(df), method=method, returns_data=True ) pd.testing.assert_series_equal(mu, mu2)
def test_return_model_additional_kwargs(): df = get_data() mkt_prices = get_benchmark_data() mu1 = expected_returns.return_model( df, method="capm_return", market_prices=mkt_prices, risk_free_rate=0.03 ) mu2 = expected_returns.capm_return( df, market_prices=mkt_prices, risk_free_rate=0.03 ) pd.testing.assert_series_equal(mu1, mu2)
def test_return_model_not_implemented(): df = get_data() with pytest.raises(NotImplementedError): expected_returns.return_model(df, method="fancy_new!")