use chrono::{Datelike, NaiveDate, Weekday};
pub fn is_likely_nse_expiry(date: NaiveDate, symbol: &str) -> bool {
let weekday = date.weekday();
match symbol.to_uppercase().as_str() {
"NIFTY" => weekday == Weekday::Thu,
"BANKNIFTY" => weekday == Weekday::Wed,
"FINNIFTY" => weekday == Weekday::Tue,
"MIDCPNIFTY" => weekday == Weekday::Mon,
_ => weekday == Weekday::Thu, }
}
pub struct ExpiryVolFilter {
symbol: String,
}
impl ExpiryVolFilter {
pub fn new(symbol: &str) -> Self {
Self { symbol: symbol.to_string() }
}
pub fn should_suppress(&self, date: NaiveDate) -> bool {
is_likely_nse_expiry(date, &self.symbol)
}
}