rust_okx/api/account/responses/
risk.rs1use std::collections::HashMap;
2
3use serde::Deserialize;
4
5use crate::model::NumberString;
6
7#[derive(Debug, Clone, Deserialize)]
9#[serde(rename_all = "camelCase")]
10#[non_exhaustive]
11pub struct RiskState {
12 #[serde(default)]
15 pub at_risk: bool,
16 #[serde(default)]
18 pub at_risk_idx: Vec<String>,
19 #[serde(default)]
21 pub at_risk_mgn: Vec<String>,
22 #[serde(default)]
24 pub ts: NumberString,
25}
26
27#[derive(Debug, Clone, Deserialize)]
29#[serde(rename_all = "camelCase")]
30#[non_exhaustive]
31pub struct SimulatedMargin {
32 #[serde(default)]
34 pub imr: NumberString,
35 #[serde(default)]
37 pub mmr: NumberString,
38 #[serde(default)]
40 pub mr: NumberString,
41 #[serde(default)]
43 pub notional_usd: NumberString,
44 #[serde(default)]
46 pub details: Vec<SimulatedMarginDetail>,
47}
48
49#[derive(Debug, Clone, Deserialize)]
51#[serde(rename_all = "camelCase")]
52#[non_exhaustive]
53pub struct SimulatedMarginDetail {
54 #[serde(default)]
56 pub inst_id: String,
57 #[serde(default)]
59 pub pos: NumberString,
60 #[serde(default)]
62 pub imr: NumberString,
63 #[serde(default)]
65 pub mmr: NumberString,
66 #[serde(default)]
68 pub upl: NumberString,
69}
70
71#[derive(Debug, Clone, Deserialize)]
73#[serde(rename_all = "camelCase")]
74#[non_exhaustive]
75pub struct Greek {
76 #[serde(default)]
78 pub ccy: String,
79 #[serde(rename = "deltaBS", default)]
81 pub delta_bs: NumberString,
82 #[serde(rename = "deltaPA", default)]
84 pub delta_pa: NumberString,
85 #[serde(rename = "gammaBS", default)]
87 pub gamma_bs: NumberString,
88 #[serde(rename = "thetaBS", default)]
90 pub theta_bs: NumberString,
91 #[serde(rename = "vegaBS", default)]
93 pub vega_bs: NumberString,
94}
95
96#[derive(Debug, Clone, Deserialize)]
98#[serde(rename_all = "camelCase")]
99#[non_exhaustive]
100pub struct AccountPositionTier {
101 #[serde(default)]
103 pub uly: String,
104 #[serde(default)]
106 pub inst_family: String,
107 #[serde(default)]
109 pub max_sz: NumberString,
110 #[serde(default)]
113 pub pos_type: String,
114}
115
116#[derive(Debug, Clone, Deserialize)]
118#[serde(rename_all = "camelCase")]
119#[non_exhaustive]
120pub struct SetRiskOffsetAmountResult {
121 #[serde(default)]
123 pub ccy: String,
124 #[serde(rename = "clSpotInUseAmt", default)]
126 pub cl_spot_in_use_amt: NumberString,
127}
128
129#[derive(Debug, Clone, Deserialize)]
132#[serde(rename_all = "camelCase")]
133#[non_exhaustive]
134pub struct PositionBuilderResult {
135 #[serde(default)]
137 pub eq: NumberString,
138 #[serde(default)]
140 pub total_mmr: NumberString,
141 #[serde(default)]
143 pub total_imr: NumberString,
144 #[serde(default)]
146 pub borrow_mmr: NumberString,
147 #[serde(default)]
149 pub deriv_mmr: NumberString,
150 #[serde(default)]
152 pub margin_ratio: NumberString,
153 #[serde(default)]
155 pub upl: NumberString,
156 #[serde(default)]
158 pub acct_lever: NumberString,
159 #[serde(default)]
162 pub ts: NumberString,
163 #[serde(default)]
165 pub assets: Vec<PositionBuilderAsset>,
166 #[serde(default)]
168 pub risk_unit_data: Vec<PositionBuilderRiskUnit>,
169}
170
171#[derive(Debug, Clone, Deserialize)]
173#[serde(rename_all = "camelCase")]
174#[non_exhaustive]
175pub struct PositionBuilderAsset {
176 #[serde(default)]
178 pub ccy: String,
179 #[serde(default)]
181 pub avail_eq: NumberString,
182 #[serde(default)]
184 pub spot_in_use: NumberString,
185 #[serde(default)]
187 pub borrow_mmr: NumberString,
188 #[serde(default)]
190 pub borrow_imr: NumberString,
191}
192
193#[derive(Debug, Clone, Deserialize)]
195#[serde(rename_all = "camelCase")]
196#[non_exhaustive]
197pub struct PositionBuilderRiskUnit {
198 #[serde(default)]
200 pub risk_unit: String,
201 #[serde(default)]
204 pub mmr_bf: NumberString,
205 #[serde(default)]
207 pub mmr: NumberString,
208 #[serde(default)]
211 pub imr_bf: NumberString,
212 #[serde(default)]
214 pub imr: NumberString,
215 #[serde(default)]
217 pub upl: NumberString,
218 #[serde(default)]
221 pub mr1: NumberString,
222 #[serde(default)]
224 pub mr2: NumberString,
225 #[serde(default)]
227 pub mr3: NumberString,
228 #[serde(default)]
230 pub mr4: NumberString,
231 #[serde(default)]
233 pub mr5: NumberString,
234 #[serde(default)]
237 pub mr6: NumberString,
238 #[serde(default)]
240 pub mr7: NumberString,
241 #[serde(default)]
243 pub mr8: NumberString,
244 #[serde(default)]
246 pub mr9: NumberString,
247 #[serde(default)]
249 pub mr1_scenarios: Option<PositionBuilderMr1Scenarios>,
250}
251
252#[derive(Debug, Clone, Deserialize)]
257#[serde(rename_all = "camelCase")]
258#[non_exhaustive]
259pub struct PositionBuilderMr1Scenarios {
260 #[serde(default)]
263 pub vol_shock_down: HashMap<String, NumberString>,
264 #[serde(default)]
267 pub vol_same: HashMap<String, NumberString>,
268 #[serde(default)]
271 pub vol_shock_up: HashMap<String, NumberString>,
272}