Skip to main content

rustyqlib/core/
traits.rs

1use chrono::NaiveDate;
2use crate::rates::utils::DayCountConvention;
3use crate::rates::utils::TermStructure;
4pub trait Instrument{
5    fn npv(&self)-> f64;
6}
7
8pub trait Greeks{
9    fn delta(&self) -> f64;
10    fn gamma(&self) -> f64;
11    fn vega(&self) -> f64;
12    fn theta(&self) -> f64;
13    fn rho(&self) -> f64;
14}
15
16
17pub trait Rates {
18    fn get_implied_rates(&self) -> f64;
19    fn get_maturity_date(&self) -> NaiveDate;
20    fn get_rate(&self) -> f64;
21    fn get_maturity_discount_factor(&self) -> f64;
22    fn get_day_count(&self) -> &DayCountConvention;
23    fn set_term_structure(&mut self,term_structure:TermStructure)->();
24}
25
26pub trait Observer{
27    fn update(&mut self);
28    fn reset(&mut self);
29}
30pub trait Observable{
31    fn update(&mut self);
32    fn reset(&mut self);
33}