diff options
author | Danglewood <85772166+deeleeramone@users.noreply.github.com> | 2024-04-11 02:24:11 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-11 09:24:11 +0000 |
commit | 00cc4502129fa4b8f2d859cae3be0247b6179153 (patch) | |
tree | 6ac8e3e8d85fc6d911adb5466b1dafc7474a3355 | |
parent | 3fc6acb774e24551f1bedbb564a9cdad06f5a4a6 (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.py | 32 |
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 |