1 unstable release

0.1.0 Jul 12, 2024

#351 in Finance

Download history 133/week @ 2024-07-08 53/week @ 2024-07-15 8/week @ 2024-07-22 37/week @ 2024-08-12 10/week @ 2024-08-19 18/week @ 2024-08-26

65 downloads per month
Used in tevec

MIT license

14KB

Tevec

Build Crates.io Version

Introduction

A crate to provide financial quantitative analysis functions across different backends (currently Vec & Ndarray & Polars). almost entirely implemented with Rust traits to facilitate the future support of additional backends.

Currently, it is mainly divided into three categories of functions:

  • Rolling functions
  • Mapping functions
  • Aggregation functions

Installation

add tevec = "0.2" to your Cargo.toml

Basic Usage

First, import the common trait names to call the corresponding methods. use tevec::prelude::*

Aggregation Functions

Most aggregation functions are implemented for structs that satisfy the IntoIterator + Sized traits.

let data = vec![1, 2, 3, 4, 5];
data.titer().mean();  // not consume data, return Some(3)
data.mean();  // consume data, return Some(3)
let data = vec![1., f64::NAN, 3.];
data.titer().vmean();  // valid mean, this will ignore nan, return 2.
// valid function can also be used for Option<T> dtype
let data = vec![Some(1), None, Some(3)]
data.vmean(); // return 2.

Using titer returns an Iterator that satisfies TrustedLen, allowing for further method calls. The titer method comes from the Titer trait, which has been implemented for all backends.

Rolling Functions

let data = vec![1, 2, 3, 4, 5];
let mean: Vec<f64> = data.ts_mean(3, Some(1)); // params: window, min_periods
let mean2: Array1<f32> = data.ts_vmean(4, None); // rolling_mean function ignore none values

Mapping Functions

 let v = vec![1., 2., 3., 4., 5.];
 let shift_v: Vec<_> = v.titer().vshift(2, None).collect_trusted_vec1();
 let shfit_abs_v: Vec<_> = v.titer().abs().vshift(2, None).collect_trusted_vec1();

Some mapping functions return an Iterator, allowing for chained calls without reallocating memory, and only collecting the iterator when needed.

Feature Flags

pl: For Polars backend

ndarray: For Ndarray backend

agg: Aggregate Functions

map: Mapping Functions

rolling: Rolling Functions

stat: Statistic Functions

time: DateTime and TimeDelta structs

Dependencies

~0.5–2MB
~29K SLoC