rustyqlib/equity/
build_contracts.rs1use chrono::{NaiveDate,Local,Weekday};
5use chrono::Datelike;
6use crate::core::trade;
7use super::vanila_option::{EquityOption};
8use super::super::core::termstructure::YieldTermStructure;
9use crate::rates::utils::TermStructure;
10use crate::core::vols::VolSurface;
11use crate::rates::utils::{DayCountConvention};
12use crate::core::quotes::Quote;
13use crate::core::utils::{Contract,ContractStyle};
14use crate::equity::utils::{Engine, Payoff};
15use std::collections::BTreeMap;
16use crate::core::data_models::ProductData;
17
18pub fn build_eq_contracts_from_json(data: Vec<Contract>) -> Vec<Box<EquityOption>> {
19 let derivatives:Vec<Box<EquityOption>> = data.iter().map(|x| {
20 let ProductData::Option(opt_data) = &x.product_type else {
21 panic!("Not an option!");
22 };
23 let mut opt_data = opt_data.clone();
27 if opt_data.volatility.is_none() && opt_data.vol_surface.is_none() {
28 opt_data.volatility = Some(0.2);
29 }
30 EquityOption::from_json(&opt_data)
31 }).collect();
32 return derivatives;
33}