Hi, I am backtesting a simple idea:
Rule:
- Buy ZIV is ROC > 0. As long as ROC > 0, update stop loss price otherwise liquidate.
This is my first algo and I just want a second pair of eyes just to confirm if I implementing the above rule correctly. Thanks!
Derek Melchin
Hi Seine,
Yes, that is a good summary of what the implementation does. Specifically, the algorithm buys when ZIV has a ROC > 0 over the last 5 days. As long as the portfolio remains invested, if ROC > 0 and the lastest close of ZIV is greater than the previous closes found during the previous holding periods, it updates the stop loss price. On the other hand, if the portfolio is invested and the ROC <= 0, it liquidates the position.
It should be pointed out that in the current implementation, the algorithm doesn’t reset the highestPrice variable when the position is liquidated. As such, the algorithm updates the stop loss price if the latest ZIV close is greater than the closes found during any of the previous holding periods. If the intention is to update the stop loss price if the latest ZIV close is greater than the closes found during the current holding period, this can be fixed by adding
self.highestPrice = 0
after liquidating the position.
Furthermore, the algorithm requests historical data on each call to OnData to calculate the historical volatility. We can make this calculation more efficient by utilizing the ROC, StandardDeviation, and IndicatorExtensions classes in Initialize like this:
self.roc1 = self.ROC("ZIV", 1, Resolution.Daily)
self.std = IndicatorExtensions.Of(StandardDeviation(self.lookback), self.roc1)
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 QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect 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. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.
Seine Yumnam
this was a perfect answer. Thank you.
Seine Yumnam
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 QuantConnect. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. QuantConnect 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. All investments involve risk, including loss of principal. You should consult with an investment professional before making any investment decisions.
To unlock posting to the community forums please complete at least 30% of Boot Camp.
You can continue your Boot Camp training progress from the terminal. We hope to see you in the community soon!