def test_annual_return(): assert_almost_equal( rqrisk.Risk(weekly_returns, simple_benchmark, 0, rqrisk.WEEKLY).annual_return, 0.24690830513998208) assert_almost_equal( rqrisk.Risk(monthly_returns, simple_benchmark, 0, rqrisk.MONTHLY).annual_return, 0.052242061386048144)
def test_return(): assert_almost_equal( rqrisk.Risk(positive_returns, simple_benchmark, 0).max_drawdown, -0.0) assert_almost_equal( rqrisk.Risk(negative_returns, simple_benchmark, 0).max_drawdown, -0.36590730349873601) assert_almost_equal( rqrisk.Risk(one_return, one_benchmark, 0).max_drawdown, 0)
def test_sharpe(): assert_almost_equal( rqrisk.Risk(one_return, one_benchmark, 0).sharpe, np.nan) assert_almost_equal( rqrisk.Risk(positive_returns, zero_benchmark, 0).sharpe, 52.915026221291804) assert_almost_equal( rqrisk.Risk(negative_returns, zero_benchmark, 0).sharpe, -24.406808633910085)
def test_calmar(): assert_almost_equal( rqrisk.Risk(one_return, one_benchmark, 0).calmar, np.nan) assert_almost_equal( rqrisk.Risk(weekly_returns, simple_benchmark, 0, rqrisk.WEEKLY).calmar, 2.4690830513998208) assert_almost_equal( rqrisk.Risk(monthly_returns, simple_benchmark, 0, rqrisk.MONTHLY).calmar, 0.52242061386048144)
def test_annual_volatity(): assert_almost_equal( rqrisk.Risk(simple_benchmark, simple_benchmark, 0).annual_volatility, 0) assert_almost_equal( rqrisk.Risk(weekly_returns, simple_benchmark, 0, rqrisk.WEEKLY).annual_volatility, 0.38851569394870583) assert_almost_equal( rqrisk.Risk(monthly_returns, simple_benchmark, 0, rqrisk.MONTHLY).annual_volatility, 0.18663690238892558)
def test_information_ratio(): assert_almost_equal( rqrisk.Risk( positive_returns, pd.Series(zero_benchmark.values, index=positive_returns.index), 0).information_ratio, 3.3333333333333326) assert_almost_equal( rqrisk.Risk( negative_returns, pd.Series(zero_benchmark.values, index=negative_returns.index), 0).information_ratio, -1.5374844271921471)
def test_downside_risk(): assert_almost_equal( rqrisk.Risk(one_return, np.array([0]), 0).downside_risk, 0.0) assert_almost_equal( rqrisk.Risk( weekly_returns, pd.Series(zero_benchmark.values, index=weekly_returns.index), 0, rqrisk.WEEKLY).downside_risk, 0.25888650451930134) assert_almost_equal( rqrisk.Risk(weekly_returns, pd.Series(dot_one_benchmark, index=weekly_returns.index), 0, rqrisk.WEEKLY).downside_risk, 0.7733045971672482) assert_almost_equal( rqrisk.Risk( monthly_returns, pd.Series(zero_benchmark.values, index=monthly_returns.index), 0, rqrisk.MONTHLY).downside_risk, 0.1243650540411842) assert_almost_equal( rqrisk.Risk(monthly_returns, pd.Series(dot_one_benchmark, index=monthly_returns.index), 0, rqrisk.MONTHLY).downside_risk, 0.37148351242013422)
def test_sortino(): assert_almost_equal( rqrisk.Risk(one_return, one_benchmark, 0).sortino, np.nan) assert_almost_equal( rqrisk.Risk( positive_returns, pd.Series(zero_benchmark.values, index=positive_returns.index), 0).sortino, np.inf) assert_almost_equal( rqrisk.Risk( negative_returns, pd.Series(zero_benchmark.values, index=negative_returns.index), 0).sortino, -13.532743075043401) assert_almost_equal( rqrisk.Risk( simple_benchmark, pd.Series(zero_benchmark.values, index=simple_benchmark.index), 0).sortino, np.inf) assert_almost_equal( rqrisk.Risk( weekly_returns, pd.Series(zero_benchmark.values, index=weekly_returns.index), 0, rqrisk.WEEKLY).sortino, 0.50690062680370862) assert_almost_equal( rqrisk.Risk( monthly_returns, pd.Series(zero_benchmark.values, index=monthly_returns.index), 0, rqrisk.MONTHLY).sortino, 0.11697706772393276)
def _r(returns, benchmark_returns, risk_free_rate, period=DAILY): if benchmark_returns is None: benchmark_returns = pd.Series([np.nan] * len(returns), index=returns.index, dtype=returns.dtype) return rqrisk.Risk(returns, benchmark_returns, risk_free_rate, period)