summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanglewood <85772166+deeleeramone@users.noreply.github.com>2024-04-11 02:24:11 -0700
committerGitHub <noreply@github.com>2024-04-11 09:24:11 +0000
commit00cc4502129fa4b8f2d859cae3be0247b6179153 (patch)
tree6ac8e3e8d85fc6d911adb5466b1dafc7474a3355
parent3fc6acb774e24551f1bedbb564a9cdad06f5a4a6 (diff)
[BugFix] Fix yFinance end_date filter when not intraday. (#6302)
* fix filtering by date * timedelta as minutes --------- Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com>
-rw-r--r--openbb_platform/providers/yfinance/openbb_yfinance/utils/helpers.py32
1 files changed, 11 insertions, 21 deletions
diff --git a/openbb_platform/providers/yfinance/openbb_yfinance/utils/helpers.py b/openbb_platform/providers/yfinance/openbb_yfinance/utils/helpers.py
index dbc2ebe3c28..0965aefbd54 100644
--- a/openbb_platform/providers/yfinance/openbb_yfinance/utils/helpers.py
+++ b/openbb_platform/providers/yfinance/openbb_yfinance/utils/helpers.py
@@ -100,19 +100,22 @@ def yf_download(
"""Get yFinance OHLC data for any ticker and interval available."""
symbol = symbol.upper()
_start_date = start_date
-
+ intraday = False
if interval in ["60m", "1h"]:
period = "2y" if period in ["5y", "10y", "max"] else period
_start_date = None
+ intraday = True
if interval in ["2m", "5m", "15m", "30m", "90m"]:
_start_date = (datetime.now().date() - relativedelta(days=58)).strftime(
"%Y-%m-%d"
)
+ intraday = True
if interval == "1m":
period = "5d"
_start_date = None
+ intraday = True
if adjusted is False:
kwargs = dict(auto_adjust=False, back_adjust=False)
@@ -158,7 +161,6 @@ def yf_download(
data = data.rename(columns={"Date": "date", "Datetime": "date"})
data["date"] = data["date"].apply(pd.to_datetime)
data = data[data["Open"] > 0]
-
if start_date is not None:
data = data[data["date"] >= pd.to_datetime(start_date)]
if (
@@ -167,31 +169,19 @@ def yf_download(
and pd.to_datetime(end_date) > pd.to_datetime(start_date)
):
data = data[
- data["date"] <= (pd.to_datetime(end_date) + relativedelta(days=1))
+ data["date"]
+ <= (
+ pd.to_datetime(end_date)
+ + relativedelta(minutes=719 if intraday is True else 0)
+ )
]
-
- if period not in [
- "max",
- "1d",
- "5d",
- "1wk",
- "1mo",
- "3mo",
- "6mo",
- "1y",
- "2y",
- "5y",
- "10y",
- ]:
+ if intraday is True:
data["date"] = data["date"].dt.strftime("%Y-%m-%d %H:%M:%S")
- if interval not in ["1m", "2m", "5m", "15m", "30m", "90m", "60m", "1h"]:
+ else:
data["date"] = data["date"].dt.strftime("%Y-%m-%d")
-
if adjusted is False:
data = data.drop(columns=["Adj Close"])
-
data.columns = data.columns.str.lower().str.replace(" ", "_").to_list()
-
return data