Skip to content
New: Star-import, signal unraveling, Python 3.12 support, and more

# records module

Generic Numba-compiled functions for records.

## bar_price_nb function

    bar_price_nb(
        records,
        price
    )

Return the bar price.

## dd_decline_duration_nb function

    dd_decline_duration_nb(
        start_idx_arr,
        valley_idx_arr
    )

Compute the duration of the peak-to-valley phase of each drawdown record.

## dd_drawdown_nb function

    dd_drawdown_nb(
        start_val_arr,
        valley_val_arr
    )

Compute the drawdown of each drawdown record.

## dd_recovery_duration_nb function

    dd_recovery_duration_nb(
        valley_idx_arr,
        end_idx_arr
    )

Compute the duration of the valley-to-recovery phase of each drawdown record.

## dd_recovery_duration_ratio_nb function

    dd_recovery_duration_ratio_nb(
        start_idx_arr,
        valley_idx_arr,
        end_idx_arr
    )

Compute the ratio of the recovery duration to the decline duration of each drawdown record.

## dd_recovery_return_nb function

    dd_recovery_return_nb(
        valley_val_arr,
        end_val_arr
    )

Compute the recovery return of each drawdown record.

## drawdown_1d_nb function

    drawdown_1d_nb(
        arr
    )

Compute drawdown.

## drawdown_nb function

    drawdown_nb(
        arr
    )

2-dim version of drawdown_1d_nb().

## fill_drawdown_record_nb function

    fill_drawdown_record_nb(
        new_records,
        counts,
        i,
        col,
        start_idx,
        valley_idx,
        start_val,
        valley_val,
        end_val,
        status
    )

Fill a drawdown record.

## find_pattern_1d_nb function

    find_pattern_1d_nb(
        arr,
        pattern,
        window=None,
        max_window=None,
        row_select_prob=1.0,
        window_select_prob=1.0,
        roll_forward=False,
        interp_mode=3,
        rescale_mode=0,
        vmin=nan,
        vmax=nan,
        pmin=nan,
        pmax=nan,
        invert=False,
        error_type=0,
        distance_measure=0,
        max_error=nan,
        max_error_interp_mode=None,
        max_error_as_maxdist=False,
        max_error_strict=False,
        min_pct_change=nan,
        max_pct_change=nan,
        min_similarity=0.85,
        minp=None,
        overlap_mode=0,
        max_records=None,
        col=0
    )

Find all occurrences of a pattern in an array.

Uses pattern_similarity_nb() to fill records of the type pattern_range_dt.

Goes through the array, and for each window selected between `window` and `max_window` (including), checks whether the window of array values is similar enough to the pattern. If so, writes a new range to the output array. If `window_select_prob` is set, decides whether to test a window based on the given probability. The same for `row_select_prob` but on rows.

If `roll_forward`, windows are rolled forward (`start_idx` is guaranteed to be sorted), otherwise backward (`end_idx` is guaranteed to be sorted).

By default, creates an empty record array of the same size as the number of rows in `arr`. This can be increased or decreased using `max_records`.

## find_pattern_nb function

    find_pattern_nb(
        arr,
        pattern,
        window=None,
        max_window=None,
        row_select_prob=1.0,
        window_select_prob=1.0,
        roll_forward=False,
        interp_mode=3,
        rescale_mode=0,
        vmin=nan,
        vmax=nan,
        pmin=nan,
        pmax=nan,
        invert=False,
        error_type=0,
        distance_measure=0,
        max_error=nan,
        max_error_interp_mode=None,
        max_error_as_maxdist=False,
        max_error_strict=False,
        min_pct_change=nan,
        max_pct_change=nan,
        min_similarity=0.85,
        minp=None,
        overlap_mode=0,
        max_records=None
    )

2-dim version of find_pattern_1d_nb().

## get_drawdowns_nb function

    get_drawdowns_nb(
        open,
        high,
        low,
        close
    )

Fill drawdown records by analyzing a time series.

Only `close` must be provided, other time series are optional.

Usage

    >>> from vectorbtpro import *

    >>> close = np.array([
    ...     [1, 5, 1, 3],
    ...     [2, 4, 2, 2],
    ...     [3, 3, 3, 1],
    ...     [4, 2, 2, 2],
    ...     [5, 1, 1, 3]
    ... ])
    >>> records = vbt.nb.get_drawdowns_nb(None, None, None, close)

    >>> pd.DataFrame.from_records(records)
       id  col  start_idx  valley_idx  end_idx  start_val  valley_val  end_val  \
    0   0    1          0           4        4        5.0         1.0      1.0
    1   0    2          2           4        4        3.0         1.0      1.0
    2   0    3          0           2        4        3.0         1.0      3.0

       status
    0       0
    1       0
    2       1

## get_ranges_from_delta_nb function

    get_ranges_from_delta_nb(
        n_rows,
        idx_arr,
        id_arr,
        col_map,
        index=None,
        delta=0,
        delta_use_index=False,
        shift=0
    )

Build delta ranges.

## get_ranges_nb function

    get_ranges_nb(
        arr,
        gap_value
    )

Fill range records between gaps.

Usage

- Find ranges in time series:

    >>> from vectorbtpro import *

    >>> a = np.array([
    ...     [np.nan, np.nan, np.nan, np.nan],
    ...     [     2, np.nan, np.nan, np.nan],
    ...     [     3,      3, np.nan, np.nan],
    ...     [np.nan,      4,      4, np.nan],
    ...     [     5, np.nan,      5,      5],
    ...     [     6,      6, np.nan,      6]
    ... ])
    >>> records = vbt.nb.get_ranges_nb(a, np.nan)

    >>> pd.DataFrame.from_records(records)
       id  col  start_idx  end_idx  status
    0   0    0          1        3       1
    1   1    0          4        5       0
    2   0    1          2        4       1
    3   1    1          5        5       0
    4   0    2          3        5       1
    5   0    3          4        5       0

## map_ranges_to_projections_nb function

    map_ranges_to_projections_nb(
        close,
        col_arr,
        start_idx_arr,
        end_idx_arr,
        status_arr,
        index=None,
        proj_start=0,
        proj_start_use_index=False,
        proj_period=None,
        proj_period_use_index=False,
        incl_end_idx=True,
        extend=False,
        rebase=True,
        start_value=1.0,
        ffill=False,
        remove_empty=False
    )

Map each range into a projection.

Returns two arrays:

1. One-dimensional array where elements are record indices
2. Two-dimensional array where rows are projections

## range_coverage_nb function

    range_coverage_nb(
        start_idx_arr,
        end_idx_arr,
        status_arr,
        col_map,
        index_lens,
        overlapping=False,
        normalize=False
    )

Get coverage of range records.

Set `overlapping` to True to get the number of overlapping steps. Set `normalize` to True to get the number of steps in relation either to the total number of steps (when `overlapping=False`) or to the number of covered steps (when `overlapping=True`).

## range_duration_nb function

    range_duration_nb(
        start_idx_arr,
        end_idx_arr,
        status_arr,
        freq=1
    )

Get duration of each range record.

## ranges_to_mask_nb function

    ranges_to_mask_nb(
        start_idx_arr,
        end_idx_arr,
        status_arr,
        col_map,
        index_len
    )

Convert ranges to 2-dim mask.

#### Cookie consent

We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better.

- Google Analytics
- GitHub

Manage settings