RustQuant 0.2.4

A Rust library for quantitative finance.
Documentation
# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.2.4]https://github.com/avhz/RustQuant/compare/v0.2.3...v0.2.4 - 2024-04-24

### Other
- Update dependencies.
- Merge pull request [#205]https://github.com/avhz/RustQuant/pull/205 from y5/portfolio_getweights
- GitHub actions (fix failing tests)
- GitHub actions (split test actions: unit, doc, examples)
- GitHub actions (test)

## [0.2.3]https://github.com/avhz/RustQuant/compare/v0.2.2...v0.2.3 - 2024-03-15

### Other
- update plotters dep to GitHub repo (attempt to fix docs building issue [#191]https://github.com/avhz/RustQuant/pull/191)
- fix some tests
- minor book edit, CI edits.
- cargo_build, cargo_test
- deploy book, again.
- deploy book, again.
- deploy book
- cargo_test
- Create mdbook.yml

## [0.2.2]https://github.com/avhz/RustQuant/compare/v0.2.1...v0.2.2 - 2024-03-13

### Other
- fix exponential distribution constructor doc comment

## [0.2.1]https://github.com/avhz/RustQuant/compare/v0.2.0...v0.2.1 - 2024-03-13

### Added
- started an mdBook

## [0.2.0]https://github.com/avhz/RustQuant/compare/v0.1.1...v0.2.0 - 2024-03-12

### Added
- Rootfinding routines (Bisection, Brent, Newton-Raphson) and fixed unit/doc-test failures.

### Fixed
- restructure `Money` module into `Instruments` and `Cashflows`

### Other
- minor doc edits

## [0.1.1]https://github.com/avhz/RustQuant/compare/v0.1.0...v0.1.1 - 2024-03-04

### Other
- clippy lints.

## [0.0.49]https://github.com/avhz/RustQuant/compare/v0.0.48...v0.0.49 - 2024-02-25

### Other
- Merge branch 'main' of github.com:avhz/RustQuant
- remove more unused dependencies.

## [0.0.48]https://github.com/avhz/RustQuant/compare/v0.0.47...v0.0.48 - 2024-02-24

### Other
- remove unused dependencies.

## [0.0.46]https://github.com/avhz/RustQuant/compare/v0.0.45...v0.0.46 - 2024-02-24

### Added
- added `derive_builder` crate.

### Other
- remove feature flags, move `curves` into `data` module.
- day counting submodule split into files.
- `OffsetDateTime` refactored to `Date`
- Merge branch 'main' of github.com:avhz/RustQuant
- working progress: exponential interpolator

## [0.0.45]https://github.com/avhz/RustQuant/compare/v0.0.44...v0.0.45 - 2024-02-04

### Other
- moved references to separate .md file
- Merge pull request [#181]https://github.com/avhz/RustQuant/pull/181 from maacl/patch-1
- moved stochastic process models to `models` module.

## [0.0.44]https://github.com/avhz/RustQuant/compare/v0.0.43...v0.0.44 - 2024-02-01

### Added
- Implied Volatility implementation (Let's Be Rational - Peter Jaeckel)

### Other
- Merge remote-tracking branch 'refs/remotes/origin/main'

## [0.0.43]https://github.com/avhz/RustQuant/compare/v0.0.42...v0.0.43 - 2024-01-31

### Added
- improve fft fbm generator

### Fixed
- fix naming THRESHOLD
- fix Gaussian cdf test, values as sympy and mpmath fix
- missing docs
- build error
- resolve timedependent issues

### Other
- Slight re-factor of IV module.
- Merge pull request [#174]https://github.com/avhz/RustQuant/pull/174 from lukaskiss222/feature/implied_volatility
- separators
- remove neg before comparator + new test case
- solve most clippy issues
- errorfunctions erfc for cdf
- small fixes
- must use
- apply clippy
- remove dbg
- Add middle box test
- documentation fix
- documentation
- extreme case precision 1e-13
- ITM + extreme case price ~ 1e-19
- OTM passed
- sync merton jump
- Merge pull request [#171]https://github.com/avhz/RustQuant/pull/171 from lukaskiss222/fix-inverse-gaussian-cdf
- Merge pull request [#146]https://github.com/avhz/RustQuant/pull/146 from dancixx/main
- Merge remote-tracking branch 'upstream'

## [0.0.42]https://github.com/avhz/RustQuant/compare/v0.0.41...v0.0.42 - 2023-12-21

### Fixed
- update barrier pricing

## [0.0.41]https://github.com/avhz/RustQuant/compare/v0.0.40...v0.0.41 - 2023-12-16

### Other
- implemented get quote for yahoo finance api

## [0.0.40]https://github.com/avhz/RustQuant/compare/v0.0.39...v0.0.40 - 2023-12-13

### Other
- Merge branch 'main' into interpolation

## [0.0.39]https://github.com/avhz/RustQuant/compare/v0.0.38...v0.0.39 - 2023-11-26

### Fixed
- denmark calender: general prayer day is no longer a public holiday from 2024

### Other
- Merge pull request [#159]https://github.com/avhz/RustQuant/pull/159 from robertchristensen/docs/fix-warnings
- [#142]https://github.com/avhz/RustQuant/pull/142 - tests for denmark calendar
- [#142]https://github.com/avhz/RustQuant/pull/142 - tests for calendars & update Hong Kong calendar
- [#142]https://github.com/avhz/RustQuant/pull/142 - tests for calendars

## [0.0.38]https://github.com/avhz/RustQuant/compare/v0.0.37...v0.0.38 - 2023-11-14

### Other
- [#142]https://github.com/avhz/RustQuant/pull/142 - Add more calendars (Czech Rep., Denmark, Finland, France, Germany, Hong Kong)
- Fix some clippy lints.
- Add ISO code implementations (ISO-4217, ISO-3166, ISO-10383)
- [#142]https://github.com/avhz/RustQuant/pull/142 - Add calendar boilerplate
- [#142]https://github.com/avhz/RustQuant/pull/142 - Add calendars (Argentina, Botswana, Brazil, Chile, China)

## [0.0.37]https://github.com/avhz/RustQuant/compare/v0.0.36...v0.0.37 - 2023-11-12

### Other
- *(https://github.com/avhz/RustQuant/pull/150)* Fix gitignore problem.
- *(https://github.com/avhz/RustQuant/pull/150)* Re-added correct logo.
- *(https://github.com/avhz/RustQuant/pull/150)* Added `Release-plz` workflow.
- *(https://github.com/avhz/RustQuant/pull/150)* Added `Release-plz` workflow.
# Change Log

## October 26 2023

- @avhz: Added Constant Elasticity of Variance (CEV) model process generator.

## October 24 2023

- @kinrezC: Added Merton Jump Diffusion and Brownian Bridge process generators.

## October 23 2023

- @autoparallel: Added `TimeDependent` parameters for all stochastic processes.

## October 17 2023

- @dancixx: Fractional Ornstein-Uhlenbeck process generator.

## October 9 2023

- @aatmunbaxi: KNN classifier.

## 4 October 2023

- @avhz: Added 5% padding to the y-axis in the `plot_vector` macro.
- @avhz: Updated the `curves` module.
- @avhz: Included a yield curve interpolation example [here]./examples/yield_curve_interpolation.rs with a plot output [here]./images/interpolated_yield_curve.png

## 3 October 2023

- @avhz: Added `curves` module for rate curves (work in progress).
  - Currently only supports linear interpolation, but will add more interpolation methods soon.

## 1 October 2023

- @avhz: Added basic `Portfolio` interface. Work in progress.
- @avhz: Added power option contract pricer.

## 17 September 2023

- @avhz: More Greeks for BSM model: theta, rho, phi, zeta, strike-delta, strike-gamma.

## 17 September 2023

- @avhz: More Greeks for BSM model: vega, vomma, ultima, vega bleed (adding more soon).

## 16 September 2023

- @avhz: Greeks for BSM model: delta, vanna, charm, lambda, gamma, zomma, speed, colour (adding more soon).
- @avhz: Clean up year fraction computation for some options.

## 15 September 2023

- Generalised Black-Scholes-Merton option pricer by @avhz.
- Bachelier and Modified Bachelier option pricers by @avhz.

## 14 September 2023

- Added `Result` wrapping for `statistics` module.

## 13 September 2023

- Re-licensing from GPL3 to dual Apache2/MIT licenses.

## 29 August 2023

- `plotting` mod deprecated, `plot_vector` is now a macro.
- `Statistic` trait for computing statistics on `Vec<f64>` objects.
- Remove `utilities` module (macros and plotting are in root module now).

## 28 August 2023

- `Cashflow`s can now be added, subtracted, multiplied, and divided.
- `Leg`s are now available, which are collections of `Cashflow`s.

## 27 August 2023

- 150+ currencies added (definitions according to [ISO 4217]https://en.wikipedia.org/wiki/ISO_4217).
- Basic arithmetic operations (addition, subtraction, multiplication, division) on `Money` objects.
- Fractional Brownian Motion generator.

## 6 July 2023

- Compute returns (simple, arithmetic, absolute) on Yahoo! Finance timeseries downloaded into Polars `DataFrame`s.

## 27 June 2023

- Moved `options` and `bonds` modules to the parent module `instruments`.
- Moved `cashflows`, `quotes` and `currencies` modules to the parent module `money`.

## 21 June 2023

- Updated regression to use QR or SVD decomposition.

## 20 June 2023

- Simple linear regression using `nalgebra`.

## 12 June 2023

- Gradient descent optimizer for functions $f: \mathbb{R}^n \rightarrow \mathbb{R}$.

## 5 June 2023

- Additional stochastic process generators
  - Ho-Lee model
  - Hull-White model
  - Black-Derman-Toy model

## 26 May 2023

- Download time series data from [Yahoo! Finance]https://finance.yahoo.com/.

## 25 May 2023

- Read (write) from (to) `.csv`, `.json`, and `.parquet` files, using [Polars `DataFrames`]https://pola-rs.github.io/polars-book/.

## Older

- Arithmetic Brownian Motion generator.
- Gamma, exponential, and chi-squared distributions.
- Forward start option pricer (Rubinstein 1990 formula).
- Gap option and cash-or-nothing option pricers (currently adding more binary options).
- Asian option pricer (closed-form solution for continuous geometric average).
- Heston Model option pricer (uses the tanh-sinh quadrature numerical integrator).
- Tanh-sinh (double exponential) quadrature for evaluating integrals.
  - Plus other basic numerical integrators (midpoint, trapezoid, Simpson's 3/8).
- Characteristic functions and density functions for common distributions:
  - Gaussian, Bernoulli, Binomial, Poisson, Uniform, Chi-Squared, Gamma, and Exponential.