Data Sources#

Data Source#

class lumibot.data_sources.data_source.DataSource#

Bases: object

DEFAULT_PYTZ = <DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>#
DEFAULT_TIMEZONE = 'America/New_York'#
IS_BACKTESTING_DATA_SOURCE = False#
MIN_TIMESTEP = 'minute'#
SOURCE = ''#
TIMESTEP_MAPPING = []#
get_bars(assets, length, timestep='minute', timeshift=None, chunk_size=100, max_workers=200, quote=None, exchange=None, include_after_hours=True)#

Get bars for the list of assets

get_datetime()#
get_datetime_range(length, timestep='minute', timeshift=None)#
get_greeks(asset, implied_volatility=False, delta=False, option_price=False, pv_dividend=False, gamma=False, vega=False, theta=False, underlying_price=False)#

Returns Greeks in backtesting.

get_historical_prices(asset, length, timestep='', timeshift=None, quote=None, exchange=None, include_after_hours=True)#

Get bars for a given asset

get_last_day()#
get_last_minute()#
get_last_price(asset, timestep=None, quote=None, exchange=None, **kwargs)#

Takes an asset and returns the last known price

get_last_prices(assets, timestep=None, quote=None, exchange=None, **kwargs)#

Takes a list of assets and returns the last known prices

get_round_day(timeshift=0)#
get_round_minute(timeshift=0)#
get_timestamp()#
get_timestep()#
get_tradable_assets(dt, length=1, timestep='minute', timeshift=0)#
get_yesterday_dividend(asset, quote=None)#

Return dividend per share for a given asset for the day before

get_yesterday_dividends(assets, quote=None)#

Return dividend per share for a list of assets for the day before

is_tradable(asset, dt, length=1, timestep='minute', timeshift=0)#
classmethod localize_datetime(dt)#
classmethod to_default_timezone(dt)#

Pandas#

class lumibot.data_sources.pandas.PandasData(pandas_data, config=None, auto_adjust=True, **kwargs)#

Bases: DataSource

IS_BACKTESTING_DATA_SOURCE = True#
MIN_TIMESTEP = 'minute'#
SOURCE = 'PANDAS'#
TIMESTEP_MAPPING = [{'representations': ['1D', 'day'], 'timestep': 'day'}, {'representations': ['1M', 'minute'], 'timestep': 'minute'}]#
clean_trading_times(dt_index, pcal)#
get_asset_by_name(name)#
get_asset_by_symbol(symbol, asset_type=None)#

Finds the assets that match the symbol. If type is specified finds the assets matching symbol and type.

Parameters:
  • symbol (str) – The symbol of the asset.

  • type (str) – Asset type. One of: - stock - future - option - forex

Return type:

list of Asset

get_assets()#
get_chain(chains, exchange='SMART')#

Returns option chain for a particular exchange.

Takes in a full set of chains for all the exchanges and returns on chain for a given exchange. The the full chains are returned from get_chains method.

Parameters:
  • chains (dictionary of dictionaries) – The chains dictionary created by get_chains method.

  • exchange (str optional) – The exchange such as SMART, CBOE. Default is SMART

Returns:

A dictionary of option chain information for one stock and for one exchange. It will contain:

  • Underlying conId (int)

  • TradingClass (str) eg: FB

  • Multiplier (str) eg: 100

  • Expirations (set of str) eg: {20230616, …}

  • Strikes (set of floats)

Return type:

dictionary

get_chains(asset)#

Returns option chains.

Obtains option chain information for the asset (stock) from each of the exchanges the options trade on and returns a dictionary for each exchange.

Parameters:

asset (Asset object) – The stock whose option chain is being fetched. Represented as an asset object.

Returns:

  • dictionary of dictionary for ‘SMART’ exchange only in

  • backtesting. Each exchange has

    • Underlying conId (int)

    • TradingClass (str) eg: FB

    • Multiplier (str) eg: 100

    • Expirations (set of str) eg: {20230616, …}

    • Strikes (set of floats)

get_expiration(chains, exchange='SMART')#

Returns expiration dates for an option chain for a particular exchange.

Using the chains dictionary obtained from get_chains finds all of the expiry dates for the option chains on a given exchange. The return list is sorted.

Parameters:
  • chains (dictionary of dictionaries) – The chains dictionary created by get_chains method.

  • exchange (str optional) – The exchange such as SMART, CBOE. Default is SMART.

Returns:

Sorted list of dates in the form of 20221013.

Return type:

list of str

get_greeks(asset, implied_volatility=False, delta=False, option_price=False, pv_dividend=False, gamma=False, vega=False, theta=False, underlying_price=False)#

Returns Greeks in backtesting.

get_last_price(asset, timestep=None, quote=None)#

Takes an asset and returns the last known price

get_last_prices(assets, timestep=None, quote=None)#

Takes a list of assets and returns the last known prices

get_multiplier(chains, exchange='SMART')#

Returns option chain for a particular exchange.

Using the chains dictionary obtained from get_chains finds all of the multiplier for the option chains on a given exchange.

Parameters:
  • chains (dictionary of dictionaries) – The chains dictionary created by get_chains method.

  • exchange (str optional) – The exchange such as SMART, CBOE. Default is SMART

Returns:

Sorted list of dates in the form of 20221013.

Return type:

list of str

get_strikes(asset)#

Returns a list of strikes for a give underlying asset.

Using the chains dictionary obtained from get_chains finds all of the multiplier for the option chains on a given exchange.

Parameters:

asset (Asset object) –

Asset object as normally used for an option but without the strike information.

Example: asset = self.create_asset(

”FB”, asset_type=”option”, expiration=self.options_expiry_to_datetime_date(“20210924”), right=”CALL”, multiplier=100,

)

expiration can also be expressed as datetime.datetime.date()

Returns:

Sorted list of strikes as floats.

Return type:

list of floats

get_tradable_assets(dt, length=1, timestep='minute', timeshift=0)#
get_trading_days_pandas()#
get_yesterday_dividend(asset)#

Return dividend per share for a given asset for the day before

get_yesterday_dividends(assets)#

Return dividend per share for a list of assets for the day before

is_tradable(asset, dt, length=1, timestep='minute', timeshift=0)#
load_data()#
update_date_index()#

Yahoo#

class lumibot.data_sources.yahoo.YahooData(config=None, auto_adjust=True, **kwargs)#

Bases: DataSource

MIN_TIMESTEP = 'day'#
SOURCE = 'YAHOO'#
TIMESTEP_MAPPING = [{'representations': ['1D', 'day'], 'timestep': 'day'}]#

Module contents#