'Lookup an equity by symbol.
Parameters
symbol : str
The ticker symbol to resolve.
as_of_date : datetime or None
Look up the last owner of this symbol as of this datetime.
If ``as_of_date`` is None, then this can only resolve the equity
if exactly one equity has ever owned the ticker.
fuzzy : bool, optional
Should fuzzy symbol matching be used? Fuzzy symbol matching
attempts to resolve differences in representations for
shareclasses. For example, some people may represent the ``A``
shareclass of ``BRK`` as ``BRK.A``, where others could write
``BRK_A``.
Returns
equity : Equity
The equity that held ``symbol`` on the given ``as_of_date``, or the
only equity to hold ``symbol`` if ``as_of_date`` is None.
Raises
SymbolNotFound
Raised when no equity has ever held the given symbol.
MultipleSymbolsFound
Raised when no ``as_of_date`` is given and more than one equity
has held ``symbol``. This is also raised when ``fuzzy=True`` and
there are multiple candidates for the given ``symbol`` on the
``as_of_date``.'

def lookup_symbol(self, symbol, as_of_date, fuzzy=False):

    if (symbol is None):
        raise TypeError(('Cannot    lookup    asset    for    symbol    of    None    for    as    of    date    %s.' % as_of_date))
    if fuzzy:
        return self._lookup_symbol_fuzzy(symbol, as_of_date)
    return self._lookup_symbol_strict(symbol, as_of_date)
