fmp_rs/models/
institutional.rs

1//! Institutional holdings and insider trading models.
2
3use serde::{Deserialize, Serialize};
4
5/// Institutional holder
6#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
7#[serde(rename_all = "camelCase")]
8pub struct InstitutionalHolder {
9    pub holder: String,
10    pub shares: i64,
11    pub date_reported: String,
12    pub change: Option<i64>,
13    pub change_percent: Option<f64>,
14}
15
16/// Institutional portfolio composition
17#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
18#[serde(rename_all = "camelCase")]
19pub struct InstitutionalPortfolioComposition {
20    pub cik: String,
21    pub date: String,
22    pub filing_date: Option<String>,
23    pub accepted_date: Option<String>,
24    pub symbol: String,
25    pub company_name: Option<String>,
26    pub shares: i64,
27    pub value: f64,
28    pub change: Option<i64>,
29    pub change_percent: Option<f64>,
30    pub weight_percent: Option<f64>,
31}
32
33/// Institutional portfolio date (for RSS feed)
34#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
35#[serde(rename_all = "camelCase")]
36pub struct InstitutionalPortfolioDate {
37    pub cik: String,
38    pub year: i32,
39    pub quarter: i32,
40}
41
42/// Insider trading transaction
43#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
44#[serde(rename_all = "camelCase")]
45pub struct InsiderTrade {
46    pub symbol: String,
47    pub filing_date: String,
48    pub transaction_date: String,
49    pub reporting_name: String,
50    pub transaction_type: String,
51    pub securities_owned: f64,
52    pub securities_transacted: f64,
53    pub price: f64,
54    pub security_name: String,
55    pub link: Option<String>,
56    pub acquired_disposed: Option<String>,
57}
58
59/// Insider trading RSS feed item
60#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
61#[serde(rename_all = "camelCase")]
62pub struct InsiderTradingRss {
63    pub symbol: String,
64    pub filing_date: String,
65    pub company_name: Option<String>,
66}
67
68/// Fail to Deliver (FTD) data
69#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
70#[serde(rename_all = "camelCase")]
71pub struct FailToDeliver {
72    pub symbol: String,
73    pub date: String,
74    pub quantity: i64,
75    pub price: f64,
76    pub cusip: Option<String>,
77}
78
79/// CIK mapping (CIK to company)
80#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
81#[serde(rename_all = "camelCase")]
82pub struct CikMapper {
83    pub cik: String,
84    pub name: String,
85}