gmsol_model/params/
price_impact.rs1use typed_builder::TypedBuilder;
2
3#[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 pub fn exponent(&self) -> &T {
14 &self.exponent
15 }
16
17 pub fn positive_factor(&self) -> &T {
19 &self.positive_factor
20 }
21
22 pub fn negative_factor(&self) -> &T {
24 &self.negative_factor
25 }
26
27 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}