Backtesting.py - Full course in python

Поделиться
HTML-код
  • Опубликовано: 28 янв 2025

Комментарии • 250

  • @danchatka8613
    @danchatka8613 2 года назад +33

    This is an amazingly good tutorial and you, Chad, are an amazingly good teacher/guide. You don't make things more complicated than they are. You stay on track.

  • @transcendmoney
    @transcendmoney Год назад +5

    Best tutorial of backtesting.py on youtube !, thanks

  • @samueltamayogaviria3377
    @samueltamayogaviria3377 2 года назад +1

    Holy ...!! I've been waiting for a course for this library, thanks!!

  • @TundraKaffe1
    @TundraKaffe1 2 года назад +5

    Perfect course! The best out there by far.
    What I still don't get is how to replace a sl or tp if a certain event happens.
    For example I would like to move my stop loss up if a take profit of another order was hit.

    • @MLAlgoTrader
      @MLAlgoTrader 4 месяца назад

      You can access the trades with self.trades and you can adjust the stop loss and take profit by doing for example for trade in self.trades: trade.sl=NEW_VALUE

  • @jmarsh411
    @jmarsh411 7 месяцев назад +1

    This is a fantastic tutorial, errors and all. You're a hero!!

  • @DarrellLDunn
    @DarrellLDunn Год назад

    Great video Chad. I really appreciate you taking the time. I'm three months into learning Python and stock investing and I was able to follow along this entire video.

  • @simulateworld3198
    @simulateworld3198 11 месяцев назад +1

    I was looking for this type of tutorial you are the man❤❤

  • @glenrichzuso9076
    @glenrichzuso9076 Год назад +1

    I am watching your tutorial over the others because your using VIM as your editor :)
    This shows the commitment of a person to learn beyond what is required
    Awesome work and thank you for the wonderful tutorial !

  • @gkr7078
    @gkr7078 2 года назад

    This is the best tutorial on backtesting iN RUclips.. a quick question. How do I for loop through different strategy classes for running tests in backtesting.py

  • @dilip.rajkumar
    @dilip.rajkumar 2 года назад +13

    Thank you for another Great video. I really do Love your video and channel, so much information on topics where there is hardly any information elsewhere ✌️. BTW, could you post in the description a pros and cons table comparing VectorBT vs. Backtesting.py or perhaps you can make a short 5 min video comparing the differences and highlighting the use cases.

  • @nukewares
    @nukewares Год назад

    great work, this is excellent. I also appreciate the northern accent. It's been a while since I've heard a proper one.

  • @jungkyunyang5184
    @jungkyunyang5184 2 года назад +1

    Hi Chad, Thank you for the good video. If I had known this video first, I could have saved a lot of time. But I was able to get a lot of ideas from watching this video. Thanks once again.

  • @naelshichida7940
    @naelshichida7940 2 года назад +2

    Absoultely love the content, thanks for your hard work and grit.

  • @ishaangupta3471
    @ishaangupta3471 2 года назад +1

    Thanks a lot for this! Found exactly what I was looking for to run optimization.

  • @GEORGESDominique
    @GEORGESDominique 2 года назад +2

    Very interresting and clever explanation about backtesting. I'm looking since a few months for readable and understandable content about backtesting, and .. I just found it now :) Thanks for that.
    I'm more "crypto market" oriented, and more scalping strategy interrested (I don't have so much time to trade :'( )
    Thanks for this video, and waiting for the next ones.
    PS : I modified this message and deleted my "request" about developping a BOT, it is in your blog ;)

  • @oliverSaquarema
    @oliverSaquarema Год назад +1

    Chad, I really appreciate your content, very well explained, you are an excellent teacher and your content is incredible! thanks again! I will study all the content on your channel!

  • @devby9
    @devby9 2 года назад

    Thank u… By the way, I like your contents a lot because of your exclusive content, as well as your deep and soothing voice,
    With that British accent :)
    so because of that, I can normally watch an hour-long video with no boring

  • @aingo6521
    @aingo6521 2 года назад +1

    Thank you for sharing this. I learn a lot from you ! much respect !

  • @K_line_sorter
    @K_line_sorter Год назад

    How to set the transaction time? For example, trading is only done between 8-12 New York time.

  • @jontycraine4903
    @jontycraine4903 2 года назад

    Another great Backtesting video Chad

  • @andhikaseptiawan8036
    @andhikaseptiawan8036 2 года назад +1

    Very Informative, helpful and Educational video! Thx for the tutorial man!

  • @transcendmoney
    @transcendmoney Год назад +1

    Hello, by default is doing size of units, how will be possible to make sizes with decimals, for example always enter with 0.95 of equity in ethereum, should be units with decimals

  • @Machiuka
    @Machiuka 11 месяцев назад

    Very good tutorial. I have some problems to install TA-LIB on my Win11 computer, because of the Python version that I have (3.11). I solved this by creating an environment with Python 3.10.

  • @flydr2
    @flydr2 2 года назад

    Thank you for taking the time to do this... Very helpfull to me.

  • @stansuen8072
    @stansuen8072 2 года назад +3

    Awesome tutorial! Learnt a lot! Thanks a lot.

  • @markethd
    @markethd 2 года назад

    Thanks for sharing your wealth of knowledge in this excellent series Chad. I love your name by the way.

  • @MrWittzHD
    @MrWittzHD 2 года назад +1

    this was wonderful, thank you very much

  • @ArneGockeln
    @ArneGockeln 10 месяцев назад

    Good tutorial and introduction of this backtest library! Thanks. One last question: Would you bet your real money on strategies that you have tested with this library?

  • @studiox_ui
    @studiox_ui 2 года назад

    dude you're the fucking best please post more about algotrading thanks

  • @virtuallore
    @virtuallore Год назад

    Brilliant. Very high quality work ❤

  • @JurinoJr
    @JurinoJr Год назад

    That was an awesome tutorial, thanks a lot!

  • @shortmeister6776
    @shortmeister6776 5 месяцев назад

    22:00 when we did optimization over a much larger set of configs, we maximized the return and the sharp ratio improved as well. Why is it a bad thing. Please explain =) THanks

  • @SOMEONE-eq5bu
    @SOMEONE-eq5bu 2 года назад

    that was an excellent tutorial, thanks for sharing, liked and subbed.

  • @tradewithaakash2939
    @tradewithaakash2939 Год назад

    You are just amazing !! thankyou so much for sharing your knowledge

  • @zeus_2001
    @zeus_2001 2 года назад +2

    Excellent tutorial. I like the simplicity of this library. It's too bad it can't test and aggregate results for multiple tickers.

    • @damienong1462
      @damienong1462 2 года назад

      There is a way to do it. By using for loop, where you will be able to test multiple tickers and even multiple timeframe. (if this is what you mean, it's easy to do it especially with this library, compare to freqTrade)

    • @zeus_2001
      @zeus_2001 2 года назад +1

      @@damienong1462 No, that's not what I meant. Looping just runs a sequential series of separate tests. What I'm talking about involves trading multiple instruments as a single strategy.

  • @brianrowe1152
    @brianrowe1152 2 года назад +1

    Maybe cover trailing stop in a future video? Or can you replace an open order to sell with a new order that you want instead? For example a trailing stop % from the average price, not the close?

  • @VidyabhushanUpadhye
    @VidyabhushanUpadhye 2 года назад +2

    Hi Chad, this is a wonderful tutorial. Very well explained with the right context.I need help with the date column from a CSV file. python is not reading it as DateTime format but instead, it is reading it as an object. Not able to solve it, and because which not getting Sharpe and other ratios.

    • @ChadThackray
      @ChadThackray  2 года назад

      I would look into the pd.to_datetime function from pandas, that will help you convert the date column from a string into datetime format

    • @VidyabhushanUpadhye
      @VidyabhushanUpadhye 2 года назад

      @@ChadThackray Thanks a lot. It worked. not the ratios are being calculated.😊👍

    • @VidyabhushanUpadhye
      @VidyabhushanUpadhye 2 года назад

      Hi @@ChadThackray, I am observing that my entries and exits are delayed by two candles not sure why it is happening. Send you an email with the python code and data file. Thanks

  • @davidhazle3234
    @davidhazle3234 10 месяцев назад

    Chad, another really good training tutorial . Are you able to share the python code with each of your tutorialss pls?

  • @transcendmoney
    @transcendmoney Год назад +1

    so seems backtesting.py can't trade with fractional sizes (fractional ethereum for example 0.99 have to be 1 or 2 ethereum)

  • @ramanuj_g
    @ramanuj_g Год назад

    dude this was fantastic... helped a ton..thx...

  • @chimgaebu8419
    @chimgaebu8419 Год назад

    thank you very much. this is very gorgeous video !!!! . It is very helpful.

  • @BOSprodz
    @BOSprodz 2 года назад +2

    EDIT SOLVED: Downgrading bokeh to 2.4.3 solved the plotting issue
    I am unable to see the plotting using Jupyter notebooks. I've looked through the issue tracker and the fixes didn't work(or I couldn't figure out how to downgrade Python to 3.7).
    Any ideas?

    • @ChadThackray
      @ChadThackray  2 года назад +1

      Is there any particular reason you need jupyter? If not you can just run it as a regular .py

    • @BOSprodz
      @BOSprodz 2 года назад

      @@ChadThackray Thank you for answering! I just like Jupyter, but I had the same problem with VSCode as well

    • @CricketKBrown
      @CricketKBrown Год назад

      @@BOSprodz I had the same problem in both places to.

    • @CricketKBrown
      @CricketKBrown Год назад

      Thank´s for your Idea. I used pip install bokeh==2.4.3 in MacOS for degreed bokeh from 3.0.3 to 2.4.3 and then the HTML in safari browser was ok.

  • @trilokyadav4159
    @trilokyadav4159 10 месяцев назад

    Hi Chad, thanks for the detailed tutorial! Is it possible to backtest mulit-asset strategies using this API i.e. say option straddle strategy, or say buying a stock and shorting an index at the same time if a signal is generated? Otherwise this would be really limited long/short strategies only and not dollar/delta neutral strategies.

  • @vinnyvidivici5930
    @vinnyvidivici5930 2 года назад

    noob question here, what is that screen at 5:10 when you type "from backtesting import Backtest, Strategy" ? i successfully downloaded python, and my 'pip install backtest' in the CMD window worked, but where do i go to get what you have at 5:10? what screen is that? thx!

    • @ChadThackray
      @ChadThackray  2 года назад

      I'm using vim here as my text editor on the command line. You might want to use something like visual studio code or pycharm or similar program, which will do the same thing

  • @StrategyFactory
    @StrategyFactory 5 месяцев назад

    Hi Chad! I hope you are doing really well. Thanks for this amazing tutorial! Do you know if it's possible to do live trading with a strategy developed using this library?

    • @MLAlgoTrader
      @MLAlgoTrader 4 месяца назад

      Chad's course is amazing. Sorry if not the place to answer, but I happen to be working on a video to try to easily convert to Interactive Brokers live trading so eventually check out my video in maybe a week or so lol.

  • @Cavz001
    @Cavz001 Год назад

    Great video sir. Quick question. Delving deeper into algorithmic trading, I’ve found that mere backtesting isn’t sufficient and processes like out-of-sample backtesting, Sample parameter optimization, walk-forward optimization and Monte Carlo Simulation are viltal to creating a solid system. Question is: how do you conduct these tests with Python?

    • @ChadThackray
      @ChadThackray  Год назад

      You are correct. There are many videos here on youtube that will teach you how to do these other tests. Some of those topics I've covered myself on this channel

    • @Cavz001
      @Cavz001 Год назад

      @@ChadThackray cool. I’ll check them out. Thank you

  • @vivekghule5601
    @vivekghule5601 Год назад

    How to write a strategy in backteting like : input data to backtest is one-minute chart, logic : get High and Low of 2 PM (5 minute candle), and then if current close > high buy order with target 20points , if current close < low sell with tartget of 20 points.
    Thanks

  • @mohamedhicham6298
    @mohamedhicham6298 10 месяцев назад

    Hey Chad great work, i have a question. If i have a dictionary of dataframes for 50 stocks. All of the dataframes have the same start and end date. So how can i run a backtest over all of them instead of running the backtest only one a single dataframe?

  • @ghazanferali366
    @ghazanferali366 2 года назад +1

    Great video, very informative.
    I am just having one problem while applying the multitimeframe strategy. If resample_apply is done on an indicator which takes more than one inputs, it is giving all sorts of errors.

    • @ghazanferali366
      @ghazanferali366 2 года назад +1

      self.tf2MDI = resample_apply(
      '3T',ta.MINUS_DI(high,low,price,self.n) As an example is not working

  • @ЕвгенийКрасилов-о9о
    @ЕвгенийКрасилов-о9о 2 года назад +1

    There is df.droplevel(axis=0, level=2) to drop "rsi_window" index level. That would be more reasonable to use instead of grouping and using meaningless .mean method.

  • @karthickb1973
    @karthickb1973 11 месяцев назад

    i needed this today. chad sent

  • @richardchu1593
    @richardchu1593 Год назад

    In the tutorial, there is example to resample from daily to weekly data such as:
    self.weekly_rsi = resample_apply("W-FRI", talib.RSI, self.data.Close, self.rsi_window).
    However for future contract such as MNQ, its session opening time is not exactly in the same day (using Eastern Time as base). For example MNQ's monday session starts trading from Sunday 6PM ET until Monday 5PM ET.
    Than for the above case, how do you define "session", "daily" and "weekly" resample?
    Thank you so much!

  • @Luca-wg4cv
    @Luca-wg4cv Год назад

    hi i have a huge problem, if i fix the quantity 1 i don’t work the code regarding the peack and the final how can i fix it?

  • @syng9596
    @syng9596 2 года назад

    thx for the very detailed tutorial! appreciate it!

  • @andreagiunta168
    @andreagiunta168 2 года назад

    hi there. I would like use Bollinger Bands and consider "lenght" and "stdev" as variables to be used within the optimization function. have you got some solving answer?!??!?! pllsssssss

  • @LrdKGB
    @LrdKGB 4 месяца назад

    Hi Chad, how confident are you to deploy a strategy after backtesting it? As in is there a strategy that is as profitable as/reflects the backtest without too many discrepancies? If not till what extent can we trust the backtest stats?

    • @ChadThackray
      @ChadThackray  3 месяца назад +1

      Depends on your setup but generally a backtest alone is not enough. Paper trade it before deploying actual cash

  • @shishanliu5851
    @shishanliu5851 7 месяцев назад

    Thank you for the detailed explanation.
    I have a question, what's the difference between
    '''
    crossover(self.daily_rsi, self.upper_bound)
    '''
    and
    '''
    self.daily_rsi [-1] > self.upper_bound
    '''
    It would be helpful for the explanation :)
    Thanks first!

    • @shishanliu5851
      @shishanliu5851 7 месяцев назад

      btw,
      I want to ask:
      '''
      self.buy(sl = 0.95 * price)
      '''
      Does that mean if the order is less than 95% of the price, the order will be sold?
      Or if the order is bought when the price is 95% of the current price?

  • @Thegiant4296
    @Thegiant4296 2 года назад +1

    I am new to python and was just curious what you're using to write your code in? I couldn't make it out when you said it in the beginning but would like to use the same platform

    • @ChadThackray
      @ChadThackray  2 года назад +1

      I'm using Vim, a command line based text editor

    • @Thegiant4296
      @Thegiant4296 2 года назад

      @@ChadThackray Thank you!

  • @supertamtamtom
    @supertamtamtom Год назад

    Can we put constraints on more than 1 parameter, and maximize/minimize several (more than 1) parameters?

  • @trollrequiem0444
    @trollrequiem0444 2 года назад +1

    Thank you! Nice video! Is there any way to save the equity line data, so that you can, for example, draw it with matplotlib?

    • @ChadThackray
      @ChadThackray  2 года назад

      Yep! You can get it from the stats. So you have something like:
      output = bt.run()
      curve = output._equity_curve
      If you look it's just under all the other stats like sharpe, etc. You get a nice pandas df you can plot to your heart's content

  • @borismiz
    @borismiz 2 года назад +1

    If I run a backtest using moving averages with n periods, the dataframe will contain Nan values for the first n1 periods. So the strategy will actually not be backtested at the start date I initially set up. But it will compare with a buy and hold return strategy using the correct dataframe. So the comparison is actually not correct. What would be the fix?

    • @sChaikovsky
      @sChaikovsky 2 года назад +1

      def next():
      if len(self.data) < n:
      return
      ….continue with your code….

    • @borism4849
      @borism4849 2 года назад

      @@sChaikovsky Here is my code:
      class SMAcross(Strategy):
      n1 = 20
      n2 = 50

      def init(self):


      self.sma1 = self.I(SMA, self.data.Close,self.n1)
      self.sma2 = self.I(SMA, self.data.Close,self.n2)

      def next(self):
      if crossover(self.sma1,self.sma2):
      self.buy()
      elif crossover(self.sma2,self.sma1):
      self.sell()
      Can you help me please

    • @sChaikovsky
      @sChaikovsky 2 года назад

      @@borism4849 Just insert this under def next(self):
      if len(self.data) < self.n2:
      return
      if crossover…
      self.buy()
      elif crossover,,,,
      self.sell()

    • @borism4849
      @borism4849 2 года назад

      @@sChaikovsky This will not solve the issue. Let's say my dataframe starts on January 1, 2015. Whether I add "if len(self.data) < self.n2" or not, the SMA cross strategy will start in n2 periods after January 1, 2015. But when I run output, the start period of the buy and hold strategy will still be January 1, 2015. So the periods for both strategies will not be the same.

    • @sChaikovsky
      @sChaikovsky 2 года назад

      @@borism4849 then you need to create backtesting library by yourself. Their backtesting library will start from the first date on your input data frame.
      I think instead of caring so much about NA values, you should focus on finding the best strategy with optimized parameters.
      NA values period is where no tradings took place, so your money still be the same.
      If you care so much about NA values, why don’t you prepare everything (e.g. 2 sma values into your data frame) first. Then in init() function you don’t need to perform anything, just type only “pass”.
      But by doing this, you will not be able to use their optimize function anymore I think.
      Nothing in this world cannot answer for all of what you need, you need to create it by yourself. I create everything by myself too. I just use everything on the internet as the guideline.

  • @220SouthlandAve
    @220SouthlandAve 10 месяцев назад

    Hey, great content! I'm wondering how your init function is working properly without a double underscore..isn't init usually a dunder method?
    Thanks.

    • @ChadThackray
      @ChadThackray  10 месяцев назад

      It's not a real __init__ function. We're just overriding a function from the parent class

  • @GascanNBK
    @GascanNBK Год назад

    nice video, what about extending the Stats with CAGR/MaxDD?

  • @lukaju1320
    @lukaju1320 5 месяцев назад

    Great tutorial!
    I have a question. Why is my stats not calculating any of the Ratios or Volatility, there is multiple trades and everything else is displayed. Ratios and Volatility are NaN values.

    • @lukaju1320
      @lukaju1320 5 месяцев назад

      Found the answer, you should change the data frame like this with pandas:
      spx500.set_index('Date', inplace=True)

  • @behradio
    @behradio 2 года назад

    Awesome Tutorial, Thanks a lot.

  • @timonfranz4996
    @timonfranz4996 Год назад

    Hi Chad, is there any possibility to extend the _trades dataframe with for example the stop loss and take profit? Or any other trade attribute like a specific trade enty criteria? This would be very helpful to analyse which trades working and which are not working.

    • @ChadThackray
      @ChadThackray  Год назад

      It's open source so anything is possible. I would just build my own logger though in the main logic and use that to analyse

  • @samueltamayogaviria3377
    @samueltamayogaviria3377 2 года назад +2

    could you make more in depth explanations for each action you can make with this library?

  • @GD-bx5pk
    @GD-bx5pk 2 года назад

    Hi Chad @ 1:15 you said it doesn’t try to integrate with a broker does that mean i can only backtest and optimise i cant trade with it via api or whatever. I’m a python beginner

    • @ChadThackray
      @ChadThackray  2 года назад +1

      Yes, there are no live trading functionalities. You could probably modify it to do that if you wanted, but it wouldn't be too easy

  • @priyankamore1458
    @priyankamore1458 Год назад

    is there any other forex backtesting library, because I am having an issue regarding order size, leverage, lot size which are bit different than stock or crypto market...It would be very helpful. Thank you

  • @MrPotatoHeadFX
    @MrPotatoHeadFX 2 года назад +1

    Awesome video. I dont know how you got the plot going so well. For me its just a white screen. All the stats show in python just no plot

    • @ChadThackray
      @ChadThackray  2 года назад +1

      Glad you liked it! On the github issues for the library it says to install bokeh==2.4.3 to fix the problem.

    • @MrPotatoHeadFX
      @MrPotatoHeadFX 2 года назад

      @@ChadThackray Wow. Thank you. Its working now

    • @cosmicblack
      @cosmicblack 2 года назад

      I found It @Chaf Thackray . As soon i GET hom i'll try

  • @cosmicblack
    @cosmicblack 2 года назад

    I justo hace a question
    When i'm un the next method
    To use the actual data and the before injusto need yo use (for ex) self.rsi[-1] and [-2].?

  • @surprise7917
    @surprise7917 Год назад

    Amazing video!

  • @kvekka9300
    @kvekka9300 2 года назад

    @chad...how can it be run to test bracket orders

  • @randb9378
    @randb9378 Год назад

    Can you use a ML algorithm as part of your strategy? (ML algorithm will be trained on data to say buy, sell, or hold?) Thanks for the video! You're awesome

  • @hourglass9
    @hourglass9 Год назад

    Great Video! Can you simultaneously do a backtesting on all symbols
    like for example EURUSD and SPUSD
    so if I buy on SP500 on 2011-01-07 and sell on 2011-01- 10 then in the next buy this program will recheck the opportunity in EURUSD and SPUSD and automatically matches the buying signal and then buy that stock after 2011-01-10
    in this way we can have a full return on investment
    😀

  • @blasdelezo8396
    @blasdelezo8396 2 года назад

    Thanks for the video. Many questions and queries come to me.
    How to code a stop loss and take profit as a percentage of the purchasing power?
    Is there bibliography of online courses regarding this backtesting library?

    • @ChadThackray
      @ChadThackray  2 года назад

      It's a relatively niche library so there's not much content out there. Hence this video

    • @ChadThackray
      @ChadThackray  2 года назад

      It's a relatively niche library so there's not much content out there. Hence this video

  • @naveenkumar-mh6zf
    @naveenkumar-mh6zf 2 года назад

    Enjoyable and informative video.

  • @purasuerte1.0
    @purasuerte1.0 11 месяцев назад

    how do you use a backtesting strategy to do live trading? is there an easy way to re-use this code and instead of do backtesting do live trading?

    • @ChadThackray
      @ChadThackray  11 месяцев назад

      An easy way is to use a framework that does both. Backtesting.py only does backtesting.

    • @purasuerte1.0
      @purasuerte1.0 11 месяцев назад

      @@ChadThackray thanks for the reply, so I think I should use backtrader then. Any recommendation if I'm looking to trade forex?

    • @purasuerte1.0
      @purasuerte1.0 11 месяцев назад

      I was thinking in collecting the last n candles live with the broker api and run the backtesting strategy, every time that a new candle is added, the backstesting strategy is run again and place an order (or close one) according to the last row of generated dataframe. Ugly? yes, not the best performance? yes. But since I will be using 1 minutes candles, it doesn't have to be fast. @@ChadThackray

  • @mehmetemin9598
    @mehmetemin9598 2 года назад

    good tutorial, one question about soft recording. How do you do it? lol

  • @garyin5
    @garyin5 2 года назад +1

    Hi Chad, I am interested in running the backtesting with multiple threads in gpu-process. Could you please help to talk more about how to run it with GPU?

    • @daxj9133
      @daxj9133 2 года назад

      You can use CUDA

    • @FilSerge
      @FilSerge 2 года назад

      Have you succeeded in that?

  • @astrojes849
    @astrojes849 2 года назад +1

    You really are a Chad. Fr

  • @jroche1832
    @jroche1832 2 года назад +1

    great video however I have a complex indicator which I am struggling to backtest. Do you have any strategies that you have built which are complex for example VIX/VVIX correlation?

  • @fauxz3782
    @fauxz3782 Год назад

    Excellent video

  • @אחזקה-ת7ק
    @אחזקה-ת7ק 2 месяца назад

    Hi Chad, thank you for this video. I think that backtesting.py is not supported anymore because there are allot of errors when trying to run even a basic installation of it. Am I right? is there another version of it?

    • @ChadThackray
      @ChadThackray  2 месяца назад

      The developer is not super active to be sure. You can try looking on the github to see if anyone has the same problems as you. Probably have to downgrade some packages

  • @pranjalitigade3645
    @pranjalitigade3645 2 года назад

    One more question.. I am backtesting intraday strategy on 5 mins data and i want to limit the number of trades to say 1 or 2 .. Is there any in built function to achieve the limit on number of trades per day? FYI.. I am getting data from excel file.

    • @ChadThackray
      @ChadThackray  2 года назад

      You can add a custom constraint function on the optimizer. I've done this in one of my backtesting.py videos but from memory I can't recall which

    • @pranjalitigade3645
      @pranjalitigade3645 2 года назад

      @@ChadThackray Thanks for the answer.. But somehow m not able to fix this .. I saw ur video for how to use constraints. But particularly for limiting number of trades per day how to make it work.. that i am unable to do yet.

  • @jayshay7416
    @jayshay7416 11 месяцев назад

    it seems like there's not much attention given to effectively utilizing multiple ticker symbols' data... is that because backtesting.py isn't well suited for this kind of use-case? seems like it's well thought out and everything, but does it shine in backtesting over any possible SET of ticker symbols? Could you maybe do something quick on this?

    • @ChadThackray
      @ChadThackray  11 месяцев назад

      You can just for loop over different symbols. Backtesting portfolios of different assets really isn't very good in backtesting.py though

    • @jayshay7416
      @jayshay7416 11 месяцев назад

      yea i mean if you're wanting to define a universe of stocks.. is that not really a thing backtesting.py can accommodate@@ChadThackray

    • @jayshay7416
      @jayshay7416 11 месяцев назад

      i see... do people really only run strategies on a single ticker symbol? seems so odd.. you think there would be some awareness of algorithms considering "universes" of stocks that have been filtered down based on criteria, and then traded...@@ChadThackray

  • @nicolasepalaciosm8072
    @nicolasepalaciosm8072 2 года назад +1

    Thanks for the video, awesome explanations! New subscription ;)
    I'm left thinking if it's possible to use some of the functions of the library in a different code which is mean to do trades and not only backtesting? Specifically, the bars since function.
    I ask because as I understand it as of now (after watching the video), you only seem to be able to use it inside a class which is extending the Strategy class imported also from this specific library, your RsiOscillator in this case.

  • @cosmicblack
    @cosmicblack 2 года назад

    nice video, i just have a question. im looking into de the documentation how i can set the data to the strategy instead of using GOOG or EURUSD. Buy i still not able to find it. Do you know how to feed the data to the strategy from a csv file?

    • @cosmicblack
      @cosmicblack 2 года назад

      i'm just guessing, but i dont know if i just need to set self.data = my_data, where my_data is a pd.DataFrame with my data. but i'm looking if its correct and the structure fo the datafram because what i read in the doc seems to be de open_time as index. am i correct?

    • @ChadThackray
      @ChadThackray  2 года назад

      @@cosmicblack Just load in the CSV as a pandas dataframe. Then feed it in the same as we do for GOOG

    • @cosmicblack
      @cosmicblack 2 года назад

      @@ChadThackray thanks a lot. Im creating an indicator, the SSL because i didnt found it in talib library to test it. But i still have the problem with my dta. With GOOG its not issue but with my data it is. It has the Open High Low Close columns but im using 5m timeframe and my open_time colmn i setted as the index. is that correct? the Documentation doesnt says much about the topic

  • @V3ritas1989
    @V3ritas1989 Год назад

    hey, nice intro. Waht about position sizing with futures or CFDs ? With margins, over night margins, what about slippage, broker costs as well as spreads?

  • @raphaelarguello5020
    @raphaelarguello5020 9 месяцев назад

    Great content, thanks for your work!
    I am struggling with the size of the position for the backtesting. I am trying to risk 1% of the available cash per position so I enter the sl and size = 0.01. However, the risk is completely off and it only risk 0.014%
    I am also confused because in the video you just enter size without stop loss, but risk is normally calculated in function of the sl
    Would you maybe have a solution please?
    Thanks for your help!

  • @HarpreetSingh-ps9rx
    @HarpreetSingh-ps9rx 2 года назад

    Brilliant video

  • @protopan7722
    @protopan7722 Год назад

    Hey what do you think of quant connect?

  • @pauljones9150
    @pauljones9150 7 месяцев назад

    You multi-timeline test code is somehow broken. Not sure how or how to fix.
    It has something to do with this line: self.daily_rsi = self.I(ta.rsiI, pd.Series(self.data.Close), self.rsi_window). It doesn't think that ta.rsil is a thing

  • @RobbiLian
    @RobbiLian 2 года назад

    Hi Chad, thanks for your video, it's helping me very much.
    Here I have a question when following your video finish the first step(backtesting sell when rsi>70 and buy at rsi < 30)
    pf.stats show Duration is 3116 days, but raw data GOOG only has 2148 rows.
    Is it right?

    • @jungkyunyang5184
      @jungkyunyang5184 2 года назад +1

      Hello. the source code is like that trades_df['Duration'] = trades_df['ExitTime'] - trades_df['EntryTime']
      just between entry time and exit time

    • @RobbiLian
      @RobbiLian 2 года назад

      @@jungkyunyang5184 Thanks😀

  • @fiftyghoststrading8500
    @fiftyghoststrading8500 2 года назад

    Thank you for the vid! Did you leave the TA-lib installation link anywhere? I'm not seeing it

    • @ChadThackray
      @ChadThackray  2 года назад +1

      Just updated the description

    • @fiftyghoststrading8500
      @fiftyghoststrading8500 2 года назад

      @@ChadThackray Cool, thank you! Great video, by the way.. it got me up and running!

  • @guidomarquez8973
    @guidomarquez8973 2 года назад

    Hello!! Excellent video. I am exactly the code shown in the video, however I get the following error: "TypeError: Can't instantiate abstract class GoldenCross with abstract method init". What can it be, the version of python (I use 3.8.0)?

  • @w-asabi2784
    @w-asabi2784 2 года назад

    hi, let's say i have computed my own signals before i want to run the backtest, they are not derived from tecnical analysis, how can i backtest the strategy given from entering a position upon the signal is in and exiting when the signal is out (not shorting just exiting)? i only find videos on tecnical analysis i dont understand how to backtest a personal strategy not tecnical

    • @ChadThackray
      @ChadThackray  2 года назад +1

      Just make your own function, then make it into an indicator, then use that to run your trading logic

    • @w-asabi2784
      @w-asabi2784 2 года назад

      @@ChadThackray sorry im newbie i dont get it :( let's say i have the OHLC of the sock and i have a column in a different dataset with only 0 if signal is to stay out and 1 if signal is to stay in, how can i backtest it with this library? is it possible?

    • @ChadThackray
      @ChadThackray  2 года назад

      @@w-asabi2784 Yeah lots of people are asking about this. Difficult to explain in youtube comments. I'll make a video on it in the next couple weeks going into more detail on custom indicators

    • @w-asabi2784
      @w-asabi2784 2 года назад

      @@ChadThackray thank you so much :) ill activate the bell then

  • @JPy90
    @JPy90 2 года назад

    It's amazing the plot function, there is a way to export it?

    • @ChadThackray
      @ChadThackray  2 года назад +1

      The plot is saved as a html file in the folder you run the script from, so you can re-use that.
      Alternatively you can just screenshot it

    • @JPy90
      @JPy90 2 года назад

      @@ChadThackray thanks! I was thinking in deploying it with mljar-Mercury. By the way, would you recieve my personal resume please? I'm looking for job :)

  • @robertb3145
    @robertb3145 2 года назад

    Hi there. When I try to do a backtest on bitcoin with 10,000 equity it shows the order size as 1 even though it should be less than 1. Is this possible?

    • @ChadThackray
      @ChadThackray  2 года назад

      Backtesting.py doesn't deal in fractions of an asset by default. I have another video on how to deal with this situation

    • @robertb3145
      @robertb3145 2 года назад

      @@ChadThackray Thankyou for your reply. Are you able to point me to the right video? Thanks

    • @robertb3145
      @robertb3145 2 года назад

      @@ChadThackray Found it ruclips.net/video/3yu4FWmTNh0/видео.html

    • @robertb3145
      @robertb3145 2 года назад

      One last question. Is is there anyway the Return % output can be the total amount of each ReturnPct? At the moment the Return% is the total PnL divided by the initial capital.

  • @timjx3675
    @timjx3675 2 года назад

    Great channel - I wonder if you have come across Empyrial portfolio analysis
    And if so what do you think of it