#ndarray #back-end #polars #vec #function #financial-analysis #rolling

tevec

为 vec | ndarray | polars 后端提供定量分析函数的包

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 日

#46 in 财经

Download history 314/week @ 2024-07-10 128/week @ 2024-07-17 137/week @ 2024-07-24 4/week @ 2024-07-31 117/week @ 2024-08-07 351/week @ 2024-08-14

610 每月下载量

MIT 许可证

185KB
5K SLoC

Tevec

Build Crates.io Version

简介

一个包,提供跨不同后端(目前为 Vec & Ndarray & Polars)的金融定量分析函数。几乎全部使用 Rust traits 实现,以方便未来支持更多后端。

目前主要分为三个功能类别

  • 滚动函数
  • 映射函数
  • 聚合函数

安装

tevec = "0.3" 添加到您的 Cargo.toml

基本用法

首先,导入通用特质名称以调用相应的方法。 use tevec::prelude::*

聚合函数

大多数聚合函数都是针对满足 IntoIterator + Sized 特质的结构体实现的。

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 特质,该特质已针对所有后端实现。

滚动函数

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:结构体 DateTimeTimeDelta

依赖项

~0.7–13MB
~159K SLoC