ENH: Annualize sortino ratio.

Use annualized values for sortino, so that it is calculated using the
same units as sharpe, etc.
This commit is contained in:
Eddie Hebert
2013-10-11 00:27:03 -04:00
parent 1afc9069b1
commit 0ebdb2fe77
4 changed files with 65 additions and 10 deletions
+13 -2
View File
@@ -230,7 +230,14 @@ class AnswerKey(object):
'Sim Cumulative', 'P', 4, 254),
'ALGORITHM_CUMULATIVE_SHARPE': DataIndex(
'Sim Cumulative', 'R', 4, 254)
'Sim Cumulative', 'R', 4, 254),
'CUMULATIVE_DOWNSIDE_RISK': DataIndex(
'Sim Cumulative', 'U', 4, 254),
'CUMULATIVE_SORTINO': DataIndex(
'Sim Cumulative', 'V', 4, 254),
}
def __init__(self):
@@ -289,4 +296,8 @@ RISK_CUMULATIVE = pd.DataFrame({
'volatility': pd.Series(dict(zip(
DATES, ANSWER_KEY.ALGORITHM_CUMULATIVE_VOLATILITY))),
'sharpe': pd.Series(dict(zip(
DATES, ANSWER_KEY.ALGORITHM_CUMULATIVE_SHARPE)))})
DATES, ANSWER_KEY.ALGORITHM_CUMULATIVE_SHARPE))),
'downside_risk': pd.Series(dict(zip(
DATES, ANSWER_KEY.CUMULATIVE_DOWNSIDE_RISK))),
'sortino': pd.Series(dict(zip(
DATES, ANSWER_KEY.CUMULATIVE_SORTINO)))})
+3
View File
@@ -8,3 +8,6 @@ cc507b6fca18aabadac69657181edd4e
5b48e6a70181d73ecb7f07df5a3092e2
3343940379161143630503413627a53a
820235c4157a3c55474836438019ef2e
75c1b1441efbc2431215835a5079ccc6
37e3ea4a1788f1aa6f3ee0986bc625ae
651e611e723e2a58b1ded91d0cd39b66
+16
View File
@@ -70,3 +70,19 @@ class TestRisk(unittest.TestCase):
self.cumulative_metrics_06.metrics.sharpe[dt],
decimal=2,
err_msg="Mismatch at %s" % (dt,))
def test_downside_risk_06(self):
for dt, value in answer_key.RISK_CUMULATIVE.downside_risk.iterkv():
np.testing.assert_almost_equal(
self.cumulative_metrics_06.metrics.downside_risk[dt],
value,
decimal=2,
err_msg="Mismatch at %s" % (dt,))
def test_sortino_06(self):
for dt, value in answer_key.RISK_CUMULATIVE.sortino.iterkv():
np.testing.assert_almost_equal(
self.cumulative_metrics_06.metrics.sortino[dt],
value,
decimal=2,
err_msg="Mismatch at %s" % (dt,))