Hi All,
I am simulating some options trading stratgeies which trade inverse leveraged ETFs, and these ETFs end up having a lot of splits or reverse splits. So the historical adjusted price is always much different from the actual historical prices especially when you go back a few years.
Anyways I am seeing some strange margin warnings (It won't send the order because it violates margin) when I got back a couple years in history, but no warning for the most recent year.
Can someone direct me to the part of the lean engine code that calculates the margin requirements for each order? I want to check if that calculation is using the adjusted price of the underlying or not.
Also is there a way to turn off margin restrictions in the backtester
Jared Broad
Hi Tim De Lise ! Please post this to the open source LEAN group:
https://groups.google.com/forum/#!forum/lean-engine
This is due to the limits of numerical precision in decimals (30 digits). Instead of trying to calculate them more accurately you should request the raw pricing for the asset.
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.
Tim De Lise
Hi Jared I'm afraid the problem is more serious than just a decimal rounding issue. I adjusted my effective leverage down to about 20% of what is full leverage and still have the margin errors when i go back to 2016, but not in 2017-2018.
I also noticed a straight equity algo that was posted by Jing Wu, which had backtesting back to 2008. I didn't inspect the calculation for weight allocation too closely but it was a strategy worked on by several traders. When I cloned it and ran the backtest I also saw lots of these margin errors, so effectively the orders were not placed because the system thought the portfolio wouldn't allow that amount of leverage. Again that could be erroneous weight calculation in the code but I thought it stranget hat no one else brought up that issue with the algo.
The data normalization mode looks like it might help for doing some calculations, but from my perspective this shouldn't affect the margin calculation. The backtester should accurately calculate the margin requirement no matter when kind of data I choose to use for the algorithm. I could be wrong about that though, and I will play around with that.
I'm pretty sure this illustrates is the problem:
All options contracts in historical data are based on normal prices. So back in 2016, I wanted to buy 10 contracts with a strike price of $20.00. That is equivalent to 1000 shares of underlying, which would be $20,000 of underlying. But I am proposing that the lean backtester is then using the adjusted historical price, which could be like $1000 dollars per share. If this is the case, the backtester is thinking that the underlying is 1000 shares at $1000 so it would require margin for $1,000,000 of underlying. Hence not allowing me to trade.
Using the adjust price for straight trading equities is OK, since in backtesting I also assume the historical price of the equity is the adjusted price. so to get $20,000 of exposure, with adjusted hist price of $1,000 I would only trade 20 shares, instead of 1000 shares at the real price of $20.00. But with the options contracts, using this adjusted price for margin requirement calculation isn't working.
Would it be possible to give an option in the brokerage model to completely disable all margin requirements? Obvioulsy this is not ideal but it would nice to be able to run a backtest without having to worry about the backtesting engine disallowing trades based on margin requirements.
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.
Tim De Lise
My Mistake, apparently someone else did bring up the margin error issue on that equity post I linked.
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.
Jared Broad
Options trading does not support adjusted pricing precisely because of the strike price. If you look in the console you should see warning messages when you're asking for adjusted data. This is automatically changed to request raw data.
You can effectively disable leverage by simply setting it very high. You can also model it with say 100x your actual capital.
Securities["IBM"].SetLeverage(100)
Wiithout an example algorithm its hard to give more assistance. Please attach a backtest of something specific and we can assist further.
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.
Tim De Lise
Hi Jared. I am attaching a backtest which runs the first 2 months of 2016. In my console I have many instances of this error message:
Backtest Handled Error: Order Error: id: 35, Insufficient buying power to complete order (Value:-23490), Reason: Id: 35, Initial Margin: -23491, Free Margin: -70410.49999999999999999999995
and in the Logs you can see a printout. Each time through the optionchain I print out the underlying symbol and price. The incorrect price is for DUST:
2016-01-04 15:50:00 : DUST 755.0
2016-01-04 15:50:00 : NUGT 21.088
THis continues throughout the backtest. The other symbol in the backtest, NUGT seems to be OK, around 20. SO this is the issue that I have been seeing.
So I've been debugging this for some time. I have noticed if run the same backtest with only DUST, not both DUST and NUGT, then the DUST prices are perfect. When I add NUGT to the mix, the NUGT prices are good, but the DUST prices then go to the adjusted priced, even though the price normalization message is present for both underlyings. I think we are getting to the bottom of this.
2016-01-05 15:50:00 : DUST 15.27
SO my conclusion is that this error is not present with 1 underlying stock, but YES this bug is present when running 2 underlyings.
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.
Tim De Lise
Jared Broad Sorry for the rambling on here, but I just found that if I explicitly set the price mode to Raw for each of the underlyings, then the prices seems to come out correct. In the backtest I had commented that line out. So it seems pretty good with the price mode set to raw. However I think there are still issues with the backtester simulated the automatic assignment of short contracts. This is a nice feature but seems to be a bit funky. I'm not quite sure how it is supposed to be working, since the underlying is never actually added to the simulated portfolio. Anyways I should prob open a fresh thread for that.
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.
Jared Broad
Actually if you can post things you think may be bugs to support@quantconnect.com so the engineering team can review and assess. Using the forums as bug tracking software is inefficient for everyone.
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.
Tim De Lise
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.
Simone Pantaleoni
Apologies :P Tagged the wrong Frank and cannot amend it now unfortunately :) anyway, better a compliment more, than one less isn't it? :P
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.
Frank Giardina
From the comments above from Frank Schikarski about using the High Yield Spread, attached is I think the FRED alternative dataset he is talking about. If someone can confirm that would be great. I did not see another dataset that fit the description
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.
Vladimir
Simone Pantaleoni,
Try this one
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.
Vladimir
Simone Pantaleoni,
Here is a backtest for OECD/KEI_LOLITOAA_KOR_ST_M from my June 2021 research.
I'd better chat with you in this thread.
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.
Vladimir
Simone Pantaleoni,
Here is a backtest for OECD "OECD/KEI_LOLITOAA_JPN_ST_M" from my June 2021 research.
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.
Frank Giardina
This is a work in progress. I cloned one of Vlad's earlier versions. I really like this algo for a macro view of investing. This version can probably be done in less code, average python coder here. I wanted to see what the economic stage/cycles have been since 2012 based on the kei strategy and then see how different ETFs performed in that cycle. I wanted to make it flexible enough to add and remove ETFs . Next i wanted to output the results to a comma separated log file so i could import to excel to see which ETFs performed the best. Any feedback / improvements greatly appreciated. One issue i am trying to fix is to add the number of days that a stage lasted, can't seem to get the python date functions to work (probably me)
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.
Simone Pantaleoni
Frank Giardina Thanks for joining the Team Frank! :)
I've created different versions of this strategy - the one below is what I'm using live:
PSR and DD are the best parts of this strategy in my opinion :)
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.
Frank Giardina
Very impressive, if anyone wants to conference call or collaborate and kick around some ideas, always up for that. I plan on looking at my results and trying some different approaches. Especially in the area of sub stages within the stage and how to speed the indicator. I also want to start using this in 2022
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.
JSO 2045
Hi guys. I'm pretty new to this so apologies for not having that much in the way of useful contribution to this conversation. Has anyone found a way to alleviate/offset 2022's downturn for this strategy (and a lot of others), or is the freakish nature of what's happened not something that can be effectively accounted for? Main reason for asking is that the low drawdown/volatiltiy of this strategy seemed like a big strength but has obviously taken a hit this year
All I can think of would be adding small hedges against each of the orders made by the algo in each of its “stages.” I will give it a try but am keen to hear what other peoples' thoughts are :)
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.
Frank Giardina
Not sure what to add , but there is another OECD dataset from the Federal Reserve site FRED https://fred.stlouisfed.org/ called USALOLITONOSTSAM. My understanding is this dataset is US only as opposed to the QUANDL dataset used in the algo. I have not been able to figure out how to get Quantconnect to use this data set instead. If i could figure out how to use that one instead I would. The two datasets are 90% correlated. In the meantime I am using a python notebook in Google colab to do the analysis. The Quandl indicator has indicated we are in a decline since April the FRED indicator says since March. I have noticed that with the FRED data they do go back and adjust the data so that does throw things off at times. If there is an interest in the notebook let me know and i will copy it in the post.
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.
Simone Pantaleoni
Hi Frank and JSO,The one you've picked, as you said, is US-only leading indicators - there're plenty available indeed (roughly one per country), but I would suggest to use the oecd or the world oneIn order instead to limit drawdown during 2022, just switch to cash (or “BIL” or “SHV”) when the TLT correlation to SPY is positive.Enjoy it
ps. if you like my comment, drop me some points/likes ;)
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.
Simone Pantaleoni
Just forgot to mention - I'm always open to collaborations - I'm available on Telegram or Discord (but I would prefer the first one, since I'm not a very heavy Discord user) :)
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.
JSO 2045
Simone Pantaleoni I like that idea of using the correlation, will try to give it a go. Finding a valid solution to this specific problem would help loads of strategies in the forums as well as this one. Could potentially even have a list of traditional hedges against the stock market and select the one with the lowest correlation across the last month (or something like that)
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.
Peter Guenther
Great job again, Simone Pantaleoni and Strongs, for getting this discussion started!
Sorry, time resources have been a bit tight. Anyway, I am currently musing about whether this could be used to trade FX pairs. The OECD data gives you international information about the comparative strengths of various economies. You got your interest rates, GDP growth, inflation figures, unemployment rates and so on, Based on this, one might be able to bet on one currency vs the other and/or to validate or refute existing trends in currency pairs. Hopefully, I can put something together over the next few weeks for the major currency pairs.
The time lag of the data (up to one month?) could be an issue for live trading – to what extent could be tested by simulating lagged data usage. If it is a substantive issue, the question will be whether more up-to-date datasets could be identified, such as by getting the data directly from the national bureaus of statistics or similar.
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.
Simone Pantaleoni
Hi Peter Guenther
Well spotted: publication delay can affect live performances, so to avoid so I've been “reading” the KEI value on the 15th of each month, basically taking into account the publication date instead of the “validity” date
About the FX Pair, that is actually another great idea, and should be rather easy to realize, even tough I would be curious to see if that is able to generate alpha since carry trade is also “a thing” - perhaps a better idea would be to pair trade Country-ETFs based on the related KEI strength
ps. Still need to get in touch with you privately Peter - how can I reach out to you?
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.
Peter Guenther
That's great, Simone Pantaleoni. I will definitely share as soon as I've got a first version of the FX algo.
My contact:
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!