diff --git a/docs/api_reference/index.md b/docs/api_reference/index.md index 4dae3ca92fbb..337d20806675 100644 --- a/docs/api_reference/index.md +++ b/docs/api_reference/index.md @@ -1,33 +1,9 @@ -# Python API Reference - -Welcome to the API reference for the Python/Cython implementation of NautilusTrader! - -The API reference provides detailed technical documentation for the NautilusTrader framework, -including its modules, classes, methods, and functions. The reference is automatically generated -from the latest NautilusTrader source code using [Sphinx](https://www.sphinx-doc.org/en/master/). - -Please note that there are separate references for different versions of NautilusTrader: - -- **Latest**: This reference is built from the head of the `master` branch and represents the documentation for the latest stable release. -- **Develop**: This reference is built from the head of the `develop` branch and represents the documentation for the latest changes and features currently in development. - -You can select the desired API reference from the **Versions** top right drop down menu. - -```{note} -If you select an item from the top level navigation, this will take you to the **Latest** API reference. -``` - -Use the right navigation sidebar to explore the available modules and their contents. -You can click on any item to view its detailed documentation, including parameter descriptions, and return value explanations. - -If you have any questions or need further assistance, please reach out to the NautilusTrader community for support. +# Python API ```{eval-rst} .. toctree:: :maxdepth: 1 :glob: - :titlesonly: - :hidden: accounting.md adapters/index.md @@ -51,3 +27,36 @@ If you have any questions or need further assistance, please reach out to the Na system.md trading.md ``` + +Welcome to the Python API reference for NautilusTrader! + +The API reference provides detailed technical documentation for the NautilusTrader framework, +including its modules, classes, methods, and functions. The reference is automatically generated +from the latest NautilusTrader source code using [Sphinx](https://www.sphinx-doc.org/en/master/). + +Please note that there are separate references for different versions of NautilusTrader: + +- **Latest**: This API reference is built from the head of the `master` branch and represents the latest stable release. +- **Develop**: This API reference is built from the head of the `develop` branch and represents bleeding edge and experimental changes/features currently in development. + +You can select the desired API reference from the **Versions** top right drop down menu. + +```{note} +If you select an item from the top level navigation, this will take you to the **Latest** API reference. +``` + +Use the right navigation sidebar to explore the available modules and their contents. +You can click on any item to view its detailed documentation, including parameter descriptions, and return value explanations. + +## Why Python? + +Python was originally created decades ago as a simple scripting language with a clean straight +forward syntax. It has since evolved into a fully fledged general purpose object-oriented +programming language. Based on the TIOBE index, Python is currently the most popular programming language in the world. +Not only that, Python has become the _de facto lingua franca_ of data science, machine learning, and artificial intelligence. + +The language out of the box is not without its drawbacks however, especially in the context of +implementing large performance-critical systems. Cython has addressed a lot of these issues, offering all the advantages +of a statically typed language, embedded into Pythons rich ecosystem of software libraries and +developer/user communities. + diff --git a/docs/concepts/architecture.md b/docs/concepts/architecture.md index 134666604b5a..4a77351e03ae 100644 --- a/docs/concepts/architecture.md +++ b/docs/concepts/architecture.md @@ -45,6 +45,8 @@ Throughout the documentation, the term _"Nautilus system boundary"_ refers to op the runtime of a single Nautilus node (also known as a "trader instance"). ``` +![Architecture](https://github.com/nautechsystems/nautilus_trader/blob/develop/docs/_images/architecture-overview.png?raw=true "architecture") + ### Environment contexts - `Backtest` - Historical data with simulated venues - `Sandbox` - Real-time data with simulated venues diff --git a/docs/concepts/data.md b/docs/concepts/data.md index 17ccccd66ddd..d62e00499c81 100644 --- a/docs/concepts/data.md +++ b/docs/concepts/data.md @@ -45,4 +45,11 @@ Conceretely, this would involve for example: ## Data catalog +The data catalog is a central store for Nautilus data, persisted in the [Parquet](https://parquet.apache.org) file format. + +We have chosen parquet as the storage format for the following reasons: +- It performs much better than CSV/JSON/HDF5/etc in terms of compression ratio (storage size) and read performance +- It does not require any separate running components (for example a database) +- It is quick and simple to get up and running with + **This doc is an evolving work in progress and will continue to describe the data catalog more fully...** diff --git a/docs/concepts/index.md b/docs/concepts/index.md index 7e3672e4f222..9ffcd0f05a9f 100644 --- a/docs/concepts/index.md +++ b/docs/concepts/index.md @@ -26,12 +26,6 @@ Welcome to NautilusTrader! Explore the foundational concepts of NautilusTrader through the following guides. ```{note} -It's important to note that the [API Reference](../api_reference/index.md) documentation should be -considered the source of truth for the platform. If there are any discrepancies between concepts described here -and the API Reference, then the API Reference should be considered the correct information. We are -working to ensure that concepts stay up-to-date with the API Reference and will be introducing -doc tests in the near future to help with this. - The terms "NautilusTrader", "Nautilus" and "platform" are used interchageably throughout the documentation. ``` @@ -77,3 +71,11 @@ The platform provides logging for both backtesting and live trading using a high ## [Advanced](advanced/index.md) Here you will find more detailed documentation and examples covering the more advanced features and functionality of the platform. + +```{note} +It's important to note that the [API Reference](../api_reference/index.md) documentation should be +considered the source of truth for the platform. If there are any discrepancies between concepts described here +and the API Reference, then the API Reference should be considered the correct information. We are +working to ensure that concepts stay up-to-date with the API Reference and will be introducing +doc tests in the near future to help with this. +``` diff --git a/docs/concepts/overview.md b/docs/concepts/overview.md index 3a5176c6ae1c..bcb3f63a6ac2 100644 --- a/docs/concepts/overview.md +++ b/docs/concepts/overview.md @@ -1,5 +1,58 @@ # Overview +NautilusTrader is an open-source, high-performance, production-grade algorithmic trading platform, +providing quantitative traders with the ability to backtest portfolios of automated trading strategies +on historical data with an event-driven engine, and also deploy those same strategies live, with no code changes. + +The platform is 'AI-first', designed to develop and deploy algorithmic trading strategies within a highly performant +and robust Python native environment. This helps to address the parity challenge of keeping the Python research/backtest +environment, consistent with the production live trading environment. + +NautilusTraders design, architecture and implementation philosophy holds software correctness and safety at the +highest level, with the aim of supporting Python native, mission-critical, trading system backtesting +and live deployment workloads. + +The platform is also universal and asset class agnostic - with any REST, WebSocket or FIX API able to be integrated via modular +adapters. Thus, it can handle high-frequency trading operations for any asset classes +including FX, Equities, Futures, Options, CFDs, Crypto and Betting - across multiple venues simultaneously. + +## Features + +- **Fast:** C-level speed through Rust and Cython. Asynchronous networking with [uvloop](https://github.com/MagicStack/uvloop) +- **Reliable:** Type safety through Rust and Cython. Redis backed performant state persistence +- **Flexible:** OS independent, runs on Linux, macOS, Windows. Deploy using Docker +- **Integrated:** Modular adapters mean any REST, WebSocket, or FIX API can be integrated +- **Advanced:** Time in force `IOC`, `FOK`, `GTD`, `AT_THE_OPEN`, `AT_THE_CLOSE`, advanced order types and conditional triggers. Execution instructions `post-only`, `reduce-only`, and icebergs. Contingency order lists including `OCO`, `OTO` +- **Backtesting:** Run with multiple venues, instruments and strategies simultaneously using historical quote tick, trade tick, bar, order book and custom data with nanosecond resolution +- **Live:** Use identical strategy implementations between backtesting and live deployments +- **Multi-venue:** Multiple venue capabilities facilitate market making and statistical arbitrage strategies +- **AI Agent Training:** Backtest engine fast enough to be used to train AI trading agents (RL/ES) + +![Nautilus](https://github.com/nautechsystems/nautilus_trader/blob/develop/docs/_images/nautilus-art.png?raw=true "nautilus") +> *nautilus - from ancient Greek 'sailor' and naus 'ship'.* +> +> *The nautilus shell consists of modular chambers with a growth factor which approximates a logarithmic spiral. +> The idea is that this can be translated to the aesthetics of design and architecture.* + +## Why NautilusTrader? + +- **Highly performant event-driven Python** - native binary core components +- **Parity between backtesting and live trading** - identical strategy code +- **Reduced operational risk** - risk management functionality, logical correctness and type safety +- **Highly extendable** - message bus, custom components and actors, custom data, custom adapters + +Traditionally, trading strategy research and backtesting might be conducted in Python (or other suitable language) +using vectorized methods, with the strategy then needing to be reimplemented in a more event-drive way +using C++, C#, Java or other statically typed language(s). The reasoning here is that vectorized backtesting code cannot +express the granular time and event dependent complexity of real-time trading, where compiled languages have +proven to be more suitable due to their inherently higher performance, and type safety. + +One of the key advantages of NautilusTrader here, is that this reimplementation step is now circumvented - as the critical core components of the platform +have all been written entirely in Rust or Cython. This means we're using the right tools for the job, where systems programming languages compile performant binaries, +with CPython C extension modules then able to offer a Python native environment, suitable for professional quantitative traders and trading firms. + +## Use cases + There are three main use cases for this software package: - Backtesting trading systems with historical data (`backtest`) diff --git a/docs/conf.py b/docs/conf.py index fe29f8fa8246..437980216e05 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -80,9 +80,9 @@ "title": "Getting Started", }, { - "href": "/user_guide/index", + "href": "/concepts/index", "internal": True, - "title": "User Guide", + "title": "Concepts", }, { "href": "/api_reference/index", @@ -90,7 +90,7 @@ "title": "Python API", }, { - "href": "/core/index", + "href": "rust", "internal": True, "title": "Rust API", }, diff --git a/docs/developer_guide/cython.md b/docs/developer_guide/cython.md index 1319a104c3a3..0ba9587d76d8 100644 --- a/docs/developer_guide/cython.md +++ b/docs/developer_guide/cython.md @@ -3,6 +3,16 @@ Here you will find guidance and tips for working on NautilusTrader using the Cython language. More information on Cython syntax and conventions can be found by reading the [Cython docs](https://cython.readthedocs.io/en/latest/index.html). +## What is Cython? + +[Cython](https://cython.org) is a compiled programming language that aims to be a superset of the Python programming +language, designed to give C-like performance with code that is written mostly in Python with +optional additional C-inspired syntax. + +The project heavily utilizes Cython to provide static type safety and increased performance +for Python through [C extension modules](https://docs.python.org/3/extending/extending.html). The vast majority of the production code is actually +written in Cython, however the libraries can be accessed from both Python and Cython. + ## Function and method signatures Ensure that all functions and methods returning `void` or a primitive C type (such as `bint`, `int`, `double`) include the `except *` keyword in the signature. diff --git a/docs/developer_guide/index.md b/docs/developer_guide/index.md index cbdc17b73d9d..06641f27dc4c 100644 --- a/docs/developer_guide/index.md +++ b/docs/developer_guide/index.md @@ -1,5 +1,18 @@ # Developer Guide +```{eval-rst} +.. toctree:: + :maxdepth: 2 + :hidden: + + environment_setup.md + coding_standards.md + cython.md + rust.md + testing.md + packaged_data.md +``` + Welcome to the developer guide for NautilusTrader! Here you will find information related to developing and extending the NautilusTrader codebase. @@ -31,19 +44,6 @@ It's not necessary to become a C language expert, however it's helpful to unders syntax is used in function and method definitions, in local code blocks, and the common primitive C types and how these map to their corresponding `PyObject` types. -```{eval-rst} -.. toctree:: - :maxdepth: 2 - :hidden: - - environment_setup.md - coding_standards.md - cython.md - rust.md - testing.md - packaged_data.md -``` - ## Contents - [Environment Setup](environment_setup.md) diff --git a/docs/getting_started/index.md b/docs/getting_started/index.md index 38ad0e27aa05..b570d5ad0201 100644 --- a/docs/getting_started/index.md +++ b/docs/getting_started/index.md @@ -7,16 +7,13 @@ :titlesonly: :hidden: - introduction.md installation.md quickstart.md ``` -Welcome to the NautilusTrader getting started section! - -## [Introduction](introduction.md) -The **Introduction** covers the value proposition for the platform and why NautilusTrader exists, as -well as a very high-level summary of the main features. +To get started with NautilusTrader you will need the following: +- A Python environment with `nautilus_trader` installed +- A way to launch Python scripts for backtesting and live trading (either from the command line, or jupyter notebook etc) ## [Installation](installation.md) The **Installation** guide will help to ensure that NautilusTrader is properly installed on your machine. diff --git a/docs/getting_started/introduction.md b/docs/getting_started/introduction.md deleted file mode 100644 index 396368b13ae0..000000000000 --- a/docs/getting_started/introduction.md +++ /dev/null @@ -1,102 +0,0 @@ -# Introduction - -Welcome to NautilusTrader! - -NautilusTrader is an open-source, high-performance, production-grade algorithmic trading platform, -providing quantitative traders with the ability to backtest portfolios of automated trading strategies -on historical data with an event-driven engine, and also deploy those same strategies live, with no code changes. - -The platform is 'AI-first', designed to develop and deploy algorithmic trading strategies within a highly performant -and robust Python native environment. This helps to address the parity challenge of keeping the Python research/backtest -environment, consistent with the production live trading environment. - -NautilusTraders design, architecture and implementation philosophy holds software correctness and safety at the -highest level, with the aim of supporting Python native, mission-critical, trading system backtesting -and live deployment workloads. - -The platform is also universal and asset class agnostic - with any REST, WebSocket or FIX API able to be integrated via modular -adapters. Thus, it can handle high-frequency trading operations for any asset classes -including FX, Equities, Futures, Options, CFDs, Crypto and Betting - across multiple venues simultaneously. - -## Features - -- **Fast:** C-level speed through Rust and Cython. Asynchronous networking with [uvloop](https://github.com/MagicStack/uvloop) -- **Reliable:** Type safety through Rust and Cython. Redis backed performant state persistence -- **Flexible:** OS independent, runs on Linux, macOS, Windows. Deploy using Docker -- **Integrated:** Modular adapters mean any REST, WebSocket, or FIX API can be integrated -- **Advanced:** Time in force `IOC`, `FOK`, `GTD`, `AT_THE_OPEN`, `AT_THE_CLOSE`, advanced order types and conditional triggers. Execution instructions `post-only`, `reduce-only`, and icebergs. Contingency order lists including `OCO`, `OTO` -- **Backtesting:** Run with multiple venues, instruments and strategies simultaneously using historical quote tick, trade tick, bar, order book and custom data with nanosecond resolution -- **Live:** Use identical strategy implementations between backtesting and live deployments -- **Multi-venue:** Multiple venue capabilities facilitate market making and statistical arbitrage strategies -- **AI Agent Training:** Backtest engine fast enough to be used to train AI trading agents (RL/ES) - -![Nautilus](https://github.com/nautechsystems/nautilus_trader/blob/develop/docs/_images/nautilus-art.png?raw=true "nautilus") -> *nautilus - from ancient Greek 'sailor' and naus 'ship'.* -> -> *The nautilus shell consists of modular chambers with a growth factor which approximates a logarithmic spiral. -> The idea is that this can be translated to the aesthetics of design and architecture.* - -## Why NautilusTrader? - -- **Highly performant event-driven Python** - native binary core components -- **Parity between backtesting and live trading** - identical strategy code -- **Reduced operational risk** - risk management functionality, logical correctness and type safety -- **Highly extendable** - message bus, custom components and actors, custom data, custom adapters - -Traditionally, trading strategy research and backtesting might be conducted in Python (or other suitable language) -using vectorized methods, with the strategy then needing to be reimplemented in a more event-drive way -using C++, C#, Java or other statically typed language(s). The reasoning here is that vectorized backtesting code cannot -express the granular time and event dependent complexity of real-time trading, where compiled languages have -proven to be more suitable due to their inherently higher performance, and type safety. - -One of the key advantages of NautilusTrader here, is that this reimplementation step is now circumvented - as the critical core components of the platform -have all been written entirely in Rust or Cython. This means we're using the right tools for the job, where systems programming languages compile performant binaries, -with CPython C extension modules then able to offer a Python native environment, suitable for professional quantitative traders and trading firms. - -## Why Python? - -Python was originally created decades ago as a simple scripting language with a clean straight -forward syntax. It has since evolved into a fully fledged general purpose object-oriented -programming language. Based on the TIOBE index, Python is currently the most popular programming language in the world. -Not only that, Python has become the _de facto lingua franca_ of data science, machine learning, and artificial intelligence. - -The language out of the box is not without its drawbacks however, especially in the context of -implementing large performance-critical systems. Cython has addressed a lot of these issues, offering all the advantages -of a statically typed language, embedded into Pythons rich ecosystem of software libraries and -developer/user communities. - -## What is Cython? - -[Cython](https://cython.org) is a compiled programming language that aims to be a superset of the Python programming -language, designed to give C-like performance with code that is written mostly in Python with -optional additional C-inspired syntax. - -The project heavily utilizes Cython to provide static type safety and increased performance -for Python through [C extension modules](https://docs.python.org/3/extending/extending.html). The vast majority of the production code is actually -written in Cython, however the libraries can be accessed from both Python and Cython. - -## What is Rust? - -[Rust](https://www.rust-lang.org/) is a multi-paradigm programming language designed for performance and safety, especially safe -concurrency. Rust is blazingly fast and memory-efficient (comparable to C and C++) with no runtime or -garbage collector. It can power mission-critical systems, run on embedded devices, and easily -integrates with other languages. - -Rust’s rich type system and ownership model guarantees memory-safety and thread-safety deterministically — -eliminating many classes of bugs at compile-time. - -The project increasingly utilizes Rust for core performance-critical components. Python language binding is handled through -Cython, with static libraries linked at compile-time before the wheel binaries are packaged, so a user -does not need to have Rust installed to run NautilusTrader. In the future as more Rust code is introduced, -[PyO3](https://pyo3.rs/latest) will be leveraged for easier Python bindings. - -## Architecture Quality Attributes - -- Reliability -- Performance -- Modularity -- Testability -- Maintainability -- Deployability - -![Architecture](https://github.com/nautechsystems/nautilus_trader/blob/develop/docs/_images/architecture-overview.png?raw=true "architecture") diff --git a/docs/index.md b/docs/index.md index bf907f5563f3..7722cdadb41c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -12,6 +12,7 @@ tutorials/index.md integrations/index.md api_reference/index.md + rust.md developer_guide/index.md ``` @@ -26,37 +27,39 @@ The platform boasts an extensive array of features and capabilities, coupled wit trading systems using the framework. Given the breadth of information, and required pre-requisite knowledge, both beginners and experts alike may find the learning curve steep. However, this documentation aims to assist you in learning and understanding NautilusTrader, so that you can then leverage it to achieve your algorithmic trading goals. +If you have any questions or need further assistance, please reach out to the NautilusTrader community for support. + The following is a brief summary of what you'll find in the documentation, and how to use each section. +```{note} +The terms "NautilusTrader", "Nautilus" and "platform" are used interchageably throughout the documentation. +``` + ## [Getting Started](getting_started/index.md) -If you're new to NautilusTrader, dive right in. The **Getting Started** section offers an introductory overview of the platform, +The **Getting Started** section offers an introductory overview of the platform, a step-by-step guide to installing NautilusTrader, and a tutorial on setting up and running your first backtest. This section is crafted for those who are hands-on learners and are eager to see results quickly. ## [Concepts](concepts/index.md) -To form a strong foundation and understand the core principles behind NautilusTrader, the **Concepts** section is your go-to resource. -It breaks down the fundamental ideas, terminologies, and components of the platform, ensuring you have a solid grasp before diving deeper. +The **Concepts** section breaks down the fundamental ideas, terminologies, and components of the platform, ensuring you have a solid grasp before diving deeper. ## [Tutorials](tutorials/index.md) -For a more guided learning experience, the **Tutorials** section offers a series of comprehensive step-by-step walkthroughs. -Each tutorial targets specific features or workflows, allowing you to learn by doing. +The **Tutorials** section offers a guided learning experience with a series of comprehensive step-by-step walkthroughs. +Each tutorial targets specific features or workflows, allowing you to learn by doing. From basic tasks to more advanced operations, these tutorials cater to a wide range of skill levels. ## [Integrations](integrations/index.md) -These guides cover specific data and trading venue **Integrations** for the platform, including differences in configuration, available features and capabilities, -as well as tips for a smoother trading experience. +The **Integrations** guides for the platform, covers differences in configuration, available features and capabilities between adapters, +as well as providing tips for a smoother trading experience. ## [API Reference](api_reference/index.md) -For detailed technical information on available functions, classes, methods, and other components, the **API Reference** section is your comprehensive resource. -It's structured to offer quick access to specific functionalities, complete with explanations, parameter details, options, and example usages. +The **API Reference** provides comprehensive technical information on available functions, classes, methods, and other components. ## [Developer Guide](developer_guide/index.md) -Are you looking to customize, extend, or integrate with NautilusTrader? The **Developer Guide** is tailored for those who wish to delve into the codebase. -It provides insights into the architectural decisions, coding standards, and best practices, ensuring a smooth development experience. - +The **Developer Guide** is tailored for those who wish to delve into the codebase. It provides insights into the architectural decisions, coding standards, and best practices, ensuring a smooth development experience. diff --git a/docs/integrations/index.md b/docs/integrations/index.md index faaa45b051da..1b7581f08957 100644 --- a/docs/integrations/index.md +++ b/docs/integrations/index.md @@ -1,5 +1,18 @@ # Integrations +```{eval-rst} +.. toctree:: + :maxdepth: 2 + :glob: + :titlesonly: + :hidden: + + betfair.md + binance.md + ib.md + +``` + NautilusTrader is designed in a modular way to work with 'adapters' which provide connectivity to data publishers and/or trading venues - converting their raw API into a unified interface. The following integrations are currently supported: @@ -47,16 +60,3 @@ this means there is some normalization and standardization needed. - All symbols will match the native/local symbol for the exchange, unless there are conflicts (such as Binance using the same symbol for both Spot and Perpetual Futures markets). - All timestamps will be either normalized to UNIX nanoseconds, or clearly marked as UNIX milliseconds by appending `_ms` to param and property names. - -```{eval-rst} -.. toctree:: - :maxdepth: 2 - :glob: - :titlesonly: - :hidden: - - betfair.md - binance.md - ib.md - -``` diff --git a/docs/rust.md b/docs/rust.md new file mode 100644 index 000000000000..c6fd92680790 --- /dev/null +++ b/docs/rust.md @@ -0,0 +1,39 @@ +# Rust API + +The core of NautilusTrader is written in Rust, and one day it will be possible to run systems +entirely programmed and compiled from Rust. + +The API reference provides detailed technical documentation for the core NautilusTrader crates, +the docs are generated from source code using `cargo doc`. + +```{note} +Note the docs are generated using the _nightly_ toolchain (to be able to compile docs for the entire workspace). +However, we target the _stable_ toolchain for all releases. +``` + +Use the following links to explore the Rust docs API references for two different versions of the codebase: + +## [Latest Rust docs](https://docs.nautilustrader.io/core) +This API reference is built from the HEAD of the `master` branch and represents the latest stable release. + +## [Develop Rust docs](https://docs.nautilustrader.io/develop/core) +This API reference is built from the HEAD of the `develop` branch and represents bleeding edge and experimental changes/features currently in development. + +## What is Rust? +[Rust](https://www.rust-lang.org/) is a multi-paradigm programming language designed for performance and safety, especially safe +concurrency. Rust is blazingly fast and memory-efficient (comparable to C and C++) with no runtime or +garbage collector. It can power mission-critical systems, run on embedded devices, and easily +integrates with other languages. + +Rust’s rich type system and ownership model guarantees memory-safety and thread-safety deterministically — +eliminating many classes of bugs at compile-time. + +The project increasingly utilizes Rust for core performance-critical components. Python language binding is handled through +Cython, with static libraries linked at compile-time before the wheel binaries are packaged, so a user +does not need to have Rust installed to run NautilusTrader. In the future as more Rust code is introduced, +[PyO3](https://pyo3.rs/latest) will be leveraged for easier Python bindings. + +This project makes the [Soundness Pledge](https://raphlinus.github.io/rust/2020/01/18/soundness-pledge.html): + +> “The intent of this project is to be free of soundness bugs. +> The developers will do their best to avoid them, and welcome help in analyzing and fixing them.” diff --git a/docs/tutorials/backtest_high_level.md b/docs/tutorials/backtest_high_level.md index 92f7ae28469c..a5f37ead0537 100644 --- a/docs/tutorials/backtest_high_level.md +++ b/docs/tutorials/backtest_high_level.md @@ -52,16 +52,7 @@ assert raw_files, f"Unable to find any histdata files in directory {path}" raw_files ``` -## The Data Catalog - -Next we will load this raw data into the data catalog. The data catalog is a central store for Nautilus data, persisted in the [Parquet](https://parquet.apache.org) file format. - -We have chosen parquet as the storage format for the following reasons: -- It performs much better than CSV/JSON/HDF5/etc in terms of compression ratio (storage size) and read performance -- It does not require any separate running components (for example a database) -- It is quick and simple to get up and running with - -## Loading data into the catalog +## Loading data into the Data Catalog The FX data from `histdata` is stored in CSV/text format, with fields `timestamp, bid_price, ask_price`. Firstly, we need to load this raw data into a `pandas.DataFrame` which has a compatible schema for Nautilus quote ticks. diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md index 6af9432eb327..170fa8dcdbe7 100644 --- a/docs/tutorials/index.md +++ b/docs/tutorials/index.md @@ -1,22 +1,5 @@ # Tutorials -Welcome to the tutorials for NautilusTrader! We hope these will be a helpful -resource as you explore the different features and capabilities of the platform. - -To get started, you can take a look at the table of contents on the left-hand side of the page. -The topics are generally ordered from highest to lowest level, so you can start with the higher-level -concepts and then dive into the more specific details as needed. - -It's important to note that the [API Reference](../api_reference/index.md) documentation should be -considered the source of truth for the platform. If there are any discrepancies between the user -guide and the API Reference, the API Reference should be considered the correct information. We are -working to ensure that the user guide stays up-to-date with the API Reference and will be introducing -doc tests in the near future to help with this. - -```{note} -The terms "NautilusTrader", "Nautilus" and "platform" are used interchageably throughout the documentation. -``` - ```{eval-rst} .. toctree:: :maxdepth: 1 @@ -27,6 +10,17 @@ The terms "NautilusTrader", "Nautilus" and "platform" are used interchageably th backtest_high_level.md ``` +Welcome to the tutorials for NautilusTrader! + +This section offers a guided learning experience with a series of comprehensive step-by-step walkthroughs. +Each tutorial targets specific features or workflows, allowing you to learn by doing. +From basic tasks to more advanced operations, these tutorials cater to a wide range of skill levels. + +```{tip} +Make sure you are following the tutorial docs which match the version of NautilusTrader you are running: +- **Latest** - These docs are built from the HEAD of the `master` branch and work with the latest stable release. +- **Develop** - These docs are built from the HEAD of the `develop` branch and work with bleeding edge and experimental changes/features currently in development. +``` ## [Backtest (high-level API)](backtest_high_level.md) This tutorial runs through how to load raw data (external to Nautilus) into the data catalog, and then use this data with a `BacktestNode` to run a single backtest.