My Canadian 10-year bond position could not be closed a few days ago and now I always get this error when the system tries to do some "self-healing" trades: 201: Order rejected - reason:This order does not comply with our order handling rules for derivatives subject to IBKR near-expiration and physical delivery risk policies. Please refer to our website for further details. In my case this happens for contracts that I try to trade after first delivery date. I had to manually update my database and close the trade there.
For some contracts they force the liquidation some days before the next contract has any liquidity, like 10Y Spanish Government Bonds future. They closed my position last Thursday and the market started trading it yesterday!
Jesus... I don't think IB know what they are doing when it comes to some of the less popular contracts.. I always start getting the expiry warnings well before the OI & Vol has moved over to the new one. I now setup my contract rolls for the data to be 3 days before IBs liquidation date, so even if the vol & OI hasn't fully moved over yet my backtest can still know that I've rolled early. But if there's no volume in the next at all though, you're kind of screwed. I guess the only thing you can do is raise a support case with IB and then wait 6 months for them to fix it... I never tried Spanish bonds because CSI data lists them as having zero volume, though they're not always correct on that.
Really not a sound idea to be holding futures contracts after first delivery date! Not correct, the March contract has had trading volume since November 20th. That said, can I respectfully suggest that you guys do pay a lot of attention to, and understand the delivery process and the importance of Notice Day and Delivery Day. There are good reasons why IB and most other brokers want us out of contracts prior to FND. I appreciate that we all like to roll into good volume, however broker rules regarding FND has to quite rightly take precedence. You may be looking at the wrong contract, try using CSI#20113. Volume is around 3-400 contracts daily
I think the problem is the roll config of CAD10 (CGB) According to the exchange website at https://www.m-x.ca/en/markets/interest-rate-derivatives/cgb CGB has the following notice dates: Delivery notices Delivery notices should be submitted before 5:30 p.m. or before such time set by the clearing corporation on any business day, between the first business day preceding the first business day of the delivery month and the first business day preceding the last business day of the delivery month, inclusively. Delivery day Delivery should be made on the first business day following the submission of the delivery notice by the member holding a seller's position or on any other day as determined by the clearing corporation. Delivery shall be completed no later than the last business day of the delivery month. Expiry is 7 days before end of month of the delivery month. With a roll config of 20 days before expiry, we run may run into this situation. A value of 25 days to roll before expiry is more on the safe side. P.S: I am still trading in paper trading, but ready to go very soon.
25 days is what I have, or if open interest + volume move fist. The IB Liquidation date for December is 26th November. So my roll rule counts back 25 days prior to expiry to be before that. I've attached the IB liquidation rates I pulled from their site, I fed this into my contract rolls design. Simply calculating the buffer IB puts before expiry, then adding a few days is usually enough to get a good safety cutoff for rolling. Of course it's better if volume & OI moves first but IB is quite strict.
Hi Rob et all, I have a question regarding how the carry is computed for bond futures. My understanding is that we usually compute it with the difference between current and next futures. My knowledge about bond futures is limited, but I suppose the futures should converge to the Cheapest-To-Deliver bond: Bond converted price =(Clean Price + Accrued Interest) × Conversion Factor The bond with the lowest converted price from a list of eligible bonds becomes the CTD. If we had the tools and data, I suppose the best way to compute carry would be from `CTD converted price - Futures price`. It seems that for different expiries of same contract, like March25 and June25 Bund, we have different CTDs. I suppose that using the futures difference when the CTD is the same for both expiries is a nice proxy, but what happens when it's not? In this case, the computation is just wrong? Below is my chart for the carry with futures difference for German Bund. The jumps are produced in the rollover dates. I can't compute the historic CTDs but my guess is that it changes in almost every rollover: Just to be clear, I'm not concerned about the jumps, I'm worried about the calculation being always wrong! What is very stricking for me is that rates carry computed this way works fine in backtest, then it got relatively high forecast weights for something that seems odd. As I said, my knowledge about bond futures is limited, so maybe I'm missing something? I feel a little uncomfortable trading a strategy that I feel has wrong computations, with that I'm not sure if it makes economic sense, but for some reason it worked in the past. On the other hand, computing CTDs for several countries seem like huge effort! What are your thoughts, Rob? Thanks, Luis
This is a known problem with German bund futures and a couple of other European ones. TLDR: the CTD changes every 6 months because of the auction cycle. I discuss this issue more in AFTS - theres a whole chapter on 'accurate carry'. GAT
I am reading again the chapter about seasonal adjustment, but I'm not sure if this technique solves this problem in this particular case, as I think the measure of carry that you removed the seasonality seems wrong in the first place (as the difference between futures with different CTDs doesn't measure any carry in this case). Let me look at it more carefully and run some tests, maybe I'm not getting something. Many thanks Rob