gmsol_model/params/
price_impact.rs

1use typed_builder::TypedBuilder;
2
3/// Price impact parameters.
4#[derive(Debug, Clone, Copy, TypedBuilder)]
5pub struct PriceImpactParams<T> {
6    exponent: T,
7    positive_factor: T,
8    negative_factor: T,
9}
10
11impl<T> PriceImpactParams<T> {
12    /// Exponent.
13    pub fn exponent(&self) -> &T {
14        &self.exponent
15    }
16
17    /// Positive factor.
18    pub fn positive_factor(&self) -> &T {
19        &self.positive_factor
20    }
21
22    /// Negative factor.
23    pub fn negative_factor(&self) -> &T {
24        &self.negative_factor
25    }
26
27    /// Get adjusted swap factors.
28    pub fn adjusted_factors(&self) -> (&T, &T)
29    where
30        T: Ord + crate::num::Unsigned,
31    {
32        if self.positive_factor > self.negative_factor {
33            (&self.negative_factor, &self.negative_factor)
34        } else {
35            (&self.positive_factor, &self.negative_factor)
36        }
37    }
38}