|
|
@ -5,7 +5,7 @@ from typing import Iterable, List, Literal, Mapping, Union |
|
|
|
|
|
|
|
from dateutil.relativedelta import relativedelta |
|
|
|
|
|
|
|
from .core import AllFrequencies, TimeSeriesCore |
|
|
|
from .core import AllFrequencies, TimeSeriesCore, date_parser |
|
|
|
from .utils import ( |
|
|
|
_find_closest_date, |
|
|
|
_interval_to_years, |
|
|
@ -184,6 +184,7 @@ class TimeSeries(TimeSeriesCore): |
|
|
|
|
|
|
|
return self.__class__(new_ts, frequency=self.frequency.symbol) |
|
|
|
|
|
|
|
@date_parser(1) |
|
|
|
def calculate_returns( |
|
|
|
self, |
|
|
|
as_on: Union[str, datetime.datetime], |
|
|
@ -260,7 +261,7 @@ class TimeSeries(TimeSeriesCore): |
|
|
|
(datetime.datetime(2020, 1, 1, 0, 0), .0567) |
|
|
|
""" |
|
|
|
|
|
|
|
as_on = _parse_date(as_on, date_format) |
|
|
|
# as_on = _parse_date(as_on, date_format) |
|
|
|
as_on_delta, prior_delta = _preprocess_match_options(as_on_match, prior_match, closest) |
|
|
|
|
|
|
|
prev_date = as_on - relativedelta(**{interval_type: interval_value}) |
|
|
@ -276,6 +277,7 @@ class TimeSeries(TimeSeriesCore): |
|
|
|
returns = returns ** (1 / years) |
|
|
|
return (current[0] if return_actual_date else as_on), returns - 1 |
|
|
|
|
|
|
|
@date_parser(1, 2) |
|
|
|
def calculate_rolling_returns( |
|
|
|
self, |
|
|
|
from_date: Union[datetime.date, str], |
|
|
@ -356,8 +358,8 @@ class TimeSeries(TimeSeriesCore): |
|
|
|
TimeSeries.calculate_returns |
|
|
|
""" |
|
|
|
|
|
|
|
from_date = _parse_date(from_date, date_format) |
|
|
|
to_date = _parse_date(to_date, date_format) |
|
|
|
# from_date = _parse_date(from_date, date_format) |
|
|
|
# to_date = _parse_date(to_date, date_format) |
|
|
|
|
|
|
|
if frequency is None: |
|
|
|
frequency = self.frequency |
|
|
|