Skip to content

Commit

Permalink
Custom period
Browse files Browse the repository at this point in the history
  • Loading branch information
R5dan authored and ValueRaider committed Dec 30, 2024
1 parent 3ac8539 commit 60c7477
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 17 deletions.
7 changes: 6 additions & 1 deletion yfinance/scrapers/history.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def history(self, period="1mo", interval="1d",

interval_user = interval
period_user = period
if repair and interval in ['5d', '1wk', '1mo', '3mo']:
if repair and interval in ["5d", "1wk", "1mo", "3mo"]:
# Yahoo's way of adjusting mutiday intervals is fundamentally broken.
# Have to fetch 1d, adjust, then resample.
if interval == '5d':
Expand All @@ -105,6 +105,11 @@ def history(self, period="1mo", interval="1d",
period_user = period
period = None
interval = '1d'
else:
end = utils._parse_user_dt(end, self.tz)
start = _datetime.date.fromordinal(end)
start -= utils._interval_to_timedelta(period)
start -= _datetime.timedelta(days=4)

start_user = start
end_user = end
Expand Down
24 changes: 8 additions & 16 deletions yfinance/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -429,22 +429,14 @@ def _parse_user_dt(dt, exchange_tz):


def _interval_to_timedelta(interval):
if interval == "1mo":
return relativedelta(months=1)
elif interval == "3mo":
return relativedelta(months=3)
elif interval == "6mo":
return relativedelta(months=6)
elif interval == "1y":
return relativedelta(years=1)
elif interval == "2y":
return relativedelta(years=2)
elif interval == "5y":
return relativedelta(years=5)
elif interval == "10y":
return relativedelta(years=10)
elif interval == "1wk":
return _pd.Timedelta(days=7)
if interval[-1] == "d":
return relativedelta(days=int(interval[:-1]))
elif interval[-2:] == "wk":
return relativedelta(weeks=int(interval[:-2]))
elif interval[-2:] == "mo":
return relativedelta(months=int(interval[:-2]))
elif interval[-1] == "y":
return relativedelta(years=int(interval[:-1]))
else:
return _pd.Timedelta(interval)

Expand Down

0 comments on commit 60c7477

Please sign in to comment.