code: def handleTickGeneric(self, msg):
          
  
          df2use = self.marketData
          if self.contracts[msg.tickerId].m_secType in ("OPT", "FOP"):
              df2use = self.optionsData
  
          # create tick holder for ticker
          if msg.tickerId not in df2use.keys():
              df2use[msg.tickerId] = df2use[0].copy()
  
          if msg.tickType == dataTypes["FIELD_OPTION_IMPLIED_VOL"]:
              df2use[msg.tickerId]['iv'] = round(float(msg.value), 2)
  
          # elif msg.tickType == dataTypes["FIELD_OPTION_HISTORICAL_VOL"]:
          #     df2use[msg.tickerId]['historical_iv'] = round(float(msg.value), 2)
  
          # fire callback
          self.ibCallback(caller="handleTickGeneric", msg=msg)
docs: holds latest tick bid/ask/last price