10 个版本
新 0.3.3 | 2024 年 8 月 21 日 |
---|---|
0.3.2 | 2024 年 8 月 19 日 |
0.2.6 | 2024 年 8 月 12 日 |
0.2.5 | 2024 年 7 月 24 日 |
#259 在 财务
628 每月下载
用于 tevec
98KB
3K SLoC
Tevec
简介
一个 crate,旨在为不同的后端(目前为 Vec、Ndarray 和 Polars)提供金融量化分析函数。几乎完全使用 Rust traits
实现,以方便未来支持更多后端。
目前,它主要分为三个功能类别
- 滚动函数
- 映射函数
- 聚合函数
安装
将 tevec = "0.2"
添加到您的 Cargo.toml
基本用法
首先,导入通用的 trait 名称以调用相应的方法。 use tevec::prelude::*
聚合函数
大多数聚合函数都针对满足 IntoIterator + Sized
特性的 struct 实现。
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.
使用 titer
返回一个满足 Iterator
的 TrustedLen
,允许进一步的方法调用。 titer
方法来自 Titer
trait,它已为所有后端实现。
滚动函数
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
映射函数
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();
某些映射函数返回一个 Iterator
,允许在不重新分配内存的情况下进行链式调用,并且仅在需要时收集迭代器。
功能标志
pl: 针对 Polars
后端
ndarray: 针对 Ndarray
后端
agg: 聚合函数
map: 映射函数
rolling: 滚动函数
stat: 统计函数
time: DateTime
和 TimeDelta
结构体
依赖关系
~0.6–1.3MB
~29K SLoC