Navigation

    Backtrader Community

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See: http://commonmark.org/help/

    Is it possible to label each plot when plotting multi assets using a PandasData feed?

    General Discussion
    1
    2
    199
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Matthew Scarborough
      Matthew Scarborough last edited by

      I'm utilizing NorgateData to read in local EOD data into a Pandas Dataframe, and then loading that data into a cerebro and plotting it for multiple assets, but unfortunately I'm not finding a way to have each of the plots labeled with the individual tickers. This is a bit of a pain when I'm using a long list of stocks for my universe, and trying to analyze trades.

      Is there a way to assign a name to each plot when using a Pandas data feed?

      Thanks in advance!

      1 Reply Last reply Reply Quote 1
      • Matthew Scarborough
        Matthew Scarborough last edited by

        I found the answer in another post. When I'm looping through my data, I rename the dataframe columns to fit the BT convention, then I convert that into a data feed and apply the name.

        I'll share my Norgate Data Code here for future reference.

        # Obtain a Pandas dataframe for a given security from Norgate Data
        priceadjust = norgatedata.StockPriceAdjustmentType.TOTALRETURN 
        padding_setting = norgatedata.PaddingType.NONE   
        start_date = '2019-05-01'
        #end_date = '2011-12-31'
        timeseriesformat = 'pandas-dataframe'
        
        universe = ['AAPL','TSLA']#,'GE','AMD','SPY']
        
        for ticker in universe:
            pricedata_dataframe = norgatedata.price_timeseries(
                ticker,
                stock_price_adjustment_setting = priceadjust,
                padding_setting = padding_setting,
                start_date = start_date,
                #end_date = end_date,
                format=timeseriesformat,
            )
        
            # Rename columns to suit Backtrader
            pricedata_dataframe.rename(
                columns={ 'Open':'open',  'High':'high', 'Low':'low', 'Close':'close', 'Volume':'volume', 'Open Interest':'open interest'},
                inplace=True)
        
            data = bt.feeds.PandasData(dataname=pricedata_dataframe)
            data._name = ticker
            cerebro.adddata(data)
        

        Anyways, thanks for creating and sharing such an amazing project.

        1 Reply Last reply Reply Quote 1
        • 1 / 1
        • First post
          Last post
        Copyright © 2016, 2017, 2018, 2019, 2020, 2021 NodeBB Forums | Contributors