alpaca_data/options/
model.rs1use rust_decimal::Decimal;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
5pub struct Bar {
6 pub t: Option<String>,
7 #[serde(
8 default,
9 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
10 )]
11 pub o: Option<Decimal>,
12 #[serde(
13 default,
14 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
15 )]
16 pub h: Option<Decimal>,
17 #[serde(
18 default,
19 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
20 )]
21 pub l: Option<Decimal>,
22 #[serde(
23 default,
24 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
25 )]
26 pub c: Option<Decimal>,
27 pub v: Option<u64>,
28 pub n: Option<u64>,
29 #[serde(
30 default,
31 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
32 )]
33 pub vw: Option<Decimal>,
34}
35
36#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
37pub struct Quote {
38 pub t: Option<String>,
39 pub bx: Option<String>,
40 #[serde(
41 default,
42 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
43 )]
44 pub bp: Option<Decimal>,
45 pub bs: Option<u64>,
46 pub ax: Option<String>,
47 #[serde(
48 default,
49 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
50 )]
51 pub ap: Option<Decimal>,
52 #[serde(rename = "as")]
53 pub r#as: Option<u64>,
54 pub c: Option<String>,
55}
56
57#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
58pub struct Trade {
59 pub t: Option<String>,
60 pub x: Option<String>,
61 #[serde(
62 default,
63 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
64 )]
65 pub p: Option<Decimal>,
66 pub s: Option<u64>,
67 pub c: Option<String>,
68}
69
70#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
71pub struct Greeks {
72 #[serde(
73 default,
74 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
75 )]
76 pub delta: Option<Decimal>,
77 #[serde(
78 default,
79 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
80 )]
81 pub gamma: Option<Decimal>,
82 #[serde(
83 default,
84 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
85 )]
86 pub rho: Option<Decimal>,
87 #[serde(
88 default,
89 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
90 )]
91 pub theta: Option<Decimal>,
92 #[serde(
93 default,
94 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
95 )]
96 pub vega: Option<Decimal>,
97}
98
99#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
100pub struct Snapshot {
101 #[serde(rename = "latestTrade")]
102 pub latest_trade: Option<Trade>,
103 #[serde(rename = "latestQuote")]
104 pub latest_quote: Option<Quote>,
105 #[serde(rename = "minuteBar")]
106 pub minute_bar: Option<Bar>,
107 #[serde(rename = "dailyBar")]
108 pub daily_bar: Option<Bar>,
109 #[serde(rename = "prevDailyBar")]
110 pub prev_daily_bar: Option<Bar>,
111 pub greeks: Option<Greeks>,
112 #[serde(
113 rename = "impliedVolatility",
114 default,
115 deserialize_with = "alpaca_core::decimal::deserialize_option_decimal_from_string_or_number"
116 )]
117 pub implied_volatility: Option<Decimal>,
118}