Skip to content

Latest release notes

All notable changes in reverse chronological order.

Version 2025.3.1

  • Implemented a new chatting module that contains functionality for chatting with LLMs. Most of the offered classes are classic RAG components that can be found in LlamaIndex and other knowledge assistant frameworks. They are flexible and usually not bound to any particular framework. For example, the Embeddings class for generating embeddings has subclasses for OpenAI, LiteLLM, and LlamaIndex, which can be used interchangeably. The same for Completions. Tokenization is mainly performed with the TikTokenizer class, which is based on tiktoken. Other classes are tailored at preparing the context, such as document splitting (TextSplitter), storing (ObjectStore), and ranking (DocumentRanker). Thanks to these components, context ranking has been integrated into most knowledge searching and chatting functions. There are also two new functions that are based entirely on RAG and allow for interacting with the entire knowledge base: search (a.k.a. SearchVBT) and chat (a.k.a. ChatVBT) 🤖
  • Implemented a new formatting module that contains functionality for formatting input and output content. On the one side, there are helper classes such as ToHTML that can convert content from one string format to another. On the other side, there is also a class ContentFormatter and its subclasses that are specialized in processing streaming and non-streaming input content. For instance, IPythonHTMLFormatter can display an LLM output as an HTML content in a Jupyter environment.
  • Implemented a feature that mirrors OHLC such that bullish phases become bearish and vice versa. Used by Data.mirror_ohlc, OHLCVDFAccessor.mirror_ohlc, and ReturnsAccessor.mirror.
  • Created a new class HasWrapper, which implements a common interface for ArrayWrapper and Wrapping
  • Most VBT objects now have methods HasWrapper.chunk and HasWrapper.chunk_apply to split an object into chunks and to apply a function to each of the chunks respectively
  • When broadcasting, index levels without a name aren't treated as unique levels. For instance, passing one index with a "symbol" level and one without won't create two separate levels anymore.
  • Added an argument norm_window to OLS that defaults to window and defines the window length used in computing the Z-score
  • Client type in AlpacaData is determined automatically based on the symbol (crypto symbols contain "/")
  • Removed Configured._expected_keys in favor of Configured._expected_keys_mode, which (by default) automatically combines keys from bases and signature, thus no more need to specify expected keys. Also, simplified design of metaclasses.
  • Made it easier to get and set settings with SettingsConfig.get and SettingsConfig.set respectively. For example, vbt.settings.set("portfolio.size_type", size_type)
  • Introduced an argument hide_inner_progress (True by default) in parallel execution engines to be able to show progress inside tasks
  • Allowed variable keyword arguments in QSAdapter
  • Renamed yield_ to iter_ everywhere, such as yield_chunk_meta to iter_chunk_meta
  • Created a new template class SafeSub to substitute context safely without raising an error, which is optimal for prompts
  • Lifted the limitation of one HTML page in VBTAsset.display. The method can display any number of HTML pages as iframes inside an HTML page with pagination, which is a new lightweight alternative to (storing and) browsing multiple HTML pages.
  • Added MathJax support when rendering HTML
  • Fixed the error "TypeError: 'method' object is not subscriptable" raised by Config.chat
  • Fixed handling of integer data types in nancorr_1d_nb
  • Fixed an issue with printing attr-generated objects
  • Fixed TextIO error in Python 3.8
  • Fixed handling of tuples as parameter names in parameter conditions
  • Fixed xaxis and yaxis resolution during plotting
  • Fixed handling of data types when updating data
  • Fixed the error "ValueError: len(src) can only be a multiple of typesize (8)" raised by Blosc2
  • Fixed handling of slices in DTCIdxr, which prevented a proper selection of date ranges from VBT objects
  • Made all VBT warnings more human-readable
  • Made minor color adjustments to the dark theme
  • Updated LICENSE and proprietary notices in the code