<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_historical_data(symbols, start=None, end=None, **kwargs):
 """ Function to obtain historical date for a symbol or list of symbols. Return an instance of HistoricalReader Parameters symbols: str or list A symbol or list of symbols start: datetime.datetime, default None Beginning of desired date range end: datetime.datetime, default None End of required date range kwargs: Additional Request Parameters (see base class) Returns ------- list or DataFrame Historical stock prices over date range, start to end """

    start, end = _sanitize_dates(start, end)
    return HistoricalReader(symbols, start=start, end=end, **kwargs).fetch()