Skip to content

Prevent StochRSI from reusing stale compiled RSI behavior #35

Closed

Description

@stefan-jansen

Summary

At main commit 151349d1bb960d8902fe2991afdfc59d83b8fb44, a long-lived editable installation can reuse a cached stochrsi_fastk_numba specialization compiled before the RSI missing-observation fix. One missing close then produces finite zero StochRSI values through the end of the series instead of values consistent with the corrected RSI implementation.

Public API reproduction

Using a deterministic 2,000-row OHLCV frame and compute_features(frame, ["stochrsi"], assume_sorted=True):

  • insert one null close at row 500;
  • compare the final 200 clean and holed StochRSI values at rtol=1e-6;
  • 150 values disagree;
  • every holed tail value is 0.0.

The existing public behavior contract fails consistently:

uv run pytest tests/features/test_missing_observation_handling.py::test_one_missing_bar_is_never_silently_absorbed --override-ini='addopts=' -q -k stochrsi-close

The same test passes with NUMBA_DISABLE_JIT=1.

Evidence

The checkout contains stochrsi_fastk_numba cache artifacts from 2026-08-08, before the RSI gap fix at 62ce7b8, while current RSI cache artifacts were rebuilt on 2026-08-11. stochrsi_fastk_numba calls rsi_numba inside a cached compiled function, so the caller can retain the old embedded callee behavior when only the callee source changes.

Expected behavior

StochRSI must consume the current RSI implementation after an upgrade. A stale transitive JIT cache must not change public results.

Acceptance criteria

  • The deterministic missing-close public API reproduction passes with JIT enabled in the previously affected checkout.
  • StochRSI keeps TA-Lib parity and its current public function signatures.
  • Focused StochRSI, missing-observation, lint, type, and package tests pass.
  • The pull request closes this issue and the complete repository gates pass before merge.

Activity

  1. added
    type: bugConfirmed or reported incorrect behavior
    priority: highMaterial user impact requiring prompt remediation
    on Aug 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    compatibility: noneNo known compatibility impactpriority: highMaterial user impact requiring prompt remediationstatus: acceptedAccepted for implementationtype: bugConfirmed or reported incorrect behavior

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions