Quantopian's community platform is shutting down. Please read this post for more information and download your code.
Back to Community
Trying to Understand this Backtest

If anyone in the community can help me with this. I'm using a 30-period RSI, and plotting it over time. It appears that there are almost no instances where the RSI falls below my threshold level of 30, however I'm getting many executions. I know there's been discussion about the way RSI is calculated, but this appears to be a discrepancy between the RSI i'm plotting and the RSI that is being used in trading calculations.

It may be hard to tell from the chart, but if you run my code, you'll see in the logs that there are many trades happening here.

Any thoughts?

4 responses

These technical waters are a little deeper than my comfort level, so any corrections or comments are welcome.

I think what's going on in your algorithm is that you've got a 30 minute RSI and what you wanted was a 30 day RSI. The 30-minute RSI was highly volatile so it was regularly getting down to 30. The visible record() graph only shows a 1-day granularity, so even though it's averaging to a number that is higher than 30, and displaying at 30, it's actually jumping up and down over 30 several times in a day.

I cloned and modified your algo below. Instead of using the ta.rsi, I used the talib.RSI. The difference is that the first one is built on Quantopian's old batch_transform() functionality - it's confusing and slow, and we need to get rid of it! We're replacing it with history(), and history() is what I'm using to drive talib.RSI. When the RSI is 30 days it never trades. When I ran it with 10 days it traded once.

If I totally read this wrong, and you really want the 30-minute RSI, then your algo is behaving as expected. It's just going under 30 faster than you can see using record().

Disclaimer

The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by Quantopian. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. No information contained herein should be regarded as a suggestion to engage in or refrain from any investment-related course of action as none of Quantopian nor any of its affiliates is undertaking to provide investment advice, act as an adviser to any plan or entity subject to the Employee Retirement Income Security Act of 1974, as amended, individual retirement account or individual retirement annuity, or give advice in a fiduciary capacity with respect to the materials presented herein. If you are an individual retirement or other investor, contact your financial advisor or other fiduciary unrelated to Quantopian about whether any given investment idea, strategy, product or service described herein may be appropriate for your circumstances. All investments involve risk, including loss of principal. Quantopian makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances.

Thanks Dan! While I was looking for 30-minute RSI, this revised code is very helpful. Are there plans to create more granularity on shorter window charts (esp if we want to roll out strats in live trading.)

That is definitely something we want to do. In the live trading dashboard we have minute granularity, so when you start paper trading you can see it. What we need to do is go back and retrofit the minute-granularity to backtests too. It's on the list.

RSI values pretty close to charting sites out there...