From 8040ea302bcd95ea7e3e85a2dd7d62f203e4dc5a Mon Sep 17 00:00:00 2001 From: Bortlesboat <169967362+Bortlesboat@users.noreply.github.com> Date: Wed, 30 Sep 2026 00:04:15 -0400 Subject: [PATCH] fix(technical): resolve missing Fibonacci start dates against start date --- .../technical/openbb_technical/helpers.py | 4 +++- .../extensions/technical/tests/test_helpers.py | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/openbb_platform/extensions/technical/openbb_technical/helpers.py b/openbb_platform/extensions/technical/openbb_technical/helpers.py index 6612b4f968f8..5db509acfd70 100644 --- a/openbb_platform/extensions/technical/openbb_technical/helpers.py +++ b/openbb_platform/extensions/technical/openbb_technical/helpers.py @@ -555,7 +555,9 @@ def calculate_fib_levels( if start_date and end_date: if start_date not in data.index: - date0 = data.index[data.index.get_indexer([end_date], method="nearest")[0]] + date0 = data.index[ + data.index.get_indexer([start_date], method="nearest")[0] + ] warn(f"Start date not in data. Using nearest: {date0}") else: date0 = start_date diff --git a/openbb_platform/extensions/technical/tests/test_helpers.py b/openbb_platform/extensions/technical/tests/test_helpers.py index 59d4e4c4273f..4981fe38eff7 100644 --- a/openbb_platform/extensions/technical/tests/test_helpers.py +++ b/openbb_platform/extensions/technical/tests/test_helpers.py @@ -160,6 +160,22 @@ def test_raises_on_quantile_out_of_range(self, ohlcv_df): class TestCalculateFibLevels: + def test_snaps_missing_start_date_to_nearest(self): + """Resolve a missing start date against itself when choosing the endpoint.""" + index = pd.bdate_range("2024-01-01", periods=60) + data = pd.DataFrame({"close": np.linspace(100, 160, 60)}, index=index) + start_date = pd.Timestamp("2024-01-06") # Saturday, not in the index. + end_date = index[-1] + + with pytest.warns(UserWarning, match="Start date not in data"): + _, min_date, max_date, min_pr, max_pr, _ = calculate_fib_levels( + data, "close", start_date=start_date, end_date=end_date + ) + + assert min_date == pd.Timestamp("2024-01-05") + assert max_date == end_date + assert max_pr > min_pr + def test_default_branch(self, ohlcv_df): result = calculate_fib_levels(ohlcv_df, "close") assert result is not None