code: def infer_trading_calendar(factor_idx, prices_idx):
      """
      Infer the trading calendar from factor and price information.
  
      Parameters
      ----------
      factor_idx : pd.DatetimeIndex
          The factor datetimes for which we are computing the forward returns
      prices_idx : pd.DatetimeIndex
          The prices datetimes associated withthe factor data
  
      Returns
      -------
      calendar : pd.DateOffset
      """
      full_idx = factor_idx.union(prices_idx)
  
      traded_weekdays = []
      holidays = []
  
      days_of_the_week = [
          "Mon",
          "Tue",
          "Wed",
          "Thu",
          "Fri",
          "Sat",
          "Sun",
      ]
      for day, day_str in enumerate(days_of_the_week):
          weekday_mask = full_idx.dayofweek == day
  
          # drop days of the week that are not traded at all
          if not weekday_mask.any():
              continue
          traded_weekdays.append(day_str)
  
          # look for holidays
          used_weekdays = full_idx[weekday_mask].normalize()
          all_weekdays = pd.date_range(
              full_idx.min(),
              full_idx.max(),
              freq=CustomBusinessDay(weekmask=day_str),
          ).normalize()
          _holidays = all_weekdays.difference(used_weekdays)
          _holidays = [timestamp.date() for timestamp in _holidays]
          holidays.extend(_holidays)
  
      traded_weekdays = " ".join(traded_weekdays)
      return CustomBusinessDay(
          weekmask=traded_weekdays, holidays=holidays
      )
  
imports: import pandas
  import numpy
  import re
  import warnings
  from IPython.display import display
  from pandas.tseries.offsets import CustomBusinessDay, Day, BusinessDay
  from scipy.stats import mode
label_desc: Use image node_id 4 for calling a global function with example usage: infer_trading_calendar(factor_idx, prices_idx) and returns: CustomBusinessDay