question

Upvotes
Accepted
1 1 2 2

Plot Backtrader

Hi,


When I want to plot my strategy with BackTrader in CodeBook I have the following error :

error.png


I just did :

1650990393003.png

Do you know how can I solve it ?

datastream-apibacktesting
error.png (14.6 KiB)
1650990393003.png (7.6 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvote
Accepted
76.7k 238 52 72

@sdevaux

I got the same error by using the following code.

import pandas as pd
import backtrader as bt
import datetime
import refinitiv.dataplatform.eikon as ek


ek.set_app_key('DEFAULT_CODE_BOOK_APP_KEY') 
 
df_price = ek.get_timeseries('IBM.N')
cerebro = bt.Cerebro()
feed = bt.feeds.PandasData(dataname=df_price)
cerebro.adddata(feed)
cerebro.addanalyzer(bt.analyzers.AnnualReturn, _name='areturn')
cerebro.run()
cerebro.plot()

The error is:

/opt/conda/lib/python3.8/site-packages/backtrader/plot/locator.py in <module>
     33 from matplotlib.dates import AutoDateFormatter as ADFormatter
     34 
---> 35 from matplotlib.dates import (HOURS_PER_DAY, MIN_PER_HOUR, SEC_PER_MIN,
     36                               MONTHS_PER_YEAR, DAYS_PER_WEEK,
     37                               SEC_PER_HOUR, SEC_PER_DAY,

ImportError: cannot import name 'warnings' from 'matplotlib.dates' (/opt/conda/lib/python3.8/site-packages/matplotlib/dates.py)

The same code runs fine on my Jupyter Notebook environment.

1651131965097.png

I searched this error on Google and found that it could be the matplotlib or backtrader installation problem.

Please try to contact Eikon or Refinitiv Workspace support team via MyRefinitiv to verify this issue in Codebook.


1651131965097.png (63.4 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
13.8k 28 5 10

hi @sdevaux ,

Could you post the full code for an investigation, please?

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 1 2 2

Hi @raksina.samasiri ,


Thanks for your reply, here is my code :


import pandas as pd
import backtrader as bt
import datetime



cerebro = bt.Cerebro()
feed = bt.feeds.PandasData(dataname=df_price)
cerebro.adddata(feed)
cerebro.addanalyzer(bt.analyzers.AnnualReturn, _name='areturn')
cerebro.run()
cerebro.plot()

df_price is just a DataFrame with the price of one stock.

It works outside of CodeBook because I change the import in BackTrader of 'warnings'. (cf https://community.backtrader.com/topic/2784/cannot-import-name-warnings-from-matplotlib-dates/5)

Unfortuattly I can't do it in Codebook.


Thanks,


Samuel

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Thanks, Samuel for sharing the code with us, can you also please share a sample dataframe as well just for understanding which all fields you are using?

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.