Skip to content

Commit

Permalink
Merge pull request #6 from ricequant/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
Cuizi7 committed Jul 5, 2022
2 parents dcbec6c + c6dbfcb commit 1a49edf
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 5 deletions.
5 changes: 3 additions & 2 deletions rqrisk/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from .risk import Risk
from .utils import DAILY, WEEKLY, MONTHLY, YEARLY
from .utils import DAILY, WEEKLY, MONTHLY, YEARLY, NATURAL_DAILY

__all__ = [
"Risk",
"DAILY",
"WEEKLY",
"MONTHLY",
"YEARLY"
"YEARLY",
"NATURAL_DAILY"
]
2 changes: 2 additions & 0 deletions rqrisk/risk.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,8 @@ def information_ratio(self):
# residual_return / residual_risk
residual_returns = self._portfolio - self.beta * self._benchmark
annual_residual_std = residual_returns.std(ddof=1) * np.sqrt(self._annual_factor)
if not annual_residual_std:
return np.nan
return (self.annual_return - self.beta * self.benchmark_annual_return) / annual_residual_std

@indicator_property(min_period_count=2)
Expand Down
5 changes: 4 additions & 1 deletion rqrisk/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,19 @@ def __get__(self, instance, owner):
MONTHS_PER_YEAR = 12
WEEKS_PER_YEAR = 52
APPROX_BDAYS_PER_YEAR = 252
DAYS_PER_YEAR = 365

DAILY = 'daily'
WEEKLY = 'weekly'
MONTHLY = 'monthly'
YEARLY = 'yearly'
NATURAL_DAILY = "natural_daily"

ANNUALIZATION_FACTORS = {
DAILY: APPROX_BDAYS_PER_YEAR,
WEEKLY: WEEKS_PER_YEAR,
MONTHLY: MONTHS_PER_YEAR
MONTHLY: MONTHS_PER_YEAR,
NATURAL_DAILY: DAYS_PER_YEAR
}


Expand Down
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

[metadata]
name = rqrisk
version = 1.0.0
version = 1.0.1

[versioneer]
VCS = git
Expand Down
13 changes: 12 additions & 1 deletion test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import numpy as np

import rqrisk
from rqrisk import DAILY, WEEKLY, MONTHLY
from rqrisk import DAILY, WEEKLY, MONTHLY, NATURAL_DAILY


# Simple benchmark, no drawdown
Expand Down Expand Up @@ -231,3 +231,14 @@ def _assert(returns, benchmark, desired_max_dd, desired_excess_max_dd):

_assert(volatile_returns, zero_benchmark, 0.10899999999999994, 0.10899999999999994)
_assert(volatile_returns, volatile_benchmark, 0.10899999999999994, 0.20000000000000007)


def test_natural_daily():
""" 测试自然日 """
r = _r(volatile_returns, volatile_benchmark, 0, NATURAL_DAILY)
assert_almost_equal(r.annual_return, -0.41377394067925255)
assert_almost_equal(r.benchmark_annual_return, 92.86171734511149)
assert_almost_equal(r.alpha, 62.31947511024051)
assert_almost_equal(r.information_ratio, 97.92626812366308)
assert_almost_equal(r.sharpe, -0.23942084288518412)

0 comments on commit 1a49edf

Please sign in to comment.