def value(self):
     res = {}
     for name in self.holders:
         try:
             res[name] = self.holders[name].value
         except ArithmeticError:
             res[name] = np.nan
     return SecuritiesValues(res)
 def value(self):
     res = {}
     for name in self.symbolList:
         if self._filter[name]:
             try:
                 res[name] = self.holders[name].value
             except ArithmeticError:
                 res[name] = np.nan
     return SecuritiesValues(res)
    def __getitem__(self, item):
        try:
            return self.holders[item].result()
        except (TypeError, KeyError) as _:

            if isinstance(item, tuple):
                symbolList = set(i.lower() for i in item)
                pyFinAssert(len(symbolList) == len(item), ValueError, "security name can't be duplicated")
                res = SecuritiesValues(
                    {s: self.holders[s].result() for s in symbolList}
                )
                return res
            elif isinstance(item, SecurityValueHolder):
                return FilteredSecurityValueHolder(self, item)
            else:
                raise TypeError("{0} is not a valid index".format(item))
    def __getitem__(self, item):
        try:
            if self._filter[item]:
                return self.holders[item].result()
            else:
                return np.nan
        except KeyError:

            if isinstance(item, tuple):
                symbolList = set(i.lower() for i in item).intersection(set(filter_flags.index))  # to be corrected
                pyFinAssert(len(symbolList) == len(item), ValueError, "security name can't be duplicated")
                res = SecuritiesValues(
                    {s: self.holders[s].result() for s in symbolList}
                )
                return res
            elif isinstance(item, SecurityValueHolder):
                return FilteredSecurityValueHolder(self, item)
            else:
                raise TypeError("{0} is not a valid index".format(item))