Expand description
RustQuant: A Rust library for quantitative finance tools. Copyright (C) 2022, 2023 https://github.com/avhz
Dual licensed under Apache 2.0 and MIT. See: - LICENSE-APACHE.md - LICENSE-MIT.md
Contact me at: RustQuantContact@gmail.com
Any contributions are greatly appreciated. Make a PR or open an issue !
I’m particularly interested in hearing from people with strong experience in implementing quantitative software in a professional setting.
Modules§
- Reverse mode automatic differentation. Currently only gradients can be computed. Suggestions on how to extend the functionality to Hessian matrices are definitely welcome.
- Curves module. Curves (in the financial sense) are functions that map a time to a value, such as a yield curve or a swap curve. They may also be known as term structures.
- Data reading and writing utilities. Disabled by default, due to Polars increasing compile times.
RustQuant
error handling module. A custom error typeRustQuantError
is defined, along with a macro to create an error, that propagates aRustQuantError
with the text to include in the output.- Financial instrument types and modules (bonds, options, etc).
- ISO codes module.
- Macros for RustQuant.
- Mathematics related items.
- Machine learning algorithms. This module relies on the
nalgebra
crate. - Module containing all models (e.g. Black-Scholes, Heston, etc). Also a
Model
trait is defined here for all models to implement. - Module containing all money related items. This includes currencies, cashflows, exchange rates, and money types, among other things.
- A portfolio is a collection of
Position
s, which are simply a combination of anInstrument
, a quantity, a purchase price, and a current price. You may also specify theCurrency
of the instrument. - Statistics related items.
- Monte Carlo engines to simulate stochastic processes.
- Time and date functionality.
- Trading related items.
Macros§
- Helper macro for tests to test floating point approximate equality.
- Create a
RustQuantError
with the text to include in the output. You would use it as follows: - Plot a vector of values.