RustQuant_data/
context_data.rs

1// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2// RustQuant: A Rust library for quantitative finance tools.
3// Copyright (C) 2023 https://github.com/avhz
4// Dual licensed under Apache 2.0 and MIT.
5// See:
6//      - LICENSE-APACHE.md
7//      - LICENSE-MIT.md
8// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9
10//! Contextual (reference) data container.
11
12use derive_builder::Builder;
13use time::Date;
14use RustQuant_instruments::Currency;
15use RustQuant_time::{
16    Calendar, DateGenerationConvention, DateRollingConvention, DayCountConvention, Frequency,
17    Schedule,
18};
19
20/// Contextual (reference) data.
21#[derive(Builder, Clone)]
22pub struct ContextData<C>
23where
24    C: Calendar,
25{
26    /// Calendar object.
27    #[builder(default)]
28    pub calendar: Option<C>,
29
30    /// Evaluation date.
31    #[builder(default)]
32    pub evaluation_date: Option<Date>,
33
34    /// Currency.
35    #[builder(default)]
36    pub currency: Option<Currency>,
37
38    /// Frequency.
39    #[builder(default)]
40    pub frequency: Option<Frequency>,
41
42    /// Schedule.
43    #[builder(default)]
44    pub schedule: Option<Schedule>,
45
46    /// Day count convention.
47    #[builder(default)]
48    pub day_count_convention: Option<DayCountConvention>,
49
50    /// Date rolling convention.
51    #[builder(default)]
52    pub date_rolling_convention: Option<DateRollingConvention>,
53
54    /// Date generation convention.
55    #[builder(default)]
56    pub date_generation_convention: Option<DateGenerationConvention>,
57}