#holders #fundamental #serde #esg

paft-fundamentals

Fundamentals data models and helpers for paft

12 releases (6 breaking)

Uses new Rust 2024

0.7.1 Oct 31, 2025
0.7.0 Oct 28, 2025
0.6.0 Oct 21, 2025
0.5.2 Oct 19, 2025
0.1.0 Sep 15, 2025

#229 in Finance

Download history 130/week @ 2025-09-10 197/week @ 2025-09-17 31/week @ 2025-09-24 404/week @ 2025-10-01 243/week @ 2025-10-08 604/week @ 2025-10-15 216/week @ 2025-10-22 103/week @ 2025-10-29 20/week @ 2025-11-05

964 downloads per month
Used in 5 crates (2 directly)

MIT license

215KB
3.5K SLoC

paft-fundamentals

Fundamentals data models for the paft ecosystem: financial statements, analysis, holders, and ESG.

Crates.io Docs.rs

  • Profiles: CompanyProfile, FundProfile
  • Statements: IncomeStatementRow, BalanceSheetRow, CashflowRow
  • Analysis: earnings, recommendations, price targets
  • Holders: institutional, insiders
  • ESG: scores, involvement, summary

Install

Prefer the facade crate for most applications:

[dependencies]
paft = "0.7.1"

Advanced (direct dependency, minimal):

[dependencies]
paft-fundamentals = { version = "0.7.1", default-features = false }

Alternate decimal backend:

[dependencies]
paft-fundamentals = { version = "0.7.1", default-features = false, features = ["bigdecimal"] }

With DataFrame integration:

[dependencies]
paft-fundamentals = { version = "0.7.1", default-features = false, features = ["dataframe"] }

Features

  • bigdecimal: change money backend from rust_decimal to bigdecimal via paft-money
  • dataframe: Polars integration (ToDataFrame/ToDataFrameVec)

Quickstart

use paft_fundamentals::{Earnings, EarningsYear, Profile, CompanyProfile};

let earnings = Earnings { yearly: vec![EarningsYear { year: 2023, ..Default::default() }], ..Default::default() };
assert_eq!(earnings.yearly[0].year, 2023);

let profile = Profile::Company(CompanyProfile {
    name: "Example Corp".into(),
    sector: None,
    industry: None,
    website: None,
    address: None,
    summary: None,
    isin: None,
});
if let Profile::Company(c) = profile { assert_eq!(c.name, "Example Corp"); }

Dependencies

~4–26MB
~368K SLoC