The backtesting engine that gives you an unfair advantage. Run thousands of trading ideas before others finish one.
This report summarizes scanner evidence for polakowo/vectorbt, a Python project with 9,335 GitHub stars. SynthScan examined 130,017 lines of code across 167 source files, recording 646 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 5.5 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 481 finding(s).
Are imports declared and package/API names verified? 117 finding(s).
Are wrappers, guards, and repeated structures necessary? 384 finding(s).
Which changes need focused human review? 646 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 646 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vectorbt/_engine.py | 83 | def callback_unsupported_with_rust() -> RustSupport: | CODE |
| LOW | vectorbt/_engine.py | 100 | def non_neg_int_compatible_with_rust(name: str, value: tp.Optional[int]) -> RustSupport: | CODE |
| LOW | vectorbt/_engine.py | 107 | def array_compatible_with_rust(a: tp.Any, dtype: tp.Any = np.float64) -> RustSupport: | CODE |
| LOW | vectorbt/_engine.py | 127 | def exact_array_compatible_with_rust(a: tp.Any, dtype: tp.Any = np.float64) -> RustSupport: | CODE |
| LOW | vectorbt/_engine.py | 153 | def prepare_flex_array_for_rust( | CODE |
| LOW⚡ | vectorbt/_engine.py | 171 | def matching_shape_compatible_with_rust(name: str, a: tp.Any, other: tp.Any) -> RustSupport: | CODE |
| LOW⚡ | vectorbt/_engine.py | 180 | def array_shape_compatible_with_rust(name: str, a: tp.Any, shape: tp.Shape) -> RustSupport: | CODE |
| LOW⚡ | vectorbt/_engine.py | 189 | def flex_array_compatible_with_rust( | CODE |
| LOW | vectorbt/_engine.py | 225 | def scalar_compatible_with_rust(name: str, value: tp.Any) -> RustSupport: | CODE |
| LOW | vectorbt/_engine.py | 236 | def unit_interval_compatible_with_rust(name: str, value: tp.Any) -> RustSupport: | CODE |
| LOW⚡ | vectorbt/_engine.py | 247 | def non_neg_array_compatible_with_rust(name: str, a: tp.Any) -> RustSupport: | CODE |
| LOW⚡ | vectorbt/_engine.py | 257 | def array_and_non_neg_int_compatible_with_rust(a: tp.Any, name: str, value: tp.Optional[int]) -> RustSupport: | CODE |
| LOW⚡ | vectorbt/_engine.py | 262 | def mask_and_array_compatible_with_rust(a: tp.Any, mask: tp.Any) -> RustSupport: | CODE |
| LOW⚡ | vectorbt/_engine.py | 271 | def mask_and_values_compatible_with_rust(a: tp.Any, mask: tp.Any, values: tp.Any) -> RustSupport: | CODE |
| LOW⚡ | vectorbt/_engine.py | 280 | def col_range_compatible_with_rust(col_range: tp.Any) -> RustSupport: | CODE |
| LOW⚡ | vectorbt/_engine.py | 289 | def col_map_compatible_with_rust(col_map: tp.Any) -> RustSupport: | CODE |
| LOW | vectorbt/_engine.py | 301 | def rolling_compatible_with_rust(a: tp.Any, window: int, minp: tp.Optional[int]) -> RustSupport: | CODE |
| LOW | vectorbt/root_accessors.py | 101 | def register_dataframe_accessor(name: str) -> tp.Callable: | CODE |
| LOW | vectorbt/root_accessors.py | 129 | def register_series_vbt_accessor(name: str, parent: tp.Type[DirNamesMixin] = Vbt_SRAccessor) -> tp.Callable: | CODE |
| LOW | vectorbt/root_accessors.py | 134 | def register_dataframe_vbt_accessor(name: str, parent: tp.Type[DirNamesMixin] = Vbt_DFAccessor) -> tp.Callable: | CODE |
| LOW | vectorbt/records/mapped_array.py | 379 | def combine_mapped_with_other( | CODE |
| LOW | vectorbt/records/dispatch.py | 106 | def record_array_compatible_with_rust(records: tp.Any) -> RustSupport: | CODE |
| LOW | vectorbt/records/nb.py | 79 | def record_col_range_select_nb(records: tp.RecordArray, col_range: tp.ColRange, new_cols: tp.Array1d) -> tp.RecordArray: | CODE |
| LOW | vectorbt/records/nb.py | 571 | def reduce_mapped_to_array_nb( | CODE |
| LOW | vectorbt/records/nb.py | 605 | def reduce_mapped_to_idx_array_nb( | CODE |
| LOW | vectorbt/records/base.py | 858 | def override_field_config_doc(cls, __pdoc__: dict, source_cls: tp.Optional[type] = None) -> None: | CODE |
| LOW | vectorbt/signals/accessors.py | 1528 | def partition_pos_rank_mapped(self, group_by: tp.GroupByLike = None, **kwargs) -> MappedArray: | CODE |
| LOW | vectorbt/signals/dispatch.py | 327 | def generate_rand_enex_by_prob( | CODE |
| LOW | vectorbt/signals/nb.py | 382 | def generate_rand_ex_by_prob_nb( | CODE |
| LOW | vectorbt/signals/nb.py | 525 | def generate_rand_enex_by_prob_nb( | CODE |
| LOW | vectorbt/signals/nb.py | 1000 | def generate_ohlc_stop_enex_nb( | CODE |
| LOW | vectorbt/signals/nb.py | 1163 | def between_partition_ranges_nb(a: tp.Array2d) -> tp.RecordArray: | CODE |
| LOW | vectorbt/labels/nb.py | 208 | def bn_cont_sat_trend_labels_nb( | CODE |
| LOW | vectorbt/utils/checks.py | 126 | def is_engine_compatible_func( | CODE |
| LOW | vectorbt/utils/checks.py | 614 | def assert_dict_sequence_valid(arg: tp.DictLikeSequence, lvl_keys: tp.Sequence[tp.MaybeSequence[str]]) -> None: | CODE |
| LOW | vectorbt/utils/array_.py | 63 | def uniform_summing_to_one_nb(n: int) -> tp.Array1d: | CODE |
| LOW | vectorbt/utils/decorators.py | 527 | def attach_binary_magic_methods( | STRING |
| LOW | vectorbt/utils/decorators.py | 591 | def attach_unary_magic_methods(translate_func: UnaryTranslateFuncT, config: tp.Optional[Config] = None) -> WrapperFuncT: | STRING |
| LOW | vectorbt/portfolio/dispatch.py | 25 | def order_record_array_compatible_with_rust(records: tp.Any) -> RustSupport: | CODE |
| LOW | vectorbt/portfolio/dispatch.py | 35 | def trade_record_array_compatible_with_rust(records: tp.Any) -> RustSupport: | CODE |
| LOW | vectorbt/portfolio/nb.py | 1616 | def resolve_stop_price_and_slippage_nb( | CODE |
| LOW | vectorbt/portfolio/nb.py | 1634 | def resolve_signal_conflict_nb( | CODE |
| LOW | vectorbt/portfolio/nb.py | 1720 | def resolve_opposite_entry_nb( | CODE |
| LOW | vectorbt/portfolio/nb.py | 2418 | def simulate_from_signal_func_nb( | CODE |
| LOW | vectorbt/portfolio/nb.py | 5186 | def flex_simulate_row_wise_nb( | CODE |
| LOW | vectorbt/portfolio/nb.py | 5768 | def fill_entry_trades_in_position_nb( | CODE |
| LOW | vectorbt/portfolio/nb.py | 6593 | def position_coverage_grouped_nb(position_mask: tp.Array2d, group_lens: tp.Array1d) -> tp.Array2d: | CODE |
| LOW | vectorbt/portfolio/nb.py | 6977 | def benchmark_value_grouped_nb(close: tp.Array2d, group_lens: tp.Array1d, init_cash_grouped: tp.Array1d) -> tp.Array2d: | CODE |
| LOW | vectorbt/portfolio/nb.py | 6994 | def total_benchmark_return_nb(benchmark_value: tp.Array2d) -> tp.Array1d: | CODE |
| LOW | vectorbt/portfolio/decorators.py | 14 | def attach_returns_acc_methods(config: Config) -> WrapperFuncT: | CODE |
| LOW | vectorbt/generic/dispatch.py | 1284 | def flat_reduce_grouped_to_array( | CODE |
| LOW | vectorbt/generic/dispatch.py | 1858 | def dd_recovery_duration_ratio( | CODE |
| LOW | vectorbt/generic/nb.py | 1209 | def expanding_matrix_apply_nb( | CODE |
| LOW | vectorbt/generic/nb.py | 1391 | def reduce_grouped_to_array_nb( | CODE |
| LOW | vectorbt/generic/nb.py | 1415 | def flat_reduce_grouped_to_array_nb( | CODE |
| LOW | vectorbt/generic/nb.py | 1481 | def flatten_uniform_grouped_nb(a: tp.Array2d, group_lens: tp.Array1d, in_c_order: bool) -> tp.Array2d: | CODE |
| LOW | vectorbt/generic/nb.py | 1939 | def dd_recovery_duration_ratio_nb( | CODE |
| LOW | vectorbt/returns/accessors.py | 429 | def rolling_annualized_volatility( | CODE |
| LOW | vectorbt/returns/accessors.py | 706 | def rolling_information_ratio( | CODE |
| LOW | vectorbt/returns/accessors.py | 847 | def rolling_common_sense_ratio( | CODE |
| 217 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vectorbt/px_accessors.py | 24 | CODE | |
| LOW | vectorbt/px_accessors.py | 30 | CODE | |
| LOW | vectorbt/records/mapped_array.py | 431 | CODE | |
| LOW | vectorbt/records/nb.py | 222 | CODE | |
| LOW | vectorbt/records/nb.py | 284 | CODE | |
| LOW | vectorbt/records/base.py | 490 | CODE | |
| LOW | vectorbt/records/base.py | 599 | CODE | |
| LOW | vectorbt/records/decorators.py | 20 | CODE | |
| LOW | vectorbt/records/decorators.py | 58 | CODE | |
| LOW | vectorbt/records/decorators.py | 28 | CODE | |
| LOW | vectorbt/records/decorators.py | 90 | CODE | |
| LOW | vectorbt/indicators/factory.py | 1220 | CODE | |
| LOW | vectorbt/indicators/factory.py | 1277 | CODE | |
| LOW | vectorbt/indicators/factory.py | 1350 | CODE | |
| LOW | vectorbt/indicators/factory.py | 2219 | CODE | |
| LOW | vectorbt/indicators/factory.py | 2644 | CODE | |
| LOW | vectorbt/indicators/factory.py | 3135 | CODE | |
| LOW | vectorbt/indicators/factory.py | 3532 | CODE | |
| LOW | vectorbt/indicators/factory.py | 3645 | CODE | |
| LOW | vectorbt/indicators/factory.py | 3823 | CODE | |
| LOW | vectorbt/indicators/factory.py | 2791 | CODE | |
| LOW | vectorbt/indicators/factory.py | 3307 | CODE | |
| LOW | vectorbt/indicators/factory.py | 3743 | CODE | |
| LOW | vectorbt/signals/factory.py | 192 | CODE | |
| LOW | vectorbt/signals/factory.py | 703 | CODE | |
| LOW | vectorbt/signals/nb.py | 92 | CODE | |
| LOW | vectorbt/signals/nb.py | 159 | CODE | |
| LOW | vectorbt/signals/nb.py | 413 | CODE | |
| LOW | vectorbt/signals/nb.py | 571 | CODE | |
| LOW | vectorbt/signals/nb.py | 736 | CODE | |
| LOW | vectorbt/signals/nb.py | 1080 | CODE | |
| LOW | vectorbt/signals/nb.py | 1128 | CODE | |
| LOW | vectorbt/signals/nb.py | 1163 | CODE | |
| LOW | vectorbt/signals/nb.py | 1192 | CODE | |
| LOW | vectorbt/signals/nb.py | 1272 | CODE | |
| LOW | vectorbt/labels/nb.py | 101 | CODE | |
| LOW | vectorbt/labels/nb.py | 208 | CODE | |
| LOW | vectorbt/labels/nb.py | 260 | CODE | |
| LOW | vectorbt/labels/nb.py | 306 | CODE | |
| LOW | vectorbt/utils/config.py | 340 | CODE | |
| LOW | vectorbt/utils/config.py | 763 | CODE | |
| LOW | vectorbt/utils/schedule_.py | 108 | CODE | |
| LOW | vectorbt/utils/checks.py | 220 | CODE | |
| LOW | vectorbt/utils/checks.py | 286 | CODE | |
| LOW | vectorbt/utils/attr_.py | 131 | CODE | |
| LOW | vectorbt/utils/mapping.py | 42 | CODE | |
| LOW | vectorbt/utils/datetime_.py | 119 | CODE | |
| LOW | vectorbt/utils/decorators.py | 134 | CODE | |
| LOW | vectorbt/utils/decorators.py | 204 | CODE | |
| LOW | vectorbt/portfolio/trades.py | 1012 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 72 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 215 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 1256 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 1353 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 1580 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 1634 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 1685 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 1720 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 1758 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 1916 | CODE | |
| 66 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vectorbt/_typing.py | 9 | CODE | |
| LOW | vectorbt/_typing.py | 11 | CODE | |
| LOW | vectorbt/_typing.py | 13 | CODE | |
| LOW | vectorbt/_typing.py | 13 | CODE | |
| LOW | vectorbt/_typing.py | 14 | CODE | |
| LOW | vectorbt/_typing.py | 14 | CODE | |
| LOW | vectorbt/_typing.py | 15 | CODE | |
| LOW | vectorbt/__init__.py | 12 | CODE | |
| LOW | vectorbt/__init__.py | 12 | CODE | |
| LOW | vectorbt/__init__.py | 13 | CODE | |
| LOW | vectorbt/__init__.py | 16 | CODE | |
| LOW | vectorbt/__init__.py | 17 | CODE | |
| LOW | vectorbt/__init__.py | 18 | CODE | |
| LOW | vectorbt/__init__.py | 19 | CODE | |
| LOW | vectorbt/__init__.py | 20 | CODE | |
| LOW | vectorbt/__init__.py | 21 | CODE | |
| LOW | vectorbt/__init__.py | 22 | CODE | |
| LOW | vectorbt/__init__.py | 23 | CODE | |
| LOW | vectorbt/__init__.py | 24 | CODE | |
| LOW | vectorbt/__init__.py | 25 | CODE | |
| LOW | vectorbt/records/__init__.py | 10 | CODE | |
| LOW | vectorbt/records/__init__.py | 11 | CODE | |
| LOW | vectorbt/indicators/__init__.py | 10 | CODE | |
| LOW | vectorbt/indicators/__init__.py | 10 | CODE | |
| LOW | vectorbt/indicators/__init__.py | 10 | CODE | |
| LOW | vectorbt/indicators/__init__.py | 10 | CODE | |
| LOW | vectorbt/indicators/__init__.py | 10 | CODE | |
| LOW | vectorbt/indicators/__init__.py | 10 | CODE | |
| LOW | vectorbt/indicators/__init__.py | 10 | CODE | |
| LOW | vectorbt/indicators/__init__.py | 10 | CODE | |
| LOW | vectorbt/signals/__init__.py | 6 | CODE | |
| LOW | vectorbt/signals/__init__.py | 7 | CODE | |
| LOW | vectorbt/signals/__init__.py | 8 | CODE | |
| LOW | vectorbt/signals/__init__.py | 8 | CODE | |
| LOW | vectorbt/signals/__init__.py | 8 | CODE | |
| LOW | vectorbt/signals/__init__.py | 8 | CODE | |
| LOW | vectorbt/signals/__init__.py | 8 | CODE | |
| LOW | vectorbt/signals/__init__.py | 8 | CODE | |
| LOW | vectorbt/signals/__init__.py | 8 | CODE | |
| LOW | vectorbt/signals/__init__.py | 8 | CODE | |
| LOW | vectorbt/signals/__init__.py | 8 | CODE | |
| LOW | vectorbt/signals/__init__.py | 8 | CODE | |
| LOW | vectorbt/signals/__init__.py | 8 | CODE | |
| LOW | vectorbt/labels/__init__.py | 6 | CODE | |
| LOW | vectorbt/labels/__init__.py | 7 | CODE | |
| LOW | vectorbt/labels/__init__.py | 7 | CODE | |
| LOW | vectorbt/labels/__init__.py | 7 | CODE | |
| LOW | vectorbt/labels/__init__.py | 7 | CODE | |
| LOW | vectorbt/labels/__init__.py | 7 | CODE | |
| LOW | vectorbt/labels/__init__.py | 7 | CODE | |
| LOW | vectorbt/labels/__init__.py | 7 | CODE | |
| LOW | vectorbt/labels/__init__.py | 7 | CODE | |
| LOW | vectorbt/labels/__init__.py | 7 | CODE | |
| LOW | vectorbt/utils/__init__.py | 6 | CODE | |
| LOW | vectorbt/utils/__init__.py | 6 | CODE | |
| LOW | vectorbt/utils/__init__.py | 6 | CODE | |
| LOW | vectorbt/utils/__init__.py | 6 | CODE | |
| LOW | vectorbt/utils/__init__.py | 6 | CODE | |
| LOW | vectorbt/utils/__init__.py | 7 | CODE | |
| LOW | vectorbt/utils/__init__.py | 7 | CODE | |
| 47 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vectorbt/records/mapped_array.py | 1022 | CODE | |
| LOW | vectorbt/indicators/factory.py | 1350 | CODE | |
| LOW | vectorbt/indicators/factory.py | 2219 | CODE | |
| LOW | vectorbt/indicators/factory.py | 2512 | CODE | |
| LOW | vectorbt/indicators/basic.py | 264 | CODE | |
| LOW | vectorbt/indicators/basic.py | 475 | CODE | |
| LOW | vectorbt/signals/accessors.py | 316 | CODE | |
| LOW | vectorbt/signals/accessors.py | 570 | CODE | |
| LOW | vectorbt/signals/accessors.py | 745 | CODE | |
| LOW | vectorbt/signals/accessors.py | 859 | CODE | |
| LOW | vectorbt/signals/dispatch.py | 812 | CODE | |
| LOW | vectorbt/signals/dispatch.py | 983 | CODE | |
| LOW | vectorbt/signals/factory.py | 192 | CODE | |
| LOW | vectorbt/signals/factory.py | 703 | CODE | |
| LOW | vectorbt/utils/config.py | 340 | CODE | |
| LOW | vectorbt/utils/attr_.py | 194 | CODE | |
| LOW | vectorbt/portfolio/dispatch.py | 60 | CODE | |
| LOW | vectorbt/portfolio/dispatch.py | 115 | CODE | |
| LOW | vectorbt/portfolio/dispatch.py | 243 | CODE | |
| LOW | vectorbt/portfolio/dispatch.py | 304 | CODE | |
| LOW | vectorbt/portfolio/dispatch.py | 537 | CODE | |
| LOW | vectorbt/portfolio/dispatch.py | 738 | CODE | |
| LOW | vectorbt/portfolio/trades.py | 819 | CODE | |
| LOW | vectorbt/portfolio/trades.py | 1012 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 72 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 215 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 737 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 778 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 1353 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 1916 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 2418 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 3007 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 3873 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 4499 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 5186 | CODE | |
| LOW | vectorbt/portfolio/nb.py | 6730 | CODE | |
| LOW | vectorbt/portfolio/base.py | 1624 | CODE | |
| LOW | vectorbt/portfolio/base.py | 2055 | CODE | |
| LOW | vectorbt/portfolio/base.py | 3308 | CODE | |
| LOW | vectorbt/generic/accessors.py | 789 | CODE | |
| LOW | vectorbt/generic/accessors.py | 1227 | CODE | |
| LOW | vectorbt/generic/accessors.py | 2327 | CODE | |
| LOW | vectorbt/generic/accessors.py | 2508 | CODE | |
| LOW | vectorbt/generic/plotting.py | 372 | CODE | |
| LOW | vectorbt/generic/plotting.py | 521 | CODE | |
| LOW | vectorbt/generic/plotting.py | 647 | CODE | |
| LOW | vectorbt/generic/plotting.py | 770 | CODE | |
| LOW | vectorbt/generic/stats_builder.py | 89 | CODE | |
| LOW | vectorbt/generic/ranges.py | 407 | CODE | |
| LOW | vectorbt/generic/drawdowns.py | 641 | CODE | |
| LOW | vectorbt/generic/plots_builder.py | 74 | CODE | |
| LOW | vectorbt/returns/accessors.py | 1350 | CODE | |
| LOW | vectorbt/data/custom.py | 441 | CODE | |
| LOW | vectorbt/data/custom.py | 614 | CODE | |
| LOW | vectorbt/base/accessors.py | 621 | CODE | |
| LOW | vectorbt/base/array_wrapper.py | 535 | CODE | |
| LOW | vectorbt/base/array_wrapper.py | 611 | CODE | |
| LOW | vectorbt/base/reshape_fns.py | 358 | CODE | |
| LOW | tests/test_data.py | 34 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | vectorbt/indicators/factory.py | 3577 | if not pd.Index.equals(r.index, test_df.index): | CODE |
| HIGH | vectorbt/indicators/factory.py | 3589 | if not pd.Index.equals(result.index, test_df.index): | CODE |
| HIGH | vectorbt/indicators/factory.py | 3764 | if pd.Index.equals(input_list[0].index, o.index): | CODE |
| HIGH | vectorbt/utils/checks.py | 162 | return pd.Index.equals(arg1, arg2) | CODE |
| HIGH | vectorbt/utils/checks.py | 171 | return pd.Index.equals(arg1, arg2) | CODE |
| HIGH | vectorbt/utils/checks.py | 567 | if arg1.equals(arg2): | CODE |
| HIGH | vectorbt/base/index_fns.py | 273 | if pd.Index.equals(index1, index2): | CODE |
| HIGH | vectorbt/base/column_grouper.py | 201 | if not pd.Index.equals(group_by, self.group_by): | CODE |
| HIGH | vectorbt/base/column_grouper.py | 215 | if pd.Index.equals(group_by, self.group_by): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | vectorbt/indicators/factory.py | 1697 | except: | CODE |
| HIGH | vectorbt/utils/checks.py | 215 | except: | CODE |
| HIGH | vectorbt/utils/checks.py | 335 | except: | CODE |
| HIGH | vectorbt/utils/checks.py | 346 | except: | CODE |
| HIGH | vectorbt/base/index_fns.py | 336 | except ValueError: | CODE |
| HIGH | vectorbt/base/column_grouper.py | 45 | except (IndexError, KeyError): | CODE |
| HIGH | docs/generate_api.py | 1171 | except (subprocess.CalledProcessError, OSError): | CODE |
| HIGH | docs/generate_api.py | 624 | except ValueError: | CODE |
| HIGH | docs/generate_api.py | 1214 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vectorbt/_settings.py | 103 | def set_theme(self, theme: str) -> None: | CODE |
| LOW | vectorbt/records/__init__.py | 13 | __all__ = ["MappedArray", "Records"] | CODE |
| LOW | vectorbt/indicators/__init__.py | 29 | __all__ = ["IndicatorFactory", "talib", "pandas_ta", "ta", "MA", "MSTD", "BBANDS", "RSI", "STOCH", "MACD", "ATR", "OBV"] | CODE |
| LOW | vectorbt/signals/enums.py | 11 | __all__ = ["StopType", "FactoryMode"] | CODE |
| LOW | vectorbt/signals/__init__.py | 22 | __all__ = [ | CODE |
| LOW | vectorbt/labels/enums.py | 11 | __all__ = ["TrendMode"] | CODE |
| LOW | vectorbt/labels/__init__.py | 9 | __all__ = ["FMEAN", "FSTD", "FMIN", "FMAX", "FIXLB", "MEANLB", "LEXLB", "TRENDLB", "BOLB"] | CODE |
| LOW | vectorbt/utils/config.py | 99 | def set_dict_item(dct: dict, k: tp.Any, v: tp.Any, force: bool = False) -> None: | CODE |
| LOW | vectorbt/utils/config.py | 832 | def update_config(self, *args, **kwargs) -> None: | CODE |
| LOW | vectorbt/utils/schedule_.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | vectorbt/utils/__init__.py | 14 | __all__ = [ | CODE |
| LOW | vectorbt/utils/random_.py | 13 | def set_seed_nb(seed: int) -> None: | CODE |
| LOW | vectorbt/utils/random_.py | 18 | def set_seed(seed: int) -> None: | CODE |
| LOW | vectorbt/portfolio/enums.py | 13 | __all__ = [ | CODE |
| LOW | vectorbt/portfolio/__init__.py | 12 | __all__ = ["Portfolio", "Orders", "Logs", "Trades", "EntryTrades", "ExitTrades", "Positions"] | CODE |
| LOW | vectorbt/portfolio/nb.py | 1233 | def update_open_pos_stats_nb(record: tp.Record, position_now: float, price: float) -> None: | CODE |
| LOW | vectorbt/generic/enums.py | 13 | __all__ = ["RangeStatus", "DrawdownStatus", "drawdown_dt", "range_dt"] | CODE |
| LOW | vectorbt/generic/__init__.py | 13 | __all__ = ["Ranges", "Drawdowns", "RangeSplitter", "RollingSplitter", "ExpandingSplitter"] | CODE |
| LOW | vectorbt/data/__init__.py | 10 | __all__ = [ | CODE |
| LOW | vectorbt/data/updater.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | vectorbt/messaging/telegram.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | vectorbt/messaging/__init__.py | 6 | __all__ = [] | CODE |
| LOW | vectorbt/base/__init__.py | 8 | __all__ = ["ArrayWrapper"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | vectorbt/indicators/factory.py | 2922 | # Create a new instance | COMMENT |
| MEDIUM | vectorbt/portfolio/nb.py | 3225 | ... # Create a temporary array and pass it down the stack | STRING |
| MEDIUM | vectorbt/portfolio/base.py | 2041 | # Create an instance | COMMENT |
| MEDIUM | vectorbt/portfolio/base.py | 3170 | # Create an instance | COMMENT |
| MEDIUM | vectorbt/portfolio/base.py | 4135 | # Create an instance | COMMENT |
| MEDIUM | tests/test_base.py | 19 | # Initialize global variables | COMMENT |
| MEDIUM | docs/generate_api.py | 1 | # This file is a modified derivative of pdoc3. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | vectorbt/indicators/factory.py | 3433 | Build an indicator class around a TA-Lib function. Requires [TA-Lib](https://github.com/mrjbq7/ta-lib) installe | STRING |
| HIGH | vectorbt/indicators/factory.py | 3652 | Build an indicator class around a pandas-ta function. Requires [pandas-ta](https://github.com/twopirllc/pandas- | STRING |
| HIGH | vectorbt/indicators/factory.py | 3862 | Build an indicator class around a ta class. Requires [ta](https://github.com/bukosabino/ta) installed. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | vectorbt/utils/config.py | 0 | set of writeable attributes that will be saved/copied along with the config. | STRING |
| HIGH | vectorbt/generic/stats_builder.py | 0 | set of writeable attributes that will be saved/copied along with the config. | STRING |
| HIGH | vectorbt/generic/plots_builder.py | 0 | set of writeable attributes that will be saved/copied along with the config. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vectorbt/indicators/factory.py | 3570 | except Exception as e: | CODE |
| LOW | vectorbt/indicators/factory.py | 3639 | except Exception as e: | CODE |
| LOW | vectorbt/utils/template.py | 251 | except Exception as e: | CODE |
| LOW | vectorbt/generic/stats_builder.py | 575 | except Exception as e: | CODE |
| LOW | vectorbt/generic/plots_builder.py | 590 | except Exception as e: | CODE |
| LOW | tests/test_indicators.py | 56 | except Exception: | CODE |
| LOW | tests/test_base.py | 57 | except Exception: | CODE |
| LOW | docs/generate_api.py | 80 | except Exception as e: | CODE |
| LOW | docs/generate_api.py | 420 | except Exception as ex: | CODE |
| LOW | docs/generate_api.py | 1140 | except Exception: | STRING |
| LOW | docs/generate_api.py | 1211 | except Exception: | STRING |
| LOW | docs/generate_api.py | 1214 | except Exception: | STRING |
| MEDIUM | docs/generate_api.py | 279 | def source(self): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | vectorbt/messaging/telegram.py | 521 | from telegram.utils.helpers import effective_message_type | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vectorbt/signals/nb.py | 624 | # Check if stop price is within bar | COMMENT |
| LOW | vectorbt/signals/nb.py | 847 | # Check if stop price is within bar | COMMENT |
| LOW | vectorbt/utils/decorators.py | 435 | # Check if object can be hashed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | vectorbt/records/nb.py | 94 | col_records["col"][:] = c # don't forget to assign new column indices | CODE |
| LOW | vectorbt/records/nb.py | 94 | col_records["col"][:] = c # don't forget to assign new column indices | CODE |
| LOW | vectorbt/records/base.py | 387 | Don't forget to decorate the class with `@override_field_config` to inherit configs from base classes. | STRING |
| LOW | vectorbt/portfolio/base.py | 2313 | If you generated signals using close price, don't forget to shift your signals by one tick | STRING |
| MEDIUM | vectorbt/data/custom.py | 200 | It's only used in vectorbt for demonstration purposes. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | vectorbt/portfolio/base.py | 67 | model futures with [contract multipliers](https://vectorbt.pro/features/backtesting/fees-slippage-and-leverage/#cont | STRING |