Skip to content

Perf/vectorize previous high low: ~80-100x speedup#96

Merged
joshyattridge merged 1 commit intojoshyattridge:masterfrom
Favian0363:perf/vectorize-previous-high-low
Feb 4, 2026
Merged

Perf/vectorize previous high low: ~80-100x speedup#96
joshyattridge merged 1 commit intojoshyattridge:masterfrom
Favian0363:perf/vectorize-previous-high-low

Conversation

@Favian0363
Copy link
Contributor

Vectorizes previous_high_low() method by replacing the per-candle loop

Problem

The current implementation loops through every candle and calls np.where() to find resampled periods

This creates O(n × m) complexity where n = candles, m = resampled periods.

Solution

Use np.searchsorted for O(log m) binary search
Eliminate loop completely
Use groupby().cummax & cummin for vectorized broken flag calc

Benchmarks

Before vectorization:
..previous_high_low test time: 1.3034696578979492
previous_high_low test time: 1.2444789409637451
previous_high_low test time: 1.194727897644043

After vectorization:
..previous_high_low test time: 0.010783195495605469
previous_high_low test time: 0.01098489761352539
previous_high_low test time: 0.00976705551147461

@joshyattridge joshyattridge merged commit 9bc4a18 into joshyattridge:master Feb 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants